V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
likefly
V2EX  ›  数据库

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

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

    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
       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   ·   实用小工具   ·   1069 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:56 · PVG 06:56 · LAX 14:56 · JFK 17:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.