这种架构设计方法是否正确?

时间:2016-02-12 18:00:05

标签: mysql plaxo

下一个问题是关于学校的任务:

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

我怀疑sql架构。这将是我选择的模型:

  • 用户(ID,用户名,密码,姓名,姓氏,电子邮件)
  • 类别(ID,姓名)
  • 联系人(身份证,姓名,地址,电话,电子邮件, id_categories id_users
  • contacts_person(id,姓氏, id_contact
  • contacts_organization(id,trademark, id_contact
  • 任务(id,日期,小时,描述)
  • tasks_contacts( id_tasks id_contacts

粗体字段是外键。 我不确定这个架构是否合适,我不这么认为。 如果不是,请告诉我,

______________________________________________________________________

@Strawberry评论后

编辑

好吧,我们说我把模型更改为这个:

  • 类别(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可以属于" family",因为他们是魔鬼。
  • 每个联系人只能属于一个类别。
  • 有两种类型的联系人,组织和人员。它们之间的区别在于人们没有商标,组织也没有姓氏。
  • 每项任务都必须有提醒日期和时间。我不知道是否有任务 是来自西班牙语" recordatorio"的最佳英语教育, 但plaxo似乎就这么称呼它。
  • 每个联系人可以关联多个任务或提醒,每个任务可以关联多个联系人。

希望我能让自己清楚明白。

1 个答案:

答案 0 :(得分:0)

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

数据表

  • 用户(ID,用户名,密码,姓名,姓氏,电子邮件)
  • 联系人(身份证,姓名,姓氏,地址,电话,电子邮件)
  • 组织(id,trademark)
  • 任务(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
  • ...

底线:将一个实体的所有数据存储在一个表中,并使表中的实体之间的关系仅包含外键但不包含其他数据。

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

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