Как отобразить несколько внешних ключей из модели ER в реляционную модель? - PullRequest
1 голос
/ 16 февраля 2012

У меня проблема с отображением модели ER в реляционную модель.Я пытаюсь упростить мой случай.Предположим, что у него 3 сущности, A, B и C, и 2 отношения, R1 и R2

[A] ---(1,n) <<R1>>(1,1) === [[B]] === (1,n)<<R2>> (1,1) ==== [[C]]

A имеет ключ, ak и другие атрибуты.B является слабым и идентифицируется как ak и bk (это wek / частичный ключ). До сих пор .. все нормально для отображения, у меня будет 2 отношения

  • A (ak, a1, ...., an) ak в качестве первичного ключа
  • B (bk, ak, b1, ..., bn) с (bk, ak) в качестве первичного ключа и внешним ключом ak, ссылающимся на A (ak)

Что за С?Я думаю, что C имеет ck как частичный ключ, но как отобразить новое отношение?

C (ck, bk, ak, c1, ..., cn) с

  • (ck, bk, ak) в качестве первичного ключа, bk в качестве внешнего ключа, ссылающегося на B (bk) и ak, ссылающегося на B (ak)?
  • (ck, bk, ak) в качестве ключа, bk в качестве внешнего ключа, ссылающегося на B (bk) и ak ссылаются на A (ak)?

или что-то еще, например:

  • C (ck, bk, c1, ..., cn) с помощью (ck, bk) как ключ, bk как внешний ключ, ссылающийся на B (bk)?

Размышления о конечном SQL не сильно помогают, так как я думаю, что множественные внешние_ключи недопустимы (например, FOREIGNКЛЮЧ (bk, ak) БИБЛИОГРАФИЯ B (bk, ak)

Я искал много книг, но не нашел подобной ситуации. Я действительно запутался в это время ... Я надеюсь, что вы можете мне помочь:-) Заранее спасибо

1 Ответ

1 голос
/ 16 февраля 2012

PRIMARY KEY таблицы B - (bk, ak), так что это то, на что вы должны ссылаться из C для отношения 1:n:

(ck, bk, ak) as PRIMARY KEY,
(bk, ak) as FOREIGN KEY referencing B(bk, ak)

Это разрешено в SQL:

CREATE TABLE C
( ck, bk, ak, ...
, PRIMARY KEY (ck, bk, ak)
, FOREIGN KEY (bk, ak) 
    REFERENCES B (bk, ak)
) 
...