【问题标题】:Is this schema design approach correct?这种架构设计方法是否正确?
【发布时间】:2016-05-23 23:54:55
【问题描述】:

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

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

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

  • 用户(ID、用户名、密码、姓名、姓氏、电子邮件)
  • 类别(ID、名称)
  • 联系人(id、姓名、地址、电话、电子邮件、id_categoriesid_users
  • contacts_person(id, lastname, id_contact)
  • contacts_organization(id, 商标, id_contact)
  • 任务(id、日期、小时、描述)
  • tasks_contacts(id_tasks, id_contacts)

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

______________________________________________________________________

编辑@Strawberry 评论后:

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

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

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

我将添加更多信息:

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

希望我说得够清楚。

【问题讨论】:

  • 试图避免这种情况。在哪里?我很难应用规范化概念。
  • 感谢您的帮助@Strawberry。考虑到您写的内容,我已经更新了问题。
  • 好吧,你是对的。我应该考虑列出一些要求,下次我会

标签: mysql plaxo


【解决方案1】:

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

数据表

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

关系

  • users_categories(id_categories, id_users)
  • contacts_categories(id_categories, id_contact)
  • user_contacts(user_id, id_contact)
  • organization_contacts(organization_id, id_contact)
  • tasks_contacts(id_tasks, id_contacts)
  • ...

底线:将一个实体的所有数据存储在一张表中,表中实体之间的关系只保存外键,不保存附加数据。

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

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

【讨论】:

  • 日期、时间?不确定那个!
  • @Strawberry 它是一个任务的定义。这有一个日期,可能是一个小时,我认为这是特定于应用程序的,这里没有要求。可以将其组合成timestampduration,这可能更合适,但正如我所说,应用程序的东西。
猜你喜欢
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2014-01-10
  • 2018-01-18
相关资源
最近更新 更多