我应该运送一个内容可变的盒子,并在数据库中进行跟踪。我的所有项目(盒子的内容)都是不同的类型,并且需要不同的表来跟踪各自的信息,尽管每种项目类型都具有相同的长度序列号(即PK是相同的数据类型)。我有一个Boxes桌子。
因此,每个项目都有一个表(〜7个表)和box表。我想创建一个BoxContents表。我试图制作一个多对多关系中间表,其中有两列:一列为BoxID,一列为ItemBarcode,其中BoxID,Boxes表上PKItemBarcode的FK是,而Items表上每个PK的FK(即I尝试将多个表链接到同一列)。毫不奇怪,这没有用。我试图插入一个项目,但除其中一种ItemBarcode关系外,所有其他人都违反了FK约束。
BoxContents
BoxID
ItemBarcode
Boxes
如何构建我的关系以将几种类型的项目链接到一个表中的一个框?这是合乎逻辑的方法吗?你需要更多信息?
如果这些ItemBarcode值确实是唯一的,那么我的首选是:
编辑: 添加了所需触发器的说明。
BoxId
我的第二个选择是 ñ BoxId /ItemBarcode对表 ñ 项目类型。直截了当,但是有点忙。这使得添加新的项目类型变得比需要的更加混乱。
我不会用一个BoxId/ ItemTypeId/ItemBarcode表。它通过再次关联ItemTypeId和来对数据进行ItemBarcode归一化,它不允许在条形码侧使用FK,并且仍然需要触发器来确保完整性。
ItemTypeId
不要害怕触发器。他们可以有效地解决一些问题。