Я новичок в дизайне базы данных, и у меня есть пара вопросов для вас, ребята, как создавать реляционные базы данных.Выпуск ключей SQL Server
У меня есть пара вопросов:
Подключение Table A
и Table B
внешним ключом, где я создаю ключ в Table A
или B
?
Допустим, у меня есть таблица Users
и Ranks
с отношением 1: 1.
Users
стол:
CREATE TABLE [dbo].[Users](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Email] [nvarchar](89) NOT NULL,
[Name] [nvarchar](25) NOT NULL,
[Midname] [nvarchar](25) NOT NULL,
[Surname] [nvarchar](25) NOT NULL,
[Phone] [varchar](15) NOT NULL,
[Country] [smallint] NOT NULL,
[Manager] [nvarchar](89) NOT NULL,
[Referrer] [nvarchar](89) NOT NULL,
[Rank] [tinyint] NOT NULL,
CONSTRAINT [PK_UsersID] PRIMARY KEY CLUSTERED
([Email] ASC)
)
Ranks
стол:
CREATE TABLE [dbo].[Ranks](
[ID] [tinyint] IDENTITY(1,1) NOT NULL,
[Rank] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Rank] PRIMARY KEY CLUSTERED
([ID] ASC)
)
Я хочу присоединиться к ним по:
Users.Rank ON Rank.ID
Но это не позволяет мне создать ключ, Я получаю такую ошибку:
Microsoft SQL Server Management Studio
The columns in table 'Users' do not match an existing primary key or UNIQUE constraint.
Почему это говорит мне о ЛЮБОЙ первичный ключ? Я не трогаю основной, я работаю с внешними ключами, я не понимаю, почему PK и FK связаны.
Не могли бы вы объяснить, что я делаю неправильно?
Спасибо!
Причина получения этой ошибки: столбец «Столбец» в таблице «Пользователь», на которую вы пытаетесь ссылаться, не имеет на нем уникального или первичного ключа. – praveen
@marc_s, но я не могу делать Users.Rank как PK. Как мне тогда проектировать мои таблицы? Это нормально, если я не собираюсь связывать их с FK? –
Отвечает ли KM. Для вас? Создать FK из 'Users.Rank' ->' Rank.ID'? Я неправильно понял/неверно истолковал ваш вопрос –