tvr*_*tvr 44 sql sql-server ssms
我总是觉得在Management Studio中向主表添加外键会让人感到困惑.
可以说我有一个
Table1
{
ID int, -- Primary Key
Table2ID int, -- Refers to Table2's ID
}
Table2
{
ID int, -- Primary Key
SomeData nvarchar(50)
}
Run Code Online (Sandbox Code Playgroud)
我正在向Table1添加一个外键Right Click -> Relationships -> Table and column specification.我将"主要"弹出窗口设置为Table2,ID和"外键表"到Table1,Table2ID.
我的问题:
不应该为"外键表"列出表2,为主键列出表1吗?我的理解错了吗?
当我保存时,我收到警告"以下表格将保存到您的数据库中." 它显示了两个表格.我真的不明白这一点.我只改变了Table1.为什么显示第二张表?
Zac*_*ach 104
mar*_*c_s 22
你为什么不只使用等效的T-SQL语句?对我来说似乎更容易,更容易混淆:
ALTER TABLE dbo.Table1
ADD CONSTRAINT FK_Table1_Table2
FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)
Run Code Online (Sandbox Code Playgroud)
当我读到这篇文章时,我相信这很清楚两个表是什么,以及它们是如何连接的(Table1.Table2ID- (参考) - > Table2.ID)
如果你想留在SSMS设计师的世界:你还可以创建涉及的表的数据库图表,然后只需拖放您Table2ID从列Table1到Table2拖放到ID列有-这将图形告诉SSMS你想做什么,您只需要查看您的选择,然后在弹出的对话框中单击"确定".
1.对于"外键表"而不是Table2,而对于主键,表1是不是?我的理解错了吗?
我相信你的理解是错误的.表2是您引用其主键的表.因此它列在主键下.Table1是具有外键的表(对另一个表的主键的引用); 因此它列在"外键表"下.
至于保存两个表的原因,即使外键后来列为属于Table1:我相信这是因为外键限制了两个表.他们都必须"知道"约束,所以他们都需要保存.
| 归档时间: |
|
| 查看次数: |
85470 次 |
| 最近记录: |