这是我的第一个数据库模式设计。我正在为我的部门开发一个小型Web应用程序,用于食品成本管理。我正在为了我的学习目的而这样做。设计我的第一个数据库模式:需要建议
如何食品成本管理的作品在我的部门:
- 共有成员:15
- 一个管理员把所有的费用记录。他将每天更新数据库。
- 每个会员每天只能订购一次。如果有人在任何特定的日子有客人,他可以订购多餐。
- 通常会员提前一周或两周付账。
- 一两个人负责从外面带来食物,他们不需要为他们的午餐付钱。运输成本也给予他们。其食品成本+运输成本平均分配给其他15名会员的费用。
数据库查询:
从管理角度看:
- 他将管理/添加日常秩序。 (表格:订单)
- 他将增加所有会员的付款,这些付款将根据各成员的“余额”(表格:付款)计入
- 他将能够看到所有会员的订单/费用概览历史和他们目前在图表中的平衡一次一个月。
- 如果有任何成员的余额为负数或少于特定金额,则会通知管理员仪表板。
从会员角度:
- 他就能看到统计最近一个月他目前的平衡和秩序/历史成本在同一时间。
- 他将能够查看他所做的最后x个付款历史记录。
基于I上面我所提到的查询试图设计数据库模式看起来像下面的图:
精一些属性:
EPlatenum :除了订购的盘子数量带来的额外食物盘数量。
Eplatecost:额外的食物盘的成本。这个成本在15个成员之间平均分配成本。
EPersonnum & EPersoncost:参与带来的食物和他们的总成本额外的人的数量。成本将平均分配在15人的个人成本之中。
TransCost:运输成本。成本将平均分配在15人的个人成本之中。
问题:
什么是我所犯下的错误,我怎么能解决呢?
对于我的DailyList表我已经使用“日期”作为主键。它可以使用日期作为主键吗?如果不行,那么可以在这里设置主键?
当我打算填写30个月的成本/订单历史记录时,我认为数据库查询将会非常庞大。我应该采取什么方法来优化查询?
我期待着您对改进数据库模式的建议。请帮我纠正我的设计错误并克服它们。感谢您的耐心等待。
从快速查看您的模式,您应该**从不**将货币存储为浮点数,因为它们的精度有限并且可能不准确(例如0.99而不是1)。我建议将任何存储钱的列的数据类型更改为DECIMAL或NUMERIC,因为它们是固定点数。 – 2013-05-04 09:01:25
感谢您的建议。 – xihad 2013-05-04 09:17:45