図書管理システムのデータベース
高校の図書委員である太郎さんと花子さんは、図書管理システムのデータベースを使って、貸出状況の分析をしようとしている。
花子:「私たちのシステムには、主に3つのテーブル(表)があるわね。(表1)が『書籍』テーブル、(表2)が『会員』テーブル、(表3)が『貸出』テーブルよ。」
表1: 書籍 (Books)
| BookID | Title | Author |
|---|---|---|
| 101 | 情報Iの基礎 | 情報太郎 |
| 102 | ネットワーク入門 | 電脳花子 |
| 103 | プログラミング思考 | 算法健太 |
| 104 | データベースとは | 検索さくら |
表2: 会員 (Members)
| MemberID | Name |
|---|---|
| 1 | 佐藤 |
| 2 | 鈴木 |
| 3 | 高橋 |
表3: 貸出 (Rentals)
| RentalID | BookID | MemberID | DueDate (返却期限) |
|---|---|---|---|
| 1 | 101 | 1 | 2025-11-01 |
| 2 | 103 | 1 | 2025-11-01 |
| 3 | 102 | 3 | 2025-11-05 |
| 4 | 103 | 2 | 2025-11-10 |
太郎:「ありがとう。今日は 2025年11月8日 だと仮定しよう。まず、どの本が延滞(えんたい)されているか知りたいな。」
花子:「それなら、データベースの問い合わせ言語であるSQLが使えるわ。例えば、『貸出』テーブルから、今日の日付(2025-11-08)より前に返却期限が来ているデータを検索すればいいのよ。」
表3(貸出)に基づいて、『プログラミング思考』(BookID: 103)を借りている会員は誰か。最も適切なものを次のA〜Dのうちから一つ選べ。
太郎さんは、本日(2025年11月8日)時点で延滞している(返却期限を過ぎている)貸出記録をすべて検索したいと考えた。以下のSQL文の 【 ア 】 に入る条件式として、最も適切なものを次のA〜Dのうちから一つ選べ。
SELECT * FROM Rentals WHERE 【 ア 】;
問2のSQL(延滞している貸出記録の検索)を実行した。その結果(延滞している記録)に該当する**会員の名前(Name)**は誰か。表2と表3を組み合わせて答えよ。
最も適切なものを次のA〜Dのうちから一つ選べ。
花子さんは、データベースが3つのテーブルに分かれていることに着目した。「貸出」テーブルには、借りた本のタイトル(例:『情報Iの基礎』)を直接書き込まず、BookID(例:101)だけを記録している。
このようなデータベースの設計(正規化)の主な利点として、適切なものはどれか。次の ①〜③ のうちから、適切なものだけをすべて選んだ組み合わせを、後のA〜Hのうちから一つ選べ。
① データの**一貫性(整合性)が保たれる。(例:『情報Iの基礎』のタイトル表記を変更したくなった場合、Books テーブルの1か所を修正するだけでよい。)
② データの冗長性(じょうちょうせい)が排除される。(例:『情報Iの基礎』という長い文字列を Rentals テーブルに何度も書く必要がなくなり、全体のデータサイズを削減できる。)
③ データの機密性(セキュリティ)**が高まる。(例:Rentals テーブルを見ても BookID しか分からず、Books テーブルを見ないとタイトルが分からないため、安全である。)