2017-11-08 10 views
2

学校プロジェクトでは、前期のプロジェクトのシステムを設計することになっています。私たちは、UMLを使って、非常にシンプルなユースケースダイアグラム(<<extend>>タイプナンセンスなし、システム内のユースケースを指し示すアクターのみ)を作成しています。そこからクラス図を作成し、次にリレーショナルモデルを作成します。リレーショナルモデルへのクラス図の変換。継承、照合用テーブル

ユースケースやクラス図をしようとします。

enter image description here

enter image description here

enter image description here

enter image description here

最後の図は、ちょうど私が最終的には多分私のユースケースがあったと考えています問題。

私のアプリケーションでは、人々/レストランは彼らが寄付したい食べ物をリストすることができます。ホームレスのリクエスト食料を養う慈善団体。一致するものがあれば、チャリティーはトラックを作成して、すべての試合から食べ物を拾うことができます。

マッチを表現する方法や、FoodItemsのこのダイヤモンドとルートへの接続が意味をなさなくなっているかどうかを調べるのに問題があります。継承は、一般的にリレーショナルモデリングでは悪い考えです。 FKをどこにでも持っているだけの問題ですか?私はサークルで歩いているような気がします。

+0

あなたの質問は、私が思うに、広すぎます。だから私は@クリストフの答えをそのまま残す。地図APIを追加して表示する場合は、2番目のUC図が最初の図と同じくらい良いです。それは、そのようなAPIへのアクセスを提供しなければならないという点でシステムを制約し、最初のダイアグラムはそのままにします。 –

+0

あなたのUC図については、「右側の俳優は主な俳優で、左側の俳優は第2の俳優です」というコンベンションを使用している場合、「入力食品」はシステム自身によって有効化されたユースケースです。それは可能かもしれませんが、それはあなたが望むものですか? – granier

+0

@granier慣習は、「左のプライマリ」IIRCです。しかし、それは条約であり、法律ではありません。 –

答えて

3

このオブジェクトリレーショナルマッピングのトピックは、非常に複雑になる可能性があります。しかし、あなたの図を見て、親指のここでの単純化しすぎルール:

  • は、リレーショナルテーブルに無い一般化していない専門で、各クラスの地図。 ID fieldsが存在する場合、これらはプライマリキーとして機能します。
  • 2つの特殊化を持つ各クラスを、そのクラスのフィールドとその特殊化のすべてのフィールドを結合した1つのリレーショナルテーブルにマップします。この手法はsingle inheritance tableと呼ばれています。それはいつも良い解決策ではありませんが、あなたのカスでは、それは決定的に適合します。
  • 1対nの関係(1 - 1..*、または1-0..*)の場合、n側の表の外部キーとして1側の主キー(ID)を外部キーとして追加します。あなたの集計にもこれを行います。これはforeign key mappingと呼ばれます。
  • nからnへのリンク(1..* - 1..*)には、2つのリンクされたテーブルのID(それぞれが外部キーとして定義され、両方を結合されたプライマリキーとして)を持つリレーショナルテーブルを追加する必要があります。これはassociation table mappingと呼ばれます。
  • 2番目のItemMatchの1対1の集約については、foodItemID(異なる名前を使用)に対応する2つのフィールドを追加するだけで十分だと思います。

    追加の測定値0..*関係の結果として追加した外部キ​​ーを定義する必要が

  • 詳細を知りたい場合、継承のためのいくつかのマッピング戦略の賛否両論。単純な単一継承テーブルに加えて、class table inheritance,concrete table inheritanceおよびinheritance mappersのようなより複雑な代替アプローチもあります。
  • コメントでgranierによって提案されたWebの記事Mapping object to data model(感謝!)
+1

そして、型の一致を定義する必要があります:int、float、StringなどのSGBDの型。そして、あなたは専門化を変えるための2つの他のソリューションを見ることができます(これを参照してください:https://www.visual-paradigm.com/support/documents/vpuserguide/3563/3564/85444_mappingobjec.html) – granier

+0

@granier確かに興味深いリソース!ヒントをありがとう:私はそれに応じて答えを編集しました。 – Christophe

+0

あなたの歓迎:)肯定的な方法で貢献して満足しています。 – granier

関連する問題