Укажите критерии сортировки вручную для набора записей отношения «многие ко многим» - PullRequest
1 голос
/ 08 ноября 2011

Я разрабатываю отношения «многие ко многим» между двумя моделями: Cell и Isolator:

CREATE TABLE `isolator` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(127) NOT NULL,
  `surname` varchar(127) NOT NULL,
  PRIMARY KEY (`id`),
);

CREATE TABLE `cell` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(127) NOT NULL,
  `gen` varchar(127) NOT NULL,
  PRIMARY KEY (`id`),
);

CREATE TABLE `cell_isolators` (
  `cell_id` bigint(20) NOT NULL DEFAULT '0',
  `isolator_id` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`cell_id`,`isolator_id`),
  CONSTRAINT `cell_isolator_id` FOREIGN KEY (`isolator_id`) REFERENCES `isolator` (`id`),
  CONSTRAINT `isolator_cell_id` FOREIGN KEY (`cell_id`) REFERENCES `cell` (`id`) ON DELETE CASCADE
);

Клиент попросил меня указать порядок, в котором указан списокпоказаны изоляторы для ячейки, поскольку это важно для целей публикации.

Каков наилучший подход к моделированию этого?Я думал о добавлении третьего поля в отношение многие ко многим (например, sort_order), но я хотел бы знать, есть ли другие альтернативы.

Спасибо!

1 Ответ

1 голос
/ 10 ноября 2011

Единственный способ сделать это в общем случае - добавить столбец в "cell_isolators".

Тип данных в определенной степени зависит от приложения.Я видел, что это было сделано со столбцами в виде целых чисел, чисел с плавающей запятой или десятичных знаков и буквенно-цифровых символов (varchar (n)).

Однако его заполнение и обслуживание может быть проблематичным.Это не имеет ничего общего с дизайном базы данных;просто больно поддерживать порядок сортировки для нескольких строк, особенно если есть регулярные вставки в таблицу и изменения в порядке сортировки.К счастью, эта работа обычно ложится на пользовательский интерфейс, а не на dbms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...