3

カーディナリティとは何かを理解しているので、説明しないでください;-)

カーディナリティを実行する目的がデータモデリングで何であるか、そしてなぜ私が気にする必要があるのか​​を知りたいです。

例:ERモデルでは、関係を作成し、関係にカーディナリティを追加します。開発プロセスでカーディナリティをさらに使用するのはいつですか?カーディナリティを気にする必要があるのはなぜですか?

たとえば、ERモデルを完成させた後、カーディナリティをどのように、いつ、どこで使用しますか。

ありがとう :-)

4

5 に答える 5

2

カーディナリティは、テーブルのデザインについて重要なことを教えてくれます。1:mの関係では、親主キー列を指す子テーブルに外部キー列が必要です。多対多の関係とは、2人の参加者を指す外部キーを持つJOINテーブルを意味します。

于 2012-10-10T09:59:16.087 に答える
0

たとえば、ERモデルを完成させた後、カーディナリティをどのように、いつ、どこで使用しますか。

データベースを物理的に作成する場合、FKの方向、NULL能力、および数は、ER図の関係の両方のエンドポイントのカーディナリティによって異なります。一部のテーブルとキーを「追加」または「削除」することもできます。

例えば:

  • 「1:N」の関係は、「N」テーブルから「1」テーブルへのNOTNULLFKとして表されます。反対方向にそれを行うことはできず、同じ意味を保持することはできません。
  • 「0..1:N」の関係は、「N」から「0..1」のテーブルへのNULL可能なFKとして表されます。
  • 「1:1」の関係は、循環参照1を形成する2つのNOT NULL FK(キーでもある)によって、または2つのエンティティを1つの物理テーブルにマージすることによって表されます。
  • 「0..1:1」の関係は2つのFKで表され、そのうちの1つはNULL可能です(これもキーの下にあります)。
  • 「0..1:0..1」の関係は、NULL可能キーとアンダーキーの両方の2つのFK、または特別に細工されたキーを持つジャンクションテーブルによって表されます。
  • 「M:N」関係には、追加の(いわゆる「ジャンクション」または「リンク」)テーブルが必要です。そのテーブルのキーは、子テーブルから移行されたキーの組み合わせです。

すべてのカーディナリティを物理データベースで(簡単に)宣言的に表すことができるわけではありませんが、幸いなことに、最も役立つ傾向があるカーディナリティは...


1これは、新しいデータを挿入するときに鶏が先か卵が先かという問題を引き起こします。これは通常、制約チェックをトランザクションの最後まで延期することで解決されます。

于 2012-10-10T13:30:05.657 に答える
0

カーディナリティは、2つのエンティティ間の関係に関する重要な情報です。実際のテーブルアーキテクチャをモデル化するときに、後のモデルでそれらが必要になります。関係のカーディナリティを知らなければ、テーブルとテーブル間のキー制限をモデル化することはできません。

たとえば、車には正確に4つの車輪が必要であり、それらの車輪は正確に1つの車に取り付けられている必要があります。カーディナリティがなければ、3、1、0、12などのホイールを備えた車を所有することができ、さらに他の車と共有することができます。もちろん、コンテキストによっては、これは理にかなっていますが、通常はそうではありません。

于 2012-10-10T10:05:35.150 に答える
0

データモデルは一連の制約です。制約がなければ、何でも可能です。カーディナリティは(特別な種類の)制約です。ほとんどの文化では、結婚はちょうど2人の間の関係です。(一部の文化では、これらの人は異なる性別を持っている必要があります。)

データモデリングの問題は、データに課す制約を指定する必要があることです。一部の制約(一意の外部キー)はより重要であり、他の制約(「給与<100000」)ほど問題ドメインに依存しません。ほとんどの場合、カーディナリティはクリティカル偽物の間のどこかになります。

于 2012-10-10T10:33:38.747 に答える
0

アプリケーションのデータレイヤーを作成していて、ORMを使用することにした場合は、おそらくそれがエンティティフレームワークです。

モデルとモデルマップを作成する必要がある場合があります。その時点で、ERDを引き出し、ダイアグラムに配置したカーディナリティを確認し、データレイヤーの形状がデータベースの形状と一致するように正しい関係を作成することができます。

于 2014-08-27T15:07:46.723 に答える