Database Diagrams

Overview (v0.19)

Database overview. As of version 0.19, Book items are broken out into Work and Edition.

(Standard Django and Wagtail tables omitted for simplicity.)

overview of database structure for version 0.19

Footnote details (v0.21)

Version 0.21 adds djiffy for importing IIIF Manifests and Canvases, in order to link digitized versions of lending library cards with database footnotes.

Bibliography records now have an optional foreign key to an associated djiffy.models.Manifest, and Footnote records now have an optional foreign key to a djiffy.models.Canvas that belongs to that manifest.

footnote/djiffy details for version 0.21

Book details (v0.19)

Work and edition details.

work/edition details for version 0.19

Overview (v0.18)

Database overview; standard Django and Wagtail tables omitted for simplicity.

overview of database structure and relationships

Account Events (v0.18)

There are several types of events, related to a common, generic event (implemented with Django multitable inheritance). As of v0.18, all events can have an optional associated item and partially known dates, in order to allow documenting non-standard events from lending library cards.

Database Event table details


Diagrams for v0.18 generated with davila.js.

Previous versions

Overview (v0.10) - Wagtail

Database Overview (v0.10) - Wagtail

Overview (v0.6)

Database Overview v0.6

Person detail (v0.6)

MEP Schema - Person detail v0.6

Account detail (v0.6)

MEP Schema - Account detail v0.6

Book detail (v0.6)

MEP Schema - Book detail v0.6

Database Overview (v0.3)

MEP Schema Overview v0.3

Person detail (v0.3)

MEP Schema - Person detail v0.3

Account detail (v0.3)

MEP Schema - Account detail v0.3

Book detail (v0.3)

MEP Schema - Book detail v0.3

People Detail (0004)

People Module Detail


InfoURL now includes a required name field

Books Detail (0004)

Books Module Detail

Account Detail (0004)

Account Module Detail


Database diagrams (prior to v0.18) generated with DAVILA. The sphinx-docs directory includes a customize.csv and MySQL dump that was used to generate the schema diagrams.

Initial Schema Design (Version 004)

MEP Schema Design 004


This does not include additional complexity of URLs for people records per 19 June 2017 project meeting.

Database updates and changes by version


  • Renamed Item to Work and split out edition-specific information into Edition.


  • Partial date support has been shifted from Purchase and Borrow to Event so that any event now supports partial dates.



  • Remove Mezzanine and add Wagtail dependencies.

  • Add Pages module with CMS functionality.


  • Purchase now has fields and flags for partial start and end dates.

  • PartialDateMixin now contains fields and validation for partial dates, including date precision flags.


  • Person has a new boolean flag to indicate if the entity is an organization

  • Item creators have been generalized to use a generic Creator and CreatorType rather than limited, specific relationships (Author, Editor, Translator).

  • Account now has a relationship to a footnote Bibliography to document an associated lending card, if there is one

  • Borrow event has date precision flags to track partially known dates for both start and end date, a status field to indicate if the item was returned, bought, or missing, and a relationship to Item for the book borrowed.

  • The Purchase event is still present in the database but not currently in use.


  • Address has been renamed to Location, and changed to allow Person and Account to have one or more Address, which is a Location with optional start/end dates.

  • Subscribe event has been renamed to Subscription; subscription type field has been converted from a Django choice field to the editable SubscriptionType.

  • Subscription duration has been converted from months and fraction of months to the actual days between start and end dates.


The overall architectures of the schema remains the same, but several fields were made less restrictive to accommodate variation in the Logbook data. These include:

  • Reimbursement price (now optional)

  • Subscribe duration

  • Options were provided for Subscribe sub_type fields, as well as for modification.