小编Viv*_*ida的帖子

外键参考复合主键

该数据库将存储有关硬件设备及其收集的数据的信息。我创建了一个设备表来存储可用的硬件设备:

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`)
)
Run Code Online (Sandbox Code Playgroud)

deviceID 将对应于真实的硬件 ID(从 1 到 12)。由于有两种类型的硬件设备,我认为创建一个 deviceType 是合适的,该 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`) …
Run Code Online (Sandbox Code Playgroud)

mysql sql database-design foreign-keys mariadb

3
推荐指数
1
解决办法
850
查看次数

标签 统计

database-design ×1

foreign-keys ×1

mariadb ×1

mysql ×1

sql ×1