Sql server 我不知道是什么';我的数据库有问题。显示错误

Sql server 我不知道是什么';我的数据库有问题。显示错误,sql-server,database,Sql Server,Database,我创建了两个表。我需要在第二个朋友表中有两个IDUserId是UserInformation表中的IdFriendId此表中已存在Id。我需要在这两个表之间建立一个关系,并正确地生成FK和PK。我试着自己做,但它尖叫我没有在这里做的事-引用[UserInformation](UserId) 我需要你的帮助才能正确地完成这项工作 CREATE TABLE [dbo].[UserInformation] ( [Id] [INT] IDENTITY(1,1) NOT NULL, [Lo

我创建了两个表。我需要在第二个
朋友表中有两个ID
UserId
UserInformation
表中的Id
FriendId
此表中已存在Id。我需要在这两个表之间建立一个关系,并正确地生成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
首先将其更改为:

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
)
然后:

最后:

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)

不要只说它显示错误。。张贴error@Nick.McDermaid错误-外键“FK_UserInformationFriend”在引用的表中引用了无效的列userIduserInformation@Nick.McDermaid在这种情况下,我如何正确地编写FK和PK?我认为应该在UserInformation中将id列设置为主键,然后在其他表中将其设置为FK,这样可以正常工作。“显示错误”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们以什么方式不同?不需要指定Pk?
primary key (FriendId, UserId)