База данных будет хранить информацию об аппаратных устройствах и их собранных данных.Я создал таблицу устройств для хранения доступных аппаратных устройств:
CREATE TABLE IF NOT EXISTS `devices` (
`deviceID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`deviceType` int(10) unsigned NOT NULL,
`updateFrequency` int(10) unsigned NOT NULL,
PRIMARY KEY (`deviceID`,`deviceType`)
)
Идентификатор устройства будет соответствовать реальному идентификатору оборудования (от 1 до 12).Поскольку существует два типа аппаратных устройств, я подумал, что было бы целесообразно создать deviceType, который будет иметь значение 0 или 1, в зависимости от того, какое аппаратное устройство, и создать составной первичный ключ.
Для хранения этих данных я создал другойТаблица.
CREATE TABLE IF NOT EXISTS `data` (
`dataID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`deviceID` int(11) unsigned NOT NULL,
`payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`dataID`),
KEY `fk_data_devices` (`deviceID`),
CONSTRAINT `fk_data_devices`
FOREIGN KEY (`deviceID`)
REFERENCES `devices` (`deviceID`)
ON DELETE CASCADE
)
Проблема, очевидно, в том, что я не могу ссылаться на составной ключ в одном столбце внутри данных.Имеет ли смысл создать дополнительный столбец внутри данных для deviceType и ссылки на внешний ключ, который также имеет смысл, или более целесообразно назначить deviceID и deviceType внутри устройств другому идентификатору и ссылаться на эти данные?
Спасибо зазаранее!