Modelo de base de datos jerárquica
Estoy diseñando un sitio web de anuncios clasificados sobre mascotas que tendrá 3 categorías (principales) de anuncios:
A- Sale
B- Breeding
C- Jobs
El problema al que me enfrento es que las 3 categorías de anuncios tienen algunas cosas en común, pero también tienen algunas diferencias.
Por ejemplo, todas las categorías A, B y C tienen lo siguiente en común:
category_id
ad_id
user_id
location
Sin embargo, los anuncios de categoría B no se pueden clasificar como "Buscando / En Venta", mientras que B & C sí. Además, cada categoría tendrá sus propias subcategorías. Por ejemplo, la categoría A tendría una subcategoría de adopción y una subcategoría de venta y la categoría C tendría una subcategoría de Empleos y una subcategoría de Servicios.
También tendrán algunos atributos poco comunes como el salario en la categoría C solamente.
Comencé a trabajar en él como un modelo de entidad-atributo-valor, pero tengo varias preocupaciones:
¿Esto va a afectar el rendimiento? Porque los usuarios deberían poder buscar en función de algunos de los atributos únicos. ¿Entonces las consultas a través de una tabla enorme no afectarían el rendimiento?
Uno de mis atributos es "Animal" (exclusivo de A y B), inicialmente quería tener una tabla de animales y una tabla de razas (similar a cómo la ubicación está en una tabla propia para los modelos de DB clasificados). Pero no puedo imaginar cómo puedo hacer esto con el modelo de entidad-atributo.
Aquí está el diseño de la base de datos que he creado:http: //i.imgur.com/jyV6Cjc.pn
[Actualizar
Después de leer sobre la herencia de la tabla de clase, parecía que encajaba mejor que el modelo EAV, así que cambié mi EER a esto:http: //i.imgur.com/JWPjt23.pn
Job Ads y Sale Ads pueden clasificarse como "Buscando / Ofreciendo", pero no habría muchas diferencias en los atributos, probablemente solo sus nombres (Precio vs. Precio Preferido, por ejemplo). Entonces, ¿cree que sería necesario agregar otro nivel de herencia aquí, o sería una molestia?
Un anuncio de venta puede ser una mascota en venta, una mascota en adopción, solicitar una adopción, solicitar comprar una mascota. ¿Crees que debería dividirlos en dos tablas? Adopción y Venta? No habría una gran diferencia en los atributos, probablemente solo un atributo diferente.