我正在为各种项目计时的个人项目工作,但我不确定构建数据库的最佳方式。我是否应该将所有的MySQL表彼此关联?
结构的简化细目如下:
- 每个客户端可以有多个报告。
- 每个报表可以有多个行项目。
- 每个订单项都可以有多个时间记录。
最终会有更多的关系,但这是应用程序的基础。正如您所看到的,每件商品都与其下面的商品以一对多的关系相关。
我的问题是,我应该将每个表格与上面的每个“父”表关联起来吗?像这样的事情:
clients
id
reports
id
client_id
line_items
id
report_id
client_id
time_records
id
report_id
line_item_id
client_id
而且,随着级联,越来越多的外键被添加到每个新表中。
我最初的反应是,这不是正确的做法,但我很想得到第二个(和第三个!)意见。
您是如何(概念上)区分订单项和时间记录的?订单项是一项任务吗? – jwiscarson
是的,订单项是一项任务。例如,一个订单项可能会读取“内置计时应用程序”,并且它会包含多个时间记录(此处为30分钟,12分钟时间等),这些时间记录会累计到订单项上的总时间。 –
鉴于此,我认为您当前的设计完全可以接受(减去子表中的额外ID)。 – jwiscarson