如何独立进行数据库设计详解及基本的知识概念

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

需求分析--逻辑设计--物理设计--维护优化

1.需求分析
分析模块属性
可选唯一标识属性
存储特点
eg:如注册  
包括属性:用户名、密码、电话、邮箱、身份证号、地址、姓名、昵称
可选唯一标识属性:用户名、身份证、电话
存储特点:随系统上线时间逐渐增加,需要永久存储

2.逻辑设计
第一范式--二维表 定义由行和列组成的
数据库表中所有字段都是单一属性不可再分由基本数据类型所构成。

第二范式--所有单关键字段的表都符合每二范式
数据库的表中不存在非关键字段对任一选关键字段的部分函数依赖。
eg:商品名称 价格 重量 供应商名称 供应商电话
可以拆分成 
商品表 和供应商表 以及关联俩个表的商品供应商ID表

第三范式
如果数据表中不存在非关键字段对任意候选关键字段的传递函数依赖则符合第三范式
eg:商品名称 价格 分类 分类描述 分类关联着分类描述不符合第三范式
拆分为 商品表 分类表 关联商品和分类ID表

第三范式扩展--BC范式
在第三范式的基础之上,数据库表中如果不村子任何字段对任一候选关键字段的传递函数依赖则符合BC范式
也就是说复合关键字,则复合关键字之间也不能存在函数依赖关系。
eg:供应商   商品ID 供应商联系人 商品数量
    饮料一厂  1        张三       10
    饮料二厂  1        李四       20
供应商 -> 供应商联系人
供应商联系人->供应商
如果饮料二厂刚签完合同没有提供商品 则看不到二厂的信息 联系人等
拆分成 供应商商品表  供应商联系人表 

3.物理设计
建立数据库表结构 选择数据库eg: oracle mysql sqlserver
定义数据库、表及字段的命名规范
建表建库选择字段类型 范式化设计
选择数据库考虑成本
mysql 开源数据库  适合互联网项目
oracle sqlserver商业数据库 适合企业项目 如金融类项目
表及字段命名规则
1.可读性原则
2.表意性原则
3.长命原则 eg:  pwd password 
如何选择主键?
1.区分业务主键和数据库主键
业务主键进行表与表之间关联数据库主键为了优化数据库存储
2.根据数据库的类型,考虑主键是否要顺序增长
有些数据库是按主键的顺序逻辑存储的 可以设置自动增长
3.主键字段类型所占空间要尽可能的小
对于使用聚集索引方式存储的表,每个索引后都会附加主键信息
外键
1.降低数据导入恶效率
2.增加维护成本
3.虽然不建议使用外键约束,但是相关联的列上一定要建立索引
触发器
1.降低数据导入的效率
2.可能会出现意想不到的数据异常
3.使业务逻辑变得复杂
严禁使用预留字段 后期维护成本高

4.维护优化
维护和优化要做什么?
1.维护数据字典
2.维护索引
3.维护表结构
4.在适当的时候对表进行水平拆分或垂直拆分
可以使用第三方工具对数据字典进行维护 





































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南归北隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值