2013-03-25 46 views
0

我基本上是在設計一個網頁清單。過程如下:用戶登錄,爲列表選擇「作業名稱」,點擊它,進入下一頁,從列表中選擇「程序列表」,點擊它,進入下一頁,在那裏他看到他可以基本上添加評論的清單,然後單擊個別清單上的複選框。 我知道如何編寫大部分代碼,但此刻我正試圖弄清楚如何設置 關係+要添加哪些額外的表來保存信息。清單數據庫設計。一對多關係和存儲用戶信息

總體佈局我此刻:

Table: User_list 
User_ID 
Username 

Table: Job_list 
Job_ID 
Job Name 

Table: Procedure_List 
Procedure_ID 
Procedure Name 
Job_ID 

Table: Check_List 
Job_ID 
Checklist_ID 
Description 

JOB_ID - > Procedure_ID - > Checklist_ID是一對多的...但如何添加,以存儲由所做的所有更改的用戶列表用戶。

所以你基本上可以有一個頁面,你看:

Job Name 
Procedure 
Checklist done 

,並通過用戶所做的所有細節。

+0

令人困惑。你的清單表有一個工作代碼,但是在你的文本中,你顯示與清單相關的程序,而不是工作。另外,對於每項工作,只有某些程序是允許的,而且只有某些清單?還是三者允許的組合? – radarbob 2013-03-25 14:40:15

+0

那麼,每個工作就像一個包含過程列表(其基本上是該作業所需的所有東西的列表)的標題。每個程序清單都包含需要檢查並存儲在一個地方的步驟。所以要回答你的問題。它就像我想的嵌套表達式。 – wtz 2013-03-25 15:19:47

回答

0

我假設關係是作業1:m程序1:m清單。用戶可以選擇任意數量的作業。 Job/Procedure/Checklist的組合由用戶選擇。例如,我假設一個作業可能有10個關聯的程序,用戶可以選擇其中的一個或多個。過程相同:給定過程具有與其關聯的特定清單,並且用戶可以選擇任何數量的這些清單。

使用「連接表」。

  1. User_Job表。用戶可能與任何作業或任何數量的作業相關聯。 user_ID和job_ID進入User_Job表。使主鍵爲User_ID + job_ID。
  2. Job_Procedure表。將User_Job鍵(兩列)和procedure_id放在此表中。創建主鍵User_ID,Job_ID,Procedure_ID
  3. Procedure_Checklist表。將Job_procedure鍵(所有列)& checklist_id放在此表中。使用所有列將主鍵設爲複合鍵。

主鍵的想法

對於主鍵的每個表將限制在相關的表中的列數的序列號。但是,這個鍵沒有實際意義,例如,如果您正在查看Procedure_Checklist表,則無法分辨哪個作業不需要查詢其他表 - PITA。對這樣一把鑰匙進行分類也沒有意義。而且它不會阻止重複的行。

相關問題