【发布时间】:2013-10-05 03:38:27
【问题描述】:
假设有一个实体“颁奖典礼”。在颁奖典礼上,一个“人”可以获得一个“奖”(或另一种说法:可以给一个人一个奖)。这很容易建模。
但是,一个“人”也可以被授予多个“奖励”。或者一个“奖”可以在多个“人”之间共享。这是我在建模方面苦苦挣扎的地方。我觉得我至少需要3张桌子:Award Ceremony、Person、Award。然后我想我需要一个映射表来正确建模 Person 实体可能有多个 Award,或者 Award 可能有多个 Person。
对如何建模有什么建议吗?
我正在使用 MySQL。也使用 Laravel 的 Eloquent ORM。
编辑 1:
我认为可以这样建模:
award_ceremony
- id
- name
person
- id
- name
award
- id
- name
mapping
- id
- award_ceremony_id
- person_id
- award_id
我不确定是mapping 表。
【问题讨论】:
-
同一奖项可以多次授予同一个人(可能在不同的仪式上)?
-
映射表中的id不是必须的。这张桌子的PK是award_ceremony_id、person_id和award_id。这种组合总是独一无二的。例如。 2013 年诺贝尔物理学奖,彼得·希格斯和 2013 年诺贝尔物理学奖,弗朗西奥斯·恩格勒特。不需要引入额外的关键字段。
标签: mysql database database-design data-modeling eloquent