2012-08-17 91 views
0

我讀過多個地方,你不應該存儲數組在MySQL數據庫。所以我想我會問我應該怎麼做這樣做:MYSQL數據庫結構 - 數組?

我正在寫一個基本的任務管理應用程序在PHP/MySQL,我想有項目和任務。任務是一個單一的對象,其中一個項目是一個包含多個任務的對象。所以我已經有任務工作了,我有一個任務表,id,name,dueDate列。我的下一步是項目。

我的計劃是製作一個帶有id,name,dueDate和taskID列的項目表。 taskID列將包含任務ID數組或可能僅包含逗號分隔符的字符串。

有什麼建議嗎?

+1

爲什麼不能有'projectID'爲你的任務表的外鍵? – andrewsi 2012-08-17 15:47:16

+1

單個字段中的多個值會破壞關係數據庫的目的。將這些多個值拆分爲自己的專用子表稱爲標準化,您應該閱讀它。 – 2012-08-17 15:48:51

回答

3

這在MySQL中稱爲一對多關係。您將擁有任務來保存分配給他們的項目的ID。因此,要查找與項目關聯的任務,只需查詢包含項目標識的所有任務即可。這聽起來是對的嗎?

+0

Ahhhhhh ... DUH!簡單,優雅的解決方案。多謝你們! – user1564018 2012-08-17 15:50:08

0

任務(ID,姓名,的dueDate,專案編號) 項目(ID,姓名,的dueDate)

的專案編號列是一個和外鍵和Proejcts'表ID列的是另外一個。

0

如果每個ID /名稱記錄可以有不同數量的任務ID,那麼有兩個選項。首先是使用XML而不是SQL。第二個是創建兩個表。那上面有id,name和截止日期,然後是第二個只有id和taskID。第二列中的id是表1中的外鍵引用id,taskID是單個taskID。例如:

表1:

id | name | dueDate 
------------------- 
1 | bob | '2012-08-16' 
2 | fred | '2012-08-17' 

表2:

TableID | TaskID 
----------------- 
1  | 1 
1  | 2 
1  | 3 
2  | 1 
2  | 2