Att dela upp dessa data i separata kolumner är en mycket bra början (koma-separerade värden är en kätteri). Ett "variabelt antal egenskaper" bör dock vanligtvis modelleras som en en-till- många relationer .
CREATE TABLE main_entity (
id INT PRIMARY KEY,
other_fields INT
);
CREATE TABLE entity_properties (
main_entity_id INT PRIMARY KEY,
property_value INT,
FOREIGN KEY (main_entity_id) REFERENCES main_entity(id)
);
entity_properties.main_entity_id
är en främmande nyckel
till main_entity.id
.
Grattis, du är på rätt väg, detta kallas normalisering . Du är på väg att nå Första normala formuläret.
Varsågod, dock bör dessa egenskaper ha en förnuftigt liknande karaktär (dvs. alla telefonnummer, eller adresser, etc.). Fall inte in på den mörka sidan (a.k.a. Entity-Attribute-Value anti-mönster ), och bli frestad att kasta alla egenskaper i samma tabell. Om du kan identifiera flera typer av attribut, lagra varje typ i en separat tabell.