TDBM is an ORM. It maps a database model to PHP classes. PHP classes can extend other PHP classes. In a database, inheritance can be represented this way:
The base class has all the base class elements in it, and each class which derives from it has its own table, with a primary key which is also a foreign key to the base class table. The derived table's class contains only the different elements.
TDBM can detect this kind of data model automatically and generate beans inheriting from other beans.
We have a
person table containing people (with a
We have a
contact table. A contact is a person, as noted by the foreign key between the 2
id columns. Contacts have an
users table. A user is a contact, as noted by the foreign key between the 2
id columns. Users have a
Notice that the foreign key
id is also a primary key. This means that if I create a contact whose ID is 42,
then there must be a row in the
person table whose ID is 42. Any row in the
contact table most have a matching
row in the
person (a contact is a person), but the opposite is not true. A person can have no matching row in
contact (a person is not necessarily a contact). This models correctly inheritance.
TDBM can detect this automatically. It will look for any primary key that is also a foreign key and will assume an inheritance relationship between the two tables.
In the PHP classes, TDBM will generate an inheritance hierarchy between the beans:
So the generated code for the beans will look like this:
class UserBean extends UserBaseBean
class UserBaseBean extends ContactBean
class ContactBean extends ContactBaseBean
class ContactBaseBean extends PersonBean
class PersonBean extends PersonBaseBean
class PersonBaseBean extends AbstractTDBMObject
Let's now learn how to regenerate DAOs when your data model changes.
Found a typo? Something is wrong in this documentation? Just fork and edit it!