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

Hvad er den bedste måde at gemme afkrydsningsfeltværdier i MySQL-databasen?

Du har et mange-til-mange forhold mellem ejendomme og faciliteter. For at modellere dette skal du bruge en separat tabel, ikke et variabelt antal kolonner.

Der er én tabel, som gemmer dine ejendomme.

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

Der er ét bord, som gemmer alle mulige faciliteter.

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

For hver bekvemmelighed en ejendom har, indsæt en række i tabellen, der relaterer disse to:

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

Når du vil vide, hvilke faciliteter en specifik ejendom har, skal du bare SELECT alle rækker fra denne tabel for egenskabens nøgle. Når du vil udskrive afkrydsningsfelter for alle faciliteter, SELECT fra amenities tabel og lav en LEFT OUTER JOIN til property_amenities bord. Disse rækker med nulværdier fra property_amenities tabel er de felter, der ikke er markeret.

Relateret læsning . Du bør hente en bog om relationelle databaser fra dine lokale BORDERS, før de går konkurs :)



  1. Sender flere værdier i en enkelt parameter

  2. Python SQLAlchemy - MySQL-serveren er forsvundet

  3. percentil med COUNT(DISTINCT) med korreleret WHERE fungerer kun med en visning (eller uden DISTINCT)

  4. SQL Server v.Next:STRING_AGG() ydeevne