@darkfriend

Как лучше структурировать базу в MySQL?

Всем доброго времени суток!

В голове возник жёсткий холевар по поводу правильного структурирования БД под mysql.

Как лучше:

  • Больше таблиц, меньше строк
  • Меньше таблиц, больше строк


p.s. Если можно, то хотелось бы понять логику работы мускула с таблицами и строками.

Также стоит ли делать внешние ключи в mysql с удалением и обновлением? Или лучше отдельными запросами это делать в одну транзакцию? Не смог найти за/против.

Ещё хотелось бы знать кто плотно работал с триггерами и как вам они?

Заранее спасибо за помощь!
  • Вопрос задан
  • 2227 просмотров
Пригласить эксперта
Ответы на вопрос 2
Абстрактный вопрос.

Сначала для уточнения.

1. Вы имели именно строки ?
Т.е. создавать дневные/недельные/месячные таблицы вида stat_2014_11_07? Если да, то такие таблицы принесут Вам пользу при большом трафике, когда в эти таблицы будут сыпаться только инсерты, выборки из подобных таблиц делают крайне редко. В дальнейшем обычно данные из этих таблиц агрегируют и записывают в таблицы из которых уже производят выборку.

2. Если Вы имели ввиду к-во столбцов ? (нормализация/дэнормализация)
Тут тоже все зависит от задачи, и от расчетов, если таблица нормализирована то она как правильно тяжелая. Надо смотреть по запросам которые у Вас будут, если в 80% запросах у вас приличная часть полей не будет использоваться, тогда их лучше выносить в отдельные таблицы (дэнормализировать таблицу).

Опять же, нельзя сказать какой вариант будет лучше а какой будет хуже, все зависит от проекта, от расчетов какие запросы будут обращаться к таблице.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Есть такая штука как "нормальная форма" исходя из нее стоит проектировать базу. Внешние ключи это один из механизмов. позволяющий упростить контроль за целостностью данных.

Все дальнейшие оптимизации, типа вынос архивных записей (те что удалены в карзину например) в отдельную таблицу что бы уменьшить объем индексов и т.д. делаются исключительно при наличии проблем с производительностью. То есть делаем нагрузочные тесты - эксперементируем. Иначе вы просто создадите себе массу проблем на ровном месте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы