题目:
创建水果价目表,包括苹果、橘子、香蕉 。 水果售卖记录表,三样水果都有售卖,并记录售 卖数量和金额,要求:所卖水果必须是水果价目 表中存在的。
思路:
父表:FruitPriceList
- 水果价目表
- 包含字段:水果类型(type)、每斤的单价(unitPrice, 默认为0)、计量单位(uintOfMeasure, 默认为kg)
- 苹果:8.8元/kg,橘子:9.9/kg,香蕉:10.9/kg
- 单价唯一
- 主键为type
子表:FruitSalesList
- 水果售卖表
- 包括字段:售卖序号id,水果类型(fruitType)、每次售卖的公斤数(weight,默认为0),以及每次售卖的总金额(actualAmount, 默认为0)
- 主键为id
约束
- 为子表设置外键,外键为父表的type字段,也是父表的主键
- 创建水果价目表,插入3种水果的单价信息
```sql
CREATE TABLE IF NOT EXISTS FruitPriceList(
uintPrice DECIMAL(5, 2) DEFAULT 0 UNIQUE, uintOfMeasure VARCHAR(8) DEFAULT ‘kg’ );type ENUM('apple', 'orange', 'banana') PRIMARY KEY,
INSERT INTO FruitPriceList(type, uintPrice) VALUES(‘apple’, 8.8); INSERT INTO FruitPriceList(type, uintPrice) VALUES(‘orange’, 9.9); INSERT INTO FruitPriceList(type, uintPrice) VALUES(‘banana’, 10.9);
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12563649/1616908744669-a3c25bb9-74ef-449b-8a51-0ae9c145e056.png#align=left&display=inline&height=181&margin=%5Bobject%20Object%5D&name=image.png&originHeight=196&originWidth=425&size=12725&status=done&style=none&width=393)
2. 创建水果售卖表,并添加售卖记录
```sql
CREATE TABLE IF NOT EXISTS FruitSalesList(
id INT PRIMARY KEY,
fruitType ENUM('apple', 'orange', 'banana'), /*既然要添加外键,这句话是否有简便写法??*/
weight DECIMAL(5, 2) DEFAULT 0,
actualAmount DECIMAL(8, 2) DEFAULT 0,
CONSTRAINT fruitTypeForeignKey FOREIGN KEY (fruitType) REFERENCES FruitPriceList(type)
);
INSERT INTO FruitSalesList VALUES(1, 'apple', 5.5, 48.40);
INSERT INTO FruitSalesList VALUES(2, 'apple', 4.5, 39.60);
INSERT INTO FruitSalesList VALUES(3, 'orange', 2.5, 24.75);
INSERT INTO FruitSalesList VALUES(4, 'orange', 3.5, 34.65);
INSERT INTO FruitSalesList VALUES(5, 'banana', 3.0, 32.70);
INSERT INTO FruitSalesList VALUES(6, 'banana', 5.0, 54.50);
当插入不存在于水果价目表中的水果时,会报错:
查看表中所有内容:
- 疑问:
(1)如何让总金额,根据水果价目表与重量,自动计算而成,并记录在表里?
- 听老师作业讲解并反思:
(1)主键最好不要中文;
(2)水果价目表中最好添加id,方便统计计算
(3)外键规范:使用’fk_’开头