将Usermade列表存储在数据库中

时间:2011-12-27 22:25:57

标签: database-design

我正在建立一个允许人们创建活动的网站,与之相关的人员以及待办事项列表。对于人们来说,会有名字/电话/头衔。对于待办事项列表,将会有一个任务和一个布尔值,表示它是否已完成。

我的问题是我只是将数组输入数据库中的表(事件)中的单个字段以表示人员,或者为“关联人”创建单独的表并将其与JOIN链接。我担心的是,所有这些人都将是用户生成的,创建一个完整的其他表似乎是一种浪费。同样,我可以创建一个带有ID,任务名称,用户ID和布尔值的“待办事项”表,但是除了创建它们的用户和列表之外,这些列表中的每一个都很可能永远不会与数据库中的任何其他内容相关。他们属于。我可以创建一个To_Do_Lists表,然后创建表项并对人们做同样的事情,但我不确定如果这些值在属于该特定用户的特定事件之外没有位置,那么这是否真的是最佳方式。

最好是拥有更多的表,将数据存储为数组,将数据存储为xml作为blob,还是什么?

2 个答案:

答案 0 :(得分:1)

存储内容,以便每个有形对象都在自己的表中。这将导致关系数据库。你想争取第三范式。遵循这个完善的惯例有很多理由。数据库和编程工具是为了处理这种形式的数据而构建的,您可以节省时间和麻烦,为将来的变更和扩展留下很大的灵活性。

例如,如果您将人员放在PEOPLE表格中,您会发现事件很容易让人们重叠。因此,您的系统变得社交,而不必废弃您的数据库并重新开始。

抵制偷工减料的诱惑。无论是短期还是长期,它都无法为您节省任何费用。

答案 1 :(得分:1)

如果您要为此应用程序使用数据库,请遵循最佳实践,这将为您节省时间。

以下是我可能会设计数据库的方法:

人员表 PeopleID,姓名等

活动表 EventID,事件名称,描述等

ToDoList表 TodoListID,EventID,OrderKey,Task等 此表是数据透视表。 EventID是事件表的外键。要查找事件的所有任务,您必须使用这些键加入。

参加者表 AttendeeID,PeopleID,EventID等 这也是一个数据透视表。加入EventID将为您找到所有与会者。加入PeopleID会找到一个人参加的所有活动。

相关问题