1

こんにちは私は少し混乱しています..!

address_details(e_address_id(pk),hno,street....)
emp_details(eid(pk),ename,...,e_address_id(fk))

また

emp_details(eid(pk),ename,...,)
address_details(e_address_id(pk),eid(fk)hno,street....)

どちらの方法でも機能します。しかし、どちらを選択する必要があるかを判断できず、どちらを選択するかを教えてください。私はDBデザインの初心者です。事前に感謝します

4

2 に答える 2

1

最初のデザインの方が優れていますが、十分ではない可能性があります。

2番目の設計では、同じ住所を共有する2人の従業員がいる場合、住所の詳細を冗長に保存する必要があります。

最初の設計では、複数の従業員がアドレスを共有できますが、これは必要な場合があります。ただし、最初の設計では、従業員が1つのアドレスしか持てません。それがシステムに必要なすべてである場合、最初の設計で問題ありません。

ただし、従業員が複数のアドレスを持ち、複数の従業員がアドレスを共有できるようにする必要がある場合は、いずれかのテーブルから外部キーを削除して、新しい交差テーブルに移動することを検討する必要があります。

employee_address(e_id(fk), e_address_id(fk))

選択する設計は、ビジネスルールと、実際に何を期待できるかによって異なります。

于 2012-12-12T12:46:51.823 に答える
0

リレーショナルデータベースの多重度の概念または関係の概念を理解する必要があります。

address_details(e_address_id(pk),hno,street....)
emp_details(eid(pk),ename,...,e_address_id(fk))

この構造は、(empentity1およびAddressentity2)1-従業員からアドレスへの多くの関係と呼ばれます。これは、複数の従業員が同じ住所に住むことができることを意味します。しかし同時に、1人の従業員が複数の場所に住むことはできないため、
EmpAはAdd-Aに住んで
いますEmpBはAdd-Bに
住んでいますEmpcはAdd-Aに住んでいます(EmpAも住んでいます)
次の構造では、EmpAは2つの住所に住むことはできません。

emp_details(eid(pk),ename,...,)
address_details(e_address_id(pk),eid(fk)hno,street....)

上記の構造は多対一の関係です。
1人が複数の住所に住むことはできるが、2人が1つの住所に住むことはできない場合。これが多くのことを説明することを願っています。

リレーショナルデータベースの読み取り多重度をさらに理解するには

于 2012-12-13T04:55:16.640 に答える