Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, уважаемые знатоки! Бд хранит информацию о керамической плитке. Одна коллекция плиток может быть задействована в нескольких дизайнах помещений. Один дизайн помещения может содержать несколько коллекций в себе. В одной таблице с первичным ключом id_plitka хранится название коллекции (плитки с разным id могут быть в одной коллекции), также хранится в одной ячейке название проектов, в которых участвует плитка, в другой ячейке хранится адрес с картинкой плитки. Так вот, как сделать запрос, чтобы он выдавал проекты в которых участвует коллекция, плитка? Допостуим ищем проекты в которых участвует коллекция. Сортируем таблицу по коллекции. Будет несколько строк. В ячейке где храниться название проектов может хранится несколь имен проектов, причем в разных ячейках они могут повторяться. Как сделать выборку, чтобы имена проектов в которых участвует выбранная коллекция не повторялись? Как выбрать проект и показать плитку в котором он участвует? Я пока планирую создать две таблицы. В одной таблице параметры плитки и участиев проектах, в другой таблице имея проекта (первичный ключ), название плиток и коллекций, которые в нем задействованы. Сколько мне таблиц лучше создать? Как связать? Как правильно выбрать ключи? Наименований плитки будет около 11 000, проектов меньше. Ваши предложения. Заранее спасибо.
Неактивен
Вот еще такая идея есть...
Отредактированно Mirage (24.01.2010 21:29:33)
Неактивен
Идея создать три бд. При запросе будут ссылаться друг на друга. Из одной ячейки, хранящей несколько значений, можно делать выбор одного значения. Например ищем проекты в которых участвует коллекция. Выбираем строку с названием коллекции смотрим проекты в которых она участвует, в третье таблице находим адреса картинок по названиям проектов в которых участвует коллекция. Другой запрос по проекту. Хотим узнать какие плитки участвуют впроекте и показать их. Смотрим третью таблицу выбираем плитку, по второй таблице смотрим картинки с плитками участвующими в проетке. Как то так... Идеи?
Неактивен
1. Где Вы были, когда я делал ремонт в ванной?
2. Количесто БД не имеет значения, а таблички надо делать разные, да.
3. Попробуйте не заниматься оптимизацией запросов до того, как Вы создали
БД. Сделайте несколько табличек, которые хранят данные «по смыслу».
Попробуйте написать к ним запросы. Если не получится — тогда уже имеет
смысл задавать вопрос на форуме
«По смыслу» — это:
1. У каждого варианта плитки есть только одна коллекция.
2. В проекты входят плитки, а не коллекции. А коллекцию можно найти по плитке,
т.к. п.1.
Собственно, всё. Три таблички.
Неактивен
Спасибо большое. То есть те три таблицы, которые я нарисовал. В первой инфа по плитке, во второй инфа по проектам, а в третьей что?
Неактивен
Ну, я имел в виду не те, что Вы нарисовали
Что-нибудь типа
collection [ id, name, ... ]
tiles [ id, collection, name, colour, ... ]
projects [ id, name, ... ]
project_tiles [ project_id, tile_id ]
Неактивен
Спасибо еще раз. Буду пробовать.
Неактивен
Я бы еще добавил таблицу где будут id_collection, id_tiles. Правильно? Можно искать по коллекции, по проектам, по плитке, по принадлежности коллекций к проекту, плитки к проекту, плитки к коллекции можно искать по первой таблице где хранятся параметры плитки...
Неактивен
Честно говоря, не понял, что Вы хотели сказать. В моем примере в collection и tiles
уже есть id.
Неактивен
Я вот как хотел:
tiles [id_tiles (primary key), id_project (хранит несколько коллекций), id_collection, parametr1, ...]
project [id_project (primary key), parametr_project, ...)
И таблица для связи [id_collection, id_project, id_tiles].
Такиом образом если ищем плитку, то используем первую таблицу, если ищем коллекцию и плитку, которая в ней тоже используем первую таблицу. Если хотим найти проекты в которых участвует плитка ищем по третьей таблице. И если хотим найти коллекции участвующие в проектах, то ищем по третьей таблице... При добавлении или удалении проектов, коллекций или таблиц вроде должно ввсё правильно работать... В принципе как вы и советовали сделал...
Неактивен
Допустим, у меня есть такая строка в Вашей tiles:
[id_tiles = 1, id_project = 1, id_collection = 1]
и вот такая строка в Вашей таблице связей
[id_collection = 2, if_project = 1, id_tiles = 1]
Как Вы будете интерпретировать такие данные? Вид плитки, вроде,
одинаковый, а коллекции разные. Так не бывает. Вид плитки однозначно
определяет ее коллекцию. Проект никак не связан с коллекцией плитки.
Не пытайтесь искать. Чтобы искать, надо сначала сохранить информацию.
Попробуйте ее сохранить логично
Неактивен
А это уже вопрос по пхп
Вопросы по пхп принято задавать на webew.ru. Обычно выводят
результат mysql_error(), тогда обычно становится понятно, что
происходит. Но опять же — обсуждать на webew.ru.
Неактивен
Спасибо. Там просто запятой не было. Теперь всё работает. ))
Неактивен