› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
yakczh
V2EX  ›  MySQL

主键的名字是设置成 id 还是 $tablename_id ?

  •  
  •   yakczh · Jul 25, 2015 · 4718 views
    This topic created in 4086 days ago, the information mentioned may be changed or developed.

    比如 user 表,订单表 order_bill
    第一种

    user

      id
      username
      passowrd

    order_bill

      id
      trade_no
      subject
      uid

    第二种

    user

      user_id
      username
      passowrd

    order_bill

      order_bill_id
      trade_no
      subject
      user_id

    第一种方案的问题是如果表多了 ,id满天飞
    第二种方案如果表之间有引用的字段,名字会很长

    8 replies  •  2015-07-26 17:07:38 +08:00
    neutrino
        1
    neutrino  
       Jul 25, 2015
    第一种,要区分的时候写table_name.id即可,还有个好处是看到table_name_id就知道不是这个表的
    qqjt
        2
    qqjt  
       Jul 25, 2015
    偏爱第一种。写php比较多,大多mvc的php框架也是第一种,可以直接数据表对应model。
    fengyqf
        3
    fengyqf  
       Jul 25, 2015
    更倾向于
    [user]
    id
    name
    passwd

    [order]
    id
      trade_no
      subject
      uid


    select o.id,o.trade_no,trade.subject,o.uid,u.id as user_id,u.name
    from `order` u inner join `user` u on u.id=o.uid
    ....
    wingyiu
        4
    wingyiu  
       Jul 25, 2015
    第二种,sql join时可以用USING
    yakczh
        5
    yakczh  
    OP
       Jul 25, 2015
    第二种方案字段重名的概率很小,重名的外键可以用join来的using(xxx) 来拼接 更适合用程序来生成Sql

    比如传入参数 $_param=array('trade_bill_id|='=>111,'subject|like'=>'%xxx','user_id|='=>222);
    根据这些参数就可以生成sql

    而如果是 $_param=array('id|='=>111,'subject|like'=>'%xxx','uid|='=>222);

    在处理这个id字段的时候,就不知道是哪个表的
    jdlau
        6
    jdlau  
       Jul 26, 2015 via Android
    一般用第二种
    msg7086
        7
    msg7086  
       Jul 26, 2015
    从Rails的角度来看,两种都不行。

    应该是
    users: id, name, pass
    orders: id, subject, user_id
    xifangczy
        8
    xifangczy  
       Jul 26, 2015
    边写还要边去查看每个id叫什么名字,这很蛋疼。id就是id就完事了,第二种想法很好但会觉得过于啰嗦。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2512 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 13:12 · PVG 21:12 · LAX 06:12 · JFK 09:12
    ♥ Do have faith in what you're doing.