2017-09-03 19 views
2

サブエンティティがまったく同じ属性を持つ場合、データベースをモデリングする際に継承を使用する必要がありますか?サブエンティティが同じ属性(ER図)を持つ場合、継承を使用する必要がありますか?

例を説明しましょう。ウェイトリフティングのための競技では、ウェイトリフターは2つの異なる動きをします: "Snatch"と "Clean and jerk"。彼らは1回の移動ごとに3回の試行があります。 2つの移動が親エンティティと呼ばれる結果である共通の属性の多くを持っているので、まず

enter image description here

、それは、私には意味を成していた:私は、次の方法でこれをモデル化しました。しかし、 "Snatch"と "CleanAndJerk"も完全に等しい属性を持っています。これは冗長なようです。しかし、「結果」の部分にもすべてを配置する方がはるかに良いようには思えません。

これはデータベースを設計する際に適していますか?

+0

このデザインを改善するためにはまだまだ問題があります。その答えはあなたの心配だけを対象としていました。 – Moher

答えて

1

本当に必要なのは、多態性のテーブルです。
私はあなたがそれをこの方法を行う場合、それはより良いことだと思う:

  1. Moveテーブル。列:FirstTry,SecondTry,ThirdTry,BestTry,MoveTypeId
  2. MoveTypeテーブル。列:MoveTypeId,MoveTypeName,MoveTypeDescription

Moveには、MoveTypeという外部キーがあります。

+0

Omg、あなたは天才です!ありがとうございました:Dははるかに洗練されたソリューションであり、すぐに多形性によって解決されるべきであることに気付きました。 私は、デザインをより良くするためにもっと多くのことができると言ったことに気付きました。 – user3257736

+1

本当にありがとうございますが、他の人も同じ回答をしている可能性があります。デザインに関して聞くことができるもう1つの質問は、「FourthTryがあればどうしますか?」ということです。それから何が起こるのですか?もちろんこれを修正して、データベースが任意の試行回数を処理できるようにすることもできます。私はあなた自身でこれを扱うことができると思う。 – Moher

+1

ここでは新しい問題について考えてみましょう。ここにコメントするだけで助けが必要な場合は、私の答えを編集します。 tnx。 – Moher

関連する問題