likefly
V2EX  ›  数据库

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

  •  
  •   likefly · Aug 30, 2019 · 5484 views
    This topic created in 2626 days ago, the information mentioned may be changed or developed.

    PRIMARY KEY ('sys_id', 'sys_date')

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

    怎么破?

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

    ID 字段是 uuid
    likefly
    likefly
    OP
    Sep 2, 2019
    32
    @jinsongzhao
    @sdot96
    受教了
    jinsongzhao
    jinsongzhao
    Sep 2, 2019
    33
    @whywhywhy uuid 就是主键吧,可能是你们在导入导出数据时,重建表了,主键自动消失了。很多运维人员维护数据库时,也会把主键搞掉。
    whywhywhy
    whywhywhy
    Sep 3, 2019
    34
    @jinsongzhao 我导入导出从不动表的,一般直接导整个数据库,看了很多表都是没主键。没看到有主键的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1556 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 06:36 · PVG 14:36 · LAX 22:36 · JFK 01:36
    ♥ Do have faith in what you're doing.