澳门皇冠金沙网站-澳门皇冠844网站

热门关键词: 澳门皇冠金沙网站,澳门皇冠844网站

数据删除设计,sqlyog高级应用

恢复误删的数据,只需要到History表找到相应的数据,将其重新插入到Prodcut 表中,并且,History 表中不仅可以存储用户删除操作的历史记录,而且可以存储用户更新的历史记录,对于系统的维护,解决用户纠纷和故障排除,十分有帮助。

皇冠手机投注网址 1

Product(ID,Name,Content,IsDeleted,DeletedBy)

皇冠手机投注网址 2

单纯从业务需求上考虑,软删是首选的design,定期清理软删的冗余数据,也可以提高数据查询的速度,不过,在清理数据时,可能会产生大量的索引碎片,造成并发性降低等问题。

如果遇到要给领导或者同事展示数据库结构,那这个东西就很好了。直观形象看到关系,而且能够快速编辑字段(双击字段即可更改),用于数据结构审核更改,非常方便。

1,能够快速恢复被误删除的数据

Alter Table > Indexes > Columns 添加索引,添加适当的索引,是一个数据库设计的基本常识。

在实际的产品环境中,数据删除操作有两种方式:软删除和硬删除,也称作Logic Delete 和 Physical Delete。硬删除是指使用delete命令,从table中直接删除数据行;软删除是在Table Schema中增加一个bit类型的column:IsDeleted,默认值是0,设置IsDeleted=1,表示该数据行在逻辑上是已删除的。

创建视图、存储过程、触发器、事件,高级mysql应用,这些事应该是DBA的活,但是作为普通开发或其他类型工作,了解一下还是有必要的。

数据表是用来存储数据的,不是用来用户操作的历史记录。如果需要存储用户操作的历史记录,必须使用另外一个HistoryOperation来存储。

四、创建视图、存储过程、触发器、事件,高级mysql应用,DBA干的事;

上述Product表中Name字段上存在一个唯一约束,如果用户将相同Name的Product重新插入到table中,Insert 操作因为违反唯一约束而失败,针对这种情况,软删除操作必须额外进行一次判断:

总体来说,存储过程和事件会显得更有用,存储过程可以你频繁操作的多个表,连在一起操作带逻辑,事件可以清理一些通用工作。add一个:

在设计思路上,ID是自增的Identity字段,用以唯一标识一个Product;在业务逻辑上要求Name字段是唯一的,通过Name能够确定一个Product。业务上和设计上有所冲突在所难免,解决冲突的方法其实很简单:将ID字段做主键,并创建clustered index;在Name字段上创建唯一约束,保证Product Name是唯一的。

在没有sql桌面工具时(或者对于大牛来说),他们是不会用到桌面工具的,都是一个字一个字的码出数据库,这当然是根本。但是,能够高效地利用工具,尤其在有的场合必须要用工具时,又何偿不是一种好事呢!下面我就来总结下mysql桌面工具 sqlyog 的一些应用吧,在总结的同时,也希望能点燃你不经意的眼睛。

3,手动处理外键关系

这个功能是最基本的,直接右击导出,导入即可。 但是对于大数据量的导入,往往会发生错误,这时,就得自己删除部分数据,再进行导入了。

 

八、查询出的结果,进行优化展示及修改;

皇冠彩票官方网站,如果Product表的数据量十分大,额外的查询操作,会增加插入操作的延迟,同时,"无效"的历史数据降充斥在数据表中,也会降低数据查询的速度。

皇冠手机投注网址 3

如果在该表上创建外键关系,那么可能存在外键关系引用被逻辑删除的数据,造成数据的不一致性,这可能是很难发现的bug:如果需要保持关键关系的一致性,需要做特殊的处理。在将数据行逻辑删除之时,必须在一个事务中,将外键关系全部删除。

皇冠手机投注网址,六、界面式设计数据,更好的展示关系图;

if exists(
    select null 
    from Product 
    where name ='xxx' and IsDeleted=1
)
update 
    set IsDeleted=0,
        ...
from Product 
where name ='xxx' and IsDeleted=1
else 
insert Product(...) 
values(....)

七、备份导出,保证不丢失你的数据;

Product(ID,Name,Description)

每个工具都有自己的强项,合理利用好强项,能让工作更加顺利!

4,不能被用作历史表

由浅入深!!!

用户的删除操作是将IsDeleted设置为1,在逻辑上表示删除数据,如果用户由于误操作,将重要数据行删除,那么只需要将IsDeleted重置为0,就能恢复数据。

其实想说的高级,也许正是体现在这里,够直观,够快速!

update Product
set IsDeleted=1
where Name='xxx'  -- or  use ID=yyyy as filter

皇冠手机投注网址 4

为设计Product 表的删除操作,需要两个Table,对于OperationHistory表,可以做的更通用一些。抛砖引玉,提供一个思路,我就不做扩展了。

【编辑推荐】

--view definition
select ID,Name,Content
from Product
where IsDeleted=0

History, 当你不知道怎么直接写sql时,你需要将从界面上操作的sql记录下来,查看历史记录,找出改动的sql,也帮助下次提升sql能力打下基础!

本文由澳门皇冠金沙网站发布于数据库研究,转载请注明出处:数据删除设计,sqlyog高级应用

相关阅读