我有两个具有一对多关系的表。表1的主键是表2中的外键,但不是主键。主键是自动生成的。关系应该和IS是一对一的关系,而不是一对多的关系。
这就是我想改变的地方,但我认为它只是因为外键不是此表的主键而自动默认为一对多关系
我该怎么做?
答案 0 :(得分:1)
如果两个表之间存在一对一的关系,则意味着对于T1中的一条记录,T2中最多只有一条相应的记录,反之亦然。
在你的情况下,如果你想确保t2中的一条记录(语义记录,即忽略t2的主键)在t1中最多只有一条相应的记录,你应该在所有的语义列上添加一个UNIQUE约束在t2中(即,在语义上描述t2记录的列,不包括主键和外键)。这样,您将确保t2中的记录不会指向t1中的两个或更多记录。
如果你想确保一对一关系的另一个方向(即t1中的记录最多被t2中的一个记录引用),你应该在t2 UNIQUE中创建外键。