1-N-M情况下的SQL表定义



我的情况非常复杂,但我可以将问题简化为以下情况:假设一个幼儿园有3张桌子:;儿童"角;以及";天";。每个";天";,任意数量的";孩子们;可以在";角;s.
第二天,孩子们可以选择另一个角落玩。因此,每一天,孩子们和角落都必须是独一无二的。

下面是一个在篡改时要复制的DB示例:

CREATE TABLE kids (
id INT,
name TEXT
);
INSERT INTO kids VALUES (1, "Paul");
INSERT INTO kids VALUES (2, "Mary");
INSERT INTO kids VALUES (3, "Tom");
INSERT INTO kids VALUES (2, "Gina");
CREATE TABLE corner (
id INT,
name TEXT
);
INSERT INTO corner VALUES (1, "Kitchen");
INSERT INTO corner VALUES (2, "Cars");
CREATE TABLE days (
id  INT,
day DATE
);

基本上,您需要另一个表来表示三个实体之间的关系:

create table plays (
kid_id    int references kids(id),
corner_id int references corner(id),
day_id    int references days(id),
primary key (kid_id, day_id)
);

每一列都是对应引用表的外键。主键确保一个孩子每天只在一个角落打球。

相关内容

  • 没有找到相关文章

最新更新