yoLUkAsss / rentauto

Base para todos los TP de la materia
0 stars 0 forks source link

Joined sub-table en Categoria #16

Open aitrusgit opened 9 years ago

aitrusgit commented 9 years ago

Justamente la jerarquia de herencia de Categoria es un claro ejemplo de donde no conviene usar joined-subclass (una tabla por clase) como estrategia de persistencia de herencia.

En este tipo de modelo todas las clases hijas (Turismo, Familiar, Deportivo, TodoTerreno) no agregan nada estructuralmente hablando (solamente difieren en comportamiento). Ustedes al adaptar una estrategia de persistencia joined-subclass terminan con:

  1. Una tabla base con todos los atributos
  2. Muchas tablas hijas con solamente un id
mysql> describe categoria;
+---------------------------+-------------+------+-----+---------+----------------+
| Field                     | Type        | Null | Key | Default | Extra          |
+---------------------------+-------------+------+-----+---------+----------------+
| categoria_id              | int(11)     | NO   | PRI | NULL    | auto_increment |
| categoria_nombre          | varchar(30) | YES  |     | NULL    |                |
| empresa_categoriaAdmitida | int(11)     | YES  | MUL | NULL    |                |
+---------------------------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

mysql> describe categoria_familiar;
+--------------+---------+------+-----+---------+-------+
| Field        | Type    | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| categoria_id | int(11) | NO   | PRI | NULL    |       |
+--------------+---------+------+-----+---------+-------+
1 row in set (0.01 sec)

mysql> describe categoria_deportivo;
+--------------+---------+------+-----+---------+-------+
| Field        | Type    | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| categoria_id | int(11) | NO   | PRI | NULL    |       |
+--------------+---------+------+-----+---------+-------+
1 row in set (0.01 sec)

mysql> describe categoria_turismo;
+--------------+---------+------+-----+---------+-------+
| Field        | Type    | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| categoria_id | int(11) | NO   | PRI | NULL    |       |
+--------------+---------+------+-----+---------

Estos tipos de modelos son ideales para usar una estrategia basada en una sola tabla y discriminators. Por que?