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

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

関数従属
関数従属

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

生徒

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

先生

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

生徒

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

先生

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

生徒

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

先生

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

基本情報技術者試験をこれから学習する人や、 独学で確実に合格レベルまで到達したい人におすすめの定番対策書です。

いちばんやさしい 基本情報技術者を見る

※ Amazonアソシエイト広告リンク

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
基本情報技術者試験
基数とは?初心者向けにわかりやすく解説【2進数・10進数・16進数の違いも理解】
更新記事
New4
情報セキュリティマネジメント試験
平文とは?暗号化されていないデータの意味を初心者向けにやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
230
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.4
Java&Spring記事人気No4
基本情報技術者試験
パケットとは?初心者にもわかりやすくネットワークの仕組みをやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
CPU
114
CPUとは何かを完全解説!初心者でもわかるコンピュータの頭脳の仕組み
No.6
Java&Spring記事人気No6
基本情報技術者試験
IMAP
101
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.7
Java&Spring記事人気No7
基本情報技術者試験
IPv4とは?初心者でもわかるIPアドレスの基本と通信のルール
No.8
Java&Spring記事人気No8
基本情報技術者試験
Telnetとは?初心者にもわかる仕組みと使い方をやさしく解説!