在这种情况下最好的情况是什么?

时间:2014-04-02 12:03:17

标签: sql database postgresql database-design

我有两个表:员工培训,员工表有两列: ID (数字)和名称(文字)。 培训表还有两列:(数字)和 TrainingName (文本)。

我的老板问了我以下内容: 一些 trainingName 可以按“组名”分类(组名可以通过用户输入动态添加),一个traininName可以分为一组,无组或多于一组。每个员工可以在一个组或不在组内(不能在两个或更多组之下)。 我很困惑如何管理?我是否需要创建另一个表或修改现有表? 我正在使用PostgreSQL9.2。

1 个答案:

答案 0 :(得分:2)

您需要再添加两个表:“groups”和“groups_trainings”。

这将是您的数据库布局:

employees:
    id
    name
    group (foreign key to groups.id; can be null)

trainings:
    id
    trainingName

groups:
    id
    groupName

groups_trainings
    id
    trainingID (foreign key to trainings.id)
    groupID (foreign key to groups.id)

您需要最后一张表,将n组映射到n次训练。

布局说明如下:

  • 每个empoyee属于一个组,或者没有组(employees.group为null)
  • 每个小组可以包含0个或更多培训。
  • 每个培训可以是0个或更多组的一部分