Tuesday, June 10, 2003

So I'm still thinking about this "ideal content management system" in my head and I think today, any reference from a content view to a piece of content should have two parts. One, it should refer to the piece of content it is looking at (duh) or it should refer back to the original content's identifier, two it should distinguish whether it is calling a specific piece of content or the most current piece of content.



Basically, you want to version your content. Imagine, if you will, a database table containing titles and stories (a simplification). Each time you edit and change a story, it is much smarter to write a new one to the database than to update the original. Why? Because if you update by overwriting the previous content, you don't have the ability to roll back to the last change. Plus, you aren't creating an archive as you go. In this database, each row of title and story has a unique identifier. However, if you dump a new title and story in each time you edit a story, you will want to trace the lineage of each title and story; you want the identifier of the previous generation of title and story and the original title and story's identifier. The purpose of storing the previous generation's identifier is so that you can trace directly back. The need for the original identifier is a little more subtle.



Some views of content should contain the most current content. Other views of content reflect the content of a specific time and should not update. Views of the content that does change would make a call for the specific content's identifier, the views of content that should reflect the most updated would call on the original identifier and select the latest record.



On second thought, this would not work as well as abstracting the content identifier call from the content table:















Tale of Two Contents:
UIDContent_IDOrig_Content_IDPrev_Content_ID
111NULL
2211
333NULL
4412


The first content is entered. It doesn't have a previous content reference, so it's Prev_Content_ID is NULL. Then that first content is edited. The edit's original content is item 1 and the previous content is 1. Then we add a new content unit. Its Content_ID is 3 (the UID of the row being 3 is coincidental), original content is 3 and since it is the first record it has a previous content ID of NULL. Then the second content is edited again and the edit is placed in 4, the original content is still 1 and it is an edit of 2.

No comments:

Post a Comment