数据库

注册

 

发新话题 回复该主题

mysql设计三范式及老IT的经验分享, [复制链接]

1#

无规矩不成方圆,无五音难正六律。前面我们讲了很多Java的规范,数据库同样也有自己的规范,按照规范来维护数据库是IT人员必备的素质,保证数据的完整、安全是我们的责任,下面开始今天的分享。

一、三范式;

学生表

第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以此类推。一般说来,数据库只需满足第三范式(3NF)就行了。所以这里就只记录三范式相关的知识。

1、1NF:字段不可分,每个字段是原子级别的,上节中看到第一个字段为ID,它就是ID不能在分成两个字段了,不能说我要把这个人的ID、名称、班级号都塞在一个字段里面,这个是不合适的,对以后的应用造成很大影响;2、2NF:有主键,非主键字段依赖主键,ID字段就是主键,它能表示这一条数据是唯一的,有的读者朋友记性很好,“unique”表示唯一的、不允许重复的,确实它经常会修饰某个字段,保证该字段唯一性,然后再设置该字段为主键;

3、3NF:非主键字段不能相互依赖,这个怎么理解呢,比如student表,班级编号受人员编号的影响,如果在这个表中再插入班级的班主任、数学老师等信息,你们觉得这样合适吗?肯定不合适,因为学生有多个,这样就会造成班级有多个,那么每个班级的班主任、数学老师都会出现多条数据,而我们理想中的效果应该是一条班级信息对应一个班主任和数学老师,这样更易于我们理解,这样就形成class表,那么student表和class表中间靠哪个字段来关联呢,肯定是通过“classNo”,这个字段也叫做两个表的外键,后面讲约束的时候老韩会重点讲这个,读者朋友先有个大致了解;

二、命名规范;

前面Java的章节中老韩讲了命名规范,一种是驼峰命名法如“classNo”,一种是下划线命名法如“class_no”,下划线命名法是数据库中常用的命名法。如果我们在项目中需要创建大量数据表,在建表之前首先要制作一个命名规范。

如我要在OA系统(网上审批系统)中做表单,来绑定数据表,我在建表的时候可以以公司名首字母缩写开头如公司-GS,后面跟部门名称缩写如综合部-ZHB,后面跟流程名称如出差申请单-CCSQD组合起来就是GS_ZHB_CCSQD这样就能形成表名的规范管理,一目了然。

在系统建设的同事要做好数据字典,就是数据表介绍,与表单的对应关系,字段内容备注等。表中列名的命名最好使用名词,如商品就用goods,不行就拼音,大小写最好区分开,在windows环境下是大小写不敏感的(默认不区分大小写),但是linux是大小写敏感的(默认区分大小写,可以设置大小写不敏感),表名写成小写就是报错,老韩之前在北京上班时候做产品升级的时候就载在这一次,血的教训希望能给朋友们一点收获。

三、数据库做什么操作最好在自己的环境上测试;

之前网上流行的梗有rm-rf和数据库从删库到跑路,别不相信,这些都是真实的事,有的IT人员可能根本就不熟悉,只管执行命令,造成无法挽回的损失。数据丢失远远要比弄丢公司财物问题要严重的多,请小心小心再小心,正式系统是正式的一套环境,个人PC弄一套测试环境,在做任何操作之前在自己测试环境上跑一下,没有问题再放上去。如果可以百分之百确定执行的命令不会出现别的问题可以执行,如执行select语句。

小心驶得万年船,小心一点总是好的。先制定规范,在规范下做事不容易出格,今天的分享就到这里,有问题可以通过上面图片中的“vxName”添加老韩,老韩肯定会知无不答。没有点击

分享 转发
TOP
发新话题 回复该主题