title: How to design domain classes in Grails?
body: <p><em>Given these functional requirements:</em></p>
  
  <p><strong>User Management</strong></p>
  
  <ol>
  <li>Administrator</li>
  <li>Librarian</li>
  <li>Borrower </li>
  </ol>
  
  <p>*The users have the option of logging-in via OpenID.</p>
  
  <p><strong>Property Management</strong></p>
  
  <ol>
  <li>Book</li>
  <li>Memorandum</li>
  <li>Circular</li>
  <li>License</li>
  </ol>
  
  <p>Normally, I would implement these in Java as:</p>
  
  <pre><code>interface User {}
  class Librarian implements User {}
  class Administrator implements User {}
  class Borrower implements User {}
  
  class OpenID {} //all Users HAS AN OpenID attribute (NULL if non-openId login)
  
  interface Property{}
  class Book implements Property{}
  class Memorandum implements Property{}
  class Circular implements Property{}
  class License implements Property{}
  </code></pre>
  
  <p>But our project will use Groovy &amp; Grails, which I haven't experience using yet. My question is,
  how should the <strong>domain</strong> classes be designed based on the requirements above? I can't use an interface, and it seems inheritance is not a good practice. My idea is to use <strong>composition</strong>, though I'm quite bothered by the database tables that would be generated. What are the best practices in this situation?</p>