Форум → Разработка → Базы данных → Метки, теги
Метки, теги
-
Есть пользователи. У пользователей есть интересы, любимая музыка, фильмы, книги и прочая лабуда (в неограниченном количестве). Что-то типа:
вариант 1.
таблица пользователей (users), таблица меток (favorites) и таблица М:М (users_favorites)
В этом случае всё хорошо с выборкой — легко найти метки указанного пользователя или пользователей с общими метками. Проблема: в favorites по-идее должны быть все метки уникальны, а вставка может производится "большими порциями", т.е. по многу меток сразу.
вариант 2.
в отдельную таблицу выносится поле (varchar или даже text), куда через запятую заносятся метки. Выборка в этом случае производится по LIKE, но никаких проблем со вставкой/изменением/удалением. -
21 июля 2009 г. 21:39, спустя 6 минут 2 секунды
Ну мы делали поле text, где все метки
+ две таблицы для тегов этих: одна с уникальными именами и идами, вторая связнаяhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
21 июля 2009 г. 21:45, спустя 5 минут 50 секунд
не понял, это так это первый вариант или второй? Я просто не пойму, что бы были уникальные теги, при каждой такой вставки нужно
Ну мы делали поле text, где все метки
+ две таблицы для тегов этих: одна с уникальными именами и идами, вторая связная
- проверять всю таблицу тегов на несколько десятков строк и выбирать ID уже существующих тегов,
- добавить в таблицу тегов те, которых там нет,
- добавить в таблицу связей, все эти связи.
Громоздко получается -
21 июля 2009 г. 21:52, спустя 6 минут 43 секунды
не понял, это так это первый вариант или второй?
оба- проверять всю таблицу тегов на несколько десятков строк и выбирать ID уже существующих тегов,
- добавить в таблицу тегов те, которых там нет,
- добавить в таблицу связей, все эти связи.
Громоздко получается
Не громоздко, ты будешь делать больше выборок чем добавлений, так что это оптимальное решение:
Таблица users:
* user_id // ид-юзера
* favorites // список меток через запятую
Таблица favotites:
* fav_id // ид-метки
* fav_name // имя метки
Таблица favorites_users:
* user_id // ид-юзера
* fav_id // ид-метки
При показе поста отображается только users.favorites
При выборке по тегам - используются таблицы favorites и favorites_usershttps://smappi.org/ - платформа по созданию API на все случаи жизни -
21 июля 2009 г. 21:59, спустя 7 минут 47 секунд
как по мне, то первый вариант, за исключение того, что фавтайп указывать не в таблице связей, а в фаворитах. И тогда получится что в этой таблице могут быть два одинаковых имени метки, но принадлежащих разным типам. Ведь когда человек выбирает "маюсь хуйней" в деятельности, то ему пофиг на тех, кто любит китайский(?!) фильм "Маюсь Хуйней" :)
А относительно больших порций, то в любом случае их будет много :) Но запросы мелкие, и пользователь не будет свои метки целый день изменять/добавлять. -
21 июля 2009 г. 22:05, спустя 5 минут 9 секунд
Ведь когда человек выбирает "маюсь хуйней" в деятельности, то ему пофиг на тех, кто любит китайский(?!) фильм "Маюсь Хуйней"
ну и ладно :) Вообще это сознательный выбор, хуйня - она хоть в деятельности, хоть в китайских фильмах - хуйня.
Я вообще тоже склонялся к первому варианту, теперь окончательно убежден ) -
-
21 июля 2009 г. 23:23, спустя 1 час 11 минут 55 секунд
0_o это ER-ки какбе… Или они тоже к UML-относятся?
Timur, молорику uml юзаешь -
21 июля 2009 г. 23:33, спустя 10 минут 18 секунд
Timur, если в тонкости не вникать то их можно отнести к UML, если вникать лезь в вики
Пожалуйста, авторизуйтесь, чтобы написать комментарий!