Forums / National / Russian / редактор полей для страниц

Trustmaster
#1782 2008-12-19 00:43
По-научному поля вроде extra1-9 называются повторяющимися группами и нормализуются следующим образом. Допустим, у нас есть отношение (таблица) example, у которой есть обязательные поля id и name, а также может присутствовать некоторое количество дополнительных полей. В таком случае формируется 3 отношения: 1-е для исходной сущности, 2-е для перечня повторяющихся групп, 3-е для хранения значений повторяющихся групп:
CREATE TABLE example (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY(id)
);

CREATE TABLE extras (
  id INT NOT NULL AUTO_INCREMENT,
  parent_table VARCHAR(100) NOT NULL,
  name VARCHAR(100) NOT NULL,
  PRIMARY KEY(id),
  KEY(parent_table)
);

CREATE TABLE extra_values (
  extra INT NOT NULL REFERENCES extras(id),
  value VARCHAR(255) NOT NULL,
  KEY(extra)
);
Проблема в том, что для каждого типа поля придется создавать при таком подходе отдельную таблицу. Да вообще Нормализация - это хорошо с точки зрения проектирования и расширяемости, но в CMS ей редко следуют строго, чтобы сократить количество коррелированных запросов за счет введения избыточности данных.
May the Source be with you!