Hi all –
I am building a production pipeline database for the nonprofit where I work. We currently track web publications, email, events, and social content in separate bases and that has made it difficult to visualize everything together and do cross-org and program-specific reporting. Our new base will unify all those content types into one pipeline for better reporting, more consistent data, and also tracking relationships between content types (ie, social post X is promoting web content Y). The different content types (Web, Email, Events, Social) have some shared fields, but each also has many fields which are unique to that type and our processes – tracking social content has different data than web content, for example.
With that context here’s the question: One table with all items regardless of type OR a table per item type and some kind of ‘unity’ table that brings things together for reporting and planning?
Option 1: One table to track all the content regardless of type.
- Clearly the canonical choice.
- An item with content type X will have many empty fields that are intended only for content type Y.
- Requires at least 75 fields, which I worry will be difficult to manage/maintain
- Makes it easier to make automation errors - one errant filter and you mess up tons of stuff.
Option 2: A pipeline table per content type (probably 4) and a “parent stubs” table. In other words, one All Content table with the fields that all content records have, with each record linking to another table with the content-type-specific fields. ie, for each row in ALL CONTENT where [Type]=Web, there’s a linked record in table WEB CONTENT with all the web-specific fields. Same for [Type]=Email, [Type]=Social, etc.
- Has the potential to create orphan items disconnected from the central table.
- More complicated for staff to use – “Why does everything have info in two places?”
- Easier to develop each new pipeline version one at a time.
- Functions that require support tables – journaling changes to a particular field, for example – end up being more complicated to implement because they either link to more tables or are implemented with multiple tables.
Option 3: Separate Tables per Content Type and a unified view created through automation. In other words, each current pipeline moves into the one DB and the common fields are synced into an All Content table.
- Fixes the orphan and data-in-two-places problems of Option 2
- But requires lots of automation work to make sure the All Content is synced up with the individual pipelines.
- Could sync each pipeline out to another base and then sync that back in, but then field data becomes just text rather than clickable links to related items, etc.
In conclusion… I’m definitely leaning towards option1, but wanted to make sure there wasn’t a good method I’m missing! Your suggestions are very welcome.
Thanks much,
Dave
**