数据库设计基本概念及知识.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库设计基本概念及知识 关系型: Mysql, Oracle ⾮关系型: Mongodb, Redis 数据库设计 减少数据冗余,避免数据维护异常,节约储存空间,⾼效的访问 设计步骤 需求分析:数据是什么,有哪些属性,数据和属性的特点(存储特点),数据的⽣命周期 逻辑设计:使⽤ER图对数据库进⾏逻辑设计 物理设计:把逻辑设计转成物理设计 维护优化:新的需求进⾏建表,索引优化,⼤表拆分 需求分析 1. 实体及实体之间的关系(11 1n nn) 2. 实体所包含的属性 3. 那些属性或属性的组合可以唯⼀标识⼀个实体 实例 以⼀个⼩型电⼦商务⽹站为例。⽤户模块,商品模块,订单模块,购物车模块,供应商模块 ⽤户模块:记录注册⽤户信息。唯⼀标⽰-⽤户名,⾝份证,电话。储存特点,增长,永久储存你。 商品模块:…….,可以对下线商品归档存储(不能删除因为涉及订单等,可以迁移)。 订单模块:………,永久存储(分表,分库存储) 购物车模块:……….,不⽤永久存储(设置归档,清理规则) 供应商模块:…….,永久存储 关系: 逻辑设计 1. 将需求转化为数据库的逻辑模型 2. 通过ER图的型式对逻辑模型进⾏展⽰ 3. 同所选⽤的具体的DBMS系统⽆关 三⼤范式 第⼀范式:数据库表中的所有字段都是单⼀属性,不可再分的。这个单⼀属性是由基本数据类型所构成的。即第⼀范式要求数据库的表都是 ⼆维表。 第⼆范式:数据库的表中不存在⾮关键字段对任意候选关键字段的部分函数依赖。部分函数依赖是指存在着组合关键字中的某⼀关键字决定 ⾮关键字的情况。即所有但关键字段的表都符合第⼆范式。 第三范式:⼆范式在三范式之上,如果数据表中不存在⾮关键字段对任意候选关键字段的传递函数依赖规则则符合第三范式。 BC范式:如果复合关键字,则复合关键字之间也不能存在传递函数依赖关系。(即把第三范式中的⾮关键字段升级为关键字及其分关键字 段) 物理设计— 设计标的结构 1. 选择合适的数据库管理系统 2. 定义数据库,表及字段的命名规范 3. 根据所选的DBMS系统选择合适的字段类型 varchar/char如何选择等 4. 反范式化设计 即增加冗余,⽤空间换取效率的提升 Mysql常⽤引擎: MylSAM 不⽀持事务。⽀持并发插⼊的表级锁。主要select,insert 。不易频繁读写。 MRG-MYISAM不⽀持事务。⽀持并发插⼊的表级锁。主要分段归档,数据仓库。不易全局查找过多的场景。 Innodb⽀持事务。⽀持MVCC的⾏级锁。主要事务处理。 Archive 不⽀持事务。⾏级锁。主要⽇志记录,只⽀持insert,select。不易需要随机读取,更新,删除。存储容量⼩。 Ndb cluster ⽀持事务。⾏级锁。主要⾼可⽤性。推荐使⽤。(mysql集群) 表及字段的命名规则 1. 可读性原则 (驼峰命名,但注意表名的⼤⼩写敏感) 2. 表意性原则 表明对象、数据内容、存储过程 3. 长名原则 尽可能少⽤或不⽤缩写 字段类型的选择原则 数据类型印象存储空间开销和查询性能。可以选择多数据类型时,优先数字,其次⽇期或⼆进制,最后字符串。同级别数据类型,优先占空 间⼩的。 1. 同样的数据进⾏⽐较时 (查询条件,join及排序)时,字符处理⽐数字慢。 2. 在数据库中,数据处理以页为单位,列的长度越⼩,利于性能提升。 Char和varchar如何选择 1. 数据长度差不多的选择char,数据长度不⼀致的时候varchar。 2. 列的最⼤数据长度⼩于50Byte,⼀般⽤char,但是如果这个列很少⽤,基于节省空间和减少I/O的考虑,可以选择varchar。 3. ⼀般不宜定义⼤于50Byte的char类型。 Decimal和float 1. decimal⽤于存储精确数据,float只能⽤于存储⾮精确数据。 2. float存储空间开销⼀般⼩于decimal(7位⼩数要4个字节,15位⼩数要8个字节) 时间类型 1. int 字段长度⽐datetime⼩,但是⽤不⽅便需要函数转换,只能存储到2038-1-19 11:14:07。在不经常查询时间的时候⽤int。 2. 存储的时间粒度 年⽉⽇⼩时分秒周 如何选择主键 1. 业务主键⽤于表⽰业务数据,进⾏表与标的之间的关联。数据库主键为了优化数据存储(Innodb不⼿动设主键

文档评论(0)

152****1430 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档