前言:本次学习比较重要的在于数据库表的设计思路,以及er-图表的制作,其中DDL语法中对于数据库的一些语法语句可以直接使用可视化工具提供的便捷方式来进行操作,更加简便;约束是在设计表时所选择的一些必要数据,而索引是另一种查询方法,比起全表扫描会更加的快速,效率更高;
数据库表的设计思路:
数据库表的设计,在后续实际项目中也比较重要,要搞清楚数据库表要怎么建立得先搞清楚几个关系(一对多,一对一,多对多);这几个关系也比较好理解,理清关系知道把外键建在哪张表上,这样就能将需要的数据库表设计出来;
1:一对多(把外键建在多的一方)
例如学生表和班级表,那这边因为一个学生就只有一个班级,而一个班级却可以有很多学生,那么就能确定这两张表的关系是一个一对多的关系,而这时我们应该将外键建在学生表上,因为学生是多的一方,如果把外键建在班级表上就会导致数据过多;
2:多对多(这是就应该在建一张新表)
例如学生表和课程表,那这边因为一个学生可以选多个课程,而一门课程也可以被多个学生选择,这时候两张表的关系就变成了多对多,而这时候将外键建在那张表上都不适合,所以应该要在重新建一张新的表,然后在关联两者的关系;
3:一对一(这时外键建在任何一张表都可以)
例如学生表和学生详情表,这边因为一个学生就对应一个学生详情,而一个学生详情也只对应一个学生,那这时候就是一对一的关系了,这时候将外键建在任何一张表都可以;
例子:
设计一个简易的商城库表,给每一个列加上合适的数据类型以及约束。
其中会涉及以下几张表:
用户表:id主键,name姓名,username账号,password密码,sex性别,amount余额。
地址表:id主键,address地址,longitude经度,latitude纬度,name收货人姓名,phone收货人电话号码,default是否是默认地址。
订单表:id主键,order_no订单号,create_time创建时间,status订单状态。
订单详情表:id主键,product_name商品名字,product_price商品价格,product_num商品数量,product_total总价。