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

我应该如何命名一个将两个表映射在一起的表?[关闭]

  •  112
  • devuxer  · 技术社区  · 15 年前

    假设我有两张桌子:

    Table: Color
    Columns: Id, ColorName, ColorCode
    
    Table: Shape
    Columns: Id, ShapeName, VertexList
    

    我该如何称呼将颜色映射到形状的表?

    Table: ???
    Columns: ColorId, ShapeId
    
    24 回复  |  直到 8 年前
        1
  •  154
  •   Community CDub    8 年前

    只有两件困难的事 计算机科学:缓存失效 给事物命名
    —— Phil Karlton

    为表示 many-to-many 关系使关系更容易阅读和理解。有时,找到一个伟大的名字并不容易,但通常值得花些时间去思考。

    一个例子: Reader Newspaper .

    报纸 有许多 Readers 和A 读者 有许多 Newspapers

    你可以打电话给他们 NewspaperReader 但是一个名字 Subscription 可能会更好地传达桌子的内容。

    名字 订阅 另外,如果您希望稍后将表映射到对象,则更为惯用。

    命名的约定 多对多 表是关系中涉及的两个表的名称的串联。 ColourShape 在你的情况下是一个合理的违约。也就是说,我想尼克D came up with 两大建议: Style Texture .

        2
  •  31
  •   Nick Dandoulakis    15 年前

    怎么样 彩色形状图 风格 纹理 .

        3
  •  18
  •   Bill Karwin    15 年前

    有趣的是,大约有一半的答案给出了实现多对多关系的任何表的通用术语,另外一半的答案为这个特定表提供了一个名称。

    我叫这些桌子 交叉点表格 一般来说。

    在命名约定方面,大多数人给出的名称是多对多关系中两个表的组合。所以在这种情况下, ColorShape “或” ShapeColor “但我觉得这看起来很做作,很尴尬。

    JoeCelko在他的书“SQL编程风格”中建议以某种自然语言的方式命名这些表。例如,如果形状是用颜色着色的,则命名表 ColoredBy . 然后你可以得到一个或多或少自然读起来像这样的图表:

    Shape <-- ColoredBy --> Color
    

    相反,你可以说一个颜色给一个形状着色:

    Color <-- Colors --> Shape
    

    但这张桌子看起来和 Color 具有复数命名约定。太混乱了。

    可能最清楚的是使用 染色的 命名约定。有趣的是,使用被动语态使命名约定更加清晰。

        4
  •  17
  •   OMG Ponies    15 年前

    无论您喜欢什么名称,只要它是信息丰富的:

    COLOR_SHAPE_XREF
    

    从模型的角度来看,该表称为join/corrollary/cross-reference表。我一直保持使用的习惯 _XREF 最后让关系变得明显。

        5
  •  6
  •   Ed Guiness    15 年前

    这是一个 Associative Entity 它本身就非常重要。

    例如,列车和时间之间的多对多关系产生了一个时间表。

    如果没有明显的新实体(如时间表),那么约定是将这两个词放在一起,赋予颜色或类似的形状。

        6
  •  4
  •   Bill the Lizard    15 年前

    我经常听到那叫交接台。我根据表的连接来命名它,所以在您的例子中,要么是colorshape,要么是shapecolor。我觉得有颜色的形状比有颜色的形状更有意义,所以我会选择 ShapeColor .

        7
  •  4
  •   Dafydd Rees    15 年前

    我和DBA合作过,他们称之为 连接表 .

    颜色-形状是相当典型的-除非关系有明确的特定域名。

        8
  •  4
  •   priyanka.sarkar    15 年前

    Junction table

    Bridge Table

    Join Table

    Map Table

    Link Table

    Cross-Reference Table

    当我们使用多对多关系时,就会用到这一点,其中两个表中的键构成连接表的复合主键。

        9
  •  3
  •   user151323    15 年前

    映射表通常被称为映射表。

    ColorToShape
    ColorToShapeMap
    
        10
  •  3
  •   Neil N HLGEM    15 年前

    中间桌 或A 连接表

    我会根据你的喜好把它命名为“彩色形状”或“彩色形状”

        11
  •  3
  •   Palindromer    8 年前

    我建议使用实体名称的组合并用复数形式表示。因此,表名将表示连接“多对多”。

    在你的情况下:

    颜色+形状=颜色形状

        12
  •  2
  •   Charles Bretana    15 年前

    我也听过这个词 联想的 表使用。

    您的桌子的名称可能是 ColorShapeAssociations 也就是说,每一行表示该颜色和该形状之间的关联。行的存在意味着颜色是以那个形状出现的,而形状是以那个颜色出现的。具有特定颜色的所有行将是与该颜色关联的所有形状的集合,而特定形状的行将是形状所包含的所有颜色的集合…

        13
  •  2
  •   Holger Schmeken    11 年前

    一般来说,大多数数据库对索引、主键等都有某种命名约定。在PostgreSQL中,建议使用以下命名:

    • 主键:tablename_columnname_ 钥匙
    • 唯一约束:tablename_columnname_ 钥匙
    • 排他约束:tablename_columnname_ Excel
    • 其他用途索引:tablename_columnname_ IDX
    • 外键:tablename_columnname_ 费基
    • 序列:tablename_columnname_ SEQ
    • 触发器:tablename_actionname_after_before_ 三桅帆船

    您的表是我的链接表。为了与上面的命名保持一致,我将选择以下选项:

    • 链接表:TableName1_TableName2_ LNK

    在表对象列表中,链接表将位于TableName1之后。这在视觉上可能更吸引人。但是您也可以选择一个名称来描述链接的目的,就像其他人建议的那样。这可能有助于缩短ID列的名称(如果您的链接必须有自己的命名ID,并且在其他表中被引用)。

    • 或喜欢的表:目的名称_ LNK
        14
  •  1
  •   rein    15 年前

    我一直偏爱“汉堡包桌”这个词。不知道为什么-听起来不错。

    哦,我会根据哪个是更常用的表来命名table shapecolor或colorshape。

        15
  •  1
  •   gbn    15 年前

    “很多”桌子。我称之为“彩色形状”,反之亦然。

        16
  •  1
  •   Joe Holloway    15 年前

    很难回答这样武断的问题,但是我倾向于用实际领域中的某个东西来命名它,而不是用一些基本关系的一般描述。

    这类表通常会演变为更丰富的领域模型,并在链接的外键之上和之外附加属性。

    例如,如果除了颜色之外,还需要存储纹理怎么办?扩展“形状颜色表”以保持其纹理似乎有点奇怪。

    另一方面,也有一些话要说,根据您现在的需求做出一个明智的决定,并准备在以后引入额外的需求时重构。

    尽管如此,如果我能洞察到以后会有更多类似于曲面的属性引入,我会称之为曲面。如果不是的话,我会毫不犹豫地称它为“形状-颜色”或类似的东西,然后转向更紧迫的设计问题。

        17
  •  1
  •   mafu    15 年前

    也许只是 ColoredShape ?

    我不确定我知道这个问题。这是关于这个特定的案例,还是你在寻找一般的指导方针?

        18
  •  0
  •   DOK    15 年前

    我会用被连接的表的确切名称命名它=colorshape。

        19
  •  0
  •   j.a.estevan    15 年前

    鉴于开发者艺术的相关内容,

    ColorShape
    

    将是一种常见的命名约定。在ER图中,它是一个关系。

        20
  •  0
  •   EvilTeach    15 年前

    称之为交叉引用表。

    XREF_COLOR_SHAPE
    (
         XCS_ID INTEGER
         C_ID   INTEGER
         S_ID   INTEGER
    )
    
        21
  •  0
  •   Marius Burz    15 年前

    我会用 r_shape_colors r_shape_color 取决于它的意义。
    r_ 会替代 xref_ 在这种情况下。

        22
  •  0
  •   magnus    15 年前

    我投的是最能描述表格的名字。在这种情况下,可能是 ShapeColor 但在许多情况下,不同于串联的名称更好。我喜欢可读性 也就是说没有后缀,没有下划线,也没有前缀。

        23
  •  0
  •   monojohnny    15 年前

    我个人会选择颜色和下划线:只是因为我已经看到这个惯例出现了很多。[但同意这里的其他帖子,这样做可能有更多的“诗意”方式]。

    请记住,外键也应该建立在这个连接表上,它将引用颜色和形状表,这也有助于识别关系。

        24
  •  0
  •   Breeno    9 年前

    我经常看到的一个我个人喜欢的加入桌子的惯例是“颜色-形状”,我听过人们用通俗的话说就是“对峙桌子”。

    一目了然,这张表代表了一种多对多的关系,并且有助于避免(尽管很少见)在您试图连接两个可能形成复合词的单词时出现混淆的情况,例如“butter”和“milk”可能成为“butter milk”,但如果您还需要表示一个名为“butterm”的实体,该怎么办?是吗?

    这样做,你会得到“黄油牛奶”和“酪乳”——没有混淆。

    另外,我想在最初的问题中有一个foo战斗机的参考。