相关疑难解决方法(0)

如何在数据库中表示继承?

我正在考虑如何在SQL Server数据库中表示复杂的结构.

考虑一个需要存储一系列对象细节的应用程序,这些对象共享一些属性,但有许多其他属性不常见.例如,商业保险计划可能包括同一保单内的责任,汽车,财产和赔偿保险.

在C#等中实现它是微不足道的,因为您可以创建一个带有Sections集合的Policy,其中Section是根据各种类型的封面所需继承的.但是,关系数据库似乎不容易这样做.

我可以看到有两个主要选择:

  1. 为所有可能的变体创建一个Policy表,然后是一个Sections表,其中包含所需的所有字段,其中大部分都是null.

  2. 创建一个Policy表和许多Section表,每个表对应一种封面.

这两种替代方案似乎都不令人满意,特别是因为必须在所有Sections中编写查询,这将涉及大量连接或大量空检查.

这种情况的最佳做法是什么?

sql database inheritance database-design class-table-inheritance

209
推荐指数
5
解决办法
9万
查看次数

用完整性约束来加强“子集”关系的最佳方法是什么

例如,给定3个表:

  • 腹足动物
  • 蜗牛
  • ug

并假设我们要执行

  1. “腹足动物”中的每一行都在“蜗牛”或“子弹”中恰好有一个对应的行(但不能同时包含两者)
  2. “子弹”中的每一行在“腹足动物”中恰好有对应的一行
  3. “蜗牛”中的每一行在“腹足动物”中恰好有对应的一行

设置架构以实施这些约束的最佳方法是什么?

我为postgres提供了一个可能的答案,我对postgres和Oracle的解决方案特别感兴趣,但也有兴趣查看其他RDBMS的解​​决方案

编辑
作为参考,以下答案/评论中的SO问题解决了类似的问题:

mysql sql-server oracle postgresql database-design

5
推荐指数
1
解决办法
2559
查看次数