Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将两个表映射到一起的表应该命名为什么?_Sql_Database_Database Design_Naming Conventions_Data Modeling - Fatal编程技术网

Sql 将两个表映射到一起的表应该命名为什么?

Sql 将两个表映射到一起的表应该命名为什么?,sql,database,database-design,naming-conventions,data-modeling,Sql,Database,Database Design,Naming Conventions,Data Modeling,假设我有两张桌子: Table: Color Columns: Id, ColorName, ColorCode Table: Shape Columns: Id, ShapeName, VertexList 将颜色映射到形状的表格应称为什么? Table: ??? Columns: ColorId, ShapeId 映射表通常被称为映射表 ColorToShape ColorToShapeMap 中间表或连接表 我会根据您的喜好将其命名为“ColorShapes”或“ColorShap

假设我有两张桌子:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList
将颜色映射到形状的表格应称为什么?

Table: ???
Columns: ColorId, ShapeId

映射表通常被称为映射表

ColorToShape
ColorToShapeMap

中间表或连接表


我会根据您的喜好将其命名为“ColorShapes”或“ColorShape”

我通常听说这叫做连接表。我根据表连接的内容来命名表,因此在您的情况下,可以选择ColorShape,也可以选择ShapeColor。我认为形状有颜色比颜色有形状更有意义,所以我会选择
ShapeColor

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

与开发者艺术相关

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

我还听说使用了术语关联表


表的名称可能是
ColorShapeAssociations
,这意味着每行表示该颜色和该形状之间的关联。行的存在意味着颜色以该形状出现,形状以该颜色出现。具有特定颜色的所有行将是该颜色关联的所有形状的集合,而特定形状的行将是该形状所包含的所有颜色的集合

只要表格内容丰富,请随意命名:

COLOR_SHAPE_XREF

从模型的角度来看,该表称为连接/腐蚀/交叉引用表。我一直保持着在结尾使用外部参照的习惯,以使关系变得明显。

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

哦,我会称之为表ShapeColor或ColorShape,这取决于哪一个是更常用的表。

这是一个非常重要的表,它本身就非常重要

例如,火车和时间之间的多对多关系产生了时刻表


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

关于颜色形状映射样式纹理有趣的是,大约一半的答案给出了实现多对多关系的任何表的通用术语,另一半的答案建议了该特定表的名称

我一般称这些表为相交表

就命名约定而言,大多数人给出的名称是多对多关系中两个表的混合体。所以在这种情况下,“
ColorShape
”或“
ShapeColor
”,但我发现这看起来很做作和笨拙

Joe Celko在他的书《SQL编程风格》中建议以某种自然语言的方式命名这些表。例如,如果形状由颜色着色,则将表命名为
ColoredBy
。然后,你可以有一个图表,或多或少读起来像这样自然:

Shape <-- ColoredBy --> Color
形状颜色
相反,您可以说颜色为形状着色:

Color <-- Colors --> Shape
颜色形状
但这看起来像是中间的表与
Color
一样,具有复数命名约定。太令人困惑了


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

称之为交叉引用表

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)

我曾与称之为连接表的DBA合作过

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

“多个”表。我称之为“彩色形状”,反之亦然


世界上只有两件难事 计算机科学:缓存失效 给事物命名
——

为表示
多对多
关系的表起一个好名字,可以使关系更易于阅读和理解。有时候,找到一个好名字不是一件小事,但通常值得花些时间思考

例如:
阅读器
报纸

一份
报纸
有许多
读者
读者
有许多
报纸

您可以调用关系
NewspaperReader
,但是像
Subscription
这样的名称可能会更好地表达表格的内容

如果以后要将表映射到对象,则订阅的名称
也更为惯用


命名多对多
表的约定是关系中涉及的两个表的名称的串联<代码>颜色形状在您的情况下是一个合理的默认值。尽管如此,我认为Nick提出了两个很好的建议:
Style
Texture
很难回答像这样武断的问题,但我更喜欢tosh的想法,即以实际领域中的某个事物命名,而不是对底层关系的一般描述

对于域模型来说,这种类型的表通常会演变成更丰富的内容,并在链接外键之上和之外具有额外的属性

例如,如果除颜色外还需要存储纹理,该怎么办?扩展SHAPE_COLOR表以保持其纹理似乎有点古怪

另一方面,根据您目前的需求做出明智的决策,并准备在以后引入其他需求时进行重构,这也是值得一提的

尽管如此,如果我能洞察到后面会引入更多类似于曲面的属性,我会称之为曲面。如果不是的话,我可以把它称为形状、颜色或类似的东西,然后再讨论更紧迫的设计问题。