数据库设计

什么是数据库设计?

简单的说,数据库设计就是根据业务系统的具体需要,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据存储模型,并建立好数据库中的表结构及表与表之间的关联关系的过程,使之能有效的对应用系统中的数据进行存储,并可以高效的对已经存储的数据进行访问。

为什么要进行数据库设计?

优良的设计糟糕的设计
减少数据冗余存在大量数据冗余
避免数据维护异常存在数据插入,更新,删除异常
节约存储空间浪费大量存储空间
高效的访问访问数据低效


  • 需求分析
数据库需求的作用点:1.数据是什么 2.数据有哪些属性 3.数据和属性各自的特点有哪些

  • 逻辑设计  
使用ER图对数据库进行逻辑建模

  • 物理设计 
根据数据库自身的特点把逻辑设计转化成物理设计

  • 维护优化 
1.新的需求进行建表 2.索引优化 3.大表拆分


一 、需求分析

为什么要进行需求分析?

1.了解系统中所要存储的数据

2.了解数据的存储特点

3.了解数据的存储周期

要清楚的问题:

1.实体及实体之间的关系(1对1、1对多、多对多)

2.实体所包含的属性有什么

3.哪些属性或属性的组合可以唯一标识一个实体

实例演示 :

以一个小型的电子商务网站为例,包含几个核心模块:用户模块、商品模块、订单模块、购物车模块、供应商模块。

用户模块:用于记录用户信息。包含属性:用户名、密码、电话、邮箱、身份证号、地址、姓名......,可选唯一标识属性:用户名、身份证号、电话,存储特点:随系统上线时间逐渐增加,需要永久存储。

商品模块:用于存储网站中所销售的商品信息。包含属性:商品编码、商品名称、商品描述、商品品类、供应商名称、重量、有效期、价格......,可选唯一标识属性:(商品名称、供应商名称)、(商品编码),存储特点:对于下线商品可归档存储。

订单模块:保存用户订购商品的信息。包含属性:订单号、用户姓名、电话、收货地址、商品编号、商品名称、数量、价格、订单状态、支付状态、订单类型......,可选唯一标识属性:(订单号),存储特点:永久存储(分表、分库存储)

购物车模块:用于保存用户购物时选中的商品。包含属性:用户名、商品编号、商品名称、商品价格、商品描述、商品分类、加入时间、商品数量......,可选唯一标识属性:(用户名、商品编号、加入时间)、(购物车编号),存储特点:不用永久存储(设置归档、清理规则)

供应商模块:用于保存所售商品的供应商信息。包含属性:供应商编号、供应商名称、联系人、电话、营业执照号、地址、法人......,可选唯一标识:(供应商编号)、(营业执照号),存储特点:永久存储

用户和订单以及用户和购物车是一对多关系,订单和商品、商品和供应商、商品和购物车是多对多关系。



二、逻辑设计

逻辑设计是做什么的?

1.将需求转化为数据库的逻辑模型

2.通过ER图的形式对逻辑模型进行展示

3.同所选用的具体的DBMS系统无关

名词解释:

关系:一个关系对应通常所说的一张表

元组:表中的一行即为一个元组

属性:表中的一列即为一个属性;每个属性都有一个名称,成为属性名

候选码:表中的某个属性组,它可以唯一确定一个元组

主码:一个关系有多个候选码,选定其中一个为主码

域:属性的取值范围

分量:元组中的一个属性值


实例演示


什么是数据库设计范式?

常见:第一范式,第二范式,第三范式以及BC范式,当然还有第四、第五范式......





数据库操作异常及数据冗余

操作异常:a、插入异常:如果某实体随着另一个实体的存在而存在,即缺少某个实体时无法表示这个实体,那么这个表存在插入异常;b、更新异常:如果更改表所对应的某个实体实例的单独属性时,需要将多行更新,那么就说这个表存在更新异常;c、删除异常:如果删除表的某一行来反映某实体的实例,失效时导致另一个不同实体实例信息丢失,那么这个表就存在删除异常。

数据冗余:是指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说明表存在数据冗余。


内容来源于慕课网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值