sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la mejor manera de almacenar valores de casilla de verificación en la base de datos MySQL?

Tiene una relación de muchos a muchos entre propiedades y servicios. Para modelar esto, necesita una tabla separada, no un número variable de columnas.

Hay una tabla que almacena sus propiedades.

INSERT INTO property (id, address, square_footage...) VALUES (111, '123 Main St', 1234...)

Hay una mesa que almacena todos los servicios posibles.

INSERT INTO amenities (id, type, description) VALUES (222, 'Unit Features', 'Air Conditioning');

Para cada servicio que tiene una propiedad, inserte una fila en la tabla que relacione estos dos:

INSERT INTO property_amenitities (property_id, amenity_id) VALUES (111, 222);

Cuando desee saber qué servicios tiene una propiedad específica, simplemente SELECT todas las filas de esta tabla para la clave de esa propiedad. Cuando desee imprimir casillas de verificación para todos los servicios, SELECT de las amenities table y haz un LEFT OUTER JOIN a las property_amenities mesa. Esas filas con valores nulos de property_amenities tabla son las casillas que no están marcadas.

Lecturas relacionadas . Debería obtener un libro sobre bases de datos relacionales de sus FRONTERAS locales antes de que cierren :)