我读过很多不应该在mysql数据库中存储数组的地方。所以我想我应该问我该怎么做:
我正在用php/mysql编写一个基本的任务管理应用程序,我想拥有项目和任务。任务是单个对象,其中项目是包含多个任务的对象。所以我已经有了任务,我有一个任务表,其中有id、name、dueDate列。我的下一步是项目。
我的计划是创建一个包含id、name、dueDate和taskID列的项目表。taskID列可能包含一个任务ID数组,也可能只是一个带有逗号分隔符的字符串。
有什么建议吗?
这在MySQL中被称为一对多关系。你会有一些任务持有他们被分配到的项目的id。因此,要找到与项目相关的任务,你只需查询所有持有项目id的任务。这听起来对吗?
任务(id,name,dueDate,ProjectID)项目(id,name,dueDate)
ProjectID列是外键的和,而Proejcts的表id列是另一个。
如果每个ID/name记录可以有不同数量的任务ID,那么有两个选项。第一种是使用XML而不是SQL。第二个是创建两个表。上面有id、名称和截止日期,然后是一个只有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