vic*_*tcu 20 mysql database database-design data-modeling
如果我在两个表之间有关系(两个表都有自己的主键),那么应该指导我决定哪个表应该存储外键?我知道这种关系的本质可能很重要(一对一,一对多,多对多,单向,双向),而且访问模式也很重要.虽然做出决定的系统方法是什么?
OMG*_*ies 26
哪个表是关系中的孩子?
回答这个问题,你知道哪个表需要外键列,引用父代的[通常]主键.这是一对多的关系......
多对多会要求您添加第三个表,使用两个表中的键作为主键.
"虽然做出这个决定的系统方法是什么?"
似乎有两种选择:"一边"作为FK到"多边",或者"多边"一边有FK到"一边".
让我们真正看看选择.
"多"侧的所有行都可以轻松地引用"一"侧的一行.
"一"侧的一行不能引用"多"侧的所有行.
只有一种技术可行:"很多"方面有FK到"一"方.
只有一个实际的实现选择.没有"决定".
外键只是一个表中的一个字段,它引用了另一个表的一个键字段。像这样识别外键字段并不是绝对重要的。也就是说,您不需要将 FOREIGN KEY ... REFERENCES 约束显式添加到表中,使其成为外键。当您将两个表连接在一起时,父表的主键将设置为等于子表的外键。哪个不是主键就是外键。
在一对多关系中,FK 站在“多”方面。它不能在“一个”方面进行,因为那是 PK 的所在,并且主键的定义包括不允许重复。
如果您有一个多对多关系,您将需要重新处理这些表,以便最终得到两个一对多关系和一个中间解析表。
归档时间: |
|
查看次数: |
12931 次 |
最近记录: |