Есть много способов, которыми я могу думать о том, чтобы взломать это вместе, но я хочу знать, что лучшая практика здесь:Создание отношения между тремя таблицами
У меня есть три таблицы. Продукты, прейскуранты и цены.
Один товар может принадлежать многим прейскурантам.
Один прейскурант может принадлежать многим продуктам.
Это много-много отношений, и, насколько мне известно, требуется таблица переходов (pricelist_products). Это хорошо работает.
Теперь один продукт в прейскуранте может иметь несколько цен. Продукт только когда-либо получает цену, когда он входит в прейскурант.
О чем я думал, здесь используется идентификатор из таблицы переходов «pricelist_products» в качестве внешнего ключа в таблице цен, но это действительно ... хак?
подозрительный пример:
Продукт 1 - Удочка.
Прейскурант A - Рыбаки.
Прейскурант B - Fishingshop.
Прайс-лист A, продукт 1, цена 1: (Ежемесячные выплаты вариант 1 (без депозита))
Прайс-лист A, продукт 1, цена 2: (Ежемесячные выплаты вариант 2 (с депозитом))
Прайс-лист A, продукт 1, цена 3: (ЕЖЕКВАРТАЛЬНО погашений)
Прайс-лист Б, продукт 1, цена 1: (ЕЖЕКВАРТАЛЬНО погашений)
Почему вы думаете, что это хаки? Это правильная модель. –
Это намного проще при кодировании, если ваши поля id не все называются id. Назовите их product_id, price_id, pricelist_id, pricelist_product_id. Это упрощает визуальную проверку вашего SQL. –
Именование полей - это только вопрос согласованных конвенций и/или личных предпочтений. MySQL имеет очень удобную технологию псевдонимов с AS. Мое личное предпочтение - не использовать длинное сложное имя для полей, т. Е. Я бы назвал свои поля точно так же, как Mason8r –