2016-10-10 9 views
0

enter image description here関係モデルのISA関係を表すのは誰ですか?

私はこの例に長官に

を持って、私が作成し、IDする必要がありますか?誰がWorkBenchを代表していますか?

または、私は1:n関係を作成する必要がありますか?

私のモデルがあります:

Engineer : eng_type, fk: employee_ssn 
+0

"Workbench"とは何を意味していますか? SQLワークベンチ? IDはダイアグラムの一部ではありません。従業員が複数のジョブを持っていない限り、ここでは1:nの関係はないようです。 –

+0

テーブルと関係を作成するためのMySQL Workbench。エンジニアは従業員の専門職ですが、あなたが作成する必要がある関係を私に答えてもらえますか? –

+0

ダイアグラムに関係が表示されます。 'SSN'はなぜ' fk'ですか?それはプライマリキーでなければなりません。これは本当にあなたがどのように非正規化したかによります。あなたは間違いなく 'Employee'テーブルが必要です。それは' JobType'テーブルへの外部キーを持つことができます。しかし、従業員の "サブタイプ"について何をすべきか分かりません。 –

答えて

1

をお使いの図は、次の表に変換:

Employee (Ssn PK, Fname, Minit, Lname, Birth_date, Address, Job_type) 
Secretary (Ssn PK/FK, Job_type FK, Typing_speed) 
Technician (Ssn PK/FK, Job_type FK, Tgrade) 
Engineer (Ssn PK/FK, Job_type FK, Eng_type) 

Job_typeは、列挙型は、MySQLで適しているであろう、(Secretary, Technician, Engineer)のドメインを持っています。サブタイプテーブルのFK制約は、複合型:Secretary (Ssn, Job_type) REFERENCES Employee (Ssn, Job_type)で、他の2つのサブタイプでも同様です。適切なインデックスを作成する必要があります。

MySQLはチェック制約をサポートしていません。これは、各サブタイプのJob_typeを強制するのに便利でした。あなたは同じことをするためのトリガーを作成することができます。これにより、従業員は従業員がいつでも複数のサブタイプを持つことができなくなります。Employeeテーブルの各レコードはJob_typeを1つしか持たず、Job_typeのサブタイプテーブルのみが一致するレコードを持つことができます。

Employeeを完全にサブタイプの関係に参加させる場合(つまり、すべての従業員にサブタイプが必要)、トリガーを作成することもできます。

+0

こんにちは、これは答えではありません。答えは、1つの特殊化であるため、息子(ノード)は、同じ時刻にhiがfkである父(従業員)IDを取得します。これは1対1の関係を識別する関係であり、エンティティが何であるかを知っているため識別します。 –

+0

私はあなたを理解するのが難しいです。従業員 'Ssn'はあなたの識別子であり、下線が引かれており、ダイアグラムにIDフィールドはありません。私はサブタイプにPKとFKの両方としてSsnを示しました。 – reaanb

+0

さて、Ssnは図で使用している "id"です。 –