![]() |
Вопросы по оптимизации базы данных.
---offtop---
может прикрепить? ---offtop--- Как наиболее лучшим способом оптимизировать БД имея следующие условия: Есть пользователи (users) и различная информация (data) - файлы и данные, разного типа. Информацию с пользователями связывают несколько категорий. Первая категория - музыкальный жанр (genre). Параметры этой категории не статичны, то есть они имеют свойсто добавляться, например: Рок, Блюз, Джаз, Рэп, Хип-хоп, Поп, Транс и т.п. При регистрации - пользователь может указывать какие жанры он хотел бы видеть (в будущем изменять). А так же, при добавлении очередной информации в БД - нужно указывать к каким жанрам эта информация относиться. Аналогично с поиском - человек может настроить фильтр по жанрам в критериях для поиска. Информация может относиться к нескольким жанрам. К примеру добавлена песня, которая захватывает жанры: Рэп, Рок, Джаз. У пользователя в профиле, предпочтения для отображения песен: Метал, Рок. Совпадает "Рок" - файл должен отображаться ему. Проблема в том, что параметров в категории (как и самих категорий) может быть очень много. Пользователи добавляя информацию или регистрируясь - могут отмечать связь со многим количеством параметров. Как вариант, думал ограничить варианты выбора до 5-10 вариантов + добавить параметр "выбрать всё". Получиться идеально с точки зрения оптимизации. Создав отдельные таблицы для "жанров" где всего два поля "id" и "title". И создать таблицу user_preferred_genres, со столбцами "вариант1", "вариант2", "вариант3", "вариант4", "вариант5", "select_all". И подобно таблице user_preferred_genres, создать аналогичную таблицу для добавляемых данных - data_genres. Посоветуйте, пожалуйста. :rolleyes: |
Код:
Таблица users:user_like_genres будет иметь составной первичный ключ подробнее посмотри в интернете - думаю нет смысла расписывать UPD: Забей на гугл. Вот это заботай =) http://www.intuit.ru/department/database/rdbdev/6/ UPD2: Сам когда-то задавался подобным вопросом. Нашел тему: https://forum.antichat.ru/showthread.php?p=1180406 |
| Время: 22:42 |