我正在考虑如何在 SQL Server 数据库中表示复杂的结构。
考虑一个需要存储一系列对象的详细信息的应用程序,这些对象共享一些属性,但有许多其他不常见的属性。例如,商业保险套餐可能在同一保单记录中包括责任险、机动险、财产险和赔偿险。
在 C# 等中实现这一点很简单,因为您可以创建包含部分集合的策略,其中部分根据各种类型的覆盖的需要继承。然而,关系数据库似乎不允许这样做。
我可以看到有两个主要选择:
创建一个策略表,然后创建一个部分表,其中包含所有可能的变体所需的所有字段,其中大部分为空。
创建一个策略表和多个部分表,每个表对应一种保险。
这两种替代方案似乎都不能令人满意,特别是因为需要跨所有部分编写查询,这将涉及大量联接或大量空检查。
此场景的最佳实践是什么?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第三个选项是创建一个“Policy”表,然后创建一个“SectionsMain”表,用于存储跨不同类型的部分所共有的所有字段。然后为每种类型的部分创建其他表,仅包含不常见的字段。
决定哪个最好主要取决于您有多少字段以及您想要如何编写 SQL。他们都会工作。如果你只有几个字段,那么我可能会选择#1。对于“很多”领域,我倾向于#2 或#3。