关系数据库模式 - 关系和外键

时间:2016-05-26 06:30:40

标签: sql foreign-keys schema relational-database

在以下情况中,我很难理解何时在实体之间建立关系:

如果我有一些具有外键的实体,比如一个名为node_id的字段,它代表一个音符的id,以及一个Notes实体,是否有必要在这些实体之间建立关系?

这是我的架构的一个子集,可能更明确 Schema

3 个答案:

答案 0 :(得分:2)

您似乎对实体,关系,图表,表格和FK感到困惑。

在这种ER图表(原始图表)中,框表示适用类型,菱形表示关系/关联类型。 (ER中的“R”表示关联意义上的“关系”。)每种类型都有一个表格。从菱形到方框的线表示引用实体在关联中的参与。它们对应于引用实体表的关联表中的FK。

注意:根据信息建模方法或它的表示,“关系”有时意味着“关联”,有时意味着“外键”,有时意味着在该图中将在其中间具有关联菱形的线风格。

(一些图表方法允许“关联实体”。关联实体是从某个关联中的参与者列表形成的实体。这样的实体可以参与进一步的关联。这对应于由来自实体ID的实体ID组成的复合FK。这意味着形成关联实体的实体不仅必须参与进一步的关联,而且还必须参与原始关联。没有关联实体,图表不能表达这种关联。当你参与图表时在另一个关联中,您不需要明确表达其组成实体在进一步关联中的直接参与,也不需要相应的直接FK。)

答案 1 :(得分:1)

在实体关系模型中,外键约束强制执行关系中设置的实体的类型。因此,如果你有一个FK,这意味着也有一个关系。但不要混淆两者--FK是一个二元子集关系,它强制实施一个实体集,一个关系是一个n元关系,可能涉及多个不同的实体集(以及多个FK约束)。

您的示例描述了与Notes的显式关系,应在图表中显示。

答案 2 :(得分:0)

如果将字段设置为外键,则表示您已在数据库中的两个表之间设置关系,因此我假设您的问题仅与架构表示有关。

答案是肯定的。如果从表A到表B有外键,则意味着表A中的行与表B具有连接,并且在模式中,您需要指定并可视化此连接。

模式是有用的,因为它们可以快速准确地解释您的数据库结构,如果省略关系,有人阅读您的方案可能无法理解为什么有某些字段或者可能找不到创建需要该方法的查询的最佳方法关系。

错误的架构或不完整的架构实际上是无用的