现在自己正在经历着第二次做机房收费系统,总体上的进度相对其他人算是比较慢,但是收获颇丰.
经历过第一次做机房收费系统,那时候对数据库的知识几乎就没有什么感觉,也就是在之前大概的学习了一个关于SQL 的视频然后就上手用vb实现机房收费系统.当时的数据库几乎称不上什么设计,就是自己想到什么就往表里添加什么.可是后来麻烦的事情来了,不是数据类型需要修改,就是需要增加一个字段,或者删除一个字段,同时还有好多表的内容重复.也就是数据冗余.
遵循提高班N+1 的学习理念,这次第二次做机房收费系统要对数据库相关的知识进行一下学习和提高.当然,我接下来所展示的第二次数据库设计肯定有很多不足的地方!争取不断的完善.
在此之前成云给我们讲关于数据库三范式的设计,当时看着一堆公式概念什么的,自己听着也是云里雾里的,不过大概的说的什么内容自己还是比较清楚.在听完讲课之后自己对三范式作了一个初步的总结,具体内容可以见博客
在这里再简单的描述一下三范式
第一范式(1NF) :不同于主键的所有字段都必须依赖于主键.
第二范式(2NF):所有的非键值必须完全依赖于主键,也就是不允许产生部分依赖.(部分依赖就是字段完全依赖于符合主键的一部分)
第三范式(3NF):属性不依赖与其他非主属性,也就是消除传递依赖.
为什么要用范式呢?我的理解是对数据库设计的一种规范化,就像是为什么我们这个社会会有法律呢?同样是对人类行为的规范,让人类的社会更有秩序.数据库的规范化使物理空间会更好的组织和利用.
先看一下自己第一次在收费系统中所做的学生信息表为例,当是设计的时候也没有想那么多也就是按照自己的想法把内容表填上,也就是以下的表.
可以看出自己之前所设计的学生信息表里的内容没有符合第二范式,一般对于第一范式而言我们刚开始所做的表,上表中没有实现非键值完全依赖主键.
修改后将学生信息表分为两个表:
表关系如下:
其他的表也做了一些相应的修改.添加了一些关系图,这是自己的尝试在数据库设计方面,会有一些不足的方面,所以才需要继续的学习和提高.在不断的尝试中去学习更多的知识.在N+1中 不断提高自己!