新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > 数据库综合 > 正文:细化解析在数据库中用子类型设计关系表

细化解析在数据库中用子类型设计关系表

新客网 XKER.COM 2007-08-31 来源: Alice 收藏本文

理论上,在设计过程中揭示的每一个实体都会产生一个表。如果应用程序处理员工,就会建立一个员工表;如果那些员工中有经理,就会有一个经理表。

但实际上,如果两个实体十分相似,用单独一个表来处理它们会更有效率。员工与经理成为一个扩充员工表的“子类型”。

你必须决定如何处理子类型之间的差异。如果不同的子类型需要相同的数据,只是解释不同的话,你可以对所有子类型使用同一些列。另一个方法就是建立专门针对子类型的列。每种方法各有其优缺点。

对列进行再利用时,需要在表中增加另一列来指明特定行中的子类型。这对于解释超载列中的数据十分重要。

 

使用单独的列时,就不需要增加这样的指示列。对任何列进行针对某一子类型的 IS NULL 测试就可决定行是否属于那个子类型。结果为数值表明它属于那个子类型,结果为零值则说明它属于其它的子类型。

你还可以在一个表中模拟两个以上的子类型,但上面提到的原则同样适用于这些情形。根据数据的不同,你也可以结合使用这两种方法。

 

假设我们希望在同一个表中处理员工和经理。除两个实体间的公共列以外,员工有小时工资,而经理有年薪。另外,经理有一个指定的停车位号码( 1 到 50 之间),而员工只有普通的停车通行号(多达 9999 )。 列表 A 中是一个新建表( CREATE TABEL )语句,其中两个子类型使用相同的两列; 列表 B 是使用单独列的新建表( CREATE TABEL )语句。

注意,在列表 A 中,可以使用非零限制来防止数据丢失,但在列表 B 中则不行。还要注意,列表 A 中的 CHECK 限制必须应用于表级别,因为它们参考一个以上的列。列表 B 的 CHECK 限制可应用于列级别,因为它们只处理当前列的内容。它们也更加简单,但数量更多。

标签:
收藏】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
【重要声明】:新客网刊载此文仅为提供更多信息的目的,并不代表新客网同意文章的说法或描述,也不构成任何建议,对本文有任何异议,请在上面提出建议。
  • 阅读排行
  • 推荐阅读
  • 随机推荐