• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Ayanokouji
V2EX  ›  程序员

表名应该用单数,还是复数?

  •  
  •   Ayanokouji · Aug 13, 2023 · 9710 views
    This topic created in 1178 days ago, the information mentioned may be changed or developed.
    71 replies  •  2023-08-14 23:37:18 +08:00
    BaseException
    BaseException
    Aug 13, 2023 via iPhone
    1
    单数
    jlmzzz
    jlmzzz
    Aug 13, 2023
    2
    没见过用复数的
    lanlanye
    lanlanye
    Aug 13, 2023 via iPhone
    3
    我用复数,实际上随你喜欢……
    msg7086
    msg7086
    Aug 13, 2023
    4
    Rails 里都用的复数。一张数据表里存了多条数据也就是多个对象,用复数很正常。
    fox0001
    fox0001
    Aug 13, 2023 via Android
    5
    单数
    thinkershare
    thinkershare
    Aug 13, 2023❤️3
    6
    无关紧要的事情, 有时候用单数, 有时候用复数, 看心情.
    MIUIOS
    MIUIOS
    Aug 13, 2023
    7
    老外喜欢用复数, 单用单用复都没啥区别。。
    msg7086
    msg7086
    Aug 13, 2023❤️1
    8
    一般的规则是不要混用单复数,要么全用单数,要么全用复数。确定下来用哪种以后,就一直用这种,不要换。
    jaynsw
    jaynsw
    Aug 13, 2023 via Android❤️4
    9
    單數,因為表達的是類型。例如“用戶”
    kongkx
    kongkx
    Aug 13, 2023 via iPhone
    10
    项目内统一规范就好,php laravel 是 the "snake case", plural name 。js prisma 默认直接用 model name
    kkwa56188
    kkwa56188
    Aug 13, 2023❤️5
    11
    在 RESTful API 里, 资源用复数 例如 items/item_id. 这样一看到 名词复数 就知道是一个资源的集合

    在关系数据库里, 表名 没有那么强烈的要求用复数, 因为不会出现 像上例 一长串 url 里 容易 混淆的情况.

    反而关系数据库里 讲求的 一眼看出 是 实体表还是关系表, 所以可以做以下 最佳实践:
    1. 实体表 用单数, 甚至可以加上 _tbl 表示是实体表, 例如 : ITEM 或者 ITEM_TBL
    2. 关系表 用上两(多)个实体名称, 甚至 可以加上 _rel 表示是关系, 例如: Order_Item, 或者 Order_Item_Rel
    Leon406
    Leon406
    Aug 13, 2023❤️2
    12
    阿里规约是强制 单数, 个人认为也是单数
    lhbc
    lhbc
    Aug 13, 2023 via Android
    13
    单数
    因为指的是种类不是数量

    User 指的是用户
    Users 指特定的多个用户
    cpstar
    cpstar
    Aug 13, 2023
    14
    都有道理:
    User ,这个表存储的东西是用户
    Users ,这个表里存储了很多用户
    lingo
    lingo
    Aug 13, 2023❤️2
    15
    我用单数是因为不是每个词我都知道正经的复数怎么拼🤣
    反正公司项目随项目本身,自己的项目无所谓。
    veike
    veike
    Aug 13, 2023
    16
    规范用什么就用什么!
    PHP Laravel 里的默认是复数。
    veike
    veike
    Aug 13, 2023
    17
    @cpstar 数据表里存储的是多个用户的信息,所以使用复数。
    isbase
    isbase
    Aug 13, 2023
    18
    单数,表名表示的是存储的内容是什么,不是有多少个
    Xusually
    Xusually
    Aug 13, 2023 via iPhone
    19
    看约定规范吧,系统里都统一就行了。
    zjp
    zjp
    Aug 13, 2023
    20
    不可能因为表名是单数就认为表里只有一条数据,所以复数没有提供什么多余的信息
    zm2020
    zm2020
    Aug 13, 2023
    21
    根据之前用 Laravel 框架开发来看,里面默认的表名都是复数
    picone
    picone
    Aug 13, 2023❤️1
    22
    这个只要有统一规范就好。切勿一个人用单数,一个人用复数,写起代码来还得查一下是单数还是复数
    akira
    akira
    Aug 13, 2023
    23
    在一个项目里面 统一就行,具体看你喜欢
    IvanLi127
    IvanLi127
    Aug 13, 2023 via Android
    24
    我用了几个语言的 ORM ,一般是复数。
    IvanLi127
    IvanLi127
    Aug 13, 2023 via Android
    25
    表不是类,是记录行的集合。这样想就得是复数了。再怎么想表是 Array<Apple> 这样的存在吧。。。
    leonshaw
    leonshaw
    Aug 14, 2023
    26
    单数,不然当要做一些代码生成时就只能一个一个表列出来,或者写一堆单复数转换的规则和例外。
    lingo
    lingo
    Aug 14, 2023
    27
    @kkwa56188 还是你这个实在,区分实体表和关系表才是有用的。。单数复数讲真没提供一丝有用的信息(除非应用层有约定)。。统一就行了。
    FightPig
    FightPig
    Aug 14, 2023
    28
    @jlmzzz rails 里全是复数啊
    msg7086
    msg7086
    Aug 14, 2023
    29
    @leonshaw
    框架里早就有成熟的单复数转换了。
    Rails 从初版 1.0 起就有单复数转换,所以一直可以无压力使用复数表名。
    如果你用的框架没有单复数转换,那的确用单数表名会比较方便。

    @kkwa56188
    使用成熟的 ORM 以后一般不需要直接对接数据库,直接用 ORM 内置规则生成数据表就行了。
    比如你建一个 items 表,建一个 orders 表,然后只要 create_join_table :orders, :items 就能根据内置规则自动生成多对多关系表。关系表的名称会是 items_orders (每个关系表按照字母顺序排列,免得搞不清是 orders_items 还是 items_orders ),但这个表对程序员是不可见的,平时还是通过操作对象来获取关联数据。

    (当然,每个人/组/公司都有自己的最佳实践,自己用起来舒服就行了,不需要跟着别人乱改。)
    kkwa56188
    kkwa56188
    Aug 14, 2023
    30
    盲猜一下, 口口声声 ORM 的, 是不是 leetcode 的 SQL 题都刷不过中级? 开玩笑的. 狗头
    jlmzzz
    jlmzzz
    Aug 14, 2023
    31
    @FightPig 看来单复数都可以并且都有不少再用,我最近 Django 用的多,教程什么的也单数居多。可能这个问题需要指定语言或框架才比较意义,否则就随开发者喜好单复数都可以。
    mytsing520
    mytsing520
    PRO
    Aug 14, 2023
    32
    随我喜欢。
    不过,一旦确定,后面也遵循这个规则。
    itechify
    itechify
    Aug 14, 2023 via Android
    33
    能跑就行,单数复数都行,统一一种风格
    loading
    loading
    Aug 14, 2023
    34
    你可以用全拼名,没有单复数,哈。
    uxstone
    uxstone
    Aug 14, 2023
    35
    在实际业务中有些表名是直接用的汉语拼音,所以统一用单数。
    chenyu8674
    chenyu8674
    Aug 14, 2023
    36
    单数
    有些复数的英文不是简单加 s 的,有时容易第一眼看不出来
    netnr
    netnr
    Aug 14, 2023 via Android
    37
    我目前在用的一种规则
    sys_users
    sys_user_role
    docx
    docx
    Aug 14, 2023 via iPhone
    38
    用原型,表示内容是什么
    ccppgo
    ccppgo
    Aug 14, 2023
    39
    非母语就不跟风了, 跟楼上一样, 要是看不懂复数还得查一下啥意思, 老老实实单数代表类型
    varzy
    varzy
    Aug 14, 2023 via iPhone
    40
    我习惯按照 laravel 规范,很优雅~
    tomatocici2333
    tomatocici2333
    Aug 14, 2023
    41
    @Leon406 这思维导图可以分享一下吗 老哥
    wupher
    wupher
    Aug 14, 2023
    42
    看团队使用的规范,如果是你自己的独立项目,可随意。

    Rails 系一般使用复数
    dddd1919
    dddd1919
    Aug 14, 2023
    43
    如果使用的技术栈支持复数那当然是复数,遵照 restful 风格,比如 rails ,框架本身有单复数转换规则,不容易拼错
    如果不支持,单数还是更方便一点
    henryhu
    henryhu
    Aug 14, 2023
    44
    复数
    Govda
    Govda
    Aug 14, 2023
    45
    当然是复数,user = users::find(1); 用户(多个)里面找 ID 是 1 的
    英文有复数 那默认 user 是 object ,users 是 iterable
    这是中英文的区别,如果用中文就没有单复数区别了,用户就是用户,总不能表明叫“用户们”吧
    nothingistrue
    nothingistrue
    Aug 14, 2023
    46
    先有表( Table ),后又记录( Rows ),那表名就是专有名词,须单数。
    如果没有表,直接就是数据集合(典型的就是 Excel 数据),那表名就只是一个标记,应视数据集合本身的单复数性质来决定其单复数,通常是复数。
    Felldeadbird
    Felldeadbird
    Aug 14, 2023
    47
    我建议是单数,你作为新人入职公司,业务是读取用户表。这时候你写代码首先想到的是 users 还是 user ?

    总的来说还是要看公司规定。
    qiumaoyuan
    qiumaoyuan
    Aug 14, 2023
    48
    哈哈哈哈哈
    echoZero
    echoZero
    Aug 14, 2023
    49
    go ent 默认的是复数,单数要指定
    xz410236056
    xz410236056
    Aug 14, 2023
    50
    都 2023 年了,还在纠结回字的写法
    Huelse
    Huelse
    Aug 14, 2023
    51
    不可数的用单数,可数的用复数。
    表里有多少数据你是不知道的,但你取出来的时候是 limit 的。
    puras
    puras
    Aug 14, 2023
    52
    用单数,还加了前缀。。。
    kneo
    kneo
    Aug 14, 2023 via Android
    53
    随便,统一就行。一般来说使用单数会简单点。
    Daniel17
    Daniel17
    Aug 14, 2023
    54
    看你们规范,又不影响性能
    largezhou
    largezhou
    Aug 14, 2023
    55
    之前用 laravel ,按约定是用复数,后面觉得英文复数又不能简单的加 s ,还不如单数清晰
    hjq632233317
    hjq632233317
    Aug 14, 2023
    56
    单数 那用复数岂不是每个表就叫 xxxs ,很烦复数的 s 结尾,包括字段,有时候打代码都忘了自己设置的是负数还是单数了 还得再看一遍表 或者就是忘了自己设置的是复数 然后报错 很烦
    coolair
    coolair
    Aug 14, 2023
    57
    国外的项目都是复数,国内的项目乱七八糟,怎么用的都有,自己看着办。
    manasheep
    manasheep
    Aug 14, 2023❤️1
    58
    我觉得复数本来就是英语的糟粕,就跟汉语无意义的量词一样,做开发没必要还照搬这个。
    8355
    8355
    Aug 14, 2023
    59
    个人理解表名应该是名词 不是复数
    只有查多条数据的时候变量才用复数
    manasheep
    manasheep
    Aug 14, 2023
    60
    日程表/日程安排表 - Schedule/Planner
    任务清单 - To-do List
    会议议程表 - Meeting Agenda
    会议记录表 - Meeting Minutes
    项目计划表 - Project Plan
    项目进度表 - Project Timeline/Progress Report
    预算表 - Budget Sheet
    费用报销表 - Expense Report
    销售报表 - Sales Report
    客户信息表 - Customer Information Sheet
    员工信息表 - Employee Information Sheet
    考勤记录表 - Attendance Sheet
    学习计划表 - Study Plan
    笔记表格 - Note-taking Template
    目标设定表 - Goal Setting Worksheet
    问题追踪表 - Issue Tracking Sheet
    数据收集表 - Data Collection Form
    调查问卷 - Survey Questionnaire
    评估表 - Evaluation Form
    学习反馈表 - Feedback Form

    看看这里有多少表格名称用的是复数形式?

    而且编程是实用为先,复数尽可能不用,即使在处理多个实例时,也不一定要用复数表示变量和参数,因为这有可能给搜索造成障碍。
    FightPig
    FightPig
    Aug 14, 2023
    61
    @jlmzzz 这倒是,我主要一直用 rails 了,所以一直按 rails 的习惯,不管用啥写,表名全是复数的。只要团队遵循规则就行了,随便怎么搞。还接过好多项目二开,里面表直接拼音缩写的🐶
    AV1
    AV1
    Aug 14, 2023
    62
    我是避免用复数形式。如果是表示多个项目的集合,用 xxList 、xxArr 这样的后缀。
    因为复数形式还得考虑英语的不规则变化,比如
    activity vs activities
    foot vs feet
    ,不够统一。
    libook
    libook
    Aug 14, 2023
    63
    英语的复数是一种不可靠的变形规则,遇到特殊变形和单复同形的,就会很麻烦。

    可以采用单数形式,或者单数+List/Collection/Array 等后缀,具体采取哪种方案需要团队定个统一标准。
    kernelpanic
    kernelpanic
    Aug 14, 2023
    64
    单数
    model 一般跟表名对应, 如果 t_items, 变成了 Items, 那么 new Items() 是啥玩意? addItems 呢?
    bzj
    bzj
    Aug 14, 2023
    65
    用拼音怎么说
    fengpan567
    fengpan567
    Aug 14, 2023
    66
    随便
    maxssy
    maxssy
    Aug 14, 2023
    67
    国人喜欢用单数, 外国人喜欢用复数
    我站国人
    实际上我觉得复数这个语法都 TM 是扯淡
    Leon406
    Leon406
    Aug 14, 2023
    68
    @tomatocici2333 #41 自己看完阿里规约 ,总结才会印象深刻
    个人笔记 并不适合所有人, 周末花个一天就能有自己的思维导图
    cutiechi
    cutiechi
    Aug 14, 2023
    69
    单数
    cutiechi
    cutiechi
    Aug 14, 2023
    70
    可以看下 TPC-DS 或者 TPC-DS 里的
    cquan
    cquan
    Aug 14, 2023
    71
    小写加下划线就好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1718 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 149ms · UTC 17:09 · PVG 01:09 · LAX 09:09 · JFK 12:09
    ♥ Do have faith in what you're doing.