Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посоветуйте... избыточность полей или view? / 5 сообщений из 5, страница 1 из 1
28.04.2008, 17:27
    #35284158
Alexey Trizno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте... избыточность полей или view?
Посоветуйте, как лучше сделать.
Есть цепочка таблиц, Projects->Respondents->RespondentCalls->Answers
В каждой таблице есть ссылка наверх (FK), т.е. в Respondents есть ProjectID, в RespondentCalls есть RespondentID и в Answers есть RespondentCallID

Но, последне время участились активные выборки например из Answers, где в where надо проверять ProjectID, к которому строка относится. Сейчас это делается через два inner join, чтобы добыть ProjectID, но, как-то это на мой вгляд не оптимально.

Данные в таблицы добавляются очень активно, но после добавления ссылки уже никогда не меняются. Кол-во записей например в Answers увеличивается где-то на 1 млн в месяц.

Придумалось два варианта избавления от явных джойнов. Добавить во все тблички избыточные поля, типа в Answers добавить ProjectID и RespondentID, а в RespondentCalls добавить ProjectID, и заполнять эти поля при добавлении записи, либо триггером (imho триггером смысла мало).
Или сделать view, который будет добывать поля джойнами, и далее уже работать с этим view.

Что лучше выбрать? Или есть ещё варианты?
...
Рейтинг: 0 / 0
29.04.2008, 11:19
    #35285116
YuriyRusinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте... избыточность полей или view?
Первый вопрос: чем не нравятся join ? Если смотреть с точки зрения нормализации БД, т.е. чтобы изменение поля в одном месте не влекло изменений в другом, то избыточные поля нельзя добавлять ни в коем разе, а так либо создавать view, либо писать хранимые процедуры.
...
Рейтинг: 0 / 0
29.04.2008, 11:32
    #35285156
Alexey Trizno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте... избыточность полей или view?
Join'ы как раз нравятся. Но, немного смущает что при вставке записи я всегда знаю все ID, и могу их добавить в таблицу, чтобы при последующих выборках небыло лишней беготни по индексам, тем более после добавления записи не меняются (точнее ссылки, т.е. все ID-поля).

С другой стороны, судя по планам запросов - джойны не отнимают много времени, сейчас, когда в табличках всего пара млн. записей. Сохранится ли это когда записей будет 500 млн.? Вот в чем вопрос.

Пока сделал для удобства view, которые дополняют табличку Answers нужными ID используя join'ы, а все выборки идут уже из этого view.
...
Рейтинг: 0 / 0
29.04.2008, 13:35
    #35285732
YuriyRusinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте... избыточность полей или view?
При 5 * 10^7 записей как раз избыточность может вылиться в нешуточный гемор с операциями, так как легче забыть добавить значение, поэтому при относительно медленных операциях самое то прямо или косвенно (через view) пользовать join.
...
Рейтинг: 0 / 0
29.04.2008, 13:37
    #35285738
Alexey Trizno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте... избыточность полей или view?
ok, так и сделаю. спасибо за поддержку :)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посоветуйте... избыточность полей или view? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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