MySQL的一些概念

数据库与服务器、客户端的层次关系

 

 

关于数据库

程序中需要存储数据的方式:

1 变量(列表、元组、集合、字典、嵌套)

2 外存(文件)(*.ini)

3 表格、Excel(*.xls、*.xlsx、*.csv)

4 结构化数据库

 

数据库中的基本概念

记录(Record):数据库中的一行

字段(Field):数据库中的一列

 

实体(Entity):现实中客观存在并可以被区分的事物。比如:学生、课程

属性(Attribute):实体锁具有的特征。比如:对于学生实体,所体现的属性有:学号、姓名、年龄、性别

关系(RelationShip):实体与实体之间的依赖。包括:一对一、一对多、多对多。

以上三者(实体、属性、关系)可以组成ER图(实体关系图)

 

通过Visio的数据库模型图建立表:

 

建表的时候需要考虑范式的约束

一般有如下范式:1NF 2NF 3NF BCNF 4NF 5NF

1NF:属性不可分

姓名

电话号码

年龄

座机

手机

张三

020-84444444

13777777777

23

李四

020-85555555

13888888888

34

如上,因为电话属性可以拆分为座机和手机,所以不满足1NF,修改如下:

姓名

座机

手机

年龄

张三

020-84444444

13777777777

23

李四

020-85555555

13888888888

34

 

2NF:符合1NF。非主属性完全依赖于关键字

学号

姓名

课程编号

考试成绩

101

张三

201

73

102

李四

202

53

该表中的依赖关系:

学号——姓名

(学号、课程编号)——考试成绩

该表的关键字是:(学号、课程编号)

这里的非主属性姓名依赖于学号,是关键字的一部分,而不是全部。所以不满足2NF

需要拆分成两个表

学号

姓名

101

张三

102

李四

 

学号

课程编号

考试成绩

101

201

73

102

202

53

这样就满足2NF了

 

3NF:符合1NF和2NF,并且消除传递依赖

学号

课程编号

老师

职称

101(张三)

201(高等数学)

张老湿

砖家

102(李四)

202(大学英语)

陈教授

叫兽

103(王五)

202(大学英语)

陈教授

叫兽

显然满足1NF

该表的关键字是:(学号、课程编号)。后面的非主属性完全依赖于关键字,所以满足2NF

(学号、课程编号)——上课老师

老师——职称

像这种A依赖于B,B依赖于C的设计,就称为传递依赖,是不满足3NF

需要拆分成两个表

学号

课程编号

老师

101(张三)

201(高等数学)

张老湿

102(李四)

202(大学英语)

陈教授

103(王五)

202(大学英语)

陈教授

 

老师

职称

张老湿

砖家

陈教授

叫兽

这样就满足了3NF的标准了

后面还有BCNF、4NF、5NF。但是我们设计数据库一般要求达到3NF即可

posted @ 2018-09-05 19:50  kumata  阅读(206)  评论(0编辑  收藏  举报