公司用多列做主键,但是我觉得没必要 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
likefly
V2EX    数据库

公司用多列做主键,但是我觉得没必要

  •  
  •   likefly 2019-08-30 18:07:28 +08:00 4764 次点击
    这是一个创建于 2284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PRIMARY KEY ('sys_id', 'sys_date')

    说明一下 sys_id 是有序唯一的,且 sys_id 的前缀其实就是 sys_date,我上司说就这么搞,我说没必要,然后反问为什么这么搞,然后告诉我说听他的就对了。

    怎么破?

    34 条回复    2019-09-03 07:37:48 +08:00
    sadfQED2
        1
    sadfQED2  
       2019-08-30 18:24:41 +08:00
    领导都对,不容置疑
    luckylo
        2
    luckylo  
       2019-08-30 18:26:23 +08:00 via Android
    领导说的对,锅也领导背。
    lenmore
        3
    lenmore  
       2019-08-30 18:33:15 +08:00
    是没必要。除非想用分区表。
    iPhoneXI
        4
    iPhoneXI  
       2019-08-30 18:33:50 +08:00 via Android
    没有隐患就随他去
    shoaly
        5
    shoaly  
       2019-08-30 18:41:56 +08:00
    如果没有明显的问题 就不要反驳的, 你们操心的点不一样, 她没必要都给你讲清楚, 或者讲懂才能让你这么做的... 不然 你就成领导了
    keakon
        6
    keakon  
       2019-08-30 18:44:06 +08:00
    @livid 标签多识别了一个引号
    sadfQED2
        7
    sadfQED2  
       2019-08-30 18:55:28 +08:00 via Android
    @luckylo 不应该是领导说得都对,锅你自己背吗
    zakokun
        8
    zakokun  
       2019-08-30 18:56:33 +08:00
    反正你内心坚持自己是对的就行了. 领导很多技术上也不是多厉害
    luckylo
        9
    luckylo  
       2019-08-30 19:01:40 +08:00 via Android
    @sadfQED2 按照领导的方案做,就可以怼回去
    sadfQED2
        10
    sadfQED2  
       2019-08-30 19:11:18 +08:00 via Android
    @luckylo 领导:我只是给你建议,现在出问题了,你说咋办吧[]
    securityCoding
        11
    securityCoding  
       2019-08-30 19:18:47 +08:00
    没见过 , unique 倒是可以
    luckylo
        12
    luckylo  
       2019-08-30 20:05:55 +08:00 via Android
    @sadfQED2 这个改动大,要两周才能搞好。(实际一周搞好,三天测试,两天摸鱼)
    likefly
        13
    likefly  
    OP
       2019-08-30 21:51:30 +08:00
    @sadfQED2 只能翻翻白眼了事了
    likefly
        14
    likefly  
    OP
       2019-08-30 21:52:43 +08:00
    @lenmore 回看了以前建的表,百分之十是这么搞的,我觉得他可能对索引有误解
    likefly
        15
    likefly  
    OP
       2019-08-30 21:53:37 +08:00
    @shoaly 问题确实是不会出问题,但是看了感觉不像是工作 10 年的人建的表。。。
    likefly
        16
    likefly  
    OP
       2019-08-30 21:54:06 +08:00
    @securityCoding 已经是主键了
    erenming
        17
    erenming  
       2019-08-30 22:37:19 +08:00 via iPhone
    不要你觉得,要我觉得
    pubby
        18
    pubby  
       2019-08-30 22:40:43 +08:00   1
    不了解应用场景,不评价。
    xiamx
        19
    xiamx  
       2019-08-30 22:42:09 +08:00
    都告诉你听他的就对了你咋还这多事儿呐
    iConnect
        20
    iConnect  
       2019-08-30 23:40:17 +08:00 via Android
    你问他“奥卡姆剃刀”原理,知道吗?
    Livid
        21
    Livid  
    MOD
    PRO
       2019-08-31 04:17:57 +08:00 via iPhone
    如果表上还有 partition,那么确实会需要把用于分区的列也放入主键。
    kxjhlele
        22
    kxjhlele  
       2019-08-31 07:36:48 +08:00 via Android
    我们的业务 常年 3 列为主键,类似时序内容,
    jinsongzhao
        23
    jinsongzhao  
       2019-08-31 08:32:24 +08:00
    @Livid 哇不错,学了一招。原来分区还需要这样
    jinsongzhao
        24
    jinsongzhao  
       2019-08-31 08:43:11 +08:00
    @likefly 如果是为了将来升级性能预留的设计,感觉这是超过 10 年工作经验的人才会考虑的问题吧。
    @Livid 果可能产生超多数据的表,岂不是都应该把时间加入主键。看来 hibernate 中复合键的各种操作,有必要玩得溜溜的,费那么大力气设计了这个功能,也从未看人抱怨还是有道理的。
    leeton
        25
    leeton  
       2019-08-31 09:12:05 +08:00
    反正背锅的是你
    jorneyr
        26
    jorneyr  
       2019-08-31 09:46:08 +08:00
    你行你上啊 ^_^
    ruhexiechengxu
        27
    ruhexiechengxu  
       2019-08-31 09:57:16 +08:00 via Android
    不要你觉得,要领导觉得
    sdot96
        28
    sdot96  
       2019-08-31 16:26:52 +08:00 via Android
    对数据表进行分区的列必须属于主键,可能是考虑以后数据量大了直接用 sys_date 做 range 分区
    Kenhengge
        29
    Kenhengge  
       2019-08-31 18:47:58 +08:00
    谁负责听谁的,人家要担负失败责任,你提出意见就尽到责了,采纳与否负责的人权衡。也许你的方案也行,但是条条大路通罗马,人家的方案成功过,风险可控,按他的路继续走无可厚非
    conn4575
        30
    conn4575  
       2019-08-31 20:08:25 +08:00
    可能是为了按时间分区
    whywhywhy
        31
    whywhywhy  
       2019-08-31 20:46:19 +08:00 via Android
    我们在用的 erp 系统,没有主键。。。sqlserver,没有主键。。。。

    ID 字段是 uuid
    likefly
        32
    likefly  
    OP
       2019-09-02 09:16:31 +08:00
    @jinsongzhao
    @sdot96
    受教了
    jinsongzhao
        33
    jinsongzhao  
       2019-09-02 13:41:15 +08:00
    @whywhywhy uuid 就是主键吧,可能是你们在导入导出数据时,重建表了,主键自动消失了。很多运维人员维护数据库时,也会把主键搞掉。
    whywhywhy
        34
    whywhywhy  
       2019-09-03 07:37:48 +08:00
    @jinsongzhao 我导入导出从不动表的,一般直接导整个数据库,看了很多表都是没主键。没看到有主键的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4612 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 10:01 PVG 18:01 LAX 02:01 JFK 05:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86