2016-02-12 75 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」結合起來,這可能是合適的,但正如我所說的,應用程序的東西。 –

相關問題