MySQL: ¿cómo convertir a EAV?
database database-design (2)
Por el amor de Dios, ¡no uses EAV! ¡Si lo necesita, use una base de datos NoSQL!
Digamos que tengo la siguiente tabla:
TABLE: one
===============================
| id | first_name | last_name |
===============================
| 1 | John | Doe |
| 2 | Jane | Smith |
-------------------------------
Quiero convertirlo a un EAV:
TABLE: two
===================================
| id | fk_id | attribute | value |
===================================
| 1 | 1 | first_name | John |
| 2 | 1 | last_name | Doe |
| 3 | 2 | first_name | Jane |
| 4 | 2 | last_name | Smith |
-----------------------------------
Nota:
- Los valores two.fk_id provienen de one.id
- two.attribute values vino de one.first_name
- two.value values vino de one.last_name
Necesito crear la tabla dos de la tabla uno para poder ejecutar algunas pruebas.
Supongo que two.id es un entero que se autoincrementa, por lo que lo dejo en la tabla de destino para asignar esos valores.
select id as fk_id, ''first_name'' as attribute, first_name as value
from one
union all
select id as fk_id, ''last_name'', last_name
from one
order by fk_id, attribute