Me preguntaba si tiene un sitio web con una docena de tipos diferentes de listados (Tiendas, Restaurantes, Clubes, Hoteles, Eventos) que requieren campos diferentes, ¿hay algún beneficio de crear una tabla con columnas define como tal
Ejemplo Shop:tabla fija única con columnas múltiples versus tablas abstractas flexibles
shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours
O un enfoque más abstracto similar a esto:
object_id | name
---------------
1 | Messy Joe's
2 | Bate's Motel
type_id | name
---------------
1 | hotel
2 | restaurant
object_id | type_id
---------------
1 | 2
2 | 1
field_id | name | field_type
---------------
1 | address | text
2 | opening_hours | date
3 | speciality | text
type_id | field_id
---------------
1 | 1
1 | 2
2 | 1
2 | 3
object_id | field_id | value
1 | 1 | 1st street....
1 | 3 | English Cuisine
Por supuesto que puede haber más abstracto si el valor son predefinidos (Ejemplo: especialidades coul d tiene su propia lista)
Si tomo el enfoque abstracto, puede ser muy flexible, pero las consultas serán más complejas con muchas combinaciones. Pero no sé si esto afecta el rendimiento al ejecutar estas consultas 'más complejas'.
Me interesaría saber cuáles son las ventajas y desventajas de ambos métodos. Puedo imaginarme por mí mismo, pero no tengo la experiencia para confirmar esto.
Gracias. Puede que le interese ** esta [pregunta/respuesta] (http://stackoverflow.com/questions/4304217/database-schema-which-can-support-specialized-properties/4359193#4359193) ** también. – PerformanceDBA