作者derekhsu (华丽的天下无双)
看板Soft_Job
标题Re: [请益] 是我经验不足吗?关於资料设计认知差异
时间Thu Oct 2 00:07:24 2008
※ 引述《valenamuro (徵软体工程师唷)》之铭言:
: 今天与主管讨论资料库栏位设计时,对於资料库栏位设计有一些地方无法共识
: 一般我们设计资料库栏位设计都是属於横向方式作设计,如下所示:
: 第一笔资料 栏位A 栏位B ..........
: 第二笔资料 栏位A 栏位B ..........
: .............
: 第N笔资料
: 但是,主管说为了日後弹性而言,要改由纵向设计,设计方式如下:
: 第一笔资料 第二笔资料 ...............第N笔资料
: 栏位A 栏位A........................栏位A
: 栏位B 栏位B........................栏位B
: ..... ..... ......
: 这样就在日後要每笔资料有需要新增资讯,就不需要再改资料库栏位
: 想请问一下,具我所知,一般大都采用横向比较多,有人会采用纵向方式设计吗?
: 这样设计不是效能很不好??
: 业界跟理论有这样大误差 =.=..
我知道这个故事,我还以为那位主管已经不在了,想不到那位主管还在啊
不知道是不是同一个主管。某家已经倒掉的公司的....XD
我觉得你是对你的主管的结构有点误会,可能是这样子的,
话说回来这种结构不是没有作用,在某些状况之下,比如资料的栏位不固定
但是资料量却不多,与其他资料表之间的关联也不密切的状况下,这样的做
法的确可以增加弹性。我也有拿来用在描述产品规格上面,简单来说,就是
做Metadata的描述,这样做是可以被接受的。
举例来说,我现在有五个产品,这五个产品的规格不太一样,比如
第一个产品:
长度 10
重量 3
期限 1
第二个产品
长度 5
重量 2
价值 10
第三个产品
圆周 7
密度 5
第四个产品
...
第五个产品
...
然後你还会有第六个,第七个产品,而且这些产品的描述子都不固定的时候
,就可以用这个方法,比如:
编号 规格 数值
1 长度 10
1 重量 3
1 期限 1
2 价值 10
....
以此类推,在资料量不多的状况下,确实比用
编号 长度 重量 期限 价值 圆周
1 10 3 1 null null
....
的要有弹性
但是这是在少数的状况下才有办法运作的动作,当你要进行增加的时候,你
就会发现要哭了,横向的资料表效能极差,你要插入一笔资料,等於要做
n个资料库的Insert操作,原本只是一个操作而已,当然Update跟Delete也
全部一样,join运算的时候更是会慢到哭出来。
当你提出效能上得问题的时,假设主管回你多建几个索引就可以了,我建议
你把桌上的文件拿起来丢到他脸上,然後骂他「吃大便吧」
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.166.211.47
※ 编辑: derekhsu 来自: 118.166.211.47 (10/02 00:14)
1F:推 andymai:没想到这样的主管还有人遇到~不过最後那段大概要很有guts 10/02 00:19
2F:→ andymai:然後又不想在业界呆了~才会这样做吧... 10/02 00:19
3F:推 iman00b:这跟要不要在业界呆有啥关系?何必尊重连基本学能都没的人 10/02 04:23
4F:→ iman00b:连我在搞firmware的都懂一点资料库了,这还不够基本? 10/02 04:24
5F:推 ledia:转换跑道, reference check 被踩一脚, 就知道以和为贵的重要 10/02 11:31
6F:推 andymai:正如楼上所言~搞不好那个主管的人脉广阔~人言可畏啊!如果 10/02 20:40
7F:→ andymai:有老板听闻了~试问哪个老板不会对这个人的人格特质打问号? 10/02 20:42
8F:→ andymai:不对盘的话~闪人就好了~跟他吵有意义吗? 10/02 20:44
9F:推 jellyice:基本学能跟尊不尊重没关系…能力高并不代表就值得尊重 10/04 01:22
10F:→ michaelz:借转database版 谢谢 10/04 07:17
11F:推 f1234518456:他要的方式就开spec签名 出事就他扛就好 颗颗 09/01 11:38