SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.01.2010 20:56:24

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Правильный проект БД. Как поступить?

Здравствуйте, уважаемые знатоки!smile Бд хранит информацию о керамической плитке. Одна коллекция плиток может быть задействована в нескольких дизайнах помещений. Один дизайн помещения может содержать несколько коллекций в себе. В одной таблице с первичным ключом id_plitka хранится название коллекции (плитки с разным id могут быть в одной коллекции), также хранится в одной ячейке название проектов, в которых участвует плитка,  в другой ячейке хранится адрес с картинкой плитки. Так вот, как сделать запрос, чтобы он выдавал проекты в которых участвует коллекция, плитка? Допостуим ищем проекты в которых участвует коллекция. Сортируем таблицу по коллекции. Будет несколько строк. В ячейке где храниться название проектов может хранится несколь имен проектов, причем в разных ячейках они могут повторяться. Как сделать выборку, чтобы имена проектов в которых участвует выбранная коллекция не повторялись? Как выбрать проект и показать плитку в котором он участвует? Я пока планирую создать две таблицы. В одной таблице параметры плитки и участиев проектах, в другой таблице имея проекта (первичный ключ), название плиток и коллекций, которые в нем задействованы. Сколько мне таблиц лучше создать? Как связать? Как правильно выбрать ключи? Наименований плитки будет около 11 000, проектов меньше. Ваши предложения. Заранее спасибо.

Неактивен

 

#2 24.01.2010 21:29:00

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

http://i46.tinypic.com/2crjype.png
Вот еще такая идея есть...

Отредактированно Mirage (24.01.2010 21:29:33)

Неактивен

 

#3 24.01.2010 21:43:02

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

Идея создать три бд. При запросе будут ссылаться друг на друга. Из одной ячейки, хранящей несколько значений, можно делать выбор одного значения. Например ищем проекты в которых участвует коллекция. Выбираем строку с названием коллекции смотрим проекты в которых она участвует, в третье таблице находим адреса картинок по названиям проектов в которых участвует коллекция. Другой запрос по проекту. Хотим узнать какие плитки участвуют впроекте и показать их. Смотрим третью таблицу выбираем  плитку, по второй таблице смотрим картинки с плитками участвующими в проетке. Как то так... Идеи?

Неактивен

 

#4 24.01.2010 23:05:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильный проект БД. Как поступить?

1. Где Вы были, когда я делал ремонт в ванной? wink
2. Количесто БД не имеет значения, а таблички надо делать разные, да.
3. Попробуйте не заниматься оптимизацией запросов до того, как Вы создали
БД. Сделайте несколько табличек, которые хранят данные «по смыслу».
Попробуйте написать к ним запросы. Если не получится — тогда уже имеет
смысл задавать вопрос на форуме smile

«По смыслу» — это:
1. У каждого варианта плитки есть только одна коллекция.
2. В проекты входят плитки, а не коллекции. А коллекцию можно найти по плитке,
т.к. п.1.

Собственно, всё. Три таблички.

Неактивен

 

#5 24.01.2010 23:47:17

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

Спасибо большое. То есть те три таблицы, которые я нарисовал. В первой инфа по плитке, во второй инфа по проектам, а в третьей что?

Неактивен

 

#6 25.01.2010 03:41:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильный проект БД. Как поступить?

Ну, я имел в виду не те, что Вы нарисовали smile
Что-нибудь типа

collection [ id, name, ... ]
tiles [ id, collection, name, colour, ... ]
projects [ id, name, ... ]
project_tiles [ project_id, tile_id ]

Неактивен

 

#7 25.01.2010 13:05:31

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

Спасибо еще раз. Буду пробовать.smile

Неактивен

 

#8 26.01.2010 19:08:20

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

Я бы еще добавил таблицу где будут id_collection, id_tiles. Правильно? Можно искать по коллекции, по проектам, по плитке, по принадлежности коллекций к проекту, плитки к проекту, плитки к коллекции можно искать по первой таблице где хранятся параметры плитки...

Неактивен

 

#9 26.01.2010 19:14:32

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильный проект БД. Как поступить?

Честно говоря, не понял, что Вы хотели сказать. В моем примере в collection и tiles
уже есть id.

Неактивен

 

#10 27.01.2010 00:19:11

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

Я вот как хотел:
tiles [id_tiles (primary key), id_project (хранит несколько коллекций), id_collection, parametr1, ...]
project [id_project (primary key), parametr_project, ...)
И таблица для связи [id_collection, id_project, id_tiles].
Такиом образом если ищем плитку, то используем первую таблицу, если ищем коллекцию и плитку, которая в ней тоже используем первую таблицу. Если хотим найти проекты в которых участвует плитка ищем по третьей таблице. И если хотим найти коллекции участвующие в проектах, то ищем по третьей таблице... При добавлении или удалении проектов, коллекций или таблиц вроде должно ввсё правильно работать... В принципе как вы и советовали сделал...

Неактивен

 

#11 27.01.2010 00:31:38

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильный проект БД. Как поступить?

Допустим, у меня есть такая строка в Вашей tiles:
[id_tiles = 1, id_project = 1, id_collection = 1]
и вот такая строка в Вашей таблице связей
[id_collection = 2, if_project = 1, id_tiles = 1]

Как Вы будете интерпретировать такие данные? Вид плитки, вроде,
одинаковый, а коллекции разные. Так не бывает. Вид плитки однозначно
определяет ее коллекцию. Проект никак не связан с коллекцией плитки.

Не пытайтесь искать. Чтобы искать, надо сначала сохранить информацию.
Попробуйте ее сохранить логично smile

Неактивен

 

#12 29.01.2010 16:21:32

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильный проект БД. Как поступить?

А это уже вопрос по пхп wink
Вопросы по пхп принято задавать на webew.ru. Обычно выводят
результат mysql_error(), тогда обычно становится понятно, что
происходит. Но опять же — обсуждать на webew.ru.

Неактивен

 

#13 29.01.2010 16:36:53

Mirage
Участник
Откуда: Ростов-на-Дону
Зарегистрирован: 24.01.2010
Сообщений: 10

Re: Правильный проект БД. Как поступить?

Спасибо. Там просто запятой не было. Теперь всё работает. smile))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson