DEV Community

Edgar Rios Navarro
Edgar Rios Navarro

Posted on

MySQL usar tipo SET para validar

Cuando diseñamos un sistema y tenemos una lista restringida de opciones, el modelo ER nos mostrará una relación de 'muchos a muchos'.

Consideremos el caso de Usuario - Roles:

Image description

El diagrama nos indica que debemos crear tres tablas.


Como alternativa, en MySQL nos proporciona el tipo SET.

Image description

Dicho campo acepta ninguno, uno o más valores de la lista.

mysql> insert into user(email,name,password) 
values('a@greatsolutions.consulting','A','A');
Query OK, 1 row affected (0.04 sec)

mysql> insert into user(email,name,password,roles) 
values('b@greatsolutions.consulting','B','B','');
Query OK, 1 row affected (0.04 sec)

mysql> insert into user(email,name,password,roles) 
values('c@greatsolutions.consulting','C','C','editor,user');
Query OK, 1 row affected (0.04 sec)
Enter fullscreen mode Exit fullscreen mode

Por el contrario, nos da error cuando intentamos insertar un valor diferente.

mysql> insert into user(email,name,password,roles) 
values('d@greatsolutions.consulting','D','D','root');
ERROR 1265 (01000): Data truncated for column 'roles' at row 1
mysql>
Enter fullscreen mode Exit fullscreen mode

Documentación

https://dev.mysql.com/doc/refman/8.0/en/set.html

Top comments (0)