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