database - 使用地址设计数据库的最佳实践

标签 database database-design

我正在研究一个设计案例,他们讨论如何处理一个已经在开发中的系统的数据库设计。该系统用于管理公共(public) parking 场。主要争论是如何满足以下要求:

  1. 系统应允许管理每个 parking 公司的信息。

  2. 存储的数据是 parking 场的地址(详情、省、县、区)、名称、企业标识、车位数量。

  3. 系统应处理每次 parking 产生的收入报告。

这些报告应该允许按省过滤,因为公司有多个按省 parking ,其中一些位于同一地区。

有人提到ParkingLot 表必须有省、县、区的列,这是每个 parking 场的特征。

其他人说不应该。我想知道在这个特定点上,哪种方法是处理数据库设计的最佳方法。 这归结为我的问题,在这种情况下(因为必须有异常(exception))系统非常简单,这真的重要吗?

如果这些报告允许按省过滤会怎样?由于一个公司可能在同一个省有多个 parking 场,其中一些位于同一地区。

最佳答案

根据您的要求,您需要决定建模什么。

选项 1 - parking 场上的柱子

如果您将 provincecountydistrict 的列添加到 ParkingLot 表,那么您正在建模每个 parking 场都有这些东西。

在这种情况下,您的模型不包括区、县和省的主列表。您将无法验证为特定批处理输入的详细信息是否有效。

如果您从可信来源或您所在地区等处获得 parking 场,请选择此选项。此选项不允许您存储任何其他信息。例如如果您需要针对特定​​区域存储“区域经理”,您将无处存储它。

选项 2 - 示范区、县和省

您可以为地区 创建表。这些将有他们 parent 的外键。在这种情况下,您确实有一个主列表(您需要及时更新)。

然后在每个 parking 场上,您都有一个指向 district 的外键(这意味着其他列)。

如果您想根据主列表验证地区等,请选择此选项。如果您有额外的信息要针对 district 等存储,也请选择此选项。

关于database - 使用地址设计数据库的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620952/

相关文章:

python - 通过适配器而不是 REST 查询 CouchDB 更快吗?

MySQL Multi-Tenancy 应用程序 - 太多表和性能问题

mysql - 存储单向好友关系的紧凑方式?

c# - 我应该将站点的 ASP.NET Identity 数据库与站点的 "other data"数据库分开吗?

database-design - 为什么 LDAP 不流行?

c# - 学习使用数据库——从 Web 到桌面应用程序

java - android中获取数据库信息时出现NullPointerException

python - sqlite中的变量表名

sql - 在多对多联结表中强制执行唯一行

python - Django - South - 有没有办法查看它运行的 SQL?