【问题标题】:Best practices for designing databases with addresses设计带有地址的数据库的最佳实践
【发布时间】:2015-11-10 10:31:37
【问题描述】:

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

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

  2. 存储的数据是停车场的地址(详细信息、省、县、区)、名称、公司标识、车位数量。

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

这些报告应该允许按省份过滤,因为该公司有多个按省份划分的停车场,其中一些位于同一地区。

有人提到,表ParkingLot必须有省、县、区的列,并且是每个停车场的特征。

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

如果这些报告应该允许按省份过滤怎么办?由于一家公司可能在同一个省份拥有多个停车场,其中一些位于同一地区。

【问题讨论】:

  • 区总是在县内,县总是在省内吗?或者它们会以奇怪的方式重叠吗?
  • @WW。一个省有多个县,一个县有多个区,始终按此顺序排列。例如,您不能有省、国家、区、县。
  • 注意,加利福尼亚州旧金山市和县在县内有一个城市。目前尚不清楚加利福尼亚是否属于您的职权范围内的一个省;听起来有点像你可能在加拿大工作。您是否需要担心国际地址结构?
  • @JonathanLeffler,我缺乏足够的地理知识,但我认为这种情况意味着一个省可以有一个或多个 Conties,而 Conties 又可以有一个或多个地区。此外,它似乎只与“本地”地址有关,也就是说没有国际结构。

标签: database database-design


【解决方案1】:

根据您的要求,您需要决定要建模的内容。

选项 1 - ParkingLot 上的列

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

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

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

选项 2 - 示范区、县和省

您可以为provincecountydistrict 创建表。这些将具有其父母的外键。在这种情况下,您确实有一个主列表(您需要保持最新)。

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

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

【讨论】:

  • 完美解释了两者的区别!非常感谢您的洞察力,我会记住它们。
猜你喜欢
  • 2011-11-30
  • 2011-11-23
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
相关资源
最近更新 更多