V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
reaCodes
V2EX  ›  程序员

MySQL 如何设置一张表有两个不相关的主键,这两个主键分别都可以确定一条记录

  •  
  •   reaCodes ·
    zhatlas · 2020-04-08 16:46:00 +08:00 · 1116 次点击
    这是一个创建于 1480 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如学生学号和姓名,学号列不能重复,姓名列我也想不要重复
    jowan
        1
    jowan  
       2020-04-08 16:48:59 +08:00   ❤️ 1
    主键只有一个
    你可以设置学号为 primary key 姓名设为 unique
    shenlanAZ
        2
    shenlanAZ  
       2020-04-08 16:49:04 +08:00
    unique
    rabbbit
        3
    rabbbit  
       2020-04-08 16:51:00 +08:00   ❤️ 1
    sql 初学者的想法,可能有错误:
    1 不要拿学号和姓名当主键.
    2 给学号设置 UNIQUE
    3 姓名可能会重复吧,不建议 UNIQUE
    arthas2234
        4
    arthas2234  
       2020-04-08 16:55:02 +08:00
    建立唯一索引
    saulshao
        5
    saulshao  
       2020-04-08 16:55:25 +08:00   ❤️ 1
    你说的,一个叫主键,另外一个叫唯一索引......正如#3 提醒的,姓名的重复率其实非常高......
    b821025551b
        6
    b821025551b  
       2020-04-08 16:57:37 +08:00   ❤️ 1
    数据库设计守则之一:不要拿任何业务字段去设主键
    reaCodes
        7
    reaCodes  
    OP
       2020-04-08 16:58:19 +08:00
    @b821025551b 我是初学者,能详细说一下么
    b821025551b
        8
    b821025551b  
       2020-04-08 17:03:28 +08:00
    @reaCodes #7 3L 说的很对了,搞数据库的时候所有表增加一个 id 字段,当自增主键就好,千万别用业务字段去做主键;
    另外如果是初学者的话,实际应用中和书本上还有挺多区别的,常见的就是别用外键,别用 enum,别用 float 。
    jjianwen68
        9
    jjianwen68  
       2020-04-08 17:21:42 +08:00
    偌大的学校,还不准有几个同名的人吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5140 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:49 · PVG 11:49 · LAX 20:49 · JFK 23:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.