数据库设计基础

Posted on Posted in 新知

数据库范式可以带来许多好处,但是最重要的好处归结为三点:

1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)

2.消除异常(插入异常,更新异常,删除异常)

3.让数据组织的更加和谐…

但剑是双刃的,应用数据库范式同样也会带来弊端:

1 查询时要连接多个表,增加了查询的复杂度

2 查询时需要连接多个表,降低了数据库查询性能。

第一范式: 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。

第二范式:若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。

第三范式:关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z, 使得X→Y,Y→Z,成立,则称R<U,F> ∈ 3NF。

BC范式:设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。

举个例子:你的信息构建一张表。最开始,我们可以罗列出一些信息:姓名,基本信息,工作信息,爱好。但是这样一张表示不属于第一范式的。因为基本信息包含了年龄、性别等等,可以分解。那么我们就得到了这样一张表:姓名,年龄,性别,电话,住址,身份证号码,工作部门,工作部门标号,工作岗位,工号,工作性质等等。但是这并不符合第二范式,因为工作性质并不依赖于姓名,而是依赖于工作岗位的。这时候就需要新建一张工作表。而第三范式则是要求关系模式中不能存在偏序关系。比如上面工作部门编号可以推导出工作部门,那么这也需要重新建立一张表。BC范式则是要求关系模式中不能存在同时存在两个可以作为主键的元素。比如当编号和身份证号,姓名同时存在于一张表中时,就可以去掉编号,以身份证号作为主键来唯一辨识。但是身份证太长且不具有规律,没有编号方便,所以很多情况下并不需要满足BC范式。至于第四范式,简单的说就是用于消除表中的多值依赖。一般来说,数据库的表格设计归于第二范式或者第三范式就足够了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注