- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库表设计技巧
MySql是⼀个属于关系型的数据库,5.6版本以后默认的存储引擎是InnoDB
数据库表的设计遵循三⼤范式 :
⼀ . 列是不可拆分的,每列都是不可拆分的最⼩数据单元
⼆ . 满⾜第⼀范式的前提下,表中⾮主键列不存在对主键不依赖或者部分依赖,确保每个列都和主键相关
⼀般因为存在多个主键或者存在复合主键,所以要拆表
三 . 满⾜第⼆范式,且表中的列不存在对⾮主键列的传递依赖,每列都和主键列直接相关,⽽不是间接相关
数据库的设计技巧 :
1. 原始单据与实体之间的关系 :
可以是⼀对⼀,⼀对多,多对多的关系.⼀般情况下是⼀对⼀的关系 : ⼀张原始的单据只对应⼀个实体.在特殊的情况下,他们可能是⼀对多或多对
⼀的关系,即⼀张原始单据对应多个实体(也就是表),或者多张原始单据对应⼀个实体.明确了对应关系对数据库表的设计就很⽅便了
2. 主键与外键 :
⼀般⽽⾔,⼀个实体不能即⽆主键⼜⽆外键
主键与外键的设计 : 在全局数据库中占有重要地位,⼀位美国数据库专家曾说: “键,到处都是键,除了键之外,什么也没有”,这就是他的
数据库设计经验之谈,也反映了他对信息系统核⼼(数据模型)的⾼度抽象思想。因为:主键是实体的⾼度抽象,主键与外键的配对,表⽰实
体之间的连接。
基本表的性质:
基本表与中间表,临时表不同,基本表的四⼤特性 :
1. 原⼦性 : 表中的字段不可再分解
2. 原始性 : 表中的记录是原始数据(基础数据)的记录
3. 演绎性 : 由基本表与代码表中的数据可以派⽣出所有的输出数据
4. 稳定性 : 基本表的结构是相对稳定的,表中的记录是要长期保存的
了解基本特性后再设计表时就能将中间表和临时表与基本表分开
范式的标准 :
基本表及其字段之间的关系,需要尽量满⾜第三范式
但是,满⾜第三范式的数据库设计并不是最好的设计,为了提⾼数据库的运⾏效率,需要降低范式的标准 : 适当增加冗余,达到空间换时间的⽬的
例如 : 有⼀张存放商品的基本表,如表1所⽰。 “⾦额”这个字段的存在,表明该表的设计不满⾜第三范式,因为“⾦额”可以由 “单
价”乘以“数量”得到,说明“⾦额”是冗余字段。但是,增加 “⾦额”这个冗余字段,可以提⾼查询统计的速度,这就是以空间换时间的
做法。
对三范式的通俗理解 :
第⼀范式 : 对属性的原⼦性约束,要求属性具有原⼦性,不可再分解
第⼆范式 : 对记录的唯⼀约束,要求记录有唯⼀标识,即实体的唯⼀性
第三范式 : 对字段冗余性的约束,即任何字段不能由其他字段派⽣出来,要求字段没有冗余
没有冗余的数据库设计是可以做到的.但是没有冗余的数据库未必是最好的数据库,有时为了提⾼运⾏效率,就必须降低范式标准,适当保留冗余
数据. 具体做法 : 在概念数据模型设计时遵循第三范式,降低范式标准的⼯作放到物理数据模型设计时考虑降低. 范式就是增加字段,允许冗余
正确处理多对多的关系 :
两个实体之间存在多对多的关系,我们应该消除这种关系.
消除的办法 : 在两者之间增加第三个实体,这样,原来多对多关系变为⼀对多的关系. 要将原来两个实体的属性合理的分配到三个实体中,这⾥的
第三个实体,实质上是⼀个较复杂的关系,它对应⼀张基本表。⼀般来讲,数据库设计⼯具不能识别多对多的关系,但能处理多对多的关
系。
主键PK的取值⽅法
PK是供程序员使⽤的表间连接⼯具,可以是⼀⽆物理意义的数字串, 由程序⾃动加1来实现。也可以是有物理意义的字段名或字段名的
组合。不过前者⽐后者好。当PK是字段名的组合时,建议字段的个数不要太多,多了不但索引占⽤空间⼤,⽽且速度也慢。
正确认识数据冗余
主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多⼈还不清楚。⾮键字段的重复出现, 才是数据冗
余!⽽且是⼀种低级冗余,即重复性的冗余。⾼级冗余不是字段的重复出现,⽽是字段的派⽣出现。
例如: 商品中的 “单价、数量、⾦额”三个字段, “⾦额”就是由 “单价”乘以 “数量”派⽣出来的,它就是冗余,⽽且是⼀种⾼级冗余。
冗余的⽬的是为了提⾼处理速度。只有低级冗余才会增加数据的不⼀致性,因为同⼀数据,可能从不同时间、地点、⾓⾊上多次录⼊。因
此,我们提倡⾼级冗余(派⽣性冗余),反对低级冗余(重复性冗余)。
E--R图没有标准答案
信息系统的E--R图没有标准答案,因为它的设计与画法不是惟⼀的,只要它覆盖了系统需求的业务范围和功能内容,就是可⾏的。反之
要修改E--R图。尽管它没有惟⼀的标准答案,并不意味着可以随意设计。好的
文档评论(0)