2016-09-13 1 views
2

私はER図のカーディナリティを理解しようとしています。まず、都市を訪れる訪問者の簡単な例から始めます。それを考えれば、多くの来場者が多くの都市を訪れることができるので、私はER図を描きました。訪問者は、名前などの属性を持つエンティティです。訪問者は、主キーとしてVisitorIDとCityID、日付などのその他の属性との関係です。都市は、国などの属性を持つエンティティです。これは0を多くの都市に訪問できる多くの訪問者に0を意味します。これは、このER図を持つデータベースでは、3つのテーブルがあることを意味しますか? 1つはビジター、もう1つはシティ、もう1つはVisitCityです。カーディナリティを正しく理解していますか?正しいERダイアグラムでは、1つまたは複数のものをいつ使用するのかをどのように知っていますか?

ER Diagram

答えて

3

はい、関係を正しく記述しました。 N:Mカーディナリティには3番目のテーブルが必要です。

他の情報も含まれています。たとえば、ビジターは一度に2つの場所にいることはできないため、関連する期間が存在する可能性があります。同じ都市で生まれた多くの人々を意味し、1そのため、:たとえば、異なるカーディナリティを持つborn_in、すなわちN -

ビジターは、市への別の関係を持つことができます(ただし、それぞれが一つだけの街で生まれています!) born_inはVisitorの属性になります。

3

はい。 0〜多くの都市を訪問することができます。この場合、あなたは正しいです。あなたがあなたのミドルテーブルvisitCityに名前をつけたとあなたが述べた通りです。

しかし、訪問者が1都市のみを訪問できるデータベースが必要であるとします。あなたは1対多の関係になります。これはあなたがを必要としないことを意味しますのために中間テーブルを使用してください。あなたは2つのテーブルだけで終わるでしょう。

"多くの訪問者が多くの都市を訪れることができる"のような論理的な意味は真実ではないからです。要件は、これらのルールを作成するものです(クライアントが必要とするものを指定したプロジェクト、またはまだ学校に通っている場合は、その記事があなたに割り当てられた論文になります)。データベースを作成する際には、何を使用するかを決定するために、要件を慎重に聴いたり、読み込んだりする必要があります。しかし、あなたが読んでいるから、私はあなたが正しい軌道に入っていると思います:)

+0

正規here.

詳細情報は実際には、多くの関係を1用のジャンクションテーブルを使用し__can__。あなたがそれをすることはできないと言ってはいけません。 –

+0

これは事前に学習するものです。読めるように、彼はDBとERDの初心者です。少しずつ少しずつ学ぶことは良いことです。 – SunnlightBro

+0

質問と回答はOP以外にも多くの読者を支援することになっています。 __can't__の代わりに__don'tする必要はないと言っていつでも言い換えることができます。 –

1

はい、そうです。

DBを1NFに保持したい場合は、N×Nカーディナリティに直面するたびに、両方のエンティティのキ​​ーを使用して新しいテーブルを作成する必要があります。

関連する問題