Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2012, 19:59   #1
Russel32
 
Регистрация: 21.01.2012
Сообщений: 7
Вопрос Как удобнее всего составить БД ?

Мне нужно создать реляционную базу данных в которой будет информация о созвездиях . Мне нужно осуществить следующий поиск: найти созвездие по заданному набору соседей.Как составить таблицы чтобы удобнее всего было осуществлять данный поиск ?
Russel32 вне форума Ответить с цитированием
Старый 21.01.2012, 20:21   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

В простом варианте это 2 таблицы.
1 таблица созвездий
id (идентификатор) note (описание)
2 таблица соседей
id_constellation (идентификатор созвездия внешний ключ id из первой таблицы) id_neighbor (идентификатор соседнего созвездия внешний ключ id из первой таблицы) note (описание положения относительно созвездия)

Можно подумать, и возможно усложнить немного описание соседей, но исключить двойное описание
vovk вне форума Ответить с цитированием
Старый 21.01.2012, 20:53   #3
Russel32
 
Регистрация: 21.01.2012
Сообщений: 7
Вопрос

А каким образом из второй таблицы можно получить созвездие, которое является соседом для всех созвездий из заданной группы ?
(Например заданы созвездия A,B,C и надо найти их общих соседей ). Как составить SQL запрос ?
Russel32 вне форума Ответить с цитированием
Старый 22.01.2012, 12:31   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

ладно расширим табличку созвездий, добавим в неё имена
допустим у нас будет так
1 таблица созвездий
CONSTELLATION
ID идентификатор не пустое, уникальный значения
NAME название созвездия, текстовое, уникальное
NOTE описание, текстовое
2 таблица соседей
neighbor
id_constellation (идентификатор созвездия внешний ключ id из первой таблицы)
id_neighbor (идентификатор соседнего созвездия внешний ключ id из первой таблицы)
note (описание положения относительно созвездия)

запрос может выглядеть примерно так

Код:
select CONSTELLATION.NAME, CONSTELLATION.NOTE
from
CONSTELLATION
where CONSTELLATION.ID in
(Select NEIGHBOR.ID_NEIGHBOR
from
CONSTELLATION
LEFT JOIN
NEIGHBOR on CONSTELLATION.ID = NEIGHBOR.ID_CONSTELLATION
where CONSTELLATION.NAME in ('a','b','c')
group by 1
having COUNT(NEIGHBOR.ID_NEIGHBOR)=3)

Последний раз редактировалось vovk; 22.01.2012 в 12:33.
vovk вне форума Ответить с цитированием
Старый 24.01.2012, 00:13   #5
Russel32
 
Регистрация: 21.01.2012
Сообщений: 7
Радость

Все понятно, спасибо за помощь !
Russel32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как лучше всего реализовать игру пятнашки? Sauber C++ Builder 2 18.11.2011 22:52
Как удобнее всего организовать в SQL поиск по полю где много лишних символов? Bendebej SQL, базы данных 0 30.03.2010 10:14
Дайте наводку! =) алгоритм на любом языке (как удобнее вам) volandKH Помощь студентам 2 23.07.2008 09:34
Как удобнее взять деньги у "буржуя"? mutabor Свободное общение 2 02.02.2008 14:18