【发布时间】:2013-07-01 08:57:22
【问题描述】:
我可以想到很多方法来解决这个问题,但我想知道这里的最佳做法是什么:
我有三张桌子。产品、价目表和价格。
一个产品可以属于多个价目表。
一个价目表可以属于许多产品。
这是一个多对多的关系,据我所知需要一个连接表 (pricelist_products)。哪个效果很好。
现在,价目表中的一种产品可以有多个价格。产品只有在价格表中才会被赋予价格。
我在这里想到的是使用联结表 'pricelist_products' 中的 ID 作为价格表中的外键,但这感觉真的...... hacky?
鱼腥味的例子:
产品 1 - 钓鱼竿。
价目表 A - 渔夫。
价格表 B - 钓鱼店。
价目表 A,产品 1,价格 1: (每月还款选项1(无押金))
价目表 A,产品 1,价格 2: (每月还款方式二(有押金))
价目表 A,产品 1,价格 3: (按季度还款)
价目表 B,产品 1,价格 1: (按季度还款)
【问题讨论】:
-
你为什么觉得它很hacky?这是正确的模型。
-
如果你的 id 字段不全称为 id,编码时会容易得多。将它们命名为 product_id、price_id、pricelist_id、pricelist_product_id。它使直观地验证您的 SQL 变得更加容易。
-
命名字段只是一个约定的编码约定和/或个人偏好的问题。 MySQL 具有非常方便的 AS 别名技术。我个人的偏好是不要对字段使用长而复杂的名称,即我会将我的字段命名为 Mason8r
-
我不会说价格是价格表的正确词。我的意思是价格和数值。也许,“支付计划”
标签: mysql sql database database-design theory