知识大全 循序渐进讲解数据表的十二个设计原则
Posted 范式
篇首语:提兵百万西湖上,立马吴山第一峰!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 循序渐进讲解数据表的十二个设计原则相关的知识,希望对你有一定的参考价值。
数据表的设计原则:
( )不应针对整个系统进行数据库设计 而应该根据系统架构中的组件划分 针对每个组件所处理的业务进行组件单元的数据库设计;不同组件间所对应的数据库表之间的关联应尽可能减少 如果不同组件间的表需要外键关联也尽量不要创建外键关联 而只是记录关联表的一个主键 确保组件对应的表之间的独立性 为系统或表结构的重构提供可能性
( )采用领域模型驱动的方式和自顶向下的思路进行数据库设计 首先分析系统业务 根据职责定义对象 对象要符合封装的特性 确保与职责相关的数据项被定义在一个对象之内 这些数据项能够完整描述该职责 不会出现职责描述缺失 并且一个对象有且只有一项职责 如果一个对象要负责两个或两个以上的职责 应进行分拆
( )根据建立的领域模型进行数据库表的映射 此时应参考数据库设计第二范式 一个表中的所有非关键字属性都依赖于整个关键字 关键字可以是一个属性 也可以是多个属性的集合 不论那种方式 都应确保关键字能够保证唯一性 在确定关键字时 应保证关键字不会参与业务且不会出现更新异常 这时 最优解决方案为采用一个自增数值型属性或一个随机字符串作为表的关键字
( )由于第一点所述的领域模型驱动的方式设计数据库表结构 领域模型中的每一个对象只有一项职责 所以对象中的数据项不存在传递依赖 所以 这种思路的数据库表结构设计从一开始即满足第三范式 一个表应满足第二范式 且属性间不存在传递依赖
( )同样 由于对象职责的单一性以及对象之间的关系反映的是业务逻辑之间的关系 所以在领域模型中的对象存在主对象和从对象之分 从对象是从 N或N N的角度进一步主对象的业务逻辑 所以从对象及对象关系映射为的表及表关联关系不存在删除和插入异常
( )在映射后得出的数据库表结构中 应再根据第四范式进行进一步修改 确保不存在多值依赖 这时 应根据反向工程的思路反馈给领域模型 如果表结构中存在多值依赖 则证明领域模型中的对象具有至少两个以上的职责 应根据第一条进行设计修正 第四范式 一个表如果满足BCNF 不应存在多值依赖
( )在经过分析后确认所有的表都满足二 三 四范式的情况下 表和表之间的关联尽量采用弱关联以便于对表字段和表结构的调整和重构 并且 我认为数据库中的表是用来持久化一个对象实例在特定时间及特定条件下的状态的 只是一个存储介质 所以 表和表之间也不应用强关联来表述业务(数据间的一致性) 这一职责应由系统的逻辑层来保证 这种方式也确保了系统对于不正确数据(脏数据)的兼容性 当然 从整个系统的角度来说我们还是要尽最大努力确保系统不会产生脏数据 单从另一个角度来说 脏数据的产生在一定程度上也是不可避免的 我们也要保证系统对这种情况的容错性 这是一个折中的方案
( )应针对所有表的主键和外键建立索引 有针对性的(针对一些大数据量和常用检索方式)建立组合属性的索引 提高检索效率 虽然建立索引会消耗部分系统资源 但比较起在检索时搜索整张表中的数据尤其时表中的数据量较大时所带来的性能影响 以及无索引时的排序操作所带来的性能影响 这种方式仍然是值得提倡的
( )尽量少采用存储过程 目前已经有很多技术可以替代存储过程的功能如 对象/关系映射 等 将数据一致性的保证放在数据库中 无论对于版本控制 开发和部署 以及数据库的迁移都会带来很大的影响 但不可否认 存储过程具有性能上的优势 所以 当系统可使用的硬件不会得到提升而性能又是非常重要的质量属性时 可经过平衡考虑选用存储过程
( )当处理表间的关联约束所付出的代价(常常是使用性上的代价)超过了保证不会出现修改 删除 更改异常所付出的代价 并且数据冗余也不是主要的问题时 表设计可以不符合四个范式 四个范式确保了不会出现异常 但也可能由此导致过于纯洁的设计 使得表结构难于使用 所以在设计时需要进行综合判断 但首先确保符合四个范式 然后再进行精化修正是刚刚进入数据库设计领域时可以采用的最好办法
( )设计出的表要具有较好的使用性 主要体现在查询时是否需要关联多张表且还需使用复杂的SQL技巧
cha138/Article/program/SQL/201311/16156相关参考
12星座是什么意思,是指人的十二个性格吗?12星座的确是有的,位于黄道周围附近,早已被天文学家们发现,我国古代称为黄道十二宫,至于是否与人的性格有关,那就不好说了,可能没有科学依据吧,12星座是什么意
知识大全 十二生肖属鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪这十二个生肖羊是未其它的十一个字是什么
十二生肖属鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪这十二个生肖羊是未其它的十一个字是什么?,十二生肖中的畜生是哪些?鼠牛虎兔龙蛇马羊猴鸡狗猪.子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴
数据库进阶:循序渐进讲解SQL查询语句的高级应用技巧[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
数据库进阶:循序渐进讲解SQL查询语句的高级应用技巧[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
数据库进阶:循序渐进讲解SQL查询语句的高级应用技巧[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
将数据模型转换成数据库设计的相关问题: 创建表的联系 强实体联系 把一个表的主键作为另一张表的外键为了强调最大粒度是应该把外键设置成候选键 N强实体联系 把的那一段的表(父表)的键设置成
数据库设计是应用程序设计的基础其性能直接影响应用程序的性能数据库性能包括存储空间需求量的大小和查询响应时间的长短两个方面为了优化数据库性能需要对数据库中的表进行规范化规范化的范式可分为第一范式第二
十二生肖中称凤的是什么动物十二生肖的来历与传说从文献记载来看,黄帝时代就有十二地支,它跟白羊、金牛、双子、巨蟹等十二星座有关,最早的十二地支、十二星座都代表着每年十二个不同的月令、节令。殷商时期发明了
(1)数据库模式的描述与设计应满足现行应用的需要,并具有适应变化的能力; (2)数据库应具备统一的维护手段; (3)同类型的库宜采用统一的字段格式; (4)基于某一数据库管理系统设计的数据库,应
(1)数据库模式的描述与设计应满足现行应用的需要,并具有适应变化的能力; (2)数据库应具备统一的维护手段; (3)同类型的库宜采用统一的字段格式; (4)基于某一数据库管理系统设计的数据库,应