mysql - 如何根据检查值或(全部)存储数据ID

标签 mysql database database-design

假设我有一个电子商务,有 100 种产品。现在,我为顾客提供一张优惠券。优惠券可用于部分产品或全部产品。

所以,我现在的表格是这样的:

|      Voucher   |
------------------
| id             |
| voucher_number |
| created_at     |
| expired_date   |
| status         | (available, unavailable)

| Voucher_detail |
------------------
| id             |
| id_voucher     |
| product_id     |

所以,问题是,优惠券是否设置为适用于所有产品。由于有 100 个产品,voucher_detail 中将有 100 条记录。这不是浪费吗,因为优惠券只能用于一种产品。

或者还有另一种数据库设计比这个更好?

最佳答案

嗯,我认为没有更好的设计适合您的情况。我的意思是,在设计数据库时,它应该适合所有用例,这样,您就可以涵盖所有用例。

当然,当拥有所有产品的优惠券时,需要 100 行,但这非常适合您拥有 5 种产品的优惠券的情况,并且这是准确了解每张优惠券的用途的安全可靠的方法可以使用的产品。

我在想,也许您可​​以将优惠券的所有产品放在一列中,用“,”分隔,然后在阅读时将它们分开(如果您真的关心大小),但这感觉不对。

关于mysql - 如何根据检查值或(全部)存储数据ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860110/

相关文章:

MySQL 统计引用外键的属性

mysql - 为什么这个 MYSQL 语句给我一个错误?

MySQL产品存储-架构

mysql - 为规划事件 Web 应用程序设计设备库存 mysql 数据库表的建议

mysql - 我必须显示不在 "timecard"表中的记录

java - 线程中的异常 "main"java.sql.SQLException : Unable to open file

javascript - 如何在Sproutcore中串联两种SC.RecordArray类型?

mysql - SQL 仅返回特定年龄的人

mysql - 等效选项,如 MySQL 中 SQL 服务器的 openquery

mysql - 类似Twitter的数据库表结构