データモデリングに関する以前の記事では、エンティティと属性の検索を練習するための一連の演習を提供することを約束しました。これが私たちの問題セットの2番目の記事です。お楽しみください。
問題1:国
説明:
世界のすべての国、その内部地域(州、州、または地域と呼ぶことができます)、およびそれらの都市を表す適切なエンティティとその属性を見つけます。各国の名前、大陸、独立日、政府の種類、人口を表したいと思います。各地域(または州、州など)について、首都、知事の名前、および人口を保存します。最後に、都市ごとに、名前、設立日、人口、および住民ごとの学校の数を指定します。また、すべての国がその内部地域と呼んでいるものを表現したいと思います。
解決策:
ドメインの問題の説明から、次の3つのエンティティを明確に識別できます。Country
、Region
およびCity
。
Country
次の属性が見つかります:name
、governmentType
、population
およびindependenceDay
。
Region
エンティティ、属性name
を検出します 、governorName
、population
およびcapitalCity
。
City
、name
があります 、foundationDate
、population
およびschoolsPerHabitant
。
データモデリングは、反復と呼ばれる段階で行われます。この時点で、繰り返します。 Country
エンティティを作成し、新しい属性を追加します。説明の最後の文は、その内部地域の各国の名前を表すように私たちに求めました。その名前は国レベルである必要があるため、categoryRegion
という新しい属性を追加します Country
エンティティ。
質問:
人口はCountry
、Region
およびCity
レベル。これは正しいと思いますか?重複する情報が保存されていませんか?これをどのように許可しますか?
↑ロゴをクリックして、ブラウザでモデルをプレビューします|モデルをpngファイルとしてダウンロード
問題2:航空機
説明:
新しい格安航空会社は市場に参入したいと考えており、資産を管理するためのシンプルなシステムを必要としています。適切なシステムを構築するために、新しい航空会社の重要な情報を定義するように数人に依頼しました。以下のコメントに基づいて、飛行機管理システムの属性を持ついくつかのエンティティを提案します。
経験豊富なパイロット:
私はかなりの数の航空会社で働いており、何千時間も空中で過ごしてきました。私が雇用主を変えるとき、彼らはいつも同じ情報を求めます。まず、彼らは私の名前、私の誕生日を知りたがっています。多くの航空会社は特定の年齢範囲内のパイロットしか雇用していません。そして、彼らは常に私の証明書をチェックする必要があります–私は彼らがそれをするのを助ける特別なライセンス番号を持っています。飛行時間数も非常に重要です。それは彼らにパイロットについて多くを伝えます。ラッキーなことに、私はとても経験豊富です!そしてもちろん、私には常に従業員番号が与えられています。理由はわかりませんが、名前の代わりに番号を使用して私を参照しています。
航空機メーカーの代表者:
すべての航空会社には航空機が必要です。飛行機の全体的な説明は非常に複雑で、私は何年にもわたって私の製品を説明し続けることができましたが、航空会社のホワイトカラーの人は通常、基本的な情報にしか興味がありません。もちろん、彼らは飛行機で何人の乗客が飛べるか知りたいのです。コストやメリットなどを計算するのに役立ちます。また、各飛行機がどれだけ飛べるかを知るために、常に航続距離について尋ねます。もちろん、本に入れるにはメーカー名とモデル名が必要です。ああ、そして私が聞いたところによると、彼らは購入する航空機に常に特別な内部番号を付けています。
航空管制官:
空港での各フライトについて、いくつかの基本的な事実があります。フライトには、識別上の理由から特定の番号が必要です(FG 432など)。出発空港と到着空港を知る必要があります。そして時間も非常に重要です。出発時刻と到着予定時刻だけでなく、リアルタイムも保存されます。飛行機は遅れたり、予定より早く到着したりする可能性があります。
解決策:
説明では、3つのエンティティを明確に識別します:Aircraft
、Pilot
およびFlight
。次に、各エンティティの属性を見つけます。
Aircraft
私たちが持っているエンティティmanufacturer
、model
、passengerCapacity
、cruisingRangeMiles
およびinternalNumber
。
Pilot
次の属性を検出したエンティティ:employeeNumber
、firstName
、lastName
、birthDate
、licenseNumber
およびflownHours
。
最後に、Flight
flightNumber
を特定します 、departureAirport
、destinationAirport
、scheduledDepartureTime
、scheduledArrivalTime
、realDepartureTime
、およびrealArrivalTime
。
このデータモデルを単純化するために、すべてのフライトがすべての曜日にスケジュールされていると仮定します。
↑ロゴをクリックして、ブラウザでモデルをプレビューします|モデルをpngファイルとしてダウンロード
場合によっては、ドメインの説明に無視しなければならない属性が含まれています。たとえば、飛行時間を除外することにしました。 実際の到着時刻と実際の出発時刻から計算できるため、このデータモデルから。
問題3:レストランガイド
説明:
サミュエルは、オンラインレストランガイドを作成したいと考えています。そのようなウェブサイトはすでにたくさんありますが、彼はレストラン自体ではなく、利用可能な特定の料理に焦点を当てたいと考えています。彼は自分のアイデアに非常に熱心であり、これが彼が私たちにそれを説明した方法です:
自分のサイトでレストランについて詳しく説明したいので、名前や住所などの基本的なものが必要です。住所は正確である必要があります。通りと番号だけでなく、都市、州、国も正確である必要があります。はい、国です。海外に行きたい!その上、私はそれらのそれぞれに、あなたが知っているように、中国語、イタリア語、またはそのようなもののような特定のスタイルを与えてほしいです。それぞれが特定の数の星でランク付けされます。
もっと重要なのは、食べ物に集中したいです!レストランでは何千もの食事が提供されており、それぞれに料理の名前と種類(前菜、メインコース、デザート)が必要です。各国にはさまざまな前菜がありますので、前菜の産地に関する情報も保存する必要があります。そしてメインコースについては…まあ、ダイエット中の人にカロリー数を提供するのはいいことだと思います。デザートにもこの種の情報が含まれている必要があります。
そして、それぞれの料理を現在の価格と一緒に表示したいと思います。ああ、それは私に思い出させます:そこにも飲み物を入れましょう。名前、価格…そしておそらくアルコールのレベルは、それについて考えるようになります。
上記の説明に基づいて、サミュエルのオンラインレストランガイドのいくつかのエンティティとその属性を提案します。
解決策:
私たちが持っている最初のエンティティはRestaurant
name
の属性を持つ 、addressStreet
、addressNumber
、city
、state
およびcountry
。 Restaurant
は:stars
およびstyle
。
次のアイデアは、Meal
そしてそれに属性name
を与えます 、type
およびprice
。ただし、問題の説明全体を読むと、デザート、メインコース、前菜の特定の属性がわかります。そこで、Meal
Main_course
、Appetizer
およびDessert
。
MainCourse
、次の属性があります:name
、category
およびprice
。
Appetizer
エンティティには、name
という属性があります 、country
およびprice
。
Dessert
属性name
が見つかります 、calories
およびprice
。
最後に、Beverage
属性がname
のエンティティ 、alcoholLevel
およびprice
。
↑ロゴをクリックして、ブラウザでモデルをプレビューします|モデルをpngファイルとしてダウンロード
問題4:音楽バンド
説明:
音楽制作会社は、音楽バンドの世界をモデル化したいと考えています。私たちはその代表者の一人と会い、彼にいくつか質問をしました。以下のインタビューを読んで、音楽バンドのモデルに適したエンティティとその属性を見つけてください。
Vertabelo: 音楽の世界にはどんな人がいますか?
代表者: 多くありますが、必要なのはほんのわずかだと思います。バンドは歌手とミュージシャンで構成されています。そして、もちろん、彼らのマネージャー。それらすべてについて、システムに名前と名前が必要です。歌手やミュージシャンにもニックネームがあります。ミュージシャンは特定の楽器を演奏し、歌手はソプラノやテノールなどの特定の声のタイプを持っています。
V: マネージャーはどうですか?どのように彼らと連絡を取り合っていますか?
R: 場合によります。彼らの中には、迅速なコミュニケーションのために携帯電話を好む人もいれば、すべてを考え抜くことができるように電子メールを送信することを好む人もいます。ここには両方の種類の情報が必要だと思います。
V: そして、これらすべての人々…
R: …音楽バンドを結成します、はい。もちろん、各バンドには名前があります。彼らは通常さまざまな種類の音楽を演奏しますが、私たちは常にそれらをロックやメタルなどの1つのスタイルにのみ割り当てます。それは重要です。若いバンドはすぐに現れたり消えたりする傾向があるので、彼らが一緒にプレイした時間を知る必要があります。私たちは通常、彼らが最近のコンサートをいつ演奏したか、そしてチケットの価格は何であったかを知りたいです。
V: 他に何か必要ですか?
R: 曲に関する情報を保存する必要があります。うわー、歌は複雑です。彼らは特定の種類の歌詞、特定のキー、関係する多くの楽器を持っています...本当に複雑なものです。
V:そして、これはすべてあなたにとって重要ですか?
R: ええ、そうですが、実際にはすでに曲のシステムがあるので、ここでできます…ええと、曲の名前と長さだけでうまくいくと思います。そして多分作成日。
質問:
曲が与えられたら、このデータモデルを使用してそのバンドに一致させることができますか?それとも何か足りないものがありますか?
解決策:
最初に見つかったエンティティはMusicBand
属性name
、mainStyle
、foundationDate
、lastShowDate
およびlastShowPlace
。
次のエンティティはMusician
、次の属性があります:firstName
、lastName
、nickName
およびinstrument
。
Singer
エンティティは同様のパターンを追求します。属性として、歌手のfirstName
があります。 、lastName
、nickName
、およびvoiceLevel
。
次のエンティティはSong
、次の属性があります:name
、duration
およびcreationDate
。
最後に、最後に特定したエンティティはManager
; firstName
の属性があります 、lastName
、emailAddress
およびcellPhone
。
↑ロゴをクリックして、ブラウザでモデルをプレビューします|モデルをpngファイルとしてダウンロード