Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Вопросы по оптимизации базы данных. |

14.04.2009, 19:54
|
|
Познавший АНТИЧАТ
Регистрация: 14.10.2004
Сообщений: 1,162
Провел на форуме: 5619724
Репутация:
2944
|
|
Вопросы по оптимизации базы данных.
---offtop---
может прикрепить?
---offtop---
Как наиболее лучшим способом оптимизировать БД имея следующие условия:
Есть пользователи (users) и различная информация (data) - файлы и данные, разного типа. Информацию с пользователями связывают несколько категорий. Первая категория - музыкальный жанр (genre). Параметры этой категории не статичны, то есть они имеют свойсто добавляться, например: Рок, Блюз, Джаз, Рэп, Хип-хоп, Поп, Транс и т.п.
При регистрации - пользователь может указывать какие жанры он хотел бы видеть (в будущем изменять). А так же, при добавлении очередной информации в БД - нужно указывать к каким жанрам эта информация относиться. Аналогично с поиском - человек может настроить фильтр по жанрам в критериях для поиска.
Информация может относиться к нескольким жанрам. К примеру добавлена песня, которая захватывает жанры: Рэп, Рок, Джаз.
У пользователя в профиле, предпочтения для отображения песен: Метал, Рок.
Совпадает "Рок" - файл должен отображаться ему.
Проблема в том, что параметров в категории (как и самих категорий) может быть очень много. Пользователи добавляя информацию или регистрируясь - могут отмечать связь со многим количеством параметров.
Как вариант, думал ограничить варианты выбора до 5-10 вариантов + добавить параметр "выбрать всё". Получиться идеально с точки зрения оптимизации. Создав отдельные таблицы для "жанров" где всего два поля "id" и "title". И создать таблицу user_preferred_genres, со столбцами "вариант1", "вариант2", "вариант3", "вариант4", "вариант5", "select_all".
И подобно таблице user_preferred_genres, создать аналогичную таблицу для добавляемых данных - data_genres.
Посоветуйте, пожалуйста. 
|
|
|

14.04.2009, 20:55
|
|
Reservists Of Antichat - Level 6
Регистрация: 10.04.2008
Сообщений: 299
Провел на форуме: 1199829
Репутация:
405
|
|
Код:
Таблица users:
id (первичный ключ, уникальный)
name
Таблица genres:
id (первичный ключ, уникальный)
name
Таблица user_like_genres:
user_id -> users.id (индекс, естественно, НЕуникальный)
genre_id -> genres.id (индекс, естественно, НЕуникальный)
Таблица data:
file
genre_id -> genres.id (индекс, естественно, НЕуникальный)
-> означает ссылки (БД ведь реляционная relations - связи) гугл: foreign key; cascade; отношение многие ко многим
user_like_genres будет иметь составной первичный ключ
подробнее посмотри в интернете - думаю нет смысла расписывать
UPD:
Забей на гугл. Вот это заботай =)
http://www.intuit.ru/department/database/rdbdev/6/
UPD2:
Сам когда-то задавался подобным вопросом. Нашел тему:
https://forum.antichat.ru/showthread.php?p=1180406
__________________
II venēficus, ī m.
(с лат.) волшебник, чародей
Последний раз редактировалось Neoveneficus; 14.04.2009 в 21:13..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|