这是一对多还是多对多?

时间:2013-03-24 14:47:10

标签: database

在这种情况下难以找出关系:

我想为收入类型创建一个复选框列表。用户界面将显示为“您收到什么类型的收入?”。为简单起见,选择可以是全职,兼职和退休。

我的一部分认为这是一对多关系,因此不需要关联表,因为一个人可以拥有一种或多种收入类型。然而,从字面上看,“全职”就业可能与许多人有关。在这种情况下,我不会显示有多少人是“全职”的汇总表,我只是与一个人打交道并确定他们的就业状况。

但我并不认为“全职”是一个实体,例如演员和电影 - 许多演员可以在很多电影中播放,很多电影可以有很多不同的演员。

我想让我感到震惊的是,用户可以选择多个选项,而不是单选按钮列表或下拉列表。

在这种情况下,是吗?

3 个答案:

答案 0 :(得分:1)

many-to-manyPersonEmployment Type

许多Person可能共享一个Employment Type

单个Person可能有多个Employment Type s。

话虽如此,我不知道您的商业模式有多丰富,但我会将Employment Type附加到名为Employment的实体,该实体会Employment Type引用many-to-one 1}}关联(而不是直接从Person引用)。

答案 1 :(得分:1)

从我的观点来看,这是一种多对多的关系。

全职是一个实体(假设一个INCOME_TYPES表),就像演员或电影一样。

既然你告诉我们,你不会展示 income-type-side 但只有个人方的东西,有两种选择:

  1. 取消规范化您的架构并将3个字段放在INDIVIDUALS表中。这不是很好。

  2. 如果您执行代码端的某些操作,则可以使用位掩码。

    • 例如,1表示全职,2表示兼职,4表示退休。

答案 2 :(得分:0)

这取决于您是将收入类型作为单独的表还是仅仅是一个字符串。

对于单独的表,它是多对多的:每个人都有多种收入类型。每种收入类型都有多人。