Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация внешнего ключа / 15 сообщений из 15, страница 1 из 1
13.06.2012, 08:09
    #37835782
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
Уважаемые коллеги!

Есть три таблица: Users, Guests и Responses.

Таблица Users имеет структуру:
UserID.

На одну запись из таблицы Users может приходиться много записей из таблицы Guests. Таблица Guests имеет структуру:
GuestID,
UserID.

На одну запись из таблицы Guests может приходиться много записей из таблицы Responses. Возможно два варианта структуры таблицы Responses:

- вариант 1:
GuestID,
UserID,
Response.

- вариант 2:
GuestID,
Response.

Как правильно составить внешний ключ в таблице Responses, то есть какой вариант выбрать, чтобы можно было выбрать все ответы, относящиеся к какой-то конкретной записи из таблицы Users?

(Преимущество первого варианта в том, что не нужно будет осуществлять JOIN, а второго - в том, что не нужно будет создавать большой внешний ключ.)
...
Рейтинг: 0 / 0
13.06.2012, 11:48
    #37836096
AnaceH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
...
Рейтинг: 0 / 0
13.06.2012, 12:24
    #37836154
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
AnaceH,

Если вы не разбираетесь, то не засоряйте форум.
...
Рейтинг: 0 / 0
13.06.2012, 13:11
    #37836228
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01AnaceH,

Если вы не разбираетесь, то не засоряйте форум.
Вы б эта... "преимущество не осуществлять джоин" - не хочете все в одной плоской таблице xls сделать ? А чо - ваапще никаких джоинов. Еще очень зашибись по быстродействию - каждому юзеру свою отдельную таблицу респонсов завести - небось летать будет.
...
Рейтинг: 0 / 0
13.06.2012, 13:11
    #37836229
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01, вообще-то AnaceH прав, ответ действительно там.
...
Рейтинг: 0 / 0
13.06.2012, 14:17
    #37836354
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
tanglir,

Ну и каков ответ?
...
Рейтинг: 0 / 0
13.06.2012, 14:57
    #37836430
AnaceH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01tanglir,

Ну и каков ответ?
Про нормализацию почитайте, разбирающийся Вы наш. Что толку что Вам дадут ответ на единичный вопрос? У Вас на лице непонимание серьезного
...
Рейтинг: 0 / 0
13.06.2012, 15:03
    #37836445
AnaceH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
аспекта реляционной модели данных. Без которого проектирование невозможно как таковое. И боязнь "лишних" джойнов только подстверждает это.
...
Рейтинг: 0 / 0
13.06.2012, 15:13
    #37836462
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
AnaceH,

Я нашел ответ. Лейте воду дальше...

Второй вариант приемлем, если ввести доп. таблицу GuestsOfUsers, имеющий структуру:
UserID,
GuestID.

При указанной мною структуре нужно использовать первый вариант.
...
Рейтинг: 0 / 0
13.06.2012, 16:38
    #37836620
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01Второй вариант приемлем, если ввести доп. таблицу GuestsOfUsers, имеющий структуру:
UserID,
GuestID.Но ведь у вас уже есть такая таблица
alch01Таблица Guests имеет структуру:
GuestID,
UserID.
...
Рейтинг: 0 / 0
13.06.2012, 16:57
    #37836664
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
tanglir,

Я имел ввиду вот такую структуру. Причем концептуально это уже другое, потому что здесь гость может существовать без пользователя.

Users:
UserID,
UserName

GuestsOfUsers:
GuestID,
UserID.

Guests:
UsersID,
GuestName.

Вот причина, по которой вариант 1 правильный: записи в таблице однозначно определяются ключом UserID и GuestID. Поэтому таким же должен быть внешний ключ. Иначе не получится связи один ко многим таблицы Guests и Responses.
...
Рейтинг: 0 / 0
13.06.2012, 21:31
    #37836958
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01Уважаемые коллеги!

Есть три таблица: Users, Guests и Responses.

Таблица Users имеет структуру:
UserID.

На одну запись из таблицы Users может приходиться много записей из таблицы Guests. Таблица Guests имеет структуру:
GuestID,
UserID.

На одну запись из таблицы Guests может приходиться много записей из таблицы Responses. Возможно два варианта структуры таблицы Responses:

- вариант 1:
GuestID,
UserID,
Response.

- вариант 2:
GuestID,
Response.

Как правильно составить внешний ключ в таблице Responses, то есть какой вариант выбрать, чтобы можно было выбрать все ответы, относящиеся к какой-то конкретной записи из таблицы Users?

(Преимущество первого варианта в том, что не нужно будет осуществлять JOIN, а второго - в том, что не нужно будет создавать большой внешний ключ.)
А Вы можете сформулировать задачу на концептуальном уровне? Тогда будет всем все понятно:)
...
Рейтинг: 0 / 0
14.06.2012, 09:12
    #37837315
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
Бредятина,

Пожалуйста!

Пользователь может создать множество гостей и событий. Каждый гость всегда приглашен на каждое событие. Каждый гость может ответить, придет он или нет, на каждое событие.
...
Рейтинг: 0 / 0
14.06.2012, 09:17
    #37837325
alch01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01,

То есть есть еще таблица Events, о которой я умолчал:
EventID,
UserID,
Name.
...
Рейтинг: 0 / 0
14.06.2012, 10:40
    #37837449
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация внешнего ключа
alch01, вот (только ключевые поля):

users:
userid

guests:
userid
guestid

events:
userid
eventid

responses:
guestid
eventid

Всё.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация внешнего ключа / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]