人に聞けない痔の悩み、これでスッキリ >>

【質問内容】
自分で途中までやったんですが、(2)の第2正規形からわからなくなったので、どなたかデータベースに詳しい人のアドバイスをいただけたらなと思います。あと、間違いがあればご指摘願います。

【問題内容】
(1) 職種歴表(非正規形)をバッカス表記法で記述。
(2) (1)についてデータ正規化を第3正規形まで行い、その過程をバッカス表記法で記述。
(4) 正規化後の各表について、基本キー(連結キーの場合,その表     記)、外部キーを示す。
(5) このデータベースのデータ定義をSQL - DDL で記述。



【職種歴表】
従業員番号 従業員名 入社年月日 部門コード 部門名   職種コード   職種名     経験年数
S880123  鈴木太郎 04/01/88   A01    開発1課    P01    初級プログラマ    2
                        P02                   中級プログラマ    3
                        S01                   初級SE         1
T910354  佐藤花子 04/01/91   B01   電算1課    O01     初級オペレータ   2
                        P01                    初級プログラマ    1
S860555  高橋一雄 04/01/86   A02   開発2課     S01     初級SE        3
                        S02                    中級SE        5
(2)
職種歴表 = 従業員番号 + 従業員名 + 入社年月日 + 部門コード + 部門名 +
  {職種コード + 職種名 + 経験年数}

(3)
【第1正規形】
職種歴表A = 従業員番号 + 従業員名 + 入社年月日 + 部門コード + 部門名
職種歴表B = 従業員番号 + 職種コード + 職種名 +経験年数

【第2正規形】
職種歴表A = 従業員番号 + 従業員名 + 入社年月日 + 部門コード + 部門名
職種歴表B = 従業員番号 + 職種コード + 職種名 +経験年数
職種歴表B2 = 職種コード + 職種名

このQ&Aに関連する最新のQ&A

A 回答 (2件)

#1 です。


少し勘違いがありましたので、修正します。

【第2正規形】
{従業員番号,職種コード}→{経験年数} の関係と、{職種コード}→{職種名} の関係を分割する必要がありますので

従業員 = 従業員番号 + 従業員名 + 入社年月日 + 部門コード + 部門名
職種歴表 = 従業員番号 + 職種コード + 経験年数
職種 = 職種コード + 職種名

第三正規形は結果的には先に書いたもので正しいと思います。
    • good
    • 0

職種コードの一部が部門コードの位置へずれているので、少し悩みました。


とりあえず、正規形についてかきます。

【第1正規形】
繰り返しの項目を無くせば良く、表の空欄に適当な値がすべて入れば良いでしょう。
表の分割の必要は必ずしもありません。
あえて分割すると、この場合には、下の第二正規形と同じになります。

【第2正規形】
部分関数従属を無くす。
例 {従業員番号,経験年数}→{職種コード} の関係がある一方で {従業員番号}→{従業員名}の関係があります。
{従業員番号}は{従業員番号,経験年数}の一部分なので、こういう物を無くす必要があります。

従業員 = 従業員番号 + 従業員名 + 入社年月日 + 部門コード + 部門名
職種歴表 = 従業員番号 + 職種コード + 職種名 + 経験年数

【第3正規形】
推移的関数従属を無くす。
例 {従業員番号}→{部門コード}→{部門名} の様に連続的に関数従属している形を無くします。
{従業員番号}→{部門コード}, {部門コード}→{部門名} となるように分割します。

従業員 = 従業員番号 + 従業員名 + 入社年月日 + 部門コード
職種歴表 = 従業員番号 + 職種コード + 経験年数
部門 = 部門コード + 部門名
職種 = 職種コード + 職種名

こういう感じになるのでは無いかと思います。
※バッカス表記法はよく知らないので適当にかきました。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
バッカス表記法は、
職種歴表 = 従業員番号 + 従業員名 +
      {職種コード + 職種名 + 経験年数}
というような表現の仕方と習いました。
この正規化をもとにして、SQL-DDLを書いてみたいと思います。
本当にありがとうございました。

お礼日時:2007/11/07 11:19

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング