0

mysqlを使用してテーブル間の関係のカーディナリティを見つけなければならないという問題で立ち往生しています。この投稿に続いて
MySQL:プログラムで外部キー関係を決定する方法は?
私のテーブルと外部キーである列に関連するすべてのテーブルを見つけました。今、私はまた、関係のカーディナリティ、すなわち、1対1、1対多、または多対多を見つけたいと思っています。任意のアイデアやスニペットをいただければ幸いです

4

1 に答える 1

6

tableの主キーを参照するA外部キーがtableにあるとします。次に、スキーマから次のことを学ぶことができます。fkB

  • UNIQUEに制約がある場合、 のすべての行に対してA.f最大で 1 つの行が存在できます。複数列インデックスの場合、一意制約のすべての列が外部キーの一部である必要があることに注意してください。テーブルの一意性制約に関する情報を取得するために使用できます。ABSHOW INDEX FROM tablename WHERE Non_unique = 0
  • A.fが宣言されている場合、 のすべての行に対して少なくとも1 つの行NOT NULLが常に存在します。を使用して列を一覧表示し、どの列に値が許可されているかを確認できます。BASHOW COLUMNS FROM tablenameNULL

「1」を「0 または 1」と解釈すると、一意の制約を使用して 1 対 1 の関係がられます。ユニーク制約。AB

対多の関係は、個別のテーブルを使用してモデル化されます。各行は関係の 1 つの要素を表し、そこに含まれる両方の外部キーに対して多対 1 の関係があります。

于 2012-09-27T12:39:42.800 に答える