MyException - 我的异常网
当前位置:我的异常网» Sql Server » 数据库设计规范讨论二之表设计解决思路

数据库设计规范讨论二之表设计解决思路

www.MyException.Cn  网友分享于:2013-01-20  浏览:12次
数据库设计规范讨论二之表设计
1.关于主键
1)从效率角度看,整数类型的主键应该比定长或变长类型的字符主键效率高,哪位有测试过效率一般会高多少?
2)通常来讲是否我们一般应该选择代理主键,比如自增值、GUID等?
3)如果使用用户自定义编码作为主键有什么不好?
4)如果是复合主键,比如有4个以上的字段组成主键,我们是否应该考虑用单一主键来代替,比如GUID?或者考虑反范式?
2.关于冗余
1)比如有一个订单,我们考虑一个订单有一个产品系列,这个系列的产品有很多规格,每个规格有自己的单价,我们要看这个订单包含多少规格,
包含多少产品数量,订单包含多少金额,我们是否应该把这些值包含在主表中?如果不包含,计算的效率估计会差多少?如果要包含,我们可以
通过哪些手段来保证数据的一致性?
2)在考虑冗余设计时,我们一般需要考虑哪些因素?
3.关于参照完整性
1)比如客户表,许多业务都会用到,一般我们是否应该把这些表全部和客户表关联?这样对查询和更新效率分别有多大的影响?
看过MS   CRM的设计,几乎所有的表都和用户表作了关联?
2)我们是否应该选择级联更新或删除?

哈哈,欢迎大家发表高见,分不够再开帖。

------解决方案--------------------
也来占也楼层...
------解决方案--------------------
....又没LS快
------解决方案--------------------
不说话占了也没用
------解决方案--------------------
子陌红尘 占了再说吧,我在下面听
------解决方案--------------------
1.关于主键
1)从效率角度看,整数类型的主键应该比定长或变长类型的字符主键效率高,哪位有测试过效率一般会高多少?
--------感觉要看你字符的长度,效率不是一定低于int类型主键

2)通常来讲是否我们一般应该选择代理主键,比如自增值、GUID等?
--------看具体情况GUID尽量少用,自增值随意

3)如果使用用户自定义编码作为主键有什么不好?
--------感觉没什么问题

4)如果是复合主键,比如有4个以上的字段组成主键,我们是否应该考虑用单一主键来代替,比如GUID?或者考虑反范式?
--------这种情况建议用单一主键代替
------解决方案--------------------
开两贴了
------解决方案--------------------
不错!
支持。
学习经验!
------解决方案--------------------
学习学习
------解决方案--------------------
mark
------解决方案--------------------
顶回上去
------解决方案--------------------
偶是~实习记者
------解决方案--------------------
听听课
------解决方案--------------------
顺便站个楼层
------解决方案--------------------
1.关于主键
1)从效率角度看,整数类型的主键应该比定长或变长类型的字符主键效率高,哪位有测试过效率一般会高多少?

与效率问题更挂钩的是聚集索引。


2)通常来讲是否我们一般应该选择代理主键,比如自增值、GUID等?

还是尽量少用的好

3)如果使用用户自定义编码作为主键有什么不好?

唯一的就怕用户修改编码规则,会死人的

4)如果是复合主键,比如有4个以上的字段组成主键,我们是否应该考虑用单一主键来代替,比如GUID?或者考虑反范式?

4个以上的字段应该代替
反范式?

2.关于冗余
1)比如有一个订单,我们考虑一个订单有一个产品系列,这个系列的产品有很多规格,每个规格有自己的单价,我们要看这个订单包含多少规格,
包含多少产品数量,订单包含多少金额,我们是否应该把这些值包含在主表中?如果不包含,计算的效率估计会差多少?如果要包含,我们可以通过哪些手段来保证数据的一致性?

这个例子肯定是要设计成主从表,好的索引能提高效率。

2)在考虑冗余设计时,我们一般需要考虑哪些因素?

冗余设计首先要考虑的是一致性,其次是大数据量情况下因为表太宽对效率的反作用。

3.关于参照完整性
1)比如客户表,许多业务都会用到,一般我们是否应该把这些表全部和客户表关联?这样对查询和更新效率分别有多大的影响?
看过MS CRM的设计,几乎所有的表都和用户表作了关联?

应该适当减少些关联,但是要保证一致性,至少在系统设计的配合下保证一致性。

2)我们是否应该选择级联更新或删除?

个人认为级联更新或删除是鸡肋


------解决方案--------------------
鸡肋是啥意思。。。。
------解决方案--------------------
笔记中。。。
------解决方案--------------------
实习记者提个要求~~~说普通话。。。
滴泪中。。。。
------解决方案--------------------
鸡肋 就是看起来很巧妙,实际不敢大用的功能,比如函数、级联、远程连接自己等等



------解决方案--------------------

文章评论

程序员必看的十大电影
程序员必看的十大电影
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
一个程序员的时间管理
一个程序员的时间管理
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
鲜为人知的编程真相
鲜为人知的编程真相
我是如何打败拖延症的
我是如何打败拖延症的
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
老程序员的下场
老程序员的下场
程序员都该阅读的书
程序员都该阅读的书
每天工作4小时的程序员
每天工作4小时的程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
漫画:程序员的工作
漫画:程序员的工作
为什么程序员都是夜猫子
为什么程序员都是夜猫子
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员和编码员之间的区别
程序员和编码员之间的区别
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
 程序员的样子
程序员的样子
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员的鄙视链
程序员的鄙视链
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些争议最大的编程观点
那些争议最大的编程观点
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
旅行,写作,编程
旅行,写作,编程
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
代码女神横空出世
代码女神横空出世
我的丈夫是个程序员
我的丈夫是个程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员应该关注的一些事儿
程序员应该关注的一些事儿
总结2014中国互联网十大段子
总结2014中国互联网十大段子
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
编程语言是女人
编程语言是女人
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有