0

下一个问题是关于学校的作业:

我必须制作一个像plaxo这样的 Web 应用程序,其中有用户并且每个人都有自己的议程。我的应用程序的要求比 plaxo 的要简单得多。我的只会有按类别分组的联系人和按其状态分组的已完成或待处理的任务,以及其他典型功能。

我的疑问是 sql 模式。这将是我会选择的模型:

  • 用户(ID、用户名、密码、姓名、姓氏、电子邮件)
  • 类别(ID,名称)
  • 联系人(id、姓名、地址、电话、电子邮件、id_categoriesid_users
  • 联系人_人(id,姓氏,id_contact
  • 联系人组织(id,商标,id_contact
  • 任务(id、日期、小时、描述)
  • 任务联系人(id_tasksid_contacts

加粗的字段是外键。我不确定这个模式是否可以,我不这么认为。如果不是,请告诉我

______________________________________________________________________

在@Strawberry评论后编辑:

好的,假设我将模型更改为这个:

  • 类别(ID,名称)
  • 联系人(ID、姓名、电子邮件)
  • 联系人用户(用户名,密码,id_contacts
  • 联系人_人(姓氏,地址,电话,id_contacts
  • 联系人组织(商标,地址,电话,id_contacts
  • 任务(id、日期、小时、描述)
  • 任务联系人(id_tasksid_contacts

从 contacts_user、contacts_person 和 contacts_organization中取出id字段,因为我认为id_contacts将是唯一键,这是无稽之谈。

我将添加更多信息:

  • 表 users 用于用户注册时存储的数据。
  • 类别旨在对联系人进行分组。例如:John、Luis 和 Anna 可以属于“家庭”类别,因为他们是熟人。
  • 每个联系人只能属于一个类别。
  • 有两种类型的联系人,组织和人员。它们之间的区别在于个人没有商标,组织没有姓氏。
  • 每个任务都必须有一个提醒日期和时间。我不知道 task 是否是西班牙语“recordatorio”中最好的英语翻译,但 plaxo 似乎是这样称呼它的。
  • 每个联系人可以关联多个任务或提醒,并且每个任务可以关联多个联系人。

希望我让自己足够清楚。

4

1 回答 1

0

我建议更改第一个模型以减少冗余:

数据表

  • 用户(ID、用户名、密码、姓名、姓氏、电子邮件)
  • 联系人(id、姓名、姓氏、地址、电话、电子邮件)
  • 组织(ID、商标)
  • 任务(id、日期、小时、描述)
  • 类别(ID,名称)

关系

  • users_categories(id_categoriesid_users
  • 联系人类别(id_categoriesid_contact
  • user_contacts( user_id , id_contact )
  • 组织联系人(组织ID ,ID 联系人
  • 任务联系人(id_tasksid_contacts
  • ...

底线:将一个实体的所有数据存储在一张表中,并且表中的实体之间的关系只包含外键而没有附加数据。

然后向其中一个实体添加列不会干扰关系。

添加更多的关系不需要了解相关实体的数据结构。

于 2016-02-13T07:54:51.583 回答