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

2008-11-18    | |
打印本文章
RSS

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

关键词:SQL Server 父表 子表

正在加载数据...

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

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

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

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

  父表

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

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

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

  子表

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

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

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

查看全文
 
我们在SQL Server 2008 B的SSIS服务中,经常会用到变量。SSIS的变量分为两种,一种是系统变量,一种用户定义的变量。系统变量包含有关包、容器……
 
创建可在选定的SQL Server版本上运行的脚本。无法为早期版本编写SQL Server 2005新增功能的脚本。某些为SQL Server 2005创建的脚本无法在运行……
 
在生成脚本过程中,有很多参数可以选择,合理的配置这些参数,可以让我们很方便的按照我们的期望生成脚本。本文着重介绍了如何在SQL Server中生成脚本。
 
在SQL Server 2000的视图中使用*符号时我们应该注意些什么?本文中描述了sp_refreshview的功能:刷新指定视图的元数据。由于视图所依赖的基础对象的更改……
 
有些朋友看到这个标题可能会有疑问,难道在视图中使用*符号还有何要注意的地方吗?对于这个问题,我们先不必回答,先看一下文中的例子吧。
在SQL Server中,我们如何进行索引设计来提升系统的性能和对查询进行优化,是许多用户非常关注的问题,在本次技术专题中,我们将分群集索引和非群集索引设计两部分来为您详细分析。
本技术专题主要为使用Oracle SQL Developer和其他开发工具。包括如何使用Oracle SQL Developer和其他开发工具、使用Oracle Database Home Page、在Oracle中使用SQL*Plus等方面。
本专题为QL SELECT语句基础。侧重概述了如何使用SELECT来访问SQL数据库中所有内容以及组成SELECT语句的许多子句名称和功能;同时还阐述了如何使用DISTINCT关键字消除重复的行,以及如何正确使用ORDER BY子句来排序数据。
最新更新
专家答疑
技巧
Brian Fedorko
Oracle数据库审计功能十分强大、灵活并且易于配置,适当并有效地使用数据库审计功能是拥有高效安全策略的基础。
Brian Peasland
Oracle数据库二进制文件和库文件是高版本版本的,而备份的数据库内部如果仍然是较低版本,那么Oracle将不允许你打开数据库,除非你完成了升级过程。
Maria Anderson
在Windows XP环境下,使用数据库升级助手将Oracle从9.2.0.1升级到10g R2,出现DBUA不能识别Oracle数据库的SID问题如何解决。

登录TechTarget中国

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