database - 每日交付系统的数据库模式?
问题描述
我想设计一个数据库,让我的客户每天购买不同数量的任何乳制品(牛奶、凝乳、奶酪),但在月底付款。
我无法找出正确的数据库架构,因为我想存储特定产品每天的数量,并且客户可以购买多种类型的产品。
那么,前进的方向应该是什么?
编辑:我的架构
客户:
-客户ID
-姓名 -
手机号码唯一 -
地址
-每日数量(仅供参考。交易过程中可根据需要增加或减少)
产品:
-
产品 ID
-名称 -
单价
交易表
-客户ID(外键)-
产品ID(外键) -
数量
-日期
现在,我想通过组合他在一个月内购买的所有不同物品为每个客户生成每月账单。那么,这个事务表会是最好的方法吗?
解决方案
我添加了一张新表Ticket,因此白天购买的每一件产品都属于一个独特的Ticket。
通过这种方式,您可以返回特定票证并查看花费了多少(这是因为价格可能会发生变化,并且一天内有多张票证)。
<Ticket>
-Product id (foreign key)
-Quantity
-total
-Date
我已将您的交易表修改为只有票客户关系。
<Transaction>
-customer_id (foreign key)
-ticket id (foreign key)
-Date
一些 SQL 示例
SELECT Tr.customer_id, MONTH(tr.Date), SUM(ti.total)
FROM Transaction tr, Ticket ti
WHERE tr.ticket_id = ti.id
GROUP BY MONTH(tr.Date)
WHERE Tr.customer_id = ? AND tr.Date BETWEEN ? AND ?
推荐阅读
- html - 使用 :before 和 :after 创建的 CSS 元素不显示
- javascript - 我可以在将 jsx 转换为简单的 HTML 字符串时使用它进行编写吗?
- java - Spring Boot FileLİst 下载 zip
- java - JavaFX16 警告:不支持的 JavaFX 配置:类是从“未命名模块 @***”加载的
- python - 将 Geopandas 数据框直接导出到压缩的 shapefile
- keras - Keras,Lstm,每个时间步输入与前一个时间步输出
- javascript - Minimal Matter.js 示例:Engine.run 不是函数
- sql - SQL 使用自动增量填充,但外键重置已更改
- mysql - MYSQL 更新触发器 - 无法更新存储函数/触发器中的表,因为它已被语句使用
- netlogo - NetLogo 消费者行为模型