MyException - 我的异常网
当前位置:我的异常网» J2SE » java数据库设计中的14个技艺

java数据库设计中的14个技艺(3)

www.MyException.Cn  网友分享于:2013-12-08  浏览:155次

对于层次固定的,比如网站菜单只有固定两层情况,用父ID设计比较方便。

5,“多态”结构和多对多略有不同,如果需求中某表字段多少类型有非常大的不确定性,可以采用3个表来完成:

一个[主表](ID),
一个[属性名称表](属性ID.属性名称),
一个[属性值表],包括3个字段:
属性值(属性Value varchar(500))
主表ID
属性ID

这样可以作到最小冗余度。
(和常见的多对多关系不同的是:值统一用varchar来存储,因为这类型的值一般不会用来计算)。

比如:手机型号有几千种,除了共同属性外还有不同属性有几百个,属性名和值类型都不一样,有的手机有这属性,有的没有。
对于这样的“多态”,我们就采用上面的设计结构。
其效果相当于:

某奇怪手机.属性集合["某某奇怪属性名"]="某某奇怪值";
某变态手机.属性集合["某某变态属性名"]="某某变态值";

“多态”结构,举个好理解的例子: 
军队的数据库设计中有种物资叫做“战缴物资”,就是打仗的时候缴获的,军队自己都不知道这些物资有什么属性。 

比如缴获的化学品有化学名,通用名,是否有辐射,计量单位,包装规格,数量等等,或者不是化学品是其他任何未知的东西。 
这样东西就可以 

某奇怪东西.属性集合["某某奇怪属性名"]="某某奇怪值";
某变态东西.属性集合["某某变态属性名"]="某某变态值";

这样存储。

补充一下讲泛式,我以前总结的:

1,原子性(不可分,例如:1,3,4这样就是错误的)
2,依赖性 (必须依赖主键)
3,非依赖性(除主键外都不依赖) 

这些是必须遵守的. 

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有