gpt4 book ai didi

sql-server - SQL Server key 问题

转载 作者:行者123 更新时间:2023-12-04 18:20:18 25 4
gpt4 key购买 nike

我是数据库设计的新手,我确实有几个问题要问你们如何创建关系数据库。

我有几个问题:

连接Table ATable B通过外键,我在哪里创建 Table A 中的键或 B ?

假设我有 table UsersRanks具有 1 : 1 的关系。
Users table :

    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 table :
    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

但它不允许我创建 key ,我收到这样的错误:

Microsoft SQL Server Management Studio

The columns in table 'Users' do not match an existing primary key or UNIQUE constraint.



为什么它告诉我任何主键?我没有触及我正在使用外键的主,我不明白为什么 PK 和 FK 相关。

你能解释一下我做错了什么吗?

谢谢!

最佳答案

我可以使用以下方法创建外键:

ALTER TABLE dbo.Users ADD CONSTRAINT
FK_Users_Ranks FOREIGN KEY
(
Rank
) REFERENCES dbo.Ranks
(
ID
)

像这样加入他们:
select
*
from Users u
INNER JOIN Ranks r ON u.rank=r.id

我建议删除 IDENTITY(1,1)来自 Ranks.ID。由于值很少(tinyint),最好自己管理 ID。您可以插入 ID 为 10、20、30、40 的等级。稍后如果需要,如果需要在 10 到 20 之间添加新等级,可以添加 15。有了身份,您就被锁定了。

确保如果您的表中当前有数据并尝试添加 FK,则在添加 FK 之前,所有 Users.Rank 值都存在于 Rank.ID 中。

关于sql-server - SQL Server key 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com