【发布时间】:2012-08-01 16:33:02
【问题描述】:
我一直在研究数据库应用程序 (Access 2007),并且有几个关于架构的问题。这是迄今为止我编写的最复杂的应用程序。
我目前有 5 个表,每个表都有自己唯一的 ID 字段:
- 平台
- 车辆
- 手册
- 程序
- 故障
同一个故障可能出现在多个程序中,同一个程序可能出现在多个手册中。我想为用户提供复制和删除记录的机会,以及表之间的交叉链接记录。
目前,我在上面列出的每个表之间都有连接表,
- platforms_vehicles
- vehicles_manuals
- manuals_procedures
- procedures_faults
编辑主表之间的关系(通过编辑连接表的内容)变得相当复杂,因为复制和删除操作会对其他表产生级联影响。在我看来,这可以使用递归有效地执行,但实际上让它工作完全是另一回事。
问题 #1:我描述的架构是安排这些数据的“好”方式,还是不必要地复杂? (我有这样做的习惯。)
问题 #2:是否有“首选”方法?
问题 #3:我最好以不同的方式组织表格,例如:
只有 5 张桌子,
- 平台
- 车辆
- 手册
- 程序
- 故障
每个表都有一个用于其内容字段的键,以及另一个表示其在下一个更高表中的父记录的键。例如,
- 平台
- 平台ID、平台名称
- 车辆
- 平台ID、车辆ID、车辆名称
- 手册
- vehicleID、manualID、manualName
- ...
这对我来说似乎更简单,当然也不那么复杂。如果大家愿意提供一些专业的反馈,我将不胜感激。
谢谢!
【问题讨论】:
-
如果您的表是一对多的,比如每辆车只在一个平台上,我会跳过这些关系的连接表。只需在您的车辆表中添加一个平台 ID,并在您的手册表中添加一个车辆 ID。您需要下层表的连接表,这是一个多对多关系
Each manual can have many procedures, and each procedure can appear in many manuals -
谢谢幽灵。这对我来说很有意义。设置表维护程序已成为一件苦差事。你知道我可以放入我的应用程序中的任何预先编写的导航类模块吗? :)
标签: sql database-design ms-access-2007 jointable