我保留更改的历史数据,并使用单独的行(item_status_id
)来存储上次添加的状态:
CREATE TABLE `item`(
`item_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`item_status_id` INT UNSIGNED NOT NULL REFERENCES item_status(item_status_id),
PRIMARY KEY (`item_id`)
);
CREATE TABLE `item_status`(
`item_status_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`ts_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`info` TEXT,
PRIMARY KEY (`item_status_id`)
);
问题是更新需要应用程序(或存储过程)更新item_status_id
表的item
行,但它使我的1:1连接变得简单,与使用时间戳排序的TOP记录加入。
更好的做法是在子查询上使用JOIN TOP,还是更依赖应用程序的表设计?