引用
做数据库设计的时候,某些表必须有一个状态字段.比如角色表,它的状态为:已禁用、正常等。那是不是要单独做一张角色状态表呢?
那么其他表的中的状态字段,是不是也要做一张对应的状态表呢?
即使状态只有两个值?
如果这种状态只有两个值可以设置一个字段为bool类型
如果状态包括多个值,但这些值不需要总变化,可以考虑用枚举类型
如果状态包括多个值,且需要经常添加或删除,可考虑创建一个新的表,与主表关联
http://blog.csdn.net/hehuii/archive/2010/07/25/5764683.aspx
引用
例如面向过程的设计中,一张申请表很可能被设计成一张物理表;而面向对象设计中,很可能没有申请表这么一张物理表,而只有“用户资料”、“申请流程”、“申请资质”等对象表,所谓的申请对象,是在运行期由这些对象聚合而成的。
正确认识数据冗余
主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的重复出现, 才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的重复出现,而是字段的派生出现。
〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,而且是一种高级冗余。冗余的目的是为了提高处理速度。只有低级冗余才会增加数据的不一致性,因为同一数据,可能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)。