- ¿Cuáles son los principios básicos y las fuerzas motrices detrás del modelo de partido ?
En la medida en que lo he usado, es sobre todo acerca de la reutilización de código y flexibilidad. Lo hemos usado anteriormente en el modelo de invitado/usuario/administrador y ciertamente demuestra su valor cuando necesita mover un usuario de un grupo a otro. Extienda esto para que las organizaciones y las empresas estén representadas con usuarios debajo de ellas, y realmente está proporcionando una forma de abstracción que no es particularmente inherente a SQL.
- ¿Qué le prescribe hacer a su modelo de datos? (Mi bit de arriba es bastante alto nivel y muy posiblemente incorrecto de alguna manera. He estado en un proyecto que lo usó, pero yo estaba trabajando con un equipo diferente centrado en otros temas).
Es bastante correcto en su parte superior, aunque necesita más detalles. Puede imaginarse una situación en la que una entidad en la base de datos (llámala Parte) contrata a otra Parte, que a su vez puede subcontratar el trabajo. Una parte puede ser un Empleado, un Contratista o una Empresa, todas las subclases de la Parte. Desde mi punto de vista, tendrías una tabla Party y luego tablas más específicas para cada subclase, que luego podría ser subclasificada (Party -> Person -> Contractor).
- ¿Qué experiencia ha llevado a sentir al respecto? ¿Lo usó, y si es , lo haría de nuevo? ¿Cuáles fueron los pros y los contras?
Tiene sus ventajas si necesita flexibilidad para añadir nuevos tipos a su sistema y crear relaciones entre los tipos que usted no esperaba al principio y al arquitecto (usuarios móviles a un nuevo nivel, la contratación de empresas otras compañías, etc.). También le brinda la ventaja de ejecutar una única consulta y recuperar datos para múltiples tipos de partes (Compañías, Empleados, Contratistas). Por otro lado, agrega capas adicionales de abstracción para obtener los datos que realmente necesita y aumenta la carga (o al menos el número de uniones) en la base de datos cuando consulta un tipo específico. Si su abstracción va demasiado lejos, es probable que necesite ejecutar múltiples consultas para recuperar los datos, ya que la complejidad comenzaría a ser perjudicial para la legibilidad y la carga de la base de datos.
- ¿El modelo de partido limitar su elección de ORM? Por ejemplo, ¿ tiene que eliminar ciertos ORM porque que no permiten la suficiente cantidad de una "capa de abstracción" entre sus objetos de dominio y sus datos físicos modelo?
Esta es un área que estoy cierto que un poco débil, pero me he dado cuenta que el uso de vistas y la abstracción de espejo en la capa de aplicación no han hecho esto demasiado de un problema. El verdadero problema para mí siempre ha sido un "dónde está la parte de X de datos vivos" cuando quiero leer la fuente de datos directamente (no siempre es intuitivo para los nuevos desarrolladores en el sistema).
Fantástica respuesta. Gracias. Cuando dice "abstracción reflejada en la capa de la aplicación", ¿quiere decir que los objetos de su dominio también siguieron el patrón del modelo de la fiesta? –
Sí, lo que también significa que tiene que escribir esencialmente la lógica en 2 lugares, lo que causa problemas obvios de sincronización. Pero, el alcance del uso de mi ORM de terceros es muy limitado (aunque he usado herramientas ORM internas con bastante frecuencia) –