The Developer Guide includes detailed instructions on declaring a new entity which begins with this:
If you want your extension to store data in the database, then you will need to create a new entity.
The steps include:
I must confess that I have stowed new data in a more lightweight way on several extensions - e.g. I've created an API Entity that handles the SQL itself, skipping the creation of XML, DAO and BAO.
I am sure there are good reasons for the detailed set of steps but it's not clear to me what benefits they bring?
In black-box thinking, an extension that needs to use a new table needs to be able to create the table, provide an Api for using it, delete the table on uninstall. Are there cases, e.g. a table for a very extension-specific use case, when it is sensible to avoid the overhead of all the extra boilerplate code (schema, DAO, BAO)?