関数従属の意味について、優しい言葉で簡単に教えてく
ほうさん
(No.1)
タイトルの通り関数従属って言う言葉を、テキスト見てもよく理解できないのですが、
誰か簡単に優しい言葉で説明していただけませんか?
誰か簡単に優しい言葉で説明していただけませんか?
2016.03.03 20:17
がつくんさん
(No.2)
この投稿は削除されました。(2016.03.04 00:43)
2016.03.04 00:43
がつくんさん
(No.3)
関数従属の説明------------------
次のような表があったとします。
社員(社員ID, 社員名, 住所)
社員IDが決まれば、社員名と住所が決まります。
ここで、「決まる」というのは、1つに定まるということです。
このとき、
「社員名は社員IDに関数従属している」
「住所は社員IDに関数従属している」
と言います。
これを次のように書くことがあります。
社員ID -> 社員名, 住所
※ ->は矢印です。
関数従属の詳細-----------------
関数従属には、「部分関数従属」、「完全関数従属」、「推移関数従属」があります。
次のような表があったとします。
受注(受注No, 受注日付, 顧客コード, 顧客名, 商品コード, 商品名, 単価, 数量)
主キーは、{受注No, 商品コード}で、次の関数従属があったとします。
受注No -> 受注日付, 顧客コード, 顧客名
顧客コード -> 顧客名
商品コード -> 商品名, 単価
{受注No, 商品コード} -> 数量
主キーの一部に関数従属するものを「部分関数従属」といいます。
たとえば、この例では主キーが{受注No, 商品コード}なので、
「受注No -> 受注日付, 顧客コード, 顧客名」、「商品コード -> 商品名, 単価」
が部分関数従属です。
部分関数従属を排除したものを、第2正規形といいます。
上の例では、次のように正規化されます。
(受注No, 受注日付, 顧客コード, 顧客名)
(商品コード, 商品名, 単価)
(受注No, 商品コード, 数量)
X -> Yが「完全関数従属」とは、X -> Y とあるときに、YがXの一部には関数従属しないことを言います。
たとえば、元の表(受注)の「{受注No, 商品コード} -> 商品名」は完全関数従属ではありません。(「商品コード -> 商品名」があるから。)
第2正規形では、主キーでない属性は、主キーに完全関数従属します。
推移関数従属とは、「X -> Y」「Y -> Z」があるとき「X -> Z」が成り立つことを推移関数従属性といいます。
(受注No, 受注日付, 顧客コード, 顧客名)の表の例では、
「受注No -> 顧客コード」「顧客コード -> 顧客名」があるので、
「受注No -> 顧客名」という推移関数従属があります。
主キーでない属性が、主キーから推移関数従属しないとき、第3正規形といいます。
(受注No, 受注日付, 顧客コード, 顧客名)から推移関数従属を排除すると
(受注No, 受注日付, 顧客コード)、(顧客コード, 顧客名)に分解されます。
-----------------------
詳細は、説明がごちゃごちゃになってしまいました。
これで、伝わるといいですが...
次のような表があったとします。
社員(社員ID, 社員名, 住所)
社員IDが決まれば、社員名と住所が決まります。
ここで、「決まる」というのは、1つに定まるということです。
このとき、
「社員名は社員IDに関数従属している」
「住所は社員IDに関数従属している」
と言います。
これを次のように書くことがあります。
社員ID -> 社員名, 住所
※ ->は矢印です。
関数従属の詳細-----------------
関数従属には、「部分関数従属」、「完全関数従属」、「推移関数従属」があります。
次のような表があったとします。
受注(受注No, 受注日付, 顧客コード, 顧客名, 商品コード, 商品名, 単価, 数量)
主キーは、{受注No, 商品コード}で、次の関数従属があったとします。
受注No -> 受注日付, 顧客コード, 顧客名
顧客コード -> 顧客名
商品コード -> 商品名, 単価
{受注No, 商品コード} -> 数量
主キーの一部に関数従属するものを「部分関数従属」といいます。
たとえば、この例では主キーが{受注No, 商品コード}なので、
「受注No -> 受注日付, 顧客コード, 顧客名」、「商品コード -> 商品名, 単価」
が部分関数従属です。
部分関数従属を排除したものを、第2正規形といいます。
上の例では、次のように正規化されます。
(受注No, 受注日付, 顧客コード, 顧客名)
(商品コード, 商品名, 単価)
(受注No, 商品コード, 数量)
X -> Yが「完全関数従属」とは、X -> Y とあるときに、YがXの一部には関数従属しないことを言います。
たとえば、元の表(受注)の「{受注No, 商品コード} -> 商品名」は完全関数従属ではありません。(「商品コード -> 商品名」があるから。)
第2正規形では、主キーでない属性は、主キーに完全関数従属します。
推移関数従属とは、「X -> Y」「Y -> Z」があるとき「X -> Z」が成り立つことを推移関数従属性といいます。
(受注No, 受注日付, 顧客コード, 顧客名)の表の例では、
「受注No -> 顧客コード」「顧客コード -> 顧客名」があるので、
「受注No -> 顧客名」という推移関数従属があります。
主キーでない属性が、主キーから推移関数従属しないとき、第3正規形といいます。
(受注No, 受注日付, 顧客コード, 顧客名)から推移関数従属を排除すると
(受注No, 受注日付, 顧客コード)、(顧客コード, 顧客名)に分解されます。
-----------------------
詳細は、説明がごちゃごちゃになってしまいました。
これで、伝わるといいですが...
2016.03.04 00:45
ほうさん
(No.4)
自分のために時間を割いて教えて下さり本当にありがとうございます!
何かわかりました!ありがとうございます!
何かわかりました!ありがとうございます!
2016.03.04 09:15
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告