mysql逻辑删除的问题_数据库表涉及-逻辑删除

本文探讨了数据库设计中逻辑删除与物理删除的策略。建议在pics表中只保留未删除的数据,移除is_deleted字段,并通过建立独立的pic_d表来存储已删除的数据。这种方式可以提高查询效率,减少数据冗余,并便于数据恢复。使用MyISAM引擎的pic_d表可以满足快速写入的需求。
摘要由CSDN通过智能技术生成

对于只进行逻辑删除的表,如

CREATE TABLE `pics` (

`pid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`aid` bigint(20) unsigned NOT NULL,

`pic_url` varchar(255) NOT NULL,

`is_cover` tinyint(1) default 0,

`is_local` tinyint(1) default 1,

`type` int(10) unsigned default 0,

`description` text,

`ext` text,

`uid` bigint(20) unsigned NOT NULL,

`uip` int(10) unsigned default 0,

`create_time` int(10) unsigned default 0,

`update_time` int(10) unsigned default 0,

`is_audited` tinyint(1) default 0,

`is_deleted` tinyint(1) default 0,

PRIMARY KEY (`pid`),

KEY `aid` (`aid`,`create_time`),

KEY `idx_user_time_del` (`uid`,`create_time`,`is_deleted`),

KEY `idx_user_uptime_del` (`uid`,`update_time`,`is_deleted`),

KEY `idx_time_del` (`create_time`,`is_deleted`),

KEY `idx_uptime_del` (`update_time`,`is_deleted`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

建议

pics表中只存储未删除的数据,不需要is_delete字段

另建一张表存储删除的数据,如pic_d

用户删除的话就把记录从pics中删除,插入到pic_d中,myisam表引擎即可,好处不言而喻

CREATE TABLE `pics_d` (

`pid` bigint(20) ,

`aid` bigint(20) unsigned NOT NULL,

`pic_url` varchar(255) NOT NULL,

`is_cover` tinyint(1) default 0,

`is_local` tinyint(1) default 1,

`type` int(10) unsigned default 0,

`description` text,

`ext` text,

`uid` bigint(20) unsigned NOT NULL,

`uip` int(10) unsigned default 0,

`create_time` int(10) unsigned default 0,

`update_time` int(10) unsigned default 0,

`is_audited` tinyint(1) default 0,

`is_deleted` tinyint(1) default 0

) ENGINE=Myisam DEFAULT CHARSET=utf8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值