Buenas tengo un inconveniente el cual le vengo dando vueltas y no logro encontrar la solución, espero que alguien pueda ayudarme.
Requiero realizar un pequeño modulo el cual no se realmente cuánto puede crecer en campos, con lo cual leyendo vi que se puede ocupar el el concepto de modelo EAV (Entidad, atributo, valor).
Demas está mencionar que acepto críticas constructivas, recomendaciones, consejos, todo es bienvenido y mas teniendo en cuenta que soy algo nuevo en este rubro.
Ideas
- No se si con doctrine se puede aplicar una condicion para que segun dado type realice tal o cual join
- No se si es mejor realizar el join desde el controlador.
- Desconozco el comportamiento de performance que puede provocar este este esquema, tener en cuenta que va a tener varios miles de datos en algun momento.
- El tema de transpolar o convertir de filas a columnas, lo resuelvo de la siguiente manera. (acepto recomendaciones) ver ejemplo
Mis entidades serian las siguientes.
1. Entity Fields
id | Atributo | type |
---|---|---|
1 | Nombre | string |
2 | Socio | integer |
3 | Nacimiento | DateTime |
n | n Atributo | types |
2. Entity Historico
id | idUnico | idFields | idValue |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 1 |
3 | 1 | 3 | 1 |
4 | 2 | 1 | 2 |
5 | 2 | 2 | 2 |
6 | 2 | 3 | 2 |
3. Entity Historico_String
id | idHistorico | Value |
---|---|---|
1 | 1 | Pedro |
2 | 4 | Sofia |
4. Entity Historico_Integer
id | idHistorico | Value |
---|---|---|
1 | 2 | 11111 |
2 | 5 | 22222 |
5. Entity Historico_Integer
id | idHistorico | Value |
---|---|---|
1 | 3 | 11/11/1980 |
2 | 6 | 01/01/1990 |
RESULTADO
y necesitaría obtener lo siguiente
IdUnico | Nombre | Socio | Nacimiento |
---|---|---|---|
1 | Pedro | 11111 | 11/11/1980 |
2 | Sofia | 22222 | 01/01/1990 |
Espero puedan ayudarme Desde ya muchas gracias. !!! Maximo
Respuestas
Hola @MaximoAximo,
No me queda muy claro que pretendes hacer exactamente, si vas a manejar muchos datos en tus tablas no se si has contemplado la posibilidad de usar una BD noSQL.
Me gustaría ayudarte si no has resuelto tu problema.
@miguelplazasr