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 :)