2012-11-22 36 views
0

我有兩個表,一個名爲users,一個名爲work_order。使用CakePHP的多字段主鍵和數據庫結構

用戶表,字段包括:* ID,GIVEN_NAME,FAMILY_NAME *

work_order表包括* ID,CREATE_DATE,DUE_DATE,說明*

我想添加created_by,requested_by和owned_by字段,這些字段將僅限於users表中列出的用戶。什麼是正確的方法來做到這一點?我在工作訂單表中是否有「_by」字段,或者是否需要使用work_order_id,user_id和某種角色字段的新表?

回答

0

首先,你的表應該是'work_orders'(複數),而不是'work_order'(單數)。沒有什麼大不了的,只要你在你的模型中指定了$useTable = "word_order";,但是 - 命名約定表格應該是複數形式。因爲你只是處理了三件事情,並且不期望不斷地添加新的字段,所以使用你提到的三個字段:'created_by',你完全沒問題(也可能是我會做的)您的work_orders表中的'requested_by'和'owned_by'字段。

我想如果是我,我會遵循something_id慣例,並使用'creator_id','requester_id'和'owner_id'。無論哪種方式,都取決於你。

然後,當您設置您的關聯時,您只需使用這三個字段關聯「用戶」模型。關於我的頭頂,它會是這樣的:

//WorkOrder model 

public $belongsTo = array(
    'Creator' => array(
     'className' => 'User', 
     'foreignKey' => 'created_by' //could use 'creator_id' instead 
    ), 
    'Requester' => array(
     'className' => 'User', 
     'foreignKey' => 'requested_by' //could use 'requester_id' instead 
    ), 
    'Owner' => array(
     'className' => 'User', 
     'foreignKey' => 'owned_by' //could use 'owner_id' instead 
    ), 
); 
0

您必須定義用戶和工作訂單之間的關係,以便以第三範式創建數據庫方案。

用戶是否可以創建多個工單? 是否可以爲多個用戶創建工單?

用戶可以請求多個工單嗎? 是否可以爲多個用戶請求工單?

用戶可以擁有多個工單嗎? 工單可以擁有多個用戶嗎?

一旦你有這些問題的答案,你可以開始在數據庫表上工作。

+0

用戶可以請求,擁有並創建多個工單,但每個訂單隻能有一個。 – gsforfree

+0

然後所有的外鍵(id)都應該在'work_order'表中。 (1-n關係) – Alvaro