一、实验目的与要求:
1、掌握MySQL中如何创建数据库和表的方法
2、熟练掌握MySQL的数据类型、主键实体完整性的设置
3、参照完整性的定义及应用
4、插入数据
5、数据库的备份操作
二、实验内容:
创建名为fruitshop的数据库,并创建数据表fruits、customers(客户)、orderitems(订单详单)、suppliers(供货商)和orders(订单总表),表结构和约束条件如下:
三、思考题
表中没有明确指定外键,试分析找出各表中的外键并定义其外键约束、级联删除、级联更新操作
各表中的外键并定义其外键约束、级联删除、级联更新操作(以下为自己思考总结的内容):
(1) fruits 表
- s_id(供应商编号)关联 suppliers 表的 s_id:
外键约束:FOREIGN KEY (s_id) REFERENCES suppliers(s_id)
级联删除:CASCADE(删除供应商时,删除其提供的水果)
级联更新:CASCADE(修改供应商 ID 时,相应更新水果表中的 s_id)
(2) customers 表
无外键,因为 customers 只是存储客户信息,没有引用其他表的主键。
(3) orderitems 表
-
f_id(水果编号) 关联 fruits 表的 f_id:
外键约束:FOREIGN KEY (f_id) REFERENCES fruits(f_id)
级联删除:CASCADE(删除水果时,删除所有相关的订单项)
级联更新:CASCADE(修改水果 ID 时,相应更新订单项的 f_id)
-
o_num(订单号) 关联 orders 表的 o_num:
外键约束:FOREIGN KEY (o_num) REFERENCES orders(o_num)
级联删除:CASCADE(删除订单时,删除所有相关的订单项)
级联更新:CASCADE(修改订单号时,相应更新订单项的 o_num)
(4) suppliers 表
无外键,因为 suppliers 只是存储供应商信息,没有引用其他表的主键。
(5)orders 表
- c_id(客户编号) 关联 customers 表的 c_id:
外键约束:FOREIGN KEY (c_id) REFERENCES customers(c_id)
级联删除:CASCADE(删除客户时,删除所有相关的订单项)
级联更新:CASCADE(修改客户 ID 时,相应更新订单的 c_id)
四、总结
外键的判断:外键是在当前表不是主键,在另一表里是主键。用于建立两个表之间的关联关系。需注意的是,外键字段和父表主键数据类型必须一致。