title: Cassandra denormalization datamodel
body: <p>I read that in nosql (cassandra for instance) data is often stored denormalized. For instance see this <a href="https://stackoverflow.com/questions/12858282/structuring-cassandra-database">SO</a> answer or this <a href="http://maxgrinev.com/2010/07/12/do-you-really-need-sql-to-do-it-all-in-cassandra/" rel="nofollow noreferrer">website</a>.</p>
  
  <p>An example is if you have a column family of employees and departments and you want to execute a query: <code>select * from Emps where Birthdate = '25/04/1975'</code>
  Then you have to make a column family birthday_Emps and store the ID of each employee as a column. So then you can query the birthday_Emps family for the key '25/04/1975' and instantly get all the ID's of the employees born on that date. You can even denormalize the employee details into birthday_Emps as well so that you also instantly have the employee names.</p>
  
  <p>Is this really the way to do it?</p>
  
  <ol>
  <li><p>Whenever an employee is deleted or inserted then you will have to remove the employee from birthday_Emps too. And in another example someone even said that sometimes you have a situation where one delete in some table requires like 100's of deletes in other tables. Is this really common to do?</p></li>
  <li><p>Is it common to do joins in application code? Do you have software that allows you create pre-written applications to join together data from different queries?</p></li>
  <li><p>Are there best practices, patterns, etc for handling these data model questions?</p></li>
  </ol>