2009-04-16 176 views
1

我有兩個表:工作與作業ID,jobdescription等,並用戶與用戶ID,作業ID,姓名等連接兩個表

什麼是最好的做法兩個作業ID鏈接到同一個用戶ID在表用戶

我可以存儲相同用戶的作業的項目,但我想這是一個更優雅的解決方案一箇中間表做到這一點。

謝謝。

回答

7

三個表 - 用戶,工作,UserJobs

用戶表包含關於用戶的

作業表描述了各個作業

UserJobs表作爲您的許多-TO-之間的橋樑信息許多使用UserID/JobID的組合PK/FK的關係。

Users 
UserID Name 
--------------------------------- 
1  Doogie Howser 
2  Steve Urkel 
3  Forest Gump 

Jobs 
JobID JobDescription 
--------------------------------- 
1  TV Character 
2  Movie Character 
3  Nerd 


UserJobs 
UserID JobID 
--------------------------------- 
1  1 
1  3 
2  1 
2  3 
3  2 
0

我看到TheTXI已經給你一個很好的答案,給他說了什麼添加更多: 你有什麼是用戶之間的許多一對多映射< =>工作。而且,無論何時遇到這種情況,您都必須使用映射用戶和作業的映射表。大多數情況下,會創建一個名爲UserJobs的表,其中包含一個包含jobid和userid的組合鍵。希望有所幫助。

1

這就是所謂的many-to-many關係,在RDBMS中實現這一點的方法是擁有一個junction table

你最好有3個表:

  • 工作作業ID(PK),jobdescription等
  • 用戶用戶ID(PK),姓名等(注意,沒有作業ID這裏)
  • userjob的userid的JobID(兩者的PK複合)