首页 > 解决方案 > 对此 ERD 的一部分进行建模的不同方法

问题描述

我有一个非常简单的表格图,来自对我的应用程序进行建模。问题是我第二次猜测 Vendor 和 VendorOrder 之间的关系。VendorOrders 表应存储系统中的所有供应商订单。要获得某个公寓的所有订单,您只需使用 PK 和 FK 关系来收集该数据。整体设计有什么我应该改进的吗?

图表: 1

标签: sql

解决方案


我认为您可以通过做三件事来改善这一点。

  1. 在您的 Apartment 和 Resident表之间创建一个名为 ApartmentResidents 的交集表,其中每个表引用具有一对多关系的交集表。在这个 ERD 中,它只允许一个居民注册到公寓。如果居民在此数据库的整个生命周期内居住在多个公寓中,您需要将他们注册为全新的居民。 交点表示例
  1. 在您的供应商表中,我不会使用名称作为主键,而是创建一个 id。使用具有实际价值的东西作为主键可能会因为多种原因而变得混乱:
  • 如果两个供应商具有相同的名称,例如“Johnson's Repair”,则您需要将其中一个拼写错误才能成为有效的密钥。
  • 如果您拼写了供应商的名称,您还将在外键表中包含对该拼写错误的引用(如果您为正确的拼写执行选择查询,这也可能使其不会显示在结果中)。
  • 将索引放在字符串上的性能不如将索引放在自动递增的整数键上。
  1. (可选)我通常将我的数据库表命名为复数形式,例如“Apartments”或“Vendors”。它使 SQL 语法读起来更像是查询中的一个句子。如果我没记错的话,这也是 SQL 的创建者在语法设计中所追求的事情之一。

推荐阅读