Разделянето на тези данни в отделни колони е много добро начало (разделените със запетая стойности са ерес). Въпреки това, „променлив брой свойства“ обикновено трябва да се моделира като едно към- много отношения .
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
е чужд ключ
към main_entity.id
.
Поздравления, на прав път сте, това се нарича нормализиране . На път сте да стигнете до Първата нормална форма.
Имайте предвид обаче, че тези свойства трябва да имат разумно сходен характер (т.е. всички телефонни номера или адреси и т.н.). Не попадайте в тъмната страна (известна още като Анти-шаблон на обект-атрибут-стойност ), и се изкушавайте да хвърлите всички свойства в една и съща таблица. Ако можете да идентифицирате няколко типа атрибути, съхранявайте всеки тип в отделна таблица.