我正在尝试为我从多个来源收集的一些统计数据实现“扩展”表结构。
我的“父”表看起来像这样:
`test_parent` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`actions` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
)
我的第一个“子”表看起来像这样(最终我将为每个源创建一个子表):
`test_child` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`test_parent_id` int(11) unsigned NOT NULL,
`external_id` int(11) NOT NULL,
`external_actions` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `test_parent_id` (`test_parent_id`)
)
CONSTRAINT `test_child_ibfk_1` FOREIGN KEY (`test_parent_id`) REFERENCES `test_parent` (`id`)
所有这些在我的实现中都可以正常工作(我将使用 Java/Hibernate);但是,对于第一个子表,我需要一个用于 external_id 和日期的复合唯一键。我知道我不能有跨表的复合唯一键。我宁愿没有一张表来存储所有统计数据,因为我收集的实际分析可能因来源而异。我会更愿意摆脱“父”表。
还有其他方法可以解决这个问题吗?如果可能的话,我希望避免使用触发器来强制执行唯一性。