2012-08-17 92 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