Я пытаюсь реализовать структуру таблицы «расширение» для некоторых статистических данных, которые я собираю из нескольких источников.
Моя «родительская» таблица выглядит примерно так:
`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 и date. Я знаю, что у меня не может быть составного уникального ключа в разных таблицах. Я бы предпочел не иметь одну таблицу для хранения всей статистики, потому что фактическая аналитика, которую я собираю, может сильно различаться по источникам. Я был бы более открыт для избавления от «родительской» таблицы.
Есть ли другой способ взглянуть на эту проблему? Я надеюсь избежать использования триггеров для обеспечения уникальности, если это возможно.