代码之家  ›  专栏  ›  技术社区  ›  Zombies

多对多交叉表的正确表命名约定

  •  27
  • Zombies  · 技术社区  · 15 年前

    我有一个多对多关系:客户机和代理表(只是一个例子)。显然,每个客户可以有多个代理,每个代理可以有多个客户。Intersect表的正确命名约定是什么?是不是客户经纪人…?

    6 回复  |  直到 7 年前
        1
  •  10
  •   Michael Todd    15 年前

    我通常使用两个联接表的名称。

    所以,在你的情况下,客户经纪人。

        2
  •  36
  •   FrustratedWithFormsDesigner    15 年前

    我更喜欢“客户-经纪人”(用复数形式表示多对多)。

        3
  •  15
  •   Justin Meyer    15 年前

    我更喜欢区分交叉表和实际事务表。 所以,我用地图结束它们。所以它将是客户机代理程序映射,或者是客户机代理程序映射。

        4
  •  8
  •   froadie    15 年前

    我经常看到“客户-经纪人”的格式

        5
  •  6
  •   wpjmurray    15 年前

    有些程序员不喜欢使用复数形式的表名,原因如下:

    • 它打破了“是”规则,这意味着如果您有一个名为“用户”的表,那么表“中的每个记录都是一个“用户对象”。这遵循对象方向规则。
    • 模型类通常以其数据来自的表命名。因此,如果您有一个用户模型,那么由该模型表示的记录在用户表中。

    如果您控制项目的整个DB和业务层,这就非常有意义。然而,许多框架现在都有ORM库,可以方便地处理表和关系。这些ORM库通常有一个命名语法,应该遵循这个语法,让ORM库完成大部分繁重的工作。

    例如,我在PHP中使用了KohanaMVC框架,它提供了一个ORM库。ORM建议使用复数形式的表名,使用所有小写名称,并对多到多个表名使用下划线。因此,对于您的示例,您有以下表格:客户、经纪人和经纪人客户(ORM建议按字母顺序排列多对多表的表名)。为这些表创建模型(扩展ORM模型)时,使用表名的奇异值,因此客户机的模型将是客户机。ORM处理复数转换。Kohana的ORM还使用了一个拐点库,因此可以正确处理异常的复数形式值。例如,名为“categories”的表可以使用模型名“category”。最后,如果您已经实现了一个DB结构,但是想要使用ORM库,那么您可以重写默认的ORM表命名语法,并给它指定您想要使用的表名。

        6
  •  5
  •   Bri    7 年前

    我正处于一个项目的中间,在这个项目中,我用describe获取表名和字段名。我会使用客户机代理,这样我就可以轻松地找到一个表,并使用 _x_ 作为一个标准,一个字符串在代码或数据集中不会自然出现,不管怎样,也不会出现在我的字符串中,很容易用strp查找单个表的名称。此外,只要我是一致的,我就可以从表名(包括主键名)中获得很多信息。对不起,A,迟到了,B,继续。:)