After the really great post by lhridley on her First stab at data structures for a Drupal 7 based Genealogy site, I'm hoping this will garner robust feedback as well. This is for the launch of the GreatAlbum site.
GreatAlbum is storytelling platform. It's organized into Albums. An Album can encompass a complex family tree, with thousands of pieces of content that represent families, individuals, events, places, stories, media, citations, sources & repositories, like the Family History Website posted by mike_san, or an Album can be a simple collection of stories and media for a single event, or even just a photo album.

Would love some feedback on how we've designed the data model, as described below and in the GreatAlbum Data Model.
- We debated between using Entity Types and Content Types. We've decided to go with Content Types, because every piece of content needs to have its own node, so that it can be imported from a GEDCOM file and exported back out again.
- Every Album is instantiated as an Organic Group; every other piece of content is contained in one or more Albums(OGs).
- We've used Entity References (ERs) to create relationships from the following content types to other content types:
- Family: Individual(Parents), Individual(Children)
- Individual: User
- Name: Individual
- Event: Family, Individual, Parent Event, Place
- Story: Family, Individual, Event, Place
- Media: Family, Individual, Event, Place, Story
- Note: Family, Individual, Event, Place, Story, Media, Citation
- Citation: Family, Individual, Event, Place, Story, Media, Source
- Source: Repository
- Based on these ERs, we display content using Page Panels, such as:
- Album Page Panel includes view panes for:
- Album Details
- Families in the Album
- Individuals in the Album
- Events in the Album
- Places in the Album
- Stories in the Album
- Media in the Album
- etc.
- Individual Page Panel includes view panes for:
- Families in which this Individual is a Parent
- Families in which this Individual is a Child
- Events related to this Individual
- Stories related to this Individual
- Media related to this Individual
- Album Page Panel includes view panes for:
- Details of the data model are posted in the GreatAlbum Data Model
So, based on this, here are a few questions we'd love to receive feedback on:
- Any major concerns with the Entities and Relationships as described in this data model?
- Is there some way that we should be using Entity Types (like old_dog mentioned here)? We haven't figured out a good way to use them so far, so we've just done everything with Content Types, as described above.
- What is the best way to describe a parent's role in a family? We don't want to have fields for Husband, Wife, Partner, etc., since those roles are fluid. We'd rather have an individual identified in an ER field called Parents, and then have an attribute assigned to that relationship. We're thinking of using Relation module with taxonomy terms assigned to it. Any suggestions?
- It seems ER's have to be defined one-way. You can specify the relationship only in one content type (or entity type). To be able to show the ER in the related entity, you have to use a view. For example, in Event X, you can specify it's related to Individual Y, but if you view Individual Y, in order to see what events are related to it, you need a view of all events where Individual Y is specified in the Individual field. Is this the best/only way to be able to represent these relationships in both directions, or is there a better way?
- Any other feedback?
| Attachment | Size |
|---|---|
| GreatAlbum Data Model.pdf | 726.02 KB |
| GreatAlbum-Album-All.png | 245.46 KB |

Comments
Drupal 8 version
Has anyone created any Drupal 8 Taxonomy structures for Genealogy?