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表以保持其纹理似乎有点古怪
另一方面,根据您目前的需求做出明智的决策,并准备在以后引入其他需求时进行重构,这也是值得一提的
尽管如此,如果我能洞察到后面会引入更多类似于曲面的属性,我会称之为曲面。如果不是的话,我可以把它称为形状、颜色或类似的东西,然后再讨论更紧迫的设计问题。
或