Уже третий день строю таблицы. Крыша едет. Кто-то подскажет?
Ага, это ты так отпуск проводишь ?
phis писал(а): Мне видится это так:
Сущности:
1) "Object" - какой-либо объект: объектив, камера, аксессуар и т.п.;
2) "Category" - категория, например: "Фокусировка";
3) "Type" - тип, например (применительно к п.2), "Авто" или "Ручная".
Таблица Catalogue - связь между объектами (например, камерой) и их типами (например, "электронный затвор"). Тип связи "многие-ко-многим", т.е. один объект может обладать набором типов, либо один тип может быть у многих объектов.
Поле "Name" у таблиц - наименования. Например, "AF Micro-Nikkor 200mm f / 4D IF-ED" для Object.
"*_id" - идентификаторы записей.
Зачем такая сложная структура ? Любая база SQL позволяет все это свести в три таблицы.
Таблица "Объективы", где каждое классифицируемое свойство объектива хранится в виде перечислимого значения соответствующей колонки (например, тип объектива - "Широкоугольник" или "Нормальный" или "Телевик"). Если объектив может при этом обладать несколькими значениями одного свойства, то для этого есть тип данных "SET".
Аналогично - таблица "Камеры"
И, наконец, таблица совместимости, представляющая собой реляционную таблицу "Камеры - объективы", где обязательно помимо колонок-ссылок (индексов) таблиц "Камеры" и "Объективы" должны быть колонки, в которых отмечается поддержка тех или иных свойств (например, поддержка экспозамера или его отсутствие в данной комбинации камера-объектив.
В дальнейшем можно достроить таблицы различных аксессуаров (вспышки, синхрокабели и т.д.) и соответствующие таблицы реляций между аксессуарами и камерами.
Не знаю, какой движок выбрал Филипп, но исходя их общих соображений и опыта работы с различными видами SQL БД считаю данный подход наиболее оптимальным. Тем более, что при необходимости в таблицы "Камеры", "Объективы" и т.д. можно вводить новые колонки свойств, вводя дополнительное категорирование и не нарушая при этом старое.
<!--coloro:#006600--><span style="color:#006600"><!--/coloro--><i><b>Бывает все на свете хорошо - в чем дело, сразу не поймешь ! !</b></i><!--colorc--></span><!--/colorc-->