这是我的第一个数据库模式设计。我正在尝试为我的部门开发一个小型 Web 应用程序,用于食品成本管理。我这样做是为了我的学习目的。
我部门的食品成本管理如何运作:
- 成员总数:15
- 一位管理员记录所有费用。他将每天更新数据库。
- 每个会员每天只能订购一次。如果有人在任何特定日期有客人,他可以订购多份餐点。
- 通常会员会提前一到两周支付账单。
- 一两个人负责从外面带来食物,他们不需要支付午餐费用。运输费用也给了他们。他们的伙食费+交通费平均分配给其他 15 名成员的费用。
数据库查询:
从管理员的角度来看:
- 他将管理/添加每日订单。(表:订单)
- 他将添加所有会员的付款,这些付款将记入各个会员的“余额”(表:付款)
- 他将能够在图表中一次查看所有成员的订单/成本历史及其当前余额的概览,为期一个月。
- 如果任何成员的余额为负数或少于特定金额,它将被通知到管理仪表板。
从会员的角度:
- 他将能够一次查看最近一个月的当前余额和订单/成本历史记录。
- 他将能够看到他最近的 x 次付款历史记录。
根据我上面提到的查询,我尝试设计一个如下图所示的数据库模式:
一些属性的细化:
EPlatenum : 除了订购的盘子数量之外,带来的额外食物盘子的数量。
Eplatecost : 额外一盘食物的费用。这笔费用在 15 名成员的个人费用中平均分配。
EPersonnum & EPersoncost : 额外携带食物的人数及其总成本。费用将平均分配给 15 名成员的个人费用。
TransCost:运输成本。费用将平均分配给 15 名成员的个人费用。
问题:
我犯了哪些错误,我该如何克服?
对于我的 DailyList 表,我使用“日期”作为主键。可以使用日期作为主键吗?如果不行,这里的主键可以是什么?
当我要为 30 个月的成本/订单历史填充图表概览时,我假设数据库查询将是巨大的。我应该采取什么方法来优化查询?
我期待收到您关于改进数据库架构的建议。请帮助我纠正我的设计错误并克服它们。感谢您的耐心等待。