0

我正在为接下来要构建的旅游社交网络应用程序创建一个数据库。这是我迄今为止的工作。表名是不言自明的。我的问题是 - 这是一个好方法吗?我想听听您的意见和建议,以使该模型在数据组织和性能方面更好。

图片:

ER图左侧

ER图右侧

things_to_do -> events|places -> ...在分支中使用泛化是一种好方法吗?就目前而言,我必须至少进行 3 次连接才能获得有关特定地点的基本数据,甚至更多以获取其他信息。我应该为每个表创建单独的表things_to_do和新的多对多连接表以提高性能吗?当我说性能时,我强调搜索查询。我怎样才能使它可扩展?我应该使用其他数据库模型吗?

4

1 回答 1

1

当 ER 图描述数据的概念模型时,通常使用术语“泛化”和对应的术语“专业化”。概念模型参考主题描述数据的语义,而不预先判断哪种设计会更好。概念性 ERD 确实与数据分析有关,而不是数据库设计。

另一方面,您的图表显然是一份设计文件,而不是一份分析文件。它反映了您构建关系数据库而不是其他类型的意图。所以你的盒子代表表格,而不是更抽象的“实体”或实体之间的关系。

泛化/专业化在对象建模中有对应物,称为类型/子类型或类/子类设计。当需要以通过外键绑定在一起的表的形式实现类/子类模式时,设计在直观上并不明显,这种情况在数据库设计教程中经常被忽略。

您应该访问这三个标签,然后单击“了解更多”以获得您可能想要考虑的三种技术的概述:

您会在性能、易于编程和未来的适应性之间找到一个很好的平衡点。

于 2013-05-26T11:31:51.943 回答