加入数据库架构表?

时间:2012-08-01 16:33:02

标签: sql database-design ms-access-2007 jointable

我一直在研究数据库应用程序(Access 2007),并且有一些关于架构的问题。到目前为止,这是我编写的最复杂的应用程序。

我目前有5个表,每个表都有自己唯一的ID字段:

  • 平台
  • 车辆
  • 手册
  • 程序
  • 故障

同一故障可能出现在多个程序中,并且相同的程序可能出现在多个手册中。我想为用户提供复制和删除记录的机会,以及表之间的交叉链接记录。

目前,我在上面列出的每个表之间都有联接表,

  • platforms_vehicles
  • vehicles_manuals
  • manuals_procedures
  • procedures_faults

编辑主表之间的关系(通过编辑连接表的内容)变得非常复杂,因为复制和删除操作对其他表具有级联效果。在我看来,这可以使用递归有效地执行,但实际上让它工作是另一个故事。

问题#1:我描述的架构是一种“好”的方式来安排这些数据,还是不必要地复杂化? (我习惯这样做。)

问题2:这是否有“首选”方法?

问题3:我会以不同的方式组织表格会更好,例如:

只有5个表,

  • 平台
  • 车辆
  • 手册
  • 程序
  • 故障

每个表都有一个用于其内容字段的键,以及另一个表示其下一个更高表中的父记录的键。例如,

  • 平台
  • platformID,platformName
  • 车辆
  • platformID,vehicleID,vehicleName
  • 手册
  • vehicleID,manualID,manualName
  • ...

这对我来说似乎更直接,当然也不那么复杂。如果你们都愿意提供一些专业的反馈意见,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要使用MS Access'关系工具来设置参照完整性规则。这样,您可以自动级联删除和更新。我会避免“连接表”,因为只要父键在表中(它将被称为外键),它们就是不必要的。