• Read about David Ziffer's recent approach to this problem here -

    http://www.sqlservercentral.com/articles/software+development/71275/

    Probably one of the more clever ways to do it, in my opinion. However, I wouldn't be surprised if this approach faced some scalability problems as the data grew, namely in the amount of writes that a single action could potentially do... but sounds like your alternative approach would be just as write-intensive.