SQL Server中的父表和子表(一)

 
   | |

导读:在SQL Server中实施子型集群有三种方法。首先就是创建一个单独的表表示父型特征并包含所有子型特征。第二种就是给每个子型创建表,给每个子表增加父型特征。第三……

关键词:SQL Server 父表 子表

正在加载数据...

【TechTarget中国原创】我们在第二章中讨论过父型和子型。这些实体有多种真实的模块。例如,我们也许有一个父型电话、附带有一些有线或无线的子型电话。我们将这些对象区分开放进一个子型集群里。因为即使都是电话,不同的类型都需要我们归为不同的属性。例如,一部无线电话,我们就需要知道听筒能够在多大的范围内接听以及接电话的频率。对于一部有线电话,你就要看看线的长度。这些区别都属于子型,这些电话之间的共同点包含在父型特征之内。

【TechTarget中国原创】我们在第二章中讨论过父型和子型。这些实体有多种真实的模块。例如,我们也许有一个父型电话、附带有一些有线或无线的子型电话。我们将这些对象区分开放进一个子型集群里。因为即使都是电话,不同的类型都需要我们归为不同的属性。例如,一部无线电话,我们就需要知道听筒能够在多大的范围内接听以及接电话的频率。对于一部有线电话,你就要看看线的长度。这些区别都属于子型,这些电话之间的共同点包含在父型特征之内。

  如何在SQL Server中实施子型集群?你有三种选择。首先就是创建一个单独的表表示父型特征并包含所有子型特征。第二种选择就是给每个子型创建表,给每个子表增加父型特征。第三,你可以同时创建父表和子表,和逻辑建模的方式一样更加有效地实现子型集群。

  要判断哪种方法正确,你就必须看清楚保存的这些数据。我们会仔细考虑这三种选择中的每一种,并考虑到你使用他们的原因以及每种选择的优点和缺点。

  父表

  当子表中没有包含或者和父表中的数据没有区别的时候,不可以用采用这一选项。例如,一个保存了员工数据的集群。在建模时,你会发现同时也付给了小时工工资。所以你就要决定用子表和父表进行区别。在仔细考虑所有的要求之后,你决定这两种类型之间的真正的区别就是:你要保存每个公司付给工资的员工的年工资;你还要保存小时工的工资以及小时工上班时间的长短。

  在这个例子中,子表之间的区别很小,所以你可以用子表创建子型集群。在这种情况下,你可以创建一个单独的、包括所有员工类型的表,它还包含子表的三种所有的特征,即工资、小时工资以及上班时间。无论你何时插入一个小时工,你就需要把这个数据添加到每小时费用和上班时间(小时)这两列中。那么工资这一列就会变成NULL。而对于有薪水的员工,你要做的事情刚好和它相反

  用上面这种方法创建这种图表类型会让你很轻松就找到员工数据,因为所有这些数据都在同一个地方。唯一的缺点就是你必须实现员工类型和他适当的列之间的逻辑性。只有在子型实体其他的特征很少的时候,父表的实施才能行之有效。如果它们之间有很大的区别,那你就可以设定指定行的列为NULL,这样它就会用一种较好的方式将数据汇集在一起。

  子表

  子表中包含的数据和一般的数据不一样,这主要是因为子表很小,你很有可能安装子表本身。这实际上是一种相反的数据布局,它会提示你只能用父型模式。

  即如你现在在为相机零售店创建一个表。你可以为这个店里销售的产品建一个子集群,因为每个产品都属于不同的类型。你需要保存每种产品的产品型号,物料编号和产品的实用性,也些也就是它们相似的地方。对于相机来说,你还需要知道它最快的快门速度、每秒帧数、反光镜大小、电池型号、距离物体的最近距离和最小光圈。并且三脚架也有一些数据,你需要保存最小和最大的高度、在哪个平面上可以安装枢轴、镜头类型。每个购买了相机的人知道这里我列出的这些区别还仅仅是表面上的。你需要了解每种类型的一些其他特征来准确介绍所有选项。

  所有的这些属性对每种子型来说都是唯一的,它们之间也只有很少的共同点,这样就造成你只能实施子表。你在做这些时,每个子表都会自己存储共同的数据。也就是说,相机、镜头和三脚架表有相应的列保存模式数据、SKU型号和实用性。你用这种方法查询实施的数据,就需要支持你查询你要找的这种产品的合适的表。

 
查看全文
 
 
 
 
 

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录