Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> структура бд, необходимо придумать 
:(
    Опции темы
sunnmas
Дата 23.7.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Есть бд в ней 2 таблицы "сайты" и "категории"

в таблице категорий названия самих категорий уникально
в таблице сайтов адреса сайтов уникальны

каждому сайту соответствует набор категорий от 1 до всего списка из таблицы категорий


вопрос как организовать индексы в таблицах, чтобы можно было делать 
выборку всех сайтов с определенной категорией?

PS ни разу не работал со связанными таблицами
PM MAIL   Вверх
RedCliphAloe
Дата 23.7.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2009

Репутация: нет
Всего: 3



можно в таблицу сайтов добавить строковое поле и в нем хранить список значений категорий...
например...

категории
id      категория
1       порно
2       не порно
3       бесспорно

сайты
сайт        категория
q.ru         1-2-3
w.ru         2-3
e.ru          1

запрос
выбрать сайты, в категории которых присутствует 1
PM MAIL   Вверх
niteo
Дата 23.7.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.11.2006
Где: Брянск

Репутация: нет
Всего: 1



Можно и без индексов, если бд маленькая smile Делай SQL запрос грамотный...

Добавлено через 11 минут и 56 секунд
Может ты имеешь ввиду связи?

Это сообщение отредактировал(а) niteo - 23.7.2009, 16:03
--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй...
PM MAIL   Вверх
sunnmas
Дата 24.7.2009, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Цитата

Может ты имеешь ввиду связи?


ДаДа связи.

Я придумал тут кое-что. Это хороший способ или не очень?

3 таблицы:



 tb1                tb2                           tb3
id1    site      | ids       idc  |  id2     categor       
1     yand.ru   |  1          1  |   1     музыка
2     goog.com  |  1          2  |   2     фильмы
3     ramb.ru   |  1          3  |   3     xxx
                |  2          3  |
                |  2          1  |
                |  3          2  |

ids - индекс сайта
idc - индекс категории



и запрос. Хочу вывести все категории определенного сайта, например №2:

select idc from tb2 where ids=2

получаю список номеров категорий. Прохожусь по списку и составляю динамический финальный запрос

select categor from tb3 where id2=3 union
select categor from tb3 where id2=1

Или как-то можно запрос по другому составить, более эффективно при такой организации бд? Или может другой способ есть вообще?

Способ, предложенный RedCliphAloe мне не нравится
PM MAIL   Вверх
RedCliphAloe
Дата 24.7.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2009

Репутация: нет
Всего: 3



Код

select categor from tb3 where id2 in (select idc from tb2 where ids = 2);

PM MAIL   Вверх
sunnmas
Дата 24.7.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Гениально!!! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0831 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.