2014-04-02 304 views
-1

我有兩個表:員工培訓,員工表有兩列:ID(數字)和名稱(文本)。 訓練表還有兩列:(數字)和訓練名稱(文本)。這種情況下最好的情況是什麼?

我的老闆問我如下: 一些trainingName可以通過「組名」(組名可以動態地根據用戶的輸入被添加)和一個traininName可以分爲一組,沒有任何團體或超過被歸類一組。每個員工可以屬於一個組或不屬於一個組(不能屬於兩個或更多組)。 我很困惑如何管理?我是否需要創建另一個表或修改現有表? 我正在使用PostgreSQL9.2。

+0

這聽起來像你需要添加更多的表處理這個的一部分。也許是'TrainingGroup'表和兩個關係表,用於'TrainingGroup'和兩個現有表之間的多對多關係。 – David

回答

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或以上的團體