I have experience with many CMS systems such as Prestashop, Codeigniter, Magento, WordPress etc.
For a CMS user, storing and associating data the way you want can be difficult sometimes. Even for developers, it may require to construct custom tables which makes development more complicated than it should be.
Here is where Drupal 7 comes in with its “content type” feature (previously called “node type”). It allows you to create any kind of content types you want and have all kinds of association in between them.
It is normal to customize a product in ecommerce CMS, but what if you want to bind those products to your actual retail stores? You may find it’s hard to customize a content that is not a product. Sometimes the best you can do is list all the attributes in body, which only does its informational purpose.
For instance, you can easily create a “car” with as many attributes as you want, but you also want to make this car only available in certain stores. Store may have its own attributes such as opening time, location, car capacity, promotion period and so on. In standard CMS, the most you can do to connect car and store is a simple url link just to provide some standard information. The “car” won’t get any information back from the “store”, neither the other way around. That would cause lots of time to update products and pages if you want to change either of them.
With Drupal 7 content type, stores can easily have any many attributes just like any products. You can associations in between your products and stores. If anything changes in either of them, both of them would “know”, because both of them are now a content type instead of one being a plain information page.
Each content type is just like a small custom table. As a developer you get to avoid all those troubles to create your own custom tables. For non-developers, it’s even better to have a user interface to do the customization you want.
Now you may enjoying creating contents of the content type you just created.