2012-04-19 17 views
0

私はテーブルを持っており、私は3nfを得るためにいくつかのテーブルでそれを分割しようとしています、誰かが私を助けることができますか?私はアーウィンデータモデル検証と私のテーブルを検証するとき、私は何の警告を取得していない...しかし、それは3NF(3NFデータベースの正規化(Erwin)

http://i43.tinypic.com/35mmuwx.png

と私のアーウィン・スキーム: http://i42.tinypic.com/2hnvx3o.png

は、任意の助けを感謝します)ではありません

答えて

1

あなたの間違いは、TitleとManagerで、employee_IDを持たないことです。あなたはEmployeeテーブルにjob_Idとmng_idを持っていますので、マネージャとタイトルはあなたのテーブルに一度しか存在せず、Idで従業員テーブルから参照するだけです。 job_start_dateとjob_end_dateは、別々のテーブルを使用する実際の理由がない限り(複数の開始日/終了日を格納するような場合はありませんが、そのようには見えません)、Employeeテーブル内にある必要があります。同じことが給料でも起こりますが、最低給与と最高給与についてはわかりません。そのデータが役職に固有のものである場合、それらの2つのフィールドはTitleテーブルになければなりません。

+0

これでもう少しよく見えますが、まだわかりません。@i39.tinypic.com/dz8axd.jpg – justartem

+0

@Caerus haha​​はもう少し余裕があります。従業員のPKがEmployee_Idである必要があります。だから従業員のあなたのmng_idとjob_idは通常のフィールド(彼らはまだあなたのPKの一部ではなく、FKである)でなければならず、manager_nameもマネージャから削除して、 –

+0

を持ってはいけません。今。 – justartem

関連する問題