У меня есть сайт, посвященный обзору продуктов, который я начал, когда впервые начал писать код, но теперь он работает хорошо и имеет много трафика.Я хочу, чтобы дизайн таблиц был лучше, поэтому было бы проще добавлять новые продукты или характеристики к этим продуктам.Он использует PHP / MySQL.Вот как теперь создаются мои таблицы, какие изменения вы бы предложили?
Обзор
- Это сайт обзора продуктов с 12 типами продуктов (например, бейсбольные биты), перчатки, бутсы и т. д.)
- Каждый тип продукта имеет характеристики, которые получают оценку 10 (например, долговечность, мощность, сцепление и т. д.), однако характеристики различаются (сцепление характерно для перчаток, а не для летучих мышей)
- Пользователи оценивают каждую характеристику, и я показываю усредненные оценки для каждого продукта и характеристики (эта летучая мышь была оценена сцепление = 8,9 / 10, долговечность = 8,2 / 10, 200 пользователей)
Текущий дизайн
- Таблица типов продуктов : у меня есть таблица для каждого типа продукта (летучие мыши, перчатки, бутсы) -> я знаюМне, вероятно, вместо этого нужна унифицированная таблица «products».
- В каждой из этих таблиц хранятся усредненные оценки для каждой характеристики, которая обновляется при появлении нового рейтинга (например, bats.power_average, bats.durability_average),так что мне не нужно тсоюзник в среднем 200 оценок на каждой странице загрузки.
- Таблица рейтинга пользователя : Оценка каждого пользователя продукта сохраняется в таблице, относящейся к этому продукту (например,bats_ratings, gloves_ratings)
- Каждая характеристика жестко запрограммирована в этой таблице: bats_ratings.power, bats_ratings.durability и т. д. Поэтому мне придется изменить эту таблицу, если я добавлю характеристику для этого типа продукта в будущем.
- Таблица перечисления типов продуктов : у меня есть таблица с названием "product_types", в которой перечислены мои 12 типов продуктов и некоторые подробности, включая product_type_id, чтобы страницы, на которых перечислены все типы, можно было легко переносить.
Это определенно больно каждый раз, когда я добавляю новый тип продукта, так как мне приходится составлять 2 новые таблицы, плюс на многих страницах может быть свой код для обработки каждого типа продукта по-разному.В идеале добавление нового типа продукта или новых характеристик к существующим типам продуктов не будет обременительным.
Плюс, я даже не могу сделать запрос всех продуктов вместе, потому что они находятся в 12 разных таблицах, поэтому мне нужноунифицированная таблица "продукты".
Какова лучшая структура для продуктов, рейтингов и характеристик?