Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Diseño de BD. Herencia

Estas en el tema de Diseño de BD. Herencia en el foro de Bases de Datos General en Foros del Web. Imaginad que estéis desarrollando una aplicación en la que distintas entidades pueden mandar mensajes públicos e interactuar con los mensajes de otras entidades. Esas entidades ...
  #1 (permalink)  
Antiguo 24/07/2016, 14:40
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 12 años, 5 meses
Puntos: 1
Diseño de BD. Herencia

Imaginad que estéis desarrollando una aplicación en la que distintas entidades pueden mandar mensajes públicos e interactuar con los mensajes de otras entidades. Esas entidades pueden ser de varios tipos: usuarios simplemente, una administración pública, un centro de enseñanza, etc.

Para diseñar la BD se me ocurren dos opciones que creo que funcionarían pero no sé cuál es mejor o si hay alguna mejor aún que no se me haya ocurrido.

Opción 1: Tener una tabla por cada entidad. Para almacenar los mensajes que las entidades publican tendría que tener en la tabla donde almaceno los mensajes al menos dos campos para identificar a la entidad que lo publicó, su id y su tipo.

Opción 2: Crear una sola tabla (tbl_entidades, por ejemplo) de la que heredan el resto de entidades posibles. De esta forma, en la tabla donde se almacenan los mensajes sólo haría falta una clave foránea que apuntara a la id de la entidad que lo publicó. Esta opción me parece mejor que la anterior, pero el problema es que en la tabla de entidades no encuentro apenas atributos que sean comunes a todas las entidades. De hecho solo encuentro el slug, porque ni el nombre creo que valiese la pena meterlo en esa tabla, aunque tanto usuarios como otras entidades tienen uno.

¿Cuál os parece mejor? ¿Hay alguna alternativa mejor que no se me haya ocurrido?

Si os parece mejor la opción 2, ¿hace falta que las tablas que heredan de la tabla de entidades tengan su propio id o con definir como clave primaria el id que apunta a la tabla entidades es suficiente?

Gracias
  #2 (permalink)  
Antiguo 24/07/2016, 15:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Diseño de BD. Herencia

Estas pensando como desarrollador, y la logica de desarrollo normalmente no aplica para bases de datos, a que te refieres con entidades? o para ti que es una entidad?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/07/2016, 15:38
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Diseño de BD. Herencia

Sí, jejeje, soy desarrollador, no diseñador, de ahí mis problemas con esto

Una entidad es cualquier cosa (cualquier "ente") que en la aplicación puede mandar mensajes. Un ejemplo parecido sería twitter o facebook, donde quien publica es un usuario, pero puede estar representando a una empresa, a una administración pública, a sí mismo... La diferencia es que en esta aplicación los atributos de un usuario no tienen nada que ver con los de una empresa, y los de ésta tampoco tiene por qué ser iguales a los de una administración pública, así que no puedo juntarlos a todos en una sola tabla.
  #4 (permalink)  
Antiguo 25/07/2016, 08:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Diseño de BD. Herencia

Entonces en ese caso a ti no te interesa que representa, puedes tener una tabla usuarios donde tengas las diferentes "entidades", que representa cada usuario es independiente de la base de datos eso es la logica de negocios, creo que deberias de explicar que es lo que hace tu aplicacion pero en terminos normales no de POO
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/07/2016, 09:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Diseño de BD. Herencia

Cita:
Iniciado por DandyCC Ver Mensaje
Sí, jejeje, soy desarrollador, no diseñador, de ahí mis problemas con esto

Una entidad es cualquier cosa (cualquier "ente") que en la aplicación puede mandar mensajes. Un ejemplo parecido sería twitter o facebook, donde quien publica es un usuario, pero puede estar representando a una empresa, a una administración pública, a sí mismo... La diferencia es que en esta aplicación los atributos de un usuario no tienen nada que ver con los de una empresa, y los de ésta tampoco tiene por qué ser iguales a los de una administración pública, así que no puedo juntarlos a todos en una sola tabla.
Como ya te ha dicho Libras, lógica de programación no es lógica de BBDD. SOn universos que se comunican pero no son portables de uno a otro.

En primer lugar, lo los mensajes que mande una "entidad" en tu contexto son irrelevantes para la BBDD, al menos en el sentido de "mensajes". La base NO maneja mensajes, en todo caso estos representan una Entidad del modelo E-R denominada "Mensaje", asociada con otra entidad "Usuario", la cual a su vez puede ser una jerarquía padre-hijo donde haya dos entidades débiles "Empresa" e "Individuo" que heredan su PK de Usuario.
A su vez, a nivel implementación todo eso podría desaparecer y quedar sólo dos tablas Usuario y UsuarioEmpresa, además de otra "Categoría", por ejemplo. Son decisiones de diseño en arquitectura de datos y no de diseño de interfases

No confundir.

Como sea, necesitarás profundizar un poco el tema del modelo entidad-relacion para poder visualizar las diferencias entre tus conceptos y los que aplican en BBDD, a fin de poder "traducir" tu definición funcional a estructuras de datos administrables. Todavía estás lejos de eso.

Para comenzar, sería práctico que nos dieras un listado de las reglas de negocio que se cumplen, a find epoder ayudarte a visualziar cual es la definición de relaciones y entidades, asi como la estructura física de datos que necesitarás.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/08/2016, 13:39
 
Fecha de Ingreso: agosto-2015
Ubicación: La Habana
Mensajes: 72
Antigüedad: 9 años, 3 meses
Puntos: 4
Respuesta: Diseño de BD. Herencia

Estoy muy de acuerdo con lo que han planteado, solo puntualizar que no entiendo que quizo decir gnzsoloyo al expresar:
Cita:
Cita:
SOn universos que se comunican pero no son portables de uno a otro.
Segun tengo entendido es posible ir de un Modelo Entidad Relacion (Representa entidades y sus relaciones) a un Modelo Relacional (Representa las tablas y sus relaciones) y viceversa.

Etiquetas: diseño+base+de+datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:20.