mysql - 表基础知识:一对一、多对多、一对多
问题描述
我希望我的表之间有不同的关系,这是我的第一篇文章,我完全是个傻瓜。
每条龙可以拥有多个蛋,但每个蛋只能拥有一个主人。
每个鸡蛋只能有一个装饰品(点缀?),反之亦然。没有鸡蛋就不可能有装饰品。
龙可以起源于多个地,地可以有多个龙,但它们不能重复。
所以这些是我的表:
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)
);
我该怎么做?我不确定外键和引用是如何工作的。
解决方案
推荐阅读
- php - Eval 替换和解析 PHP 字符串中的变量
- node.js - NodeJS:服务必须使用`new`操作符构建
- input - 角度 5,保持输入值并将其添加到 JS 对象
- javascript - VBS 点击按钮 by href
- javascript - 更改侧边栏的颜色
- azure-language-understanding - 使用意图映射 LUIS 话语
- google-bigquery - Java - 一次插入一行到谷歌大查询?
- docker - 如何使用 docker-compose 将环境变量设置到 docker 容器中
- php - yii2 从日期时间选择时间
- reactjs - Immutable.js 不呈现列表数据