SQL Server Management Studio - 添加外键混淆?
我总是觉得在Management Studio中将外键添加到主表时会感到困惑。SQL Server Management Studio - 添加外键混淆?
可以说我有一个
Table1
{
ID int, -- Primary Key
Table2ID int, -- Refers to Table2's ID
}
Table2
{
ID int, -- Primary Key
SomeData nvarchar(50)
}
我被Right Click -> Relationships -> Table and column specification
添加一个外键表1。我将Table2,ID和“Foreign Key Table”设置为Table1,Table2ID的“Primary”弹出窗口。
我的问题:
不宜表2列出了 “外键表”和表1为 主键?我的理解是 错误?
当我保存时我得到一个提醒“下面的表格将被保存到您的数据库。”并显示两个表。我真的不明白这一点。我只改变了Table1。为什么显示第二个表格?
为什么不使用相当的T-SQL语句?似乎更容易,减少混乱对我说:
ALTER TABLE dbo.Table1
ADD CONSTRAINT FK_Table1_Table2
FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)
当我看到这一点,我相信这是立即清除两个表涉及什么,以及它们是如何连接(Table1.Table2ID
- (引用) - >Table2.ID
)
如果你想留在SSMS设计师的世界:你还可以创建涉及的表的数据库图表,然后只需将&从Table1
放下你Table2ID
列到Table2
和拖放到ID
列有 - 这将以图形方式告诉SSMS你想做什么,而你只需要检查你的选择并在弹出的对话框中单击确定。
1.不应该列出“外键表”和表1中的 主键?我的理解是 错误?
我相信你的理解是错误的。表2是您正在引用的主键的表。因此它在主键下列出。表1是具有外键(对另一个表的主键的引用)的表;因此它在“外键表”下列出。
至于为什么保存两个表,即使外键后来列为属于表1:我相信这是因为外键约束两个表。他们都必须“知道”约束,所以他们都需要被保存。
updoot回答_both_问题。 – 2017-07-21 17:18:53
ALTER TABLE dbo.Table1
ADD CONSTRAINT FK_Table1_Table2
FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)
如果您发布代码,XML或数据样本,**请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)以精确地设置格式并进行语法突出显示! – 2011-05-09 15:20:49
- 单击表格旁边的展开符号。
- 右键单击“Keys”文件夹并选择“New Foreign Key”。
- (或者,您可以在打开表格后单击工具条上的关系按钮)
- 单击“表格和列规格”行上的“...”按钮打开编辑器。
- 左边的下拉列表将显示您要添加的表格,而静态文本字段会列出要添加到的表格。
- 使用下拉菜单来指定您的约束条件,并确保双方的列数相同。
我知道我可以使用T-SQL,但我想知道这个设计背后的推理。还拖放带来了相同的窗口... – tvr 2010-10-09 09:39:50