创建表之间的关系

时间:2010-10-08 16:45:58

标签: sql-server database

我的问题专门针对sql-server,但任何有数据库背景的人都可以回答

如果我希望表A与某个列上的表B具有1:1的关系,我是否应该以某种方式修改CREATE TABLE语句以识别这种关系,或者这是根本没有完成的事情(而不是由逻辑处理)?

修改
我的问题的第二部分是:将这个嵌入到代码中的重点是什么?为什么不在逻辑上处理选择/更新?

3 个答案:

答案 0 :(得分:5)

您需要做的就是让表A中的列成为表B主键的外键:

create table TableB (
    Id int primary key identity(1,1),
    Name varchar(255))

create table TableA (
    Id int primary key identity(1,1),
    Name varchar(255),
    TableBRelation int unique,
    foreign key (TableBRelation) references TableB (Id))

SQL可能不完美但你应该能够理解。

至于为什么你想在数据库而不仅仅是应用程序逻辑中这样做:

  • 其他数据库或开发人员可能会尝试访问您的数据库。您是否希望他们能够创建可能会破坏您的应用程序的无效数据?不,这是参照完整性的要点之一。

  • 在某些时候,某人将不得不维护您的申请。在数据库级别定义密钥将清楚地识别数据之间的关系,而不是要求开发人员挖掘应用程序代码。

答案 1 :(得分:1)

要创建1:1关系,只需将B表列设为外键或唯一。这将确保表B中只有一列与表A中的PK字段匹配,这样就可以有效地获得1:1的关系......

答案 2 :(得分:1)

您可以设置foreign key并为其添加约束以使其唯一。这将在您的表之间建立1:1的关系。