码迷,mamicode.com
首页 > 数据库 > 详细

MySQL的一些概念

时间:2018-09-05 21:37:35      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:实体   英语   ali   服务器   修改   完全   str   之间   集合   

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

 技术分享图片

 

关于数据库

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

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即可

MySQL的一些概念

标签:实体   英语   ali   服务器   修改   完全   str   之间   集合   

原文地址:https://www.cnblogs.com/kumata/p/9594030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!