这是我在校外的第一个项目,所以我生锈了,缺乏练习。
我想创建一个数据库,但我不确定到目前为止我是否正常。我需要一些报告表的帮助。
情况:
也许我离开了基地。有人对我有建议吗?
答案 0 :(得分:1)
通常像“食物”这样的孤儿表是一个缺少的标志。如果涉及的数据太多,你会认为它会以某种身份与订单模型联系起来,或者至少你会对哪种代理商存储哪种食品有一些指示。
奇怪的是,缺少的是如何根据此模式计算“家庭服务”等数据。似乎没有这方面的信息来源,甚至没有“家庭服务”记录,也不是每日或每周摘要的地点,并且总计。
“Zips”表仅在存在可能通过邮政编码链接的其他数据时才相关。如果您有纬度/经度数据库或人口统计数据,这将是有意义的。但是,拥有一个实际的外键有点沉重。如果你不知道拉链怎么办?如果由于某种原因拉链在美国以外的地方怎么办?你将如何处理五位和九位邮政编码?
由于拉链不是由用户创建的,因此拉链表主要是可能引用也可能不引用的辅助信息。这是一个孤立的“参考”表的好选择。
请记住,这样的图表结构很大程度上受应用程序前端的影响。如果用户正在添加食品订单,则会转化为所有三件事之间的关系。如果代理商根据日常活动日志生成报告,那么您需要再次确定这三个实体之间的关系。
前端通常基于用例,因此请确保您能够容纳所有相关的内容。
答案 1 :(得分:1)
此表的更好名称可能是FoodService或其他东西。我想你最终想要的那种报告不仅仅是这个表中的一行,所以命名它报告有点令人困惑。
在任何情况下,每个报告都是{代理商ID,邮政编码,日期}的唯一组合,当然代理商ID是外键。正如您所指出的,此表中的其他列将是服务的家庭和人数。这意味着您将为每个代理商 - 邮政日期组合设置行,如下所示:
Agency | ZIP | Date | FamiliesServed | PeopleServed
Agency A | 12345 | Jan-12 | 100 | 245
Agency A | 12340 | Jan-12 | 20 | 31
Agency B | 12345 | Jan-12 | 80 | 178
Agency B | 12340 | Jan-12 | 0 | 0
这些总数是否也被“程序”细分了?如果是这样,程序需要成为此表的主键的一部分。否则,程序不属于此处。
最后,除非您要开始存储关于邮政编码本身的数据,否则您不需要邮政编码表。