Я не знаю, что случилось с моей базой данных.Отображает ошибки - PullRequest
0 голосов
/ 06 апреля 2019

Я создал две таблицы. И мне нужно иметь два идентификатора во второй таблице Friends. UserId - это идентификатор из таблицы UserInformation. FriendId Идентификатор уже в этой таблице. Мне нужно сделать связь между этими двумя таблицами и правильно сделать FK и PK. Я пытался сделать это сам, но он кричит, что я не сделал прямо здесь - ССЫЛКИ [UserInformation] (UserId)

Мне нужна ваша помощь, чтобы сделать работу правильно

CREATE TABLE [dbo].[UserInformation]
(
    [Id] [INT] IDENTITY(1,1) NOT NULL,
    [Login] [VARCHAR](50) NOT NULL,
    [Password] [VARCHAR](50) NOT NULL,
    [FirstName] [NCHAR](10) NOT NULL,
    [LastName] [NCHAR](10) NOT NULL,
    [Email] [VARCHAR](50) NOT NULL,
    [RegistrationDate] [DATETIME] NOT NULL,
    [Groups] [VARCHAR](50) NOT NULL
)
GO

CREATE TABLE [dbo].[Friends]
(
    [UserId] [INT] NOT NULL,
    [FriendId] [INT]  NOT NULL,

    PRIMARY KEY (FriendId),
    CONSTRAINT FK_UserInformationFriend 
        FOREIGN KEY (UserId) REFERENCES [UserInformation](UserId)
) 
GO

ALTER TABLE [dbo].[UserInformation] 
    ADD CONSTRAINT [DF_UserInformation_RegistrationDate]  
        DEFAULT (GETDATE()) FOR [RegistrationDate]
GO

ALTER TABLE UserInformation
    ADD CONSTRAINT DF_UserInformation_Login_Unique UNIQUE(Login)
GO

ALTER TABLE UserInformation
   ADD CONSTRAINT DF_UserInformation_Email_Unique UNIQUE(Email)
GO

ALTER TABLE UserInformation
   ADD CONSTRAINT [PK_UserInformation] PRIMARY KEY ([Id])
GO

ALTER TABLE Friends
    ADD CONSTRAINT [PK_Friends] PRIMARY KEY ([UserId])
GO

1 Ответ

1 голос
/ 06 апреля 2019

Сначала измените его на:

CREATE TABLE [dbo].[UserInformation](
[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
[Login] [varchar](50) NOT NULL,
[Password] [varchar](50) NOT NULL,
[FirstName] [nchar](10) NOT NULL,
 [LastName] [nchar](10) NOT NULL,
[Email] [varchar](50) NOT NULL,
[RegistrationDate] [datetime] NOT NULL,
[Groups] [varchar](50) NOT NULL
)

, затем:

CREATE TABLE [dbo].[Friends](
[UserId] [int] NOT NULL,
[FriendId] [int]  NOT NULL,
PRIMARY KEY (FriendId),
  CONSTRAINT FK_UserInformationFriend FOREIGN KEY (UserId)
  REFERENCES [UserInformation](Id)
   ) 

и Last:

ALTER TABLE [dbo].[UserInformation] 
ADD  CONSTRAINT [DF_UserInformation_RegistrationDate]  DEFAULT 
(getdate()) FOR [RegistrationDate]
GO

ALTER TABLE UserInformation
ADD  CONSTRAINT DF_UserInformation_Login_Unique  UNIQUE (Login)
GO

 ALTER TABLE UserInformation
 ADD  CONSTRAINT DF_UserInformation_Email_Unique  UNIQUE (Email)

Нет необходимости, так как основной уже установлен для обоихтаблицы:

ALTER TABLE UserInformation
 ADD  CONSTRAINT [PK_UserInformation] PRIMARY KEY ([Id])
 GO

ALTER TABLE Friends
ADD  CONSTRAINT [PK_Friends]  PRIMARY KEY ([UserId])
GO

Примечание: если вам нужно несколько первичных ключей, перейдите к составным первичным ключам:

primary key (FriendId, UserId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...