unique属性标识字段的唯一值有两个问题使用的这个属性,不知道是否恰当table:
id name age
1 kaka 24
2 lala 26
3 lala 261.向一个表中插入数据,由于程序的问题,插入了两次'lala',要求是name字段值不能有重复,由于程序调试困难,未找到重复插入问题点,所以采用把name设置为unique.这样就保证了name的唯一.这样解决在性能或者数据安全方面是否能接受?2.还是向这个表中插入数据,我先将name设置为unique,因为已经有一条记录'kaka',所以我再次插入'kaka'将不会有新记录,通过这种方式,我可以省略一步判断:即在插入'kaka'前先执行一次存在性判断.本质是通过unique的特点来省去一步判断操作,这样解决在性能或者数据安全方面是否能接受?
id name age
1 kaka 24
2 lala 26
3 lala 261.向一个表中插入数据,由于程序的问题,插入了两次'lala',要求是name字段值不能有重复,由于程序调试困难,未找到重复插入问题点,所以采用把name设置为unique.这样就保证了name的唯一.这样解决在性能或者数据安全方面是否能接受?2.还是向这个表中插入数据,我先将name设置为unique,因为已经有一条记录'kaka',所以我再次插入'kaka'将不会有新记录,通过这种方式,我可以省略一步判断:即在插入'kaka'前先执行一次存在性判断.本质是通过unique的特点来省去一步判断操作,这样解决在性能或者数据安全方面是否能接受?
性能上,由于多了一个name上的unique索引,帮而插入时的速度会有一点点影响。但同时一但你有基于name 的查询则速度有显著的提高。安全性上来说, 保密性不受影响,完整性有所提高,可靠性不受影响。
其实是两个不同的问题,因为都涉及unique,所以用一个表来举例第一个问题是由于程序问题,向一个表中一次性插入了两条相同的name,由于暂时找不到程序问题根源,所以想临时用unique来限制重复插入,解决这个问题.实际这样做也给解决了.感觉还可以,就不想改回来了.有数据库的字段限制特点不是很好么?就来问问能不能这样用.
第二个问题是插入数据问题,比如注册新用户,总是要先判断该用户是否已经被注册,如果使用了unique,那么直接插入就可以了,不用判断了.如果有重复的肯定插不进去.节省一步数据库操作,不知道这么做会不会有问题.
原来是两个问题,不是两个方案。二个问题的回答是 - 可以这样通过unique来实现这种约束。对系统的影响参见一楼的说明。