Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/04/2016, 22:18
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Que clases crear?

No confundas las clases en la aplicación con las tablas de la base de datos. Son cosas completamente diferentes.
Aunque tanto el modelo E-R como la POO trabajan con el concepto de "entidades", la definición de las mismas no es igual. En POO es un objeto real del sistema analizado, que encapsula sus atributos y comportamientos que manejan esos atributos. Nada de eso existe en el modelo E-R.
En el modelo relacional de BBDD las entidades son tanto componentes del sistema como relaciones entre entidades, que dan lugar a entidades virtuales o relacionales. Las entidades, por su parte sufren desagregaciones que las descomponen en entidades de diferente orden, mantenimiento una consistencia de datos e integridad referencial. La meta de una BBDD es conservar la información en el menor numero de componentes posibles, evitando redundancias innecesarias y cumpliendo restricciones de las Reglas de Negocio, que se reflejan en las constraint que se definen. Asimismo, toda información persistente en una BBDD debe ser recuperable en forma completa de la misma forma en que se ingresó, o transformada de acuerdo a las necesidades.
Es regla fundamental que una BBDD debe ser lo suficientemente independiente de la aplicación como para que puedas cambiar completamente la aplicación sin que la BBDD requiera modificaciones, ni se entere que se reemplazo la fuente de datos.

Avanzando en el tema, un usuario, para los proceso que haces en programación, puede tener N clases diferentes, todas heredando de una clase padre "Persona", por ejemplo. Pero para la BBDD todas esas N clases pueden significar una única tabla con campos ENUM, o bien valores en algunos de sus campos que referencian a otras tablas, donde se agrupan los datos de esa relación.
Así, por ejemplo, los tres tipos que tienes de usuario podrían ser simplemente una FK que apunte a una tabla Categoría, pero en PHP ser tres clases diferentes, porque sus comportamientos son distintos... cosa que para la BBD es invisible. Como te dije, la BBDD no mira los comportamientos, sólo mira datos.

Nota también que una única entidad o clase en POO puede dar lugar a una o N tablas en la BBDD, ya que las BBDD tienen en una etapa de desarrollo, lo que se denomina "Normalización", que no existe en la POO

La regla es mas o menos simple: Todo lo que tenga que ver con procesos y comportamientos de una entidad es tema de programación. Todo lo que sea estructura, consistencia e integridad de datos, es tema de BBDD.

No mezcles las cosas o terminarás haciendo un sistema ineficiente con exceso de acoplamiento, lo que lleva a sistemas de difícil mantenimiento y evolución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/04/2016 a las 22:24