Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как лучше сделать N:M relationship между очень большой таблицей и очень маленькой? / 2 сообщений из 2, страница 1 из 1
18.03.2014, 12:18
    #38589217
Strangecat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше сделать N:M relationship между очень большой таблицей и очень маленькой?
Есть таблица HUGE_TABLE. Пара миллионов записей, новые записи добавляются ежечасно сотнями.
Есть таблица tiny_table. Записей 20. Если добавится одна запись раз в полгода, то уже хорошо.

Каждой huge_table соответствует 0 или более записей из tiny_table (обычно 3-4).

Мне зело не хочется для каждой записи из huge_table делать несолько записей в какой-нибудь junction table.
(Место на винчестере жалко и использоваться связь будет редко).

Как такое дело лучше организовать? Я пока сделал так: вместо обычной junction table (которая связывала бы каждую строку huge table id и нужные строки в tiny table id) сделал табличку tiny_table_collection с двумя полями: collection_id, tiny_table_row_id. И если я хочу
сопоставить записи к huge_table записи TT1 и TT2 из tiny_table, то я ищу/создаю такой collection_id (назовем его CID), для которого есть записи (CID, TT1), (CID, TT2) в tiny_table_collection и других записей с таким CID нету.

Решение вроде работает, но может вариант получше есть?
...
Рейтинг: 0 / 0
18.03.2014, 20:31
    #38589949
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше сделать N:M relationship между очень большой таблицей и очень маленькой?
Вообще-то это вопрос для форума: http://www.sql.ru/forum/db-design
Но в принципе, если рассматривать tiny_table как список возможных флагов и этот список не выйдет за 64 штуки, то можно воспользоваться методом издревле применяющимся в С - битовые флаги.
И нет, в SQL нету удобных методов для работы с битами.

А описанный тобой метод может быть работоспособным до тех пор, пока мало этих самых "коллекций". Но теоретически их у тебя может быть до 2^count(tiny_table). То есть пока в tiny_table у тебя 20 записей, размер таблицы tiny_table_collection будет до 2^20, а это уже больше миллиона. Сколько, говоришь, у тебя в HUGE_TABLE записей?
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как лучше сделать N:M relationship между очень большой таблицей и очень маленькой? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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