什么是数据库设计?
简单的说,数据库设计就是根据业务系统的具体需要,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据存储模型,并建立好数据库中的表结构及表与表之间的关联关系的过程,使之能有效的对应用系统中的数据进行存储,并可以高效的对已经存储的数据进行访问。
为什么要进行数据库设计?
优良的设计 | 糟糕的设计 |
减少数据冗余 | 存在大量数据冗余 |
避免数据维护异常 | 存在数据插入,更新,删除异常 |
节约存储空间 | 浪费大量存储空间 |
高效的访问 | 访问数据低效 |
- 需求分析
- 逻辑设计
- 物理设计
- 维护优化
一 、需求分析
为什么要进行需求分析?
1.了解系统中所要存储的数据
2.了解数据的存储特点
3.了解数据的存储周期
要清楚的问题:
1.实体及实体之间的关系(1对1、1对多、多对多)
2.实体所包含的属性有什么
3.哪些属性或属性的组合可以唯一标识一个实体
实例演示 :
以一个小型的电子商务网站为例,包含几个核心模块:用户模块、商品模块、订单模块、购物车模块、供应商模块。
用户模块:用于记录用户信息。包含属性:用户名、密码、电话、邮箱、身份证号、地址、姓名......,可选唯一标识属性:用户名、身份证号、电话,存储特点:随系统上线时间逐渐增加,需要永久存储。
商品模块:用于存储网站中所销售的商品信息。包含属性:商品编码、商品名称、商品描述、商品品类、供应商名称、重量、有效期、价格......,可选唯一标识属性:(商品名称、供应商名称)、(商品编码),存储特点:对于下线商品可归档存储。
订单模块:保存用户订购商品的信息。包含属性:订单号、用户姓名、电话、收货地址、商品编号、商品名称、数量、价格、订单状态、支付状态、订单类型......,可选唯一标识属性:(订单号),存储特点:永久存储(分表、分库存储)
购物车模块:用于保存用户购物时选中的商品。包含属性:用户名、商品编号、商品名称、商品价格、商品描述、商品分类、加入时间、商品数量......,可选唯一标识属性:(用户名、商品编号、加入时间)、(购物车编号),存储特点:不用永久存储(设置归档、清理规则)
供应商模块:用于保存所售商品的供应商信息。包含属性:供应商编号、供应商名称、联系人、电话、营业执照号、地址、法人......,可选唯一标识:(供应商编号)、(营业执照号),存储特点:永久存储
用户和订单以及用户和购物车是一对多关系,订单和商品、商品和供应商、商品和购物车是多对多关系。
二、逻辑设计
逻辑设计是做什么的?
1.将需求转化为数据库的逻辑模型
2.通过ER图的形式对逻辑模型进行展示
3.同所选用的具体的DBMS系统无关
名词解释:
关系:一个关系对应通常所说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性;每个属性都有一个名称,成为属性名
候选码:表中的某个属性组,它可以唯一确定一个元组
主码:一个关系有多个候选码,选定其中一个为主码
域:属性的取值范围
分量:元组中的一个属性值
实例演示
什么是数据库设计范式?
常见:第一范式,第二范式,第三范式以及BC范式,当然还有第四、第五范式......
数据库操作异常及数据冗余
操作异常:a、插入异常:如果某实体随着另一个实体的存在而存在,即缺少某个实体时无法表示这个实体,那么这个表存在插入异常;b、更新异常:如果更改表所对应的某个实体实例的单独属性时,需要将多行更新,那么就说这个表存在更新异常;c、删除异常:如果删除表的某一行来反映某实体的实例,失效时导致另一个不同实体实例信息丢失,那么这个表就存在删除异常。
数据冗余:是指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说明表存在数据冗余。
内容来源于慕课网