初次数据库设计:我是否过度设计?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 改善这个问题 背景 我是CS大学一年级的学生,我做兼职工作是我父亲的小生意。我没有在现实世界中进行应用程序开发的经验。我用Python编写了脚本,用C编写了一些课程,但没有这样的东西。 我父亲的培训业务不多,目前所有课程都通过外部网络应用程序进行计划,记录和跟进。有导出/“报告”功能,但是它非常通用,我们需要特定的报告。我们无权访问实际数据库来运行查询。我被要求设置一个自定义报告系统。 我的想法是创建通用的CSV导出,并将其导入(可能是使用Python)(每天晚上)到办公室中托管的MySQL数据库中,从那里我可以运行所需的特定查询。我没有数据库方面的经验,但了解非常基础的知识。我已经阅读了一些有关数据库创建和常规表单的信息。 我们可能很快就会有国际客户,因此如果发生这种情况,我希望数据库不会爆炸。我们目前也有几个大公司作为客户,分别设有不同的部门(例如ACME母公司,ACME医疗保健部门,ACME身体护理部门) 我提出的架构如下: 从客户的角度来看: 客户是主表 客户链接到他们工作的部门 部门可以分散在一个国家/地区:伦敦的HR,斯旺西的市场营销等。 部门与公司的部门联系在一起 部门链接到母公司 从类的角度来看: 会话是主表 老师链接到每个会话 每个会话均会获得一个statusid。例如0-已完成,1-已取消 会话被分组为任意大小的“包” 每个包装都分配给一个客户 我在一张纸上“设计”(更像是乱涂乱画)该架构,试图使其标准化为第三种形式。然后我把电源插头插上到MySQL Workbench和它使人们都非常适合我:(点击查看全尺寸图片) (来源:maian.org) 我将要运行的示例查询 哪些客户的信用额仍处于闲置状态(将来未安排课程的客户) 每个客户/部门/部门的出勤率是多少(由每个会话中的状态ID衡量) 一个月一个老师上了几节课 标记出勤率低的客户 针对人力资源部门的自定义报告以及部门人员的出勤率 问题 这是工程过度还是我朝着正确的方向前进? 对于大多数查询,需要联接多个表是否会对性能造成重大影响? 我已经向客户端添加了一个“ lastsession”列,因为它可能将是一个常见的查询。这是个好主意还是应该严格规范化数据库? 谢谢你的时间