2012-02-17 6 views
1

この質問は多分愚かなことが、私はちょうど私が正しく基本的な理解を得るかどうかを確認したいので:2つの外部キーが発生した場合、多対多の関係にする必要がありますか?

それが表に発生しmany to many relationshipとき2つの外部キーでなければなりませんか?

2つの外部キーがテーブル内にある場合、他の条件や理由がありますか?

+2

'OrderLine'という表があり、' Order'、 'Article'と' Amount'というフィールドがあるとします。 2つの可能な外部キーですが、これはほとんどの人が多対多の関係と考えるものではありません。それは2つの別個の多対1の関係です。これがあなたが求めるものなのかどうかは分かりません。 – hvd

+0

はいそれは私が直面しているケースであり、それがmm関係であるかどうかを理解しようとします。ありがとう! – laukok

答えて

6

反例:id1が一意であるため

create table eg1 (
    id int primary key, 
    id1 int, 
    id2 int, 
    foreign key (id1) references othertable.id, 
    foreign key (id2) references sometable.id, 
    UNIQUE INDEX `id1_UNIQUE` (`id1` ASC) 
); 

これは、多対多の関係ではありません。これには2つの外部キーがありますが、他の2つのテーブルと1対1および1対1の関係を表しています。

+0

ありがとう、Matt。上の例のように、この種のテーブルに自動インクリメント主キーが必要ですか? – laukok

+0

自動インクリメントを使用すると、1:n、1:1、またはm:nの関係があるかどうかは関係ありません。 –

+0

OK。ありがとう。私はそれがある時点で役に立つと思っていたので、まったく役に立たないと思います。 – laukok

1

私はそれが常に当てはまるとは思わない。私はテーブルに複数のFKeysがあるいくつかの状況を考えることができます。たとえば、次のように

tblShirts
ShirtId int型(PKEY)
ColorIdはint([F]キーtblColors)
SizeIdはint([F]キーtblSizes)
StyleIdはint([F]キーtblStyles)
価格お金
QtyOnHand int型

この例では、tblColors,tblSizesおよびtblStylesは単純なルックアップテーブルです。多対多関係を解決するには、リンクテーブルを作成する必要はありません。

+1

これは実際には多対多の関係テーブルです。 –

+0

@ypercube - それは多対多の多対多関係表であるとはどのように判断しますか?あなたがコメントした基準は何ですか? –

+0

申し訳ありませんが、あなたは正しいです、厳密な意味ではありません。関係は識別していない、3つのテーブルは参照テーブルのみです。 –

関連する問題