自炊後のデータ管理についての雑想

想定しているのは、SQLによるRDBM。
取り込んだ本のページには、それに対応するページテーブルのレコードが与えられる。

ページテーブルの定義

page_id
一意に決まるページID。通番。unsigned intだが、理論上64bit欲しい。
body
データそのもの。pdfかpngかはわからないが、ともかく何らかの画像データ形式。理想はSVGか?
lr
左右属性。見開きにした時に、そのページが向かって右側にくるか左側にくるかを記録する。
direction
向き属性。そのbodyを画面に投影する際、「上」がどちらになるかを示す。デフォルトは「0」時計の針で考える。たまに、「昔の原稿を縮小して……」などと理由をつけて方向を変えて印刷する部分があるので。
before
「前ページ」のpage_id。空欄可能。空欄の場合はそこが始点になる。ただし、一つの本に始点が複数有り得る。途中まで右開き、その後左開きといった本もあるからである。
touch
接続属性。空欄可能。見開きで二つのページを以て一つの絵とみなす場合、その接続先のpage_idを格納する。
book_id
書誌。後述の書誌テーブルのbook_idを格納する。そのページが所属している本を意味する。なお、この書誌は図書館学的な書誌に加え、版・刷による区別を加えたものになる。誤植等の変遷を確認するのに使える。
color
モノクロかカラーか。
is_text
デフォルトはfalse。そのページのコンテンツが、テキスト情報を含む場合、trueになる。活字を含むことを条件とする。例として、小説・コミック・絵物語などが該当する。
is_illust
デフォルトはfalse。そのページのコンテンツが、手書きないしCGのイラストを含む場合、trueになる。例として、小説の挿絵・コミック・絵物語・イラストなどが該当する。
is_photo
デフォルトはfalse。そのページのコンテンツが、実写あるいは加工した実写を含む場合、trueになる。例として、著者近影・写真集などが該当する。

書誌テーブルの定義

book_id
一意に決まる書誌ID。通番。unsigned intだと、42億で、全ISBNを格納するには理論上若干足りない。よって、64bitにする。
gtin
ISBN/EAN/UPC等を変換してgtinとして保存する。空欄可能。重複可能。
edition
版刷情報
release_date
版刷情報があるため、同じgtinであっても違う場合がありうる。