父表和子表 你可能会想:如果有一些共同的属性并且子表之间有很大的不同,你就需要同时安装父表和子表。这里有一个很好的例子:子型集群存储的是客户的支付信息。不论你的客户的支付形式是电子支票、信用卡、礼券还是现金,你都需要知道一些其他的信息。任何一种支付形式你都要知道:支付的人是谁、什么时候收到的款、数量以及支付状态。
但是这些支付形式中每一种都要求你去了解支付的一些细节。如信用卡,你就要知道卡号、卡的类型、安全密码以及有效期。如果是电子支票,你就需要知道银行帐号、流水号、支票号码,或者是司机的执照号码。礼券就很简单了,你只需要知道卡号和余额。
如果是现金,你就不需要保存其他的数据。 以上这种需……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
父表和子表
你可能会想:如果有一些共同的属性并且子表之间有很大的不同,你就需要同时安装父表和子表。这里有一个很好的例子:子型集群存储的是客户的支付信息。不论你的客户的支付形式是电子支票、信用卡、礼券还是现金,你都需要知道一些其他的信息。任何一种支付形式你都要知道:支付的人是谁、什么时候收到的款、数量以及支付状态。但是这些支付形式中每一种都要求你去了解支付的一些细节。如信用卡,你就要知道卡号、卡的类型、安全密码以及有效期。如果是电子支票,你就需要知道银行帐号、流水号、支票号码,或者是司机的执照号码。礼券就很简单了,你只需要知道卡号和余额。如果是现金,你就不需要保存其他的数据。
以上这种需要同时安装父表和子表,Payment表可能包括很多的细节、单个的信用卡、礼券,支票表会包含每种支付形式相应的信息。我们没有创建现金表,因为我们不需要保存Payment表之外的其他现金支付信息。
用这种方法安装子型集群,你还要保存子表之间的区别,通常一个较短的密码在父表中存储成一个列指定适当的子表。我们建议你尽可能使用单个字符,因为它们很小并且还给人们提供了比数字提供的更多的内容。在这个例子中,你可将信用卡保存为CC,将礼券保存为G、E为电子支票、C为现金(注意我们用CC来保存信用卡来区别现金)。在查询支付信息时,你可以加上基于这样一种鉴别工具的恰当的支付类型。
如果你只需要从父表和子表中查找数据,这种方法有两大优势:你只需要查找一个表,你也不需要检索其他数据。但是,另一方面就是如果你同时要从子表和父表中查找数据,你就必须判断你要哪个子表,然后将这连个表连接起来。另外,你可能会发现你还需要父表和多个子表的信息,这将增加你的查询量,因为你要将多个表连接起来。
子表和父表:最后一件事
安装子表和父表方法有时可以灵活。如果你要花大量的时间来了解数据、了解将数据拆分进多个表中而不是将它们捆绑得更紧的意义,你就应该能决定最佳解决方案。不要害怕产生一些测试数据、通过性能测试运行多种选择方式来确保你做出正确的选择。我们在建立物理模式时会用到子型集群和适和其他复杂情况的选项。
总结
在本章中,我们谈到了SQL Server中一些可用的对象,你可以用它们来安装你的物理模式。了解这些对象在很多方面都很重要。你当你在设计你的逻辑模式时必须记住这一点,这样你才能牢记SQL Server。这一点在你之后建立和安装物理模式时也会起到重要的作用。可能不会对你建立的每个数据库用SQL Server中的每一个对象,但是你要清楚你的选择。我们会在以后向大家介绍如何创建物理模型,在那个时候我们会介绍你如何用这些物理模型解决问题的方法。
在下一章中,我们会谈到 标准化(normalization),那时我们会通过例题方案、挖掘真实事例介绍本书最基本的部分。
翻译
相关推荐
-
云端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升级向导。