Database Design - skytreader/Librarian GitHub Wiki

There are two types of tables in the database (excluding user-related tables such as librarians): entities and relations. Basically, relation tables link an entity table to another entity table (a "join").

The entity tables are as follows:

  • bookgenres
  • bookpersons
  • books
  • printers
  • publishers

On bookpersons

Bookpersons will be the directory of all persons included in creating books: authors, illustrators, editors, and translators.

Why maintain a table for all persons included in creating books, you ask. It's because people involved in making books often take other roles in other books. Authors author their own books and may edit another book authored by another author. This makes for easy searching, when doing, say, list all books in which person X is involved.

User-Related tables

librarians

TODO: Change this to users.

This table contains basic account info for all users of Librarian.