Как создать эффективную базу данных?

Является ли нормальной практикой проектирования базы данных MySQL создавать таблицу promo с такой структурой: столбец entity, который может принимать значения game, post или user, и столбец entityId для хранения идентификатора соответствующей сущности (gameId, postId или userId), что не позволяет установить прямую связь со специфической таблицей для каждой сущности?
  • 14 июля 2024 г. 13:12
Ответы на вопрос 2
Создание эффективной базы данных требует учета нескольких ключевых аспектов:

1. Нормализация данных: разбивка данных на отдельные таблицы, чтобы избежать дублирования и обеспечить целостность данных.

2. Оптимизация запросов: создание индексов, чтобы ускорить выполнение запросов к базе данных.

3. Правильный выбор типов данных: выбор наиболее подходящих типов данных для каждого столбца, чтобы сэкономить место и обеспечить правильное хранение данных.

Что касается вашего вопроса о таблице promo в MySQL с столбцами entity и entityId, такой подход не является наилучшей практикой проектирования базы данных. Вместо этого рекомендуется создать отдельные таблицы для каждой сущности (game, post, user) и использовать связи между таблицами (например, внешние ключи) для установления связей между ними. Это упростит выполнение запросов и обеспечит более эффективное использование базы данных.
Делайте связи в обратную сторону - добавьте в таблицы user, и game внешние ключи на promo. EntityId в таком случае просто не нужен (ну, или его можно сделать первичным ключом в promo).
Похожие вопросы