我正在尝试建立一个新的访问数据库,将植物与它们所含的化学物质联系起来。我知道这是多对多的关系,因为许多植物可以含有相同的化学物质,而同一种植物显然可以含有多种化学物质。我试图建立一个连接表,并以这种方式创建多对多关系,但我仍然不清楚,因为我正在构建数据库并输入数据,我如何判断访问哪些化学物质在哪些植物中?任何帮助将不胜感激,因为我需要快速开始这个项目。
我正在尝试建立一个新的访问数据库,将植物与它们所含的化学物质联系起来。我知道这是多对多的关系,因为许多植物可以含有相同的化学物质,而同一种植物显然可以含有多种化学物质。我试图建立一个连接表,并以这种方式创建多对多关系,但我仍然不清楚,因为我正在构建数据库并输入数据,我如何判断访问哪些化学物质在哪些植物中?任何帮助将不胜感激,因为我需要快速开始这个项目。
假设表 Plant 具有主键 PlantId,表 Chemical 具有主键 ChemicalId。
表 PlantChemical 将有两列:PlantId 和 ChemicalId。这些列中的每一列都应该有一个索引 - 不是唯一索引,因为目的是每个工厂和每个化学品的多个条目,并且您想要从工厂转到化学品(作为下面的示例查询,它需要 PlantId 上的索引)和也从化学品到工厂(所以它需要一个关于 ChemicalId 的索引)。因此,您可能希望将 AutoIncrment 列作为主键(我愿意)。
然后,您可以将两者与类似的东西联系起来
(这可能是 Access 的不正确语法。我记得 Access 对连接的 on 部分中的列名称的顺序有意见,但没有……。现在就访问。0
m-to-n 关系的数据库模式,其中每个植物/化学组合仅存在一次,如下所示:
即,在联结表中,主键 (PK) 由
PlantID
和组成ChemicalID
,因为您只想将每种化学品分配给给定植物一次。一个工厂仍然可以拥有许多化学品,并且一种化学品仍然可以分配给许多工厂。联结表具有表和表
PlantChemical
的外键 (FK) 。表的外键应该级联删除,以便您可以轻松删除植物。表的外键不应该级联删除,因为您不应该能够删除植物包含的化学物质。Plant
Chemical
Plant
Chemical
最好在植物和化学名称上建立唯一索引,以加快搜索速度并避免重复条目。
在 Access 中
Plant.PlantID
,Chemical.ChemicalID
应该是AutoNumber
列。PlantChemical.PlantID
并且PlantChemical.ChemicalID
应该是Numeric Long
列。在 UI 中,让用户从表格中选择一种植物并从
Plant
表格中选择几种化学品Chemical
。PlantID
对于这些化学品中的每一种,使用给定的和将一条记录插入到连接表中ChemicalID
。然后用户将选择另一个植物并在那里做同样的事情。