第 3 章. 重新审视建模决策
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
图形建模是一个直观的过程,需要清楚了解业务中的用例。它不同于关系模式设计,其灵活性和缺乏固定规则的特点一开始可能会让人感到困惑,但当你习惯了这一过程,你就会发现这是一项有益的练习。
你将使用在第 1 章中创建的图来尝试下面的一些查询。
这取决于
假设你得到了一个包含曲目、专辑、艺术家及其流派的数据集,你想为关系数据库管理系统(RDBMS)设计一个模式。您可能会应用熟悉的归一化规则集1最后得到一个类似的结构模型--表名和列名可能会有所不同--如图 3-1 所示。
图 3-1. RDBMS 的模式
如何将其建模为图形?作为一个经验丰富的图形建模者,你的回答应该是:"这要看情况!"真的吗?是的,真的。图3-2至图3-4展示了三种图形模型,它们都是有效的。
图 3-2. 模型 A 将流派作为艺术家的属性建模。
图 3-3. 在模型 B 中,流派是节点,专辑是属性。
图 3-4. 模型 C 以TRACK_VERSION 为节点,以流派为标签
如果在数据集中添加更多实体,可能的模型数量就会增加。没有哪个模型是不正确的;它们是否合适取决于使用情况。这就是为什么作为一名经验丰富的图形建模人员,你接下来要说的是:"你想让图形回答什么问题?用例决定了哪种模型最适合回答您对图提出的问题并执行高效查询。
提示
我们强烈建议你,像对待其他事情一样,保持简单。建模要适可而止,不要过早优化。
您可以随时重构您的图模型;这并不被视为一种反模式。图模型应随着业务的变化而不断发展。当发生以下情况时,您可能会发现自己主要在重构:
-
新型数据
-
新用例
-
数据量急剧增加
-
业务领域发展或变化
如果图3-2至图3-4中的所有模型都有效,您应该选择哪一个?哪个才是 "正确 "的?这取决于您的用例!现在,您的主要用例是
-
根据曲目艺术家查找专辑中的曲目。
-
查找艺术家的所有曲目及其所在专辑。
-
只要列出了艺术家,也会列出艺术家的流派。
图 3-2中的模式 A 将有效。专辑、艺术家和曲目被建模为节点。它没有将流派作为任何查询条件的一部分;流派只是一个返回属性,并以此建模。在模型 B 和 C 中,将流派作为节点或标签建模是多余的。
让我们继续使用相同的数据,但尝试两种不同的使用情况:
-
查找一个或多个流派的所有艺术家,并返回他们的曲目和专辑。
-
查找共享流派的艺术家。
图 3-4所示的模型 B 适用于这些任务。由于流派被建模为节点,因此查询可以从它们开始,也可以遍历它们。专辑并不重要,因此它可以作为曲目的一个属性开始,直到它变得重要为止。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access