首页 > 解决方案 > 表基础知识:一对一、多对多、一对多

问题描述

我希望我的表之间有不同的关系,这是我的第一篇文章,我完全是个傻瓜。

每条龙可以拥有多个蛋,但每个蛋只能拥有一个主人。

每个鸡蛋只能有一个装饰品(点缀?),反之亦然。没有鸡蛋就不可能有装饰品。

龙可以起源于多个地,地可以有多个龙,但它们不能重复。

所以这些是我的表:

CREATE TABLE dragons (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(256),
    colour VARCHAR(256),
    wingspan_in_centimeters INT,
    lands_id INT,
    eggs_id INT,
    FOREIGN KEY (lands_id) REFERENCES lands (id),
    FOREIGN KEY (eggs_id) REFERENCES eggs (id)
);

CREATE TABLE eggs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    weight_in_grams INT,
    diameter_in_centimeters INT,
    dragon_id INT,
    adornment_id INT,
    FOREIGN KEY (dragon_id) REFERENCES dragons (id),
    FOREIGN KEY (adornment_id) REFERENCES eggs_adornments (id)
);

CREATE TABLE eggs_adornments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    colour VARCHAR(256),
    pattern VARCHAR(256)
);

CREATE TABLE lands (
    id  INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(256),
    dragons_id INT,
    FOREIGN KEY (dragons_id) REFERENCES dragons (id)
);

我该怎么做?我不确定外键和引用是如何工作的。

标签: mysqldatabase

解决方案


推荐阅读