mysql database database-design entity-attribute-value

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