2016-02-12 101 views
0

接下来的问题是关于一个学校的作业:这种模式设计方法是否正确?

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

我的疑问是与SQL模式。这将是模型,我会选择:

  • 用户(ID,用户名,密码,姓名,姓氏,电子邮件)
  • 类别(ID,姓名)
  • 接触(ID,姓名,ADRESS,电话,电子邮件,id_categoriesid_users
  • contacts_person(ID,姓氏,id_contact
  • contacts_organization(ID,商标,ID_联系
  • 任务(ID,日期,时间,描述)
  • tasks_contacts(id_tasksid_contacts

是大胆的外键的字段。 我不确定这个模式是否好,我不这么认为。 请让我知道,如果它不是

______________________________________________________________________

编辑 @Strawberry后评论:

好了,可以说,我改变了模式,这一个:

  • 类别(编号,名称)
  • 次接触(ID,姓名,电子邮件)
  • contacts_user(用户名,密码,id_contacts
  • contacts_person(姓氏,ADRESS,电话,id_contacts
  • contacts_organization(商标,ADRESS,电话,id_contacts
  • 任务(ID,日期,时间,描述)
  • tasks_contacts(id_tasksid_contacts

从contacts_user,contacts_person和contacts_organization拿出ID场,因为我认为这是无稽之谈考虑id_contacts将是一个唯一的密钥。

我会添加一些更多的信息:

  • 表用户是当它注册用户存储数据。
  • 类别是为了分组联系人。例如:约翰,路易斯和安娜可以属于“家庭”类别,因为他们是家庭主妇。
  • 每个联系人只能属于一个类别的一部分。
  • 有两种类型的联系人,组织和人员。他们之间的区别在于人们没有商标,组织也没有姓氏。
  • 每个任务都必须有提醒日期和小时。我不知道任务 是否是西班牙语“recordatorio”中最好的英语导演, ,但plaxo似乎是这样称呼它的。
  • 每个联系人可以有多个任务或提醒相关联,每个任务可以有多个联系人关联。

希望我让自己清楚。

+0

试图避免这一点。哪里? 这对我来说很难适用标准化概念。 – Hernan

+0

Thaks为您提供帮助@Strawberry。考虑到你写了什么,我已经更新了这个问题。 – Hernan

+0

好吧,你是对的。我应该考虑列出一些要求,下次我会 – Hernan

回答

0

我建议改变的第一款车型,以减少冗余:

数据表

  • 用户(ID,用户名,密码,姓名,姓氏,电子邮件)
  • 触点( id,name,lastname,address,phone,email)
  • 组织机构(编号,商标)
  • 任务(编号,日期,小时,描述)
  • 类别(ID,姓名)

关系

  • users_categories(id_categoriesid_users
  • contacts_categories(id_categoriesid_contact
  • 个user_contacts(USER_IDid_contact
  • organization_contacts(的organization_IDid_contact
  • tasks_contacts(id_tasksid_contacts
  • ...

底线:将一个实体的所有数据存储在一个选项卡中并且在表中只有持有外键但没有附加数据的实体之间存在关系。

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

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

+0

日期,小时?不确定那个! – Strawberry

+0

@Strawberry它是任务的_definition_。这有一个日期,可能是一个小时,这是应用程序的具体情况,这不是在这里要求,我想。人们可以将它与“timestamp”和“duration”结合起来,这可能是合适的,但正如我所说的,应用程序的东西。 –