数据库设计规范讨论二之表设计
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)我们是否应该选择级联更新或删除?   
 个人认为级联更新或删除是鸡肋   
------解决方案--------------------鸡肋是啥意思。。。。
------解决方案--------------------笔记中。。。
------解决方案--------------------实习记者提个要求~~~说普通话。。。 
 滴泪中。。。。
------解决方案--------------------鸡肋 就是看起来很巧妙,实际不敢大用的功能,比如函数、级联、远程连接自己等等     
------解决方案--------------------