如何正确命名关联表(一对一关系)

时间:2015-02-11 16:14:58

标签: sql database associations one-to-one

大部分时间我遇到过多对多(交叉参考)表,名称如 Table1Table2XRef

但是,命名一对一关联表的最佳方法是什么?

我知道我可以在一个或另一个表中迁移外键,但我更关心的是在良好实践方面命名它们的正确方法。

先谢谢你。

2 个答案:

答案 0 :(得分:1)

如下所示:

link

数据库上的一对一关系,可以是单向,双向,也可以是自引用。

<强>单向:

只有一个密钥迁移到另一个表

<强>双向:

两个主键都将作为外键迁移。

<强>自参考:

有一个外键引用自己的主键。

答案 1 :(得分:1)

提供一对一关联表的最佳名称与提供任何表格的最佳名称完全相同:对您和您的团队最有意义的是什么。

如果您认为1-1交叉引用表需要使用与n-m交叉引用表不同的名称,请进行投票。也许 Table1Table2YRef 会赢(很多人在今天的社会中认为Y是X的一半)。

无论你的船漂浮着什么。只需就合理的事情达成一致,一致地应用它并重新开始工作。

顺便问一下,你有多少这些表。在20多年的时间里,我不记得曾遇到过一个。有更简单的方法来建立1-1关系。关于我能想到哪一个会有用的唯一原因是,如果关系破裂并定期进行改革(有点像很多婚姻)。

附录:典型的1-1实施。在拆分包含很少使用的字段的大表时,将这些字段规范化为单独的表。

MainTable:

PK: 1001, F1, F2, ..., F75
PK: 1002, F1, F2, ..., F75
PK: 1003, F1, F2, ..., F75

结果: MainTable:

PK: 1001, F1, F2, ..., F15
PK: 1002, F1, F2, ..., F15
PK: 1003, F1, F2, ..., F15

子表:

PK: 1001, F16, F17, ..., F15
PK: 1002, F16, F17, ..., F15
PK: 1003, F16, F17, ..., F15

create table SubTable(
    ID   int not null,
    ..., -- F16 thru f75
    constraint PK_SubTable primary key( ID ),
    constraint FK_SubTable_MainTable foreign key( ID )
         references Maintable( ID );
);