0

次の質問は、学校の課題についてです。

ユーザーがいて、それぞれに独自の議題があるplaxoのような Web アプリケーションを作成する必要があります。私のアプリケーションの要件は、plaxo の要件よりもはるかに単純です。私の場合は、カテゴリ別にグループ化された連絡先と、完了または保留中の状態別にグループ化されたタスク、およびその他の一般的な機能のみが含まれます。

私の疑問は、SQLスキーマにあります。これは私が選ぶモデルです:

  • ユーザー (ID、ユーザー名、パスワード、名前、姓、電子メール)
  • カテゴリ(id,name)
  • 連絡先(ID、名前、住所、電話番号、電子メール、id_categoriesid_users
  • contact_person (id, lastname, id_contact )
  • contact_organization (id, 商標, id_contact )
  • タスク (ID、日付、時間、説明)
  • tasks_contacts( id_tasks , id_contacts )

太字のフィールドは外部キーです。このスキーマが大丈夫かどうかはわかりません。そうは思いません。そうでない場合はお知らせください

______________________________________________________________________

@Strawberryコメントの後に編集:

わかりました、モデルを次のように変更したとしましょう:

  • カテゴリ(id,name)
  • 連絡先(ID、名前、メール)
  • contact_user (ユーザー名、パスワード、id_contacts )
  • contact_person(姓、住所、電話番号、id_contacts )
  • contact_organization (商標、住所、電話番号、id_contacts )
  • タスク (ID、日付、時間、説明)
  • tasks_contacts( id_tasks , id_contacts )

contacts_user、contacts_person、およびcontacts_organizationからidフィールドを取り出しました。id_contactsが一意のキーになることを考えると、それはナンセンスだと思うからです。

さらに情報を追加します。

  • テーブル users は、ユーザーが登録時に保存するデータ用です。
  • カテゴリは、連絡先をグループ化するためのものです。例: ジョン、ルイス、アンナは使い魔であるため、「家族」のカテゴリに入ることができます。
  • 各連絡先は、1 つのカテゴリにのみ属することができます。
  • 連絡先には、組織と個人の 2 種類があります。それらの違いは、個人には商標がなく、組織には姓がないことです。
  • 各タスクには、リマインダーの日付と時刻が必要です。task がスペイン語の「recordatorio」から英語への最良の翻訳であるかどうかはわかりませんが、plaxo ではそのように呼ばれているようです。
  • 各連絡先には複数のタスクまたはリマインダーを関連付けることができ、各タスクには複数の連絡先を関連付けることができます。

私が自分自身を十分に明確にしたことを願っています。

4

1 に答える 1

0

冗長性を減らすために、最初のモデルを変更することをお勧めします。

データ テーブル

  • ユーザー (ID、ユーザー名、パスワード、名前、姓、電子メール)
  • 連絡先(ID、名前、姓、住所、電話、メール)
  • 団体(id、商標)
  • タスク (ID、日付、時間、説明)
  • カテゴリ(id,name)

関係

  • users_categories( id_categories , id_users )
  • contact_categories ( id_categories , id_contact )
  • user_contacts ( user_id , id_contact )
  • 組織の連絡先 (組織ID 、連絡先 ID )
  • tasks_contacts( id_tasks , id_contacts )
  • ...

結論: 1 つのエンティティのすべてのデータを 1 つのテーブルに格納し、外部キーのみを保持し、追加のデータを保持しないテーブル内のエンティティ間の関係を保持します。

エンティティの 1 つに列を追加しても、関係に干渉しません。

リレーションを追加する際に、関連するエンティティのデータ構造について知る必要はありません。

于 2016-02-13T07:54:51.583 に答える