我们在第二章中讨论过父型和子型。这些实体有多种真实的模块。例如,我们也许有一个父型电话、附带有一些有线或无线的子型电话。我们将这些对象区分开放进一个子型集群里。
因为即使都是电话,不同的类型都需要我们归为不同的属性。例如,一部无线电话,我们就需要知道听筒能够在多大的范围内接听以及接电话的频率。对于一部有线电话,你就要看看线的长度。这些区别都属于子型,这些电话之间的共同点包含在父型特征之内。
如何在SQL Server中实施子型集群?你有三种选择。首先就是创建一个单独的表表示父型特征并包含所有子型特征。第二种选择就是给每个子型创建表,给每个子表增加父型特征。第三,你可以同时创建父表和子表,和逻……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
我们在第二章中讨论过父型和子型。这些实体有多种真实的模块。例如,我们也许有一个父型电话、附带有一些有线或无线的子型电话。我们将这些对象区分开放进一个子型集群里。因为即使都是电话,不同的类型都需要我们归为不同的属性。例如,一部无线电话,我们就需要知道听筒能够在多大的范围内接听以及接电话的频率。对于一部有线电话,你就要看看线的长度。这些区别都属于子型,这些电话之间的共同点包含在父型特征之内。
如何在SQL Server中实施子型集群?你有三种选择。首先就是创建一个单独的表表示父型特征并包含所有子型特征。第二种选择就是给每个子型创建表,给每个子表增加父型特征。第三,你可以同时创建父表和子表,和逻辑建模的方式一样更加有效地实现子型集群。
要判断哪种方法正确,你就必须看清楚保存的这些数据。我们会仔细考虑这三种选择中的每一种,并考虑到你使用他们的原因以及每种选择的优点和缺点。
父表
当子表中没有包含或者和父表中的数据没有区别的时候,不可以用采用这一选项。例如,一个保存了员工数据的集群。在建模时,你会发现同时也付给了小时工工资。所以你就要决定用子表和父表进行区别。在仔细考虑所有的要求之后,你决定这两种类型之间的真正的区别就是:你要保存每个公司付给工资的员工的年工资;你还要保存小时工的工资以及小时工上班时间的长短。
在这个例子中,子表之间的区别很小,所以你可以用子表创建子型集群。在这种情况下,你可以创建一个单独的、包括所有员工类型的表,它还包含子表的三种所有的特征,即工资、小时工资以及上班时间。无论你何时插入一个小时工,你就需要把这个数据添加到每小时费用和上班时间(小时)这两列中。那么工资这一列就会变成NULL。而对于有薪水的员工,你要做的事情刚好和它相反
用上面这种方法创建这种图表类型会让你很轻松就找到员工数据,因为所有这些数据都在同一个地方。唯一的缺点就是你必须实现员工类型和他适当的列之间的逻辑性。只有在子型实体其他的特征很少的时候,父表的实施才能行之有效。如果它们之间有很大的区别,那你就可以设定指定行的列为NULL,这样它就会用一种较好的方式将数据汇集在一起。
子表
子表中包含的数据和一般的数据不一样,这主要是因为子表很小,你很有可能安装子表本身。这实际上是一种相反的数据布局,它会提示你只能用父型模式。
即如你现在在为相机零售店创建一个表。你可以为这个店里销售的产品建一个子集群,因为每个产品都属于不同的类型。你需要保存每种产品的产品型号,物料编号和产品的实用性,也些也就是它们相似的地方。对于相机来说,你还需要知道它最快的快门速度、每秒帧数、反光镜大小、电池型号、距离物体的最近距离和最小光圈。并且三脚架也有一些数据,你需要保存最小和最大的高度、在哪个平面上可以安装枢轴、镜头类型。每个购买了相机的人知道这里我列出的这些区别还仅仅是表面上的。你需要了解每种类型的一些其他特征来准确介绍所有选项。
所有的这些属性对每种子型来说都是唯一的,它们之间也只有很少的共同点,这样就造成你只能实施子表。你在做这些时,每个子表都会自己存储共同的数据。也就是说,相机、镜头和三脚架表有相应的列保存模式数据、SKU型号和实用性。你用这种方法查询实施的数据,就需要支持你查询你要找的这种产品的合适的表。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。