我是数据库新手,如果这是一个基本问题,请原谅我。
我正在尝试解析复杂的开源字典,并将数据输出到同样复杂的 Access 数据库中:
我了解如何将数据插入表中,但我不明白的是如何将数据插入到多个表中,这些表中的外键相互依赖。举一个简化的例子:
我有三个表:Entry
、Keyword
和Keyword_Priority
。每个条目都可以有多个关键字,因此该表通过外键Keyword
链接回。Entry
并且每个关键字元素可以有多个元素描述关键字的优先级,因此该Keyword_Priority
表通过外键链接回Keyword
,如下所示:
在这个简化的场景中,假设我想使用 SQL 创建一个新条目。我从哪说起呢?我是否:
先插入到
Entry
表中创建一个新的EntryID
Keyword
然后使用新EntryID
的作为外键插入表中Keyword_Priority
然后使用关键字的ID
字段作为外键插入表中
或者,我应该反过来做吗......
插入
Keyword_Priority
表格插入
Keyword
表格插入
Entry
表格
所以总结一下,我的问题是:
一次将数据插入多个表时应该从哪里开始?是自上而下,还是自下而上?
外键与另一个表的主键相关。输入带有外来的记录时,必须存在具有该主键的相应记录。因此,您必须始终从插入关系 1 侧的表(主键或父键或主键表)开始。然后只有您可以在关系的 n 侧输入一条记录(进入明细表或子表或外键表)。
顺序:1. 条目,2. 关键字,3. Keyword_Priority。
如果一个表有多个外键,则必须先输入所有其他表中具有相应主键的相关记录。例如,在向 中输入记录之前,必须已经插入了 in和 in
SenseRestricted...
的对应记录。Sense
Reading
一些一般性的建议。在图像中,我猜 Keyword_Priority 取决于 Keyword,而 Keyword 取决于 Entry。因此,您需要从条目开始,然后是关键字等。
从建模的角度来看,无论您在模型中的哪个位置使用某物,它都是某物。该条目看起来相当不错:
对于关键字,类似于:
即不要使用Id,它太模糊了。属性是特定事物的 id。另外,请注意属性 EntryId 的命名方式与 entry 中的相似。
我不会深入研究代理键的问题,因为我相信 ms-access 存在限制(至少以前是这样),这会阻止复合外键。