作者JYHuang (夏天到了,冷不起来了说)
看板Database
标题Re: [请益] 这种资料的纪录用怎样的资料结构比较好?
时间Tue Apr 26 01:29:58 2011
※ 引述《danielguo (Daniel Guo)》之铭言:
: : 3:使用纪录 (rec) + 集合资料(collect)
: : 纪录ID 日期 时数(min) 零件集合ID
: : 001 20110401 50 01
: : 002 20110402 100 02
: : 集合ID 主元件ID 零件ID
: : 01 A 001
: : 01 A 002
: : 01 A 003
: : 02 B 002
: : 02 B 003
: : 这样的话,统计会方便点、资料量也会比较少。
: : 可是集合的编辑似乎会比较麻烦点,可能会变成同样的集合重复的出现。
: : 看起来也只是把1的方法更正规化一点。
: : 请问是否还可以有更理想的资料结构呢?
: 3 比较适合, 不过这边栏位不对, 应该是
嗯,因为主元件实体上还是会有一个不可变动的主体在。
零件是装在主体上,所以我还是意属把主件ID跟集合ID绑在一起。
: 纪录ID 日期 时数(min) 主元件ID 零件集合ID
: 001 20110401 50 A 01
: 002 20110402 100 B 02
: 集合ID 零件ID
: 01 001
: 01 002
: 01 003
: 02 002
: 02 003
: 设定主键为 (集合ID, 零件ID), 这样便一定不会重复 (当然应用程式应该先检查)
: 3 更正了之後基本上和 2 储存的资料量相同
: 除非有其他额外栏位要考虑, 不然应该这样用没错
既然如此,再顺势问一下相关的判断法
如果我要做零件的变动,例如把零件01移到主元件B去用。
然後过一阵子又再变动回来主元A时。
在SQL如何判断这种集合是曾经搭配过的?
主件ID
B
集合ID
03
零件ID
001 ==>001调回主件A时,判断这个组合曾经出现在集合ID 01
002 不用再去新增一笔集合ID。
003
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.255.131.50
1F:推 danielguo:想到一个办法是用 hash, MD5("1,2,4,..") 存起来後比对 04/26 02:58
2F:→ danielguo:用 sha 应该比 md5 更适合 04/26 03:32
3F:→ JYHuang:呼..还好MySQL有Group_concat这个函式可以算MD5~ 04/26 10:12