erDiagram
data_series ||--o{ data_edition : "has"
data_edition ||--o{ data_volume : "has"
data_volume ||--o{ data_workinanthology : "contains"
data_workinanthology }o--|| data_work : "selects"
data_work ||--o{ data_work : "parent_id (excerpt of)"
data_work ||--o{ data_work_authors : ""
data_work_authors }o--|| data_author : ""
data_work ||--o{ data_work_form : ""
data_work_form }o--|| data_form : ""
data_author ||--o{ data_author_countries : ""
data_author_countries }o--|| data_country : ""
data_author ||--o{ data_author_genders : ""
data_author_genders }o--|| data_genders : ""
data_author ||--o{ data_author_raceeth : ""
data_author_raceeth }o--|| data_raceeth : ""
data_series {
int id PK
varchar name
varchar abbreviation "NAFAM, NAAL, NAWest, NAWL"
}
data_edition {
int id PK
int series_id FK
varchar edition_number
int year
varchar variant "'' or 'Shorter'"
varchar title
int publisher_id
}
data_volume {
int id PK
int edition_id FK
varchar volume_number
varchar title
int first_toc_page
int last_toc_page
varchar lccn
}
data_workinanthology {
int id PK
int work_id FK
int volume_id FK
int toc_page "start page"
int toc_next "end page (guard toc_next > toc_page)"
bool has_untitled_excerpt
varchar reviewed
}
data_work {
int id PK
int parent_id FK "NULL for top-level; set for excerpts"
varchar title
bool is_editor_title
text notes
}
data_work_authors {
int id PK
int work_id FK
int author_id FK
}
data_author {
int id PK
varchar name
int birth_year
int death_year
bool birth_death_circa
varchar viaf_url
varchar wiki
}
data_work_form {
int id PK
int work_id FK "canonical work id"
int form_id FK
}
data_form {
int id PK
varchar name "poetry, fiction, nonfiction, drama, folk, song, screenplay, na"
}
data_author_countries {
int id PK
int author_id FK
int country_id FK
}
data_country {
int id PK
varchar name
}
data_author_genders {
int id PK
int author_id FK
int genders_id FK
}
data_genders {
int id PK
varchar name
}
data_author_raceeth {
int id PK
int author_id FK
int raceeth_id FK
}
data_raceeth {
int id PK
varchar name
}