日期:2014-05-16  浏览次数:20629 次

数据库设计咨询
目前的数据设计是这样的, 有个字段值标注该记录的类型,然后其他字段为该记录的值。

比如 类型学生,有年龄,性别

那么此时数据库的结构为

type

age

sex

但是随着系统的扩展这个表变的不适应了,比如此时引入了老师,而老师有级别,那么此时必须修改表为

type

age

sex

level

随便不段新类型的引入,有些类型没有age或者sex,又扩展新的属性。我想问有什么好的设计来适应这种扩展。
------解决方案--------------------
从实体角度来说“教师”和学生“学生”是两个不同的实体,这两者之间除了年龄性别之外,几乎没有共同属性。你放在一个表违背了三范式。虽说设计的时候不一定满足三范式,但第一范式必须达到,你这样做联第一范式都没达到。从跟上解决问题:学生,教师,还有你说的其他都不要放在一个表中,强烈建议分表!!!!
------解决方案--------------------
引用:
好吧,我承认问题是我直接抄的,我的实际情况是:
信息都是关于个人信息的,都是从集团下属公司和关联单位获取整合的,准备整合数据后期做数据分析。
各个下属公司的数据结构均有不同,前期是要整合下属公司的数据,后期(这个时间不能确定,也许是系统开发完成之后)会从关联单位获取数据,比如车管所拿到交通违章数据,违章记录肯定是分表比较好,但个人信息包含了车牌号,这个需要加到个人信息。同时,如果是在系统开发完了之后才拿到的车管所数据,为了加违章记录还得对系统在修改?这似乎有点麻烦,不能通过数据库设计来解决这个情况吗。
当然这个案例里是可以预测到多加了车牌号信息,其它数据源包含了什么新数据并不可预知。


你这就好比需求都没调研清楚就来做项目,有什么意义?谁都给你解答不了,个人信息表也不要太大。什么车牌号之类的可以另外用表放。比如说订单表,记录订单的生成日期,客户编号,订单金额,以及数量等等,但是订单可以对应的有订单明细表,这里记录每个订单有哪些具体的货物,以及这些货物的属性

------解决方案--------------------
如果很多商品,它们的属性差别很大
倒是有专门的做法:
属性表:属性id,商品类型id,属性名称
属性值表:商品id,属性id,属性值
------解决方案--------------------
可以把人的信息单独设计一张表,包括共性信息如姓名、性别、婚否等基本信息,其他教师、学生、清洁工、义工等表与该人表关联