一、数据库创建注意事项

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

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

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

捎带插一句,进行连接查询的时候也经常会根据上述三种情况分别查询(1)一对一和一对多的情况类似,参考一对多使用;(2)一对多select * from student cross join course wherestudent.ID=course.ID(3)多对多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还不太清楚。

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

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

  1. SQL查询优化《三》:少做重复的工作

    1.控制同一语句的多次执行 2.减少多次的数据转换 3.杜绝不必要的子查询和连接表,子查询在执行计划一般解释成外连接,多余的连接表带来额外的开销. 4.合并对同一表同一条件的多次UPDATE,比如 U ...

  2. App上演魔法 三个杭州小伙做手游吸金千万

    在苹果或安卓移动应用商店里,新闻.音乐.社交.游戏等应用软件(APP)组成了一个完善的生态系统.小小的应用软件背后,蕴藏着巨大的财富. 今年1月7日,苹果公司发布公告称,苹果商店里的APP数量已经超过 ...

  3. SQL总结(三)其他查询

    SQL总结(三)其他查询 其他常用的SQL,在这里集合. 1.SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中.常用于创建表的备份或者用于对记录进行存档. 语法: SELECT c ...

  4. pdo_fetch执行mysql_PDO中执行SQL语句的三种方法

    在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...

  5. sql服务器系统时间格式,SQL Server 日期格式和日期操做

    SQL Server发展至今,关于日期的格式的控制方法,有传统的方法,好比CONVERT(),也有比较便利的新方法,好比FORMAT():一样,关于日期的操做函数,也分为传统方法:DATEADD()等 ...

  6. java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合

    java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合 1.引入pom <dependency><groupId>org.codehaus.groovy& ...

  7. 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...

    非常实用的,使用SQL查询连续号码段.(做计费系统或SP的兄弟经常会用到) 数据库中如何使用SQL查询连续号码段 在[Database吧]上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问 ...

  8. 三个指标怎么做分层图_分层性能指标以及在哪里找到它们

    三个指标怎么做分层图 Hierarchical machine learning models are one top-notch trick. As discussed in previous po ...

  9. SQL系列(三)SQL使用的旁枝末节

    SQL系列(三)SQL使用的旁枝末节 首先,来揭晓上期的答案.方法不唯一,符合结果即可- -- 常规方法 with temp as (select 2 as st,5 as enunion allse ...

最新文章

  1. 拥抱 Java 8 并行流吧,让执行速度飞起!
  2. “service httpd does not support chkconfig” 問題
  3. 【Java】 剑指offer(40) 最小的k个数
  4. android studio annotations,AndroidAnnotations在Android Studio中的配置
  5. 川崎焊接机器人编程实例_机器人现场编程-川崎机器人示教-综合命令.pptx
  6. android studio table居中代码_五个方法实例代码详解教你在CSS中实现垂直居中
  7. 看你知道不知道之-制作数据字典
  8. uboot启动流程概述_Alibaba Cloud Linux 2 LTS OS 启动优化实践
  9. myeclipse怎么运行c语言,windows下MyEclipse安装配置C/C++开发环境
  10. Linux解压tar.gz、zip、tar.bz2 文件与对应的命令
  11. 视频 | 为何我对小鹏NGP“半信半疑”
  12. 25岁做什么,可在5年后受益匪浅?
  13. 【面试】JavaEE基础
  14. JNA (Java 本地访问)理论概述与入门
  15. java视频教程下载
  16. 6163. 给定条件下构造矩阵——每日一难(phase2_day1)
  17. 数值计算(四)——插值法(3)Hermite插值法(补充)
  18. 结构仿真实验,Midas多跨超静定连续梁手算电算分析
  19. 黑掉php网站,如何黑掉一个网站
  20. scratch实现弹跳小球2

热门文章

  1. 服务器导流板的作用,前保险杠下导流板的作用是什么?
  2. 济源一中2021高考成绩查询,济源一中2019高考成绩喜报、一本二本上线人数情况...
  3. android 面向对象,android 面向对象六大原则
  4. 华为当个pl怎么样_华为员工吐槽:画饼、忽悠、洗脑,有些pl、pm怎么可以那么坏?...
  5. THREEJS - 获取场景中模型数据
  6. html标签acronym没用,acronym_废弃 | Obsolete_HTML_参考手册_非常教程
  7. js - 预加载+监听图片资源加载制作进度条
  8. Linux 任务计划、周期性任务计划
  9. 201612-1-中间数
  10. docker中不能读取带.环境变量的问题