How do I create a custom entity (component)?
If you are using CiviCRM within Drupal, you can create Drupal Custom Content Types for magazine, advert, etc. Your custom content type definition can include fields of data type "CiviCRM Contact" which can be required, optional, multi-valued, etc.