Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo migliore per memorizzare i valori delle caselle di controllo nel database MySQL?

Hai una relazione molti-a-molti tra proprietà e servizi. Per modellarlo, hai bisogno di una tabella separata, non di un numero variabile di colonne.

C'è una tabella che memorizza le tue proprietà.

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

C'è un tavolo che memorizza tutti i possibili servizi.

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

Per ogni comodità di una proprietà, inserisci una riga nella tabella che mette in relazione questi due:

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

Quando vuoi sapere quali servizi ha una struttura specifica, basta SELECT tutte le righe di questa tabella per la chiave di quella proprietà. Quando vuoi stampare le caselle di controllo per tutti i servizi, SELECT dai amenities tabella ed esegui un LEFT OUTER JOIN al property_amenities tavolo. Quelle righe con valori null da property_amenities tabella sono le caselle deselezionate.

Lettura correlata . Dovresti prendere un libro sui database relazionali dai tuoi BORDERS locali prima che falliscano :)