Re: [请益] DB设计上为何不要都开NVARCHAR2(4000)

楼主: littlethe (东周流浪汉)   2014-08-19 02:17:55
NVARCHAR和NCHAR的问题前面有高手讲过,
我自己理解是搜寻效能问题,
但倒底效能会差多少,
我是没有记,印象中差蛮多的,
至于你讲的int问题,
应该是储存空间的问题,
你同事用int还好,
我遇过有人不管什么字段都用nchar的,
性别也用nchar,日期也用nchar,金额也用nchar,
对他来说反正nchar也可以存"数字",
就什么都用nchar...
想当然,后面接手的人就囧....
OK,不管是实际效用也好,"看起来"专业也好,
我分享一个我的另一种观点,
那就是习惯问题,
因为我是对写程式很龟毛的人,
而且我也认为龟毛的人适合写程式或走IT,
我决定用nchar还是nvarchar,
或决定bit,tinyint还是int,
是因为我有认真的去思考过这个资料适合什么形态,
能存多少笔,长度会到多少,搜寻效能为何...
这些我有想过,
所以我才会决定用什么形态,
有想过,很小心的,很谨慎的去做决定,
这就是我想要的习惯,
nchar和nvarchar当下是不是真的有差那么多不是重点,
重点是我若能保持这样龟毛的习惯的话,
我可以减少很多可能会发生的问题,
我们都不是神,
不可能会预知到未来会有什么变化,
我也不是什么聪明的天才,
无法思考到很深很精细的地方,
身为凡人,
我唯一能做的,
就是养成龟毛的习惯来写程式或管数据库,
来尽可能的降低未来会发生的错误,
因为我知道若为了省一时的时间,
而导致发生问题的话,我要花更多时间去解决...
我是无法很详细的解说底层运作的原理来解释出用bit,tinyint,int会比一律用int好,
但我会用风险的角度来看,
未来资料"有可能"极为庞大,
未来技术"有可能"改变,
未来"有可能"有白目把不合理的资料塞入数据库(例如把身份证字号打成13个字)
所以在设计字段时,
就应该要尽可能的设计成贴近需求的状况,
同理在写程式我也是很龟毛,
程式码有重复的地方,
就尽量写成循环或函数,
我一个档案尽量写在500行以内,
但就很多人只想花几秒COPY PASTE,
久了就把一个档案搞到上万行,
我真的很讨厌那样,
我命名变量也是,
我有强迫症要把变量命名的有意义(没人要求的话,我就用骆驼命名法),
此外,我看到有warning就会不舒服,
所以就希望自己写的程式不要有warning,
但很多人就觉得可以跑就好,有warning没关系,
然后compile就几十个warning,还越来越多...
以上打那么多,
只是我觉得龟毛的习惯很重要啦,
我不会觉得你太吹毛求疵,
我会觉得你干得好
※ 引述《On1earth (小浅)》之铭言:
: 想藉这个主题问一下大家,
: 如果有一个字段用tinyint,甚至是bit就足够,会为了方便而全部使用int吗?
: 一直以来我都是可以用bit就用bit、可以用tinyint就用tinyint,
: 但是近来看我同事全部都用int,其实系统没那么庞大,用int好像也没怎么样,
: 现在有点动摇,在思考我是不是太过于吹毛求疵。
作者: terrybob (罪云樵)   2014-08-19 02:23:00
对自已负责,将来亦同。
作者: YaMeiLo (亚妹露~!!)   2014-08-19 13:02:00
推跟你一样,看到拿怪兽sql找我帮调效能觉得很白眼。
楼主: littlethe (东周流浪汉)   2014-08-19 15:33:00
我前工作也是一直调作文级sql,里面塞一堆子查询又不加where,看了很想骂人
作者: NohohonZoku (のほほん族)   2014-08-19 17:06:00
找看看内文错几个字:P
楼主: littlethe (东周流浪汉)   2014-08-19 19:33:00
有错字又没关系,在PTT发文又不是我龟毛的地方=_=
作者: viper9709 (阿达)   2014-08-19 23:54:00
推这篇~~观念很好
作者: On1earth (小浅)   2014-08-20 22:45:00
谢谢大大回复,因为出社会后就只待过这间公司,看的也不多,所以想说藉这主题来请问版友们的做法,看了这篇以及我发问的那篇,大家的做法还是会依照资料类型来决定data type,我知道该怎么做了

Links booklink

Contact Us: admin [ a t ] ucptt.com