カテゴリ: 基本情報技術者試験 更新日: 2025/10/04

関数従属とは?初心者でもわかるデータベースの基本と例

関数従属
関数従属

先生と生徒の会話形式で理解しよう

生徒

「先生、データベースを勉強していたら『関数従属』という言葉が出てきました。これはどういう意味ですか?」

先生

「関数従属(カンスウジュウゾク)というのは、ある列の値が決まれば、他の列の値も一意に決まるという関係のことなんだ。」

生徒

「一意に決まるってどういうことですか?」

先生

「例えば『社員ID』を見れば必ずその人の『氏名』が分かるような場合だね。社員IDから氏名が決まるという関係が関数従属なんだよ。」

生徒

「なるほど!つまりあるデータが別のデータを決定する関係を指すんですね。」

先生

「その通り。それじゃあ、詳しく説明していこう。」

1. 関数従属(カンスウジュウゾク)とは?

1. 関数従属(カンスウジュウゾク)とは?
1. 関数従属(カンスウジュウゾク)とは?

関数従属とは、データベースにおいて「ある列の値を決めれば、別の列の値が必ず決まる」という関係を表す用語です。英語では「Functional Dependency(ファンクショナルディペンデンシー)」と呼ばれます。

例えば「社員ID」から「社員名」が決まる場合、社員ID → 社員名 という関数従属が成り立ちます。この矢印は「決定する」という意味を表しています。

2. 関数従属の具体例

2. 関数従属の具体例
2. 関数従属の具体例

次のような表を考えてみましょう。

社員ID | 氏名   | 部署ID | 部署名
001   | 佐藤   | D01   | 営業
002   | 鈴木   | D01   | 営業
003   | 田中   | D02   | 開発

この表では以下の関数従属が成り立ちます。

  • 社員ID → 氏名
  • 社員ID → 部署ID
  • 部署ID → 部署名

つまり「社員ID」が分かれば「氏名」や「部署ID」が決まりますし、「部署ID」が分かれば「部署名」も決まります。

3. 完全関数従属と部分関数従属

3. 完全関数従属と部分関数従属
3. 完全関数従属と部分関数従属

関数従属には種類があります。その中で重要なのが「完全関数従属(カンゼンカンスウジュウゾク)」と「部分関数従属(ブブンカンスウジュウゾク)」です。

完全関数従属とは、複合キー全体によって決まる関係のことです。一方、部分関数従属は複合キーの一部だけで値が決まってしまう関係です。

例えば、注文表で「注文番号」と「商品番号」の2つをキーにしている場合、「商品名」が商品番号だけで決まるなら、それは部分関数従属です。こうした部分関数従属を排除するのが第2正規形の考え方です。

4. 推移的関数従属(スイイテキカンスウジュウゾク)とは?

4. 推移的関数従属(スイイテキカンスウジュウゾク)とは?
4. 推移的関数従属(スイイテキカンスウジュウゾク)とは?

推移的関数従属とは、キーを通して間接的に別の列に依存する関係を指します。

例を挙げると、「社員ID → 部署ID」「部署ID → 部署名」という関係があるとき、「社員ID → 部署名」も成り立ちます。このように間接的に依存する関係を推移的関数従属といいます。

推移的関数従属を解消するのが第3正規形の目的です。

5. 関数従属が重要な理由

5. 関数従属が重要な理由
5. 関数従属が重要な理由

関数従属を理解することは、データベース設計を正しく行ううえで欠かせません。なぜなら関数従属を考慮せずに設計すると、データの重複や矛盾が発生しやすくなるからです。

正規化(セイキカ)は関数従属の考え方をもとに表を整理していく手法です。非正規形から第1正規形、第2正規形、第3正規形へと整理する過程で、関数従属の理解が必須になります。

6. 関数従属に関する雑学

6. 関数従属に関する雑学
6. 関数従属に関する雑学

関数従属という考え方は、1970年代にエドガー・F・コッドによって提唱されたリレーショナルデータベース理論の中で生まれました。当時、データが重複して扱いにくいという問題を解決するために、関数従属を基準にした正規化の方法が整えられたのです。

初心者は「Aを知ればBが必ず分かる」というイメージで関数従属を捉えると理解しやすいでしょう。例えば「学生番号 → 学生氏名」というように、日常のデータ管理でも自然に使われている考え方です。

カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
クライアントサーバシステムとは?初心者でもわかるネットワークの基本構成をやさしく解説
New2
基本情報技術者試験
分散処理とは?初心者でもわかるコンピュータの処理方式をやさしく解説
New3
情報セキュリティマネジメント試験
ブラックリストとは何かをやさしく解説!初心者でもわかる仕組みと活用例
New4
基本情報技術者試験
集中処理とは?初心者でもわかるコンピュータ処理方式の基本用語をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
FTP
220
FTPとは?初心者でもわかるファイル転送プロトコルの基本と仕組みを徹底解説!
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
212
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
URL
187
URLとは?初心者でもわかるWebリンクの仕組みと役割をやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.6
Java&Spring記事人気No6
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
基本情報技術者試験
スキーマ(Schema)とは?データベースの基本構造を初心者向けに解説
No.8
Java&Spring記事人気No8
基本情報技術者試験
ハブとは?初心者でもわかるネットワーク接続装置の基本と仕組み