Database design 在数据库中存储用户列表

Database design 在数据库中存储用户列表,database-design,Database Design,我正在制作一个网站,允许人们创建一个事件、与之相关的人和一个待办事项列表。对于人们来说,会有名字/电话/头衔。对于待办事项列表,将有一个任务和一个布尔值来表示其是否已完成 我的问题是,我是在数据库中的表(事件)中的单个字段中输入一个数组来表示人员,还是为“关联人员”创建一个单独的表并用联接链接他们。我担心的是,所有这些人都将由用户生成,创建一个完整的其他表似乎是一种浪费。类似地,我可以创建一个带有ID、任务名、userid和布尔值的“to-do”表,但这些列表中的每一个都很可能与数据库中的任何其

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

我的问题是,我是在数据库中的表(事件)中的单个字段中输入一个数组来表示人员,还是为“关联人员”创建一个单独的表并用联接链接他们。我担心的是,所有这些人都将由用户生成,创建一个完整的其他表似乎是一种浪费。类似地,我可以创建一个带有ID、任务名、userid和布尔值的“to-do”表,但这些列表中的每一个都很可能与数据库中的任何其他内容都没有关系,除了创建它们的用户和它们所属的列表。我可以创建一个To_Do_list表,然后创建表项,并对人员执行类似操作,但如果这些值在属于特定用户的特定事件之外没有位置,我不确定这是否是最好的方法


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

存储东西,使每个有形对象都位于自己的表中。这将产生一个关系数据库。你想争取第三范式。遵循这一既定惯例有很多原因。数据库和编程工具是为处理这种形式的数据而构建的,您将节省自己的时间和麻烦,并为将来的更改和扩展留有很大的灵活性

例如,如果您将人员放在
人员
表中,您会发现事件很容易开始重叠人员。因此,您的系统变得具有社会性,而无需废弃数据库并重新启动


抵制走捷径的诱惑。无论从短期还是长期来看,它都不会真正为您节省任何东西。

如果您将为此应用程序使用数据库,遵循最佳实践确实会在将来为您节省时间

以下是我可能会如何设计数据库:

人员表 人物、姓名等

事件表 事件ID、事件名称、描述等

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

与会者表 AttendeId、PeopleID、EventID等。 这也是一个透视表。加入EventID将找到所有与会者。加入PeopleID,你会发现一个人正在参加的所有活动