データベースの基本~ファイルとの違いを動かして確かめる~【GitHub対応】

データベース つくるためのPCの基本
OSくん
OSくん

2026年10月17日に全面リライトしました
2023年7月に公開した記事を、「つくって学ぶ」の趣旨に合わせて書き直した。ファイル管理とデータベース管理の違いを、Pythonで実際に動かして確認できる内容になっている。

はじめに

データベースとは、情報の集まりである。データベースに情報(データ)を集めると、データを一元管理できる。

基本情報技術者試験のシラバスにも、データベースの種類(関係モデル、階層モデル、ネットワークモデル)や、データ重複の排除が載っている。

試験要綱・シラバスについて | 試験情報 | IPA 独立行政法人 情報処理推進機構
情報処理推進機構(IPA)の「試験要綱・シラバスについて」に関する情報です。

ただ、「一元管理できると何が便利なのか」は、読むだけではわかりにくい。
今回は、GitHub Codespacesで、ファイル管理とデータベース管理を実際に動かして比べる。
コードは、筆者のGitHubリポジトリ pc-labo-hands-on の database/ フォルダにまとめてある。

データをファイルで管理する

システムごとにファイルを持つと、同じ人のデータが、複数のファイルに重複して入る。

データをデータベースで管理する

データベースに集めると、データが一元管理される。なお、システム関連の図では、データベースを円柱で表す。円柱があれば、データベース(またはデータベース管理システム)と考えてよい。

体験1:ファイルで管理すると、食い違う

履修管理と図書貸出が、それぞれ自分のCSVファイルを持っている。どちらにも、山田太郎さんの電話番号が入っている。

file_demo.py を実行する。

python3 file_demo.py

プログラムは、電話番号が変わったと想定して、履修管理のファイルだけを更新する。実行結果は、次のようになる。

履修管理の電話番号: 090-1111-1111
図書貸出の電話番号: 090-9999-9999

同じ人なのに、システムによって電話番号が違う。これが、ファイル管理の問題である。実行すると、同じフォルダに courses.csv と library.csv ができる。

体験2:データベースで管理すると、1か所で済む

db_demo.py を実行する。

python3 db_demo.py

Pythonに入っているSQLiteというデータベースを使う。電話番号は students の表だけが持ち、履修と貸出の表は、学籍番号で students につながっている。更新は、1か所で済む。

履修管理: ('山田太郎', '090-1111-1111', '情報基礎')
図書貸出: ('山田太郎', '090-1111-1111', '情報処理入門')

どちらも、新しい電話番号が表示される。データの重複がないので、食い違いも起きない。
このデータベースは、メモリ上に作るため、実行が終わると消える。

関係データモデル

データベースには、データの表し方によって、いくつかの種類がある。

  • 関係データモデル:データの集まりを「表」で表す
  • 階層データモデル:データ同士の関係を「木構造」で表す
  • ネットワークデータモデル:データ同士の関係を「網の目」のようにつながった状態で表す

現在、最も普及していて、基本情報技術者試験でも出題されるのは、関係データモデルである。
体験2で使った students の表も、その一つである。

学籍番号氏名電話番号指導教員名
1山田太郎090-1111-1111田中百合子
2鈴木貴子080-9999-8888伊藤久美
3高橋留美子070-7777-7777佐藤直子

まとめ

  • データベースは、情報の集まりで、データを一元管理できる
  • ファイル管理は、データが重複して、更新が食い違うことがある
  • データベース管理は、1か所の更新で済み、食い違いが起きない
  • 現在、最も普及しているのは、表で表す関係データモデルである

次に読む

表の仕組みを、さらに詳しく試してみたい。
→ 基本情報技術者試験問題に挑戦しよう!「関係モデル」をPython+SQLiteでつくって学ぶ

更新履歴

  • 2026年10月17日:全面リライト(手を動かす内容に刷新)
  • 2023年7月27日:初版公開

コメント

タイトルとURLをコピーしました