蔵書管理システム — テーブル設計書

本設計書は、小規模書店の蔵書管理システムを題材とした Another Mood のサンプルプロジェクトです。テーブル定義データから、テーブル一覧・各テーブル詳細・ER 図を自動生成しています。

テーブル一覧

ID 名前 説明
書籍 書籍 店舗で取り扱う書籍のマスタ。1 書籍 1 レコードで、ISBN ごとに 1 行を持つ。
著者 著者 書籍を執筆した著者のマスタ。同名の著者は便宜上別レコードとして扱う。
出版社 出版社 書籍を発行した出版社のマスタ。仕入元と必ずしも一致しないが、本設計では同一視する。
在庫 在庫 店舗が現在保有している書籍の在庫数を、書籍ごとに 1 レコードで保持する。
仕入 仕入 出版社からの書籍仕入実績を 1 仕入 1 レコードで記録する。日次バッチで集計対象になる。

ドメインモデル図 (Mermaid classDiagram)

ドメイン層から見たクラス図。列_with_ドメイン型 クエリで 列.型 (DDL 表記) を 型対応 entity 経由でドメイン型に解決した結果を流し込んでいる。クラス名・属性名はテーブル設計書の日本語をそのまま使い、型のみドメイン層の表記 (string / integer / date) に置き換える。

classDiagram
class `仕入` {
  仕入ID : string [PK]
  書籍ID : string [FK]
  仕入日 : date
  数量 : integer
  単価 : integer
}
class `出版社` {
  出版社ID : string [PK]
  社名 : string
  所在地 : string
}
class `在庫` {
  在庫ID : string [PK]
  書籍ID : string [FK]
  数量 : integer
  棚番号 : string
}
class `書籍` {
  書籍ID : string [PK]
  タイトル : string
  著者ID : string [FK]
  出版社ID : string [FK]
  価格 : integer
  ISBN : string
}
class `著者` {
  著者ID : string [PK]
  氏名 : string
  国 : string
}
`書籍` --> `著者` : 著者ID
`書籍` --> `出版社` : 出版社ID
`在庫` --> `書籍` : 書籍ID
`仕入` --> `書籍` : 書籍ID

ER 図 (Mermaid erDiagram)

erDiagram
"書籍" {
  VARCHAR(16) 書籍ID PK
  VARCHAR(255) タイトル
  VARCHAR(16) 著者ID FK
  VARCHAR(16) 出版社ID FK
  INTEGER 価格
  VARCHAR(20) ISBN
}
"著者" {
  VARCHAR(16) 著者ID PK
  VARCHAR(120) 氏名
  VARCHAR(60) 国
}
"出版社" {
  VARCHAR(16) 出版社ID PK
  VARCHAR(120) 社名
  VARCHAR(255) 所在地
}
"在庫" {
  VARCHAR(16) 在庫ID PK
  VARCHAR(16) 書籍ID FK
  INTEGER 数量
  VARCHAR(16) 棚番号
}
"仕入" {
  VARCHAR(16) 仕入ID PK
  VARCHAR(16) 書籍ID FK
  DATE 仕入日
  INTEGER 数量
  INTEGER 単価
}
"書籍" }o--|| "著者" : "著者ID"
"書籍" }o--|| "出版社" : "出版社ID"
"在庫" }o--|| "書籍" : "書籍ID"
"仕入" }o--|| "書籍" : "書籍ID"