|
Timur ↓
|
 |
|
21 Июль, 2009, 09:33:31
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
Есть пользователи. У пользователей есть интересы, любимая музыка, фильмы, книги и прочая лабуда (в неограниченном количестве). Что-то типа:
вариант 1.
таблица пользователей (users), таблица меток (favorites) и таблица М:М (users_favorites)

В этом случае всё хорошо с выборкой — легко найти метки указанного пользователя или пользователей с общими метками. Проблема: в favorites по-идее должны быть все метки уникальны, а вставка может производится "большими порциями", т.е. по многу меток сразу.
вариант 2.

в отдельную таблицу выносится поле (varchar или даже text), куда через запятую заносятся метки. Выборка в этом случае производится по LIKE, но никаких проблем со вставкой/изменением/удалением.
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
21 Июль, 2009, 09:39:33 , спустя 6 минут 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
Ну мы делали поле text, где все метки
+ две таблицы для тегов этих: одна с уникальными именами и идами, вторая связная
|
|
|
|
|
Записан
|
|
|
|
|
Timur ↓
|
 |
|
21 Июль, 2009, 09:45:23 , спустя 5 минут 50 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
Ну мы делали поле text, где все метки
+ две таблицы для тегов этих: одна с уникальными именами и идами, вторая связная
не понял, это так это первый вариант или второй? Я просто не пойму, что бы были уникальные теги, при каждой такой вставки нужно
- проверять всю таблицу тегов на несколько десятков строк и выбирать ID уже существующих тегов,
- добавить в таблицу тегов те, которых там нет,
- добавить в таблицу связей, все эти связи.
Громоздко получается
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
21 Июль, 2009, 09:52:06 , спустя 6 минут 43 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
не понял, это так это первый вариант или второй? оба
- проверять всю таблицу тегов на несколько десятков строк и выбирать ID уже существующих тегов,
- добавить в таблицу тегов те, которых там нет,
- добавить в таблицу связей, все эти связи.
Громоздко получается
Не громоздко, ты будешь делать больше выборок чем добавлений, так что это оптимальное решение:
Таблица users:
* user_id // ид-юзера
* favorites // список меток через запятую
Таблица favotites:
* fav_id // ид-метки
* fav_name // имя метки
Таблица favorites_users:
* user_id // ид-юзера
* fav_id // ид-метки
При показе поста отображается только users.favorites
При выборке по тегам - используются таблицы favorites и favorites_users
|
|
|
|
|
Записан
|
|
|
|
|
Givi ↓
|
 |
|
21 Июль, 2009, 09:59:53 , спустя 7 минут 47 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 42
Сообщений: 2305 Сила слова: 1.82
|
как по мне, то первый вариант, за исключение того, что фавтайп указывать не в таблице связей, а в фаворитах. И тогда получится что в этой таблице могут быть два одинаковых имени метки, но принадлежащих разным типам. Ведь когда человек выбирает "маюсь хуйней" в деятельности, то ему пофиг на тех, кто любит китайский(?!) фильм "Маюсь Хуйней" :)
А относительно больших порций, то в любом случае их будет много :) Но запросы мелкие, и пользователь не будет свои метки целый день изменять/добавлять.
|
|
|
|
|
Записан
|
Все, что говорят другие - неправда! До тех пор, пока ты сам в это не поверишь. Если человек дурак, то... чур это не я!
|
|
|
|
Timur ↓
|
 |
|
21 Июль, 2009, 10:05:02 , спустя 5 минут 9 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
Ведь когда человек выбирает "маюсь хуйней" в деятельности, то ему пофиг на тех, кто любит китайский(?!) фильм "Маюсь Хуйней" ну и ладно :) Вообще это сознательный выбор, хуйня - она хоть в деятельности, хоть в китайских фильмах - хуйня.
Я вообще тоже склонялся к первому варианту, теперь окончательно убежден )
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Июль, 2009, 10:11:16 , спустя 6 минут 14 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
Timur, молорику uml юзаешь
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
Timur ↓
|
 |
|
21 Июль, 2009, 11:23:11 , спустя 1 час 11 минут 55 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
Timur, молорику uml юзаешь
0_o это ER-ки какбе... Или они тоже к UML-относятся?
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Июль, 2009, 11:33:29 , спустя 10 минут 18 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
Timur, если в тонкости не вникать то их можно отнести к UML, если вникать лезь в вики
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|