Phrack
Профессор
- Регистрация
- 3 Ноя 2010
- Сообщения
- 264
- Реакции
- 38
- Автор темы
- #1
Необходимо спроектировать РБД. Конечно. для данного случаю подойдет скорее редиска, нежели мускул, однако, нужно сделать ну мускуле(или любой другой рбд)
Буду говорить на конкретном примере, иначе просто запарюсь абстрактно все объяснять.
Допустим есть объявления о продаже машин(книг, телефонов и тп), в которых есть обязательные поля (например, цена, марка, толщина) и "опции" (аля, ксеноновые фары, шнурок на шею и тд). Казалось бы, тут ничего сложного и это многие-ко-многим налицо. Но! так получилось, что некоторые опции - enumы (например антенна:нет;встроенная;внешняя). Как теперь здесь все сохранить?
Требование:
Нашел единственно расово-верный путь, но он труден и тернист.
Делать таблицу с обязательными полями, с опциями и связать их через таблицу с item_id, param_id, value. Но опять же, тут есть несколько существенных минусов:
Вобщем, есть идеи?
Буду говорить на конкретном примере, иначе просто запарюсь абстрактно все объяснять.
Допустим есть объявления о продаже машин(книг, телефонов и тп), в которых есть обязательные поля (например, цена, марка, толщина) и "опции" (аля, ксеноновые фары, шнурок на шею и тд). Казалось бы, тут ничего сложного и это многие-ко-многим налицо. Но! так получилось, что некоторые опции - enumы (например антенна:нет;встроенная;внешняя). Как теперь здесь все сохранить?
Требование:
- способность держать высокую нагрузку (то есть делать таблицу со 100 столбцами для 100 опций - не комильфо)
- возможность динамического добавления характеристик
Нашел единственно расово-верный путь, но он труден и тернист.
Делать таблицу с обязательными полями, с опциями и связать их через таблицу с item_id, param_id, value. Но опять же, тут есть несколько существенных минусов:
- если огромное количество bool и всего несколько enum - трата ресурсов
- нет ограничения целостности на уровне бд (то есть вместо нужного enum можно вставить что угодно)
Вобщем, есть идеи?