Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la meilleure façon de stocker les valeurs des cases à cocher dans la base de données MySQL ?

Vous avez une relation plusieurs-à-plusieurs entre les propriétés et les commodités. Pour modéliser cela, vous avez besoin d'un tableau séparé, et non d'un nombre variable de colonnes.

Il y a une table qui stocke vos propriétés.

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

Il y a une table qui stocke toutes les commodités possibles.

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

Pour chaque équipement d'une propriété, insérez une ligne dans le tableau reliant ces deux :

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

Lorsque vous souhaitez connaître les équipements d'une propriété spécifique, il vous suffit de SELECT toutes les lignes de cette table pour la clé de cette propriété. Lorsque vous souhaitez imprimer les cases à cocher pour toutes les commodités, SELECT depuis les amenities table et faites un LEFT OUTER JOIN aux property_amenities table. Ces lignes avec des valeurs nulles de property_amenities tableau sont les cases qui ne sont pas cochées.

Lecture connexe . Vous devriez vous procurer un livre sur les bases de données relationnelles auprès de vos BORDERS locaux avant qu'ils ne cessent leurs activités :)