Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Looking at the whole data model at once can be overwhelming, so we'll consider it as a few smaller simpler systems:

These systems overlap around a few key classes, mainly DataSource, Identifier, LicensePool, and Work.

...

Theoretically, thumbnailing could also be handled as a ResourceTransformation, but it's probably not worth making this change.

Anchor
Licensing
Licensing
Licensing

Collection

A Collection represents a set of books that are made available through one set of credentials.

...

CirculationEvents are aggregated and used to create library analytics.

Anchor
Works
Works
Works

A Work represents a book in general, as opposed to one specific edition of a book, or a specific licensing agreement to deliver copies of a book.

...

  • May have copies scattered across many LicensePools
  • May have many Editions, but derives its presentation metadata from one particular Edition, which is known as its “presentation edition.” This special Edition represents the best available bibliographic metadata for the book.
  • Stores information that has been aggregated from multiple sources and summarized:
    • Subject matter classification (aggregated from Classifications)
    • Intended audience (aggregated from Classifications)
    • Fiction/nonfiction status (aggregated from Classifications)
    • Popularity (aggregated from Measurements)
    • The best available summary (aggregated from Resources)
  • May be referenced by multiple CustomListEntries and/or CachedFeeds.
  • May participate in many WorkGenre assignments. WorkGenre is a simple join table that tracks the assignment of Works to Genres.

Anchor
Custom lists
Custom lists
Custom lists

A CustomList is a list of books, typically grouped by a criterion such as genre, subject, bestseller status, etc., which a librarian has compiled in the admin interface. Each CustomList is associated with, and presented to patrons in the front-end as, one Lane. A CustomList has at least one CustomListEntry, each of which refers to a particular Work.

Anchor
Libraries
Libraries
Libraries

Library

A library represents some organization that serves a distinct set of patrons.

...

Annotations are synced between client and server using the Web Annotation Protocol. A patron must opt in before their annotations are synchronized with the circulation manager. A patron's decision to opt-in or not is tracked in the field Patron.synchronize_annotations.

Anchor
Site Configuration
Site Configuration
Site configuration

ExternalIntegration

A ConfigurationSetting holds information about an extra piece of site configuration. A ConfigurationSetting may be associated with an ExternalIntegration, a Library, both, or neither.

...

An ExternalIntegration contains the configuration for connecting to a third-party API. Commonly used third-party APIs include the metadata wrangler, DataSources that require protocols, authentication services, storage services, and search providers.

Anchor
Background processes
Background processes
Background processes

  • A Timestamp provides a record of when a Monitor was run.
  • A CoverageRecord provides a record of any processes that have been performed on a book (referred to via its Identifier)
  • A WorkCoverageRecord provides a record of any processes that have been performed on a Work (similar to what CoverageRecord does for Identifiers).