SQL那些事儿(三)----和小伙伴们做武大游

一、数据库创建注意事项

1、在数据库概念模型设计转换到数据库逻辑模型设计过程中,中有一对一,一对多,多对多的关系:

如(1)用户与mac地址,(2)用户与添加事件,(3)用户与景点,

这时要将他们合理的拆分成多个表,(1)其中一个表设置外键,关联另一个表的主键;(2)事件表中添加外键,关联用户表的主键;(3)用户与景点之间存在评论表,这时用户表与景点表分别单独存储,评论表中设置两个外键,分别关联用户表的主键和景点表的主键;

捎带插一句,进行连接查询的时候也经常会根据上述三种情况分别查询(1)一对一和一对多的情况类似,参考一对多使用;(2)一对多select * from student cross join course wherestudent.ID=course.ID3)多对多select s.Name,C.Cname from student_course as scleft join student as s on s.Sno=sc.Sno left join course as c on c.Cno=sc.Cno

2、数据库逻辑模型设计

每个表的结构要与程序中的model一致,但是这样做的话在使用webAPI返回数据需要数据库联合查询时就会不方便(如果返回的数据涉及到两个表中的数据,事件内容和用户名字,因为事件表中只存储了用户ID用来关联事件表)。这里注意一下概念模型(实体关系模型)-逻辑模型-类图-接受数据类与返数据类的关系,实体关系与类关系的区别。

解决方案:(1)自定义返回类,对应返回数据结构,返回数据类同时能够接受提交数据;(2)用类拼接,接受返回都有冗余

 

3、索引、外键、触发器

在指定外键时改表字段默认会创建索引,其中索引会有normal、unique、fulltext,normal为正常索引,unique不能重复,fulltext一般为文本设置;

外键删除更新时有如下设置:(1)cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹配记录;(2)set null方式在父表上update/delete记录时,将子表上匹配记录的列设为null,要注意子表的外键列不能为not null;(3)No action方式如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作;(4)Restrict方式同no action, 都是立即检查外键约束。

触发器,当插入表中一条记录,更新另外一张表中记录改表的数量时会用到。有before和after设置,还有插入、删除、更新设置。

4、数据库事务

用来将数据库操作原子化,防止出现意外,错误后回滚。

 

5、mysql中那些乱七八糟的字段

Float、double、decimal、numerical总长度和小数长度;tinyint1、smallint2、mediumint、int4、bigint8大小不同,定了总长度只是为了补齐,对实际大小没影响;numeric与decimal区别,貌似差不多,但是其他数据库中的numeric是个整数decimal是小数,sql标准型。什么时候用blob与binary还不太清楚。


武大游下载链接点击打开链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值