我为日托中心制作了一个小型数据库。我一直在阅读有关识别和非识别关系的内容,但对整个事情仍然有些困惑。我一直在使用 MySQL Workbench 来设计数据库。
现在,父母和孩子的标准是一个Parent
可以有一个或多个Children
,反之亦然 - 因此,和之间的关系Parents
是Children
多对多的。解决这个问题的最佳实践(据我所知)是制作第三张表 -Parets_Children
并将其用作其他两张表之间的“连接”:
Parents - 1:n - Parents_Children n:1 - Children
现在我遇到的问题是是否在这里使用识别关系。逻辑是,没有父母,任何孩子都无法生存,除非他们在那里至少有一个孩子,否则父母不会成为日托的成员。他们都不会“单独”存在。但是,当让 MySQL WB 为我整理它时,它会创建一个非识别关系(我认为)。
非常简化的代码:
CREATE TABLE 'parents' (
'id_parents' SMALLINT UNSIGNED NOT NULL ,
'name' VARCHAR(48) NOT NULL ,
PRIMARY KEY ('id_parents');
CREATE TABLE 'parents_children' (
'id_parents' SMALLINT UNSIGNED NOT NULL ,
'id_children' SMALLINT UNSIGNED NOT NULL ,
PRIMARY KEY ('id_parents', 'id_children') ,
FOREIGN KEY ('id_parents') REFERENCES 'parents' ('id_parents' )
FOREIGN KEY ('id_children' ) REFERENCES 'children' ('id_children' );
CREATE TABLE 'children' (
'id_children' SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,
'name' VARCHAR(48) NOT NULL ,
PRIMARY KEY ('id_children');
这个输出是否足以达到所需的功能?我误解了整个关系吗?我希望我的问题不是太晦涩难懂。