我有两个表。"产品"和"折扣"。 然后,我为多对多关系创建一个连接表"discount_product"。目前为止,一切都好。
现在,如果我想获得属于所有产品的折扣,我必须为我拥有的尽可能多的产品插入到连接表中。这意味着拥有 10000+ 个产品,我必须在连接表中插入 10000+ 行以获得一个折扣?这只是一个折扣!如果我有 1000 个怎么办?
这迫使我回到旧的(错误的(方式,当我在"折扣"表中只有一列"product_ids",上面有这样的"1|2|4|7|23|..."之类的内容。(或"*"表示"属于所有人"(,然后制作一小段PHP代码来检查折扣是否属于所有或某些产品。我知道这是错误的做法。那么有没有更好的方法来正确做到这一点呢?
结构:
**products**
id
description
price
**discounts**
id
procent
value
**discount_product**
product_id
discount_id
我建议尝试改变一些业务逻辑。
- 如果折扣不在
discount_product
中,则意味着它适用于所有产品。 - 如果折扣在
discount_product
,则意味着它仅适用于某种产品。 - 如果您需要确保折扣未应用于任何产品,请在折扣中添加字段is_active。
这只是我的想法。
我相信有时由于优化而对数据库进行非规范化是有用的,我会按照您对product_ids
字段的建议进行操作。