SQL那些事儿(三)----和小伙伴们做武大游
发布日期:2021-06-28 15:11:36 浏览次数:2 分类:技术文章

本文共 1349 字,大约阅读时间需要 4 分钟。

一、数据库创建注意事项

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还不太清楚。

武大游下载链接

转载地址:https://blog.csdn.net/xcymorningsun/article/details/52684319 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:web开发模式+三层架构与MVC
下一篇:图像分割有哪些方法

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月19日 09时46分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章