SQL table 1-N-M 情况的定义

SQL table definition for 1-N-M situation

我的情况很复杂,但是我可以将我的问题简化为以下情况: 假设一个幼儿园有 3 个表:“kids”、“corner”和“day”。 每个“天”,任意数量的“孩子”都可以在其中一个“角落”玩耍。
第二天,孩子们可以选择另一个角落玩耍。 所以每一天,孩子们和角落都必须是独一无二的。

这是一个在摆弄时要复制的示例数据库:

    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
    );

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

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)
);

每一列都是对应引用的外键 table。主键确保给定的孩子每天只玩一个角落。