Database Schema

Introduction
There are three primary document views utilized by the ISFDB: showing the bibliography of an author, showing the titles present in a publication, and showing the publications in which a title was published. These views require three primary tables: authors, titles, and publications. Various normalization tables are provided to reduce errors and storage needs.

The illustration below shows the relationship between the various tables. All notes are stored in the notes table, which other tables refer to via the primary note_id key. There are two tables which are used for administrative and display purposes. The metadata table contains data pertinent to the database itself, while the magazine table contains information that allows magazine publication to be grouped under a single magazine heading.

A high-level explanation of the database can be found in the Database Overview article. An up to date diagram of the ISFDB tables and their relationships can be found here.

Global Tables
Information stored in the global tables are shared across the title, author, and publication related tables in the ISFDB.


 * Schema:directory - Holds author directory information.
 * Schema:history - Tracks database change history.
 * Schema:languages
 * Schema:license_keys - Holds user license key information.
 * Schema:metadata - Contains metadata about the database itself.
 * Schema:mw_user‎
 * Schema:mw_user‎_groups
 * Schema:notes - General-purpose notes area.
 * Schema:submissions - Table for storing data submissions.
 * Schema:user_languages‎ - Holds User Language preferences.
 * Schema:user_preferences - Holds User preferences.
 * Schema:user_sites - Holds User Website preferences.
 * Schema:websites - Stores bookseller and bibliographic sites that a publication may link to.

Author-Related Tables
The following tables are used to store information about authors and their works:


 * Schema:authors - Contains information about an author.
 * Schema:canonical_author - Links author records to title records.
 * Schema:emails - Specialized table for storing email addresses.
 * Schema:pseudonyms - Table of pseudonyms.
 * Schema:pub_authors - Links author records to publication records.
 * Schema:webpages - Specialized table for storing webpage URLs. Originally for Author Webpages, now also for Publisher, Publication Series and Titles.

Publication-Related Tables
The following tables are used to store information about publications:


 * Schema:magazine - Contains magazine information. Will be deleted in near future.
 * Schema:pub_content - Links title records to a specific publication.
 * Schema:pub_series - Contains information on a publication series.
 * Schema:publishers - Contains publisher information.
 * Schema:pubs - Contains information on a specific publication.
 * Schema:reference - Contains information on verification references.
 * Schema:verification - Contains verification information for a specific publication.

Title-Related Tables
The following tables are used to store information about titles:


 * Schema:series - Contains series information.
 * Schema:tag_mapping - Links a tags entry to a specific title per user.
 * Schema:tags - Contains user-defined title tags.
 * Schema:title_relationships - Maps relationship between a review, serial, or translations to a title.
 * Schema:titles - Contains information about a specific title.
 * Schema:votes - Tracks votes for a specific title per user.

Awards-Related Tables
The following tables are used to store information about awards:


 * Schema:award_types - Not yet implemented and subject to change. Designed to replace hard-coded award_ttypes.
 * Schema:awards - Contains award information.
 * Schema:title_awards - Maps an award to a specific title.