title: Database table design
body: <p>I design the tables as below for the system<br>
  which looks like a package delivering system.</p>
  
  <p>For example, after user received the package, postman should record in system,<br>
  and the state(history table) is "delivered",and operator is this postman,<br>
  the current state(state table) is of course "delivered"</p>
  
  <pre><code>history table:
  +---------------+--------------------------+
  |   Field       |        Desc              |
  +---------------+--------------------------+
  |    id         |    PRIMARY KEY           |
  +---------------+--------------------------+
  |    package_id |    package_tacking_id    |
  +---------------+--------------------------+
  |    state      |     package_state        |  
  +---------------+--------------------------+      
  |    operators  |    operators             |
  +---------------+--------------------------+
  |    create_time|    create_time           |
  +---------------+--------------------------+   
  
  state table:
  +---------------+--------------------------+
  |   Field       |        Desc              |
  +---------------+--------------------------+
  |    id         |    PRIMARY KEY           |
  +---------------+--------------------------+ 
  |   package_id  |    package_tacking_id    |
  +---------------+--------------------------+
  |    state      |    latest_package_state  |
  +---------------+--------------------------+  
  </code></pre>
  
  <p>Above is just the basic information to record, some other information(<br>
  like invoice, destination,...) should be recorded as well.<br>
  But there are different service types like s1 and s2, for s1 it is not needed<br>
  to record invoice but s1 need, and maybe s1 need some other information to record<br>
  (like the tel of end user).  </p>
  
  <p>After all, at delivering way stations there are additional information to record,<br>
  and for different service type the information type is different.  </p>
  
  <p>My questions:</p>
  
  <ol>
  <li>For different service type, shall I need to declare different tables(option A) or just<br>
  one big table which can record all information for all types(option B)?   </li>
  <li>If option A, since the basic information above is MUST, how<br>
  can prevent from declaring there duplicate fields  in different tables? </li>
  </ol>