わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

データベース設計の課題と追加の課題

 いきなりですが問題です.

以下の要求をもとに,関係データベースの概念設計を行いなさい.

  • 図書館における図書の貸出に関するデータベースである.
  • 利用者(来場者)は蔵書検索,貸出手続き,返却手続きをする.
  • 貸出対象は一般の書籍とし,ISBNが付けられているものに限る.
  • ベストセラーなど同一の書籍を複数所有することもあり,それぞれ貸し出す.
  • 貸出および返却の手続きには,バーコードリーダを使用する.利用者は,バーコードつき利用者カードを所持している.
  • 原則として貸出日の2週間後を返却期限とする.ただし年末年始その他の事情により返却期限が2週間よりも長くなることもある.
  • 利用者は10冊まで借りることができる.ただし1冊でも延滞があると,新たに借りることはできない.

 ゼミで毎年この時期に実施している,データベースの設計課題です.昨年度の内容から,項目を1箇所だけ変更しています.
 前々回のゼミで指示しました.学年を問わず学生個別の実施とし,実体関連ダイアグラム(ER図)や,仕様の曖昧な部分の解消のために採用した事項の説明などを含むWordファイルを,前回のゼミの0時締切で,提出してもらいました.
 ゼミは午後の実施です.午前中に時間をとり,追加の課題を用意しました.一つは,問い合わせ課題です.各自作成した実体名をテーブル名,属性名をカラム名として,こちらから指示する日本語の問い合わせに対応するSQL文を記述することで,SQL作成*1の知識・技能のチェックのほか,設計に欠陥や冗長なところがないかを,確認してもらいました.今年度はデータベース登録は行わず,目視での検討・設計としました.
 昨年度の問い合わせ課題を10秒ほど眺めてから,ファイルを閉じ,新たに作成しました.

問1. 延滞がある利用者,延滞対象書籍,返却期限からの経過日数をすべて出力しなさい.
問2. ISBNが9784320122949の書籍の直近30日の貸出状況を,貸出日の新しいものから順に出力しなさい.

 どちらも「日数」への対応が必要となります*2.自分でSQL文を作ってみながら,本日(問い合わせ実行日)を表すのにCURRENT_DATEを使用してよいことと,「日付1-日付2」で日数を表す整数値が求められる(日付1が日付2よりも過去であれば結果は負になる)ことを,課題のヒントに加えました.
 もう一つは,各自設計したER図の相互チェックです.11名のWordファイルにこちらで目を通し,誰の図には何が足りないだとか,みなこの件を考慮していないだとかを,連絡することは可能ですが,すべて教員からの指示というのでは,面白みに欠けます.そこで,「学生Aは,学生Bの作成したWordファイルを見て,自分の作成したWordファイルを修正してよい」とし,学生Aと学生Bの対応付けを決めました.9月末に入ってきたばかりの3年生4名は,別々に,上の学年の学生を割り当てました.その割り当てた学生は,3年生を見ます.残りの学生は,3年生のを見るけれど自分のは見られないことにして割り振ります.
 ゼミはオンライン(Teamsのビデオ会議)による実施としました.時間までに全員,集まってくれました.追加課題の要領を10分程度で説明してから,作業に取りかかってもらい,時間を決めてファイルを集約し,また集まってもらって講評と,来週以降の予定を説明しました.

*1:当研究室の学生は,所属メジャーのカリキュラムにより,学部のデータベースに関する科目が必修となっています.

*2:日数処理が必要でない問い合わせとして,「あるIDの利用者について,新たに借りることができるなら1,できないなら0を返しなさい」というのを,検討してみたのですが,本文に書いた問1・問2のほうがより重要と判断し,取り止めました.