两个动态实体量之间的关系映射

时间:2015-07-15 22:13:20

标签: sql relational-database

我有两个动态实体。例如 B1,B2,B3,B4,B5,...我不知道有多少B' si但我会在每个B的SQL中有一个特定的表。另一方面我有一个动态的数量A表示在表AEnum中的单行。

现在我想要一个映射。映射看起来像这样: 每个a可以具有B的每个实体或不具有> 1/0 =>布尔值。

例如:

A1 => B1 (true), B2 (true), B3 (false), B4 (true)...
A2 => B1 (true), B2 (false), B3 (false), B4 (true)...
A3 => B1 (false), B2 (true), B3 (true), B4 (true)...

因此,对于每个B,我在表AHasB中创建了一个名为B的列,只需存储一个tinyint。然而,这不是很有活力。我希望尽可能让它变得动态。

可能的想法: 表BEnum存储Bid和BName(B&#39实例的表名),AEnum保持相同只是存储每个A的东西的行数。然后AHasB看起来像:

A1 => "B1, B4, B12"
A2 => "B9, B10"

只需将其存储为我在逻辑方面解析的单个字符串,而不是持久性方面。通过该解决方案,情况如下:

  • 添加B时:我只需要手动添加B表并更新BEnum表
  • 删除B时:删除表格,相应地更新BEnum表并更新AHasB以删除刚刚删除的字符串中的所有B实例
  • 添加A:只需在AHasB中插入新行
  • 删除A时:只需删除该行

我认为这将是最具活力的方法。或者有没有更好的方法将其保存在SQL数据库中?

如果有人问:B1,B2,B3,......都是完全不同的表的名称。例如:汽车,爱好者等A1,A2,A3,是人和关系可以读作"对于X人我想知道他有哪些爱好,他开什么车等等#34 ;

有人有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

通常,您可以将任何实体集之间的关系表示为包含每个实体集的列的表。例如:

persons (person PK, name, age, ...)
cars (car PK, make, model, ...)
car_owners (person PK/FK, car PK/FK)

在car_owners中,包括PK中的两列确保该对是唯一的,意味着多对多关系。将PK限制为该列中的一个或其他均值实体必须是唯一的,因此是一对多的关系。