每个数据库只使用一个连接表?

kap*_*oky 1 database-design

我目前正在为一家保险公司进行数据库设计。示例实体是“客户”、“地址”、“车辆”、“建筑物”等。所以有很多关系,每个关系都有一些上下文。例如,客户车辆:客户可以是车辆的所有者、司机、承租人……基本上我看到两种处理方式:

(1):每个关系的连接表,带有两个外键和一个上下文 ID。这将导致许多联结表,其中部分数据很少。由于表的数量,选择会有点困难。

(2):整个数据库的一个连接表。该表将包含两个外键,一个是关于它是什么关系的键(例如客户-车辆)和一个用于上下文的键。这将导致一个巨大的连接表,但也更简单的选择。

哪个是更好的解决方案?有什么主要的优点/缺点,甚至是我没有想到的其他解决方案吗?

感谢您的帮助。如果我表达的不够清楚或有什么不明白的地方,请提问。(英语不是我的母语)

Mar*_*rco 7

第一个解决方案是最好的。

  • 第二种解决方案将为您提供更少的表,但如果您需要将 3 个表与 2 个连接点连接起来,您需要在 SQL 中两次使用大连接表。
  • 如果您想在表和它的连接点之间创建约束(实际上是强制性的),那么这在第二个解决方案中是不可能的。数据库不会检查您的数据完整性。
  • 对于需要从数据库中获取数据的人来说,第二个解决方案的 ER 图看起来很复杂。

  • 单个表可以具有参照完整性:您只需要为每个表设置一个单独的列,当然,可能所有列都必须可以为空。不过,这仍然是疯狂的,所以是的,无论如何,第一种选择更好。 (3认同)