【问题标题】:Database design to filter report by address location数据库设计以按地址位置过滤报告
【发布时间】:2015-11-11 19:27:56
【问题描述】:

考虑我正在为管理停车场的数据库建模的情况。

  • 实体:CompanyParkingLotLocationVehicleReports
  • 一个Company 有多个ParkingLots,一个ParkingLot 一次可以有多个Vehicles
  • ParkingLot 位于一个区,属于一个县。一个县可以有一个或多个区,为此我决定在名为Location 的表中使用递归关系。
  • Reports 是为 ParkingLots 计算收入而制作的,我假设它是按月计算的,因为文本没有指定。
  • Reports应该可以按县过滤,即从第2县的地段中选择本月的所有收入。

请原谅我丑陋的图表,但这是我提供的解决方案。

我进行了一些基本测试,这似乎是可以接受的解决方案,但我担心我的模型能否支持我提出的最后一点。这是获取县停车场的报告。停车场不是分配给县,而是分配给区(分配给各自的县)。

这是一个可行的解决方案吗?我是否有一些严重的疏忽?

编辑:

是否可以获得 FK id_location 与 FK located_at = PK id_location (county) 匹配的所有地段?

EDIT2:

虽然递归表可能有点复杂,但不同表上地址的不同部分是否需要相同数量的步骤来生成报告?

在递归中:获取所有选定县的地区,然后为这些县的每个停车场获取存储的报告。

County and District Table:我仍然需要获取所有县区的列表才能获得报告列表。不过,这个模型的查询不会那么混乱。

还将report_date 添加到报告表中。

【问题讨论】:

    标签: database database-design data-modeling erd


    【解决方案1】:

    一些cmets:

    • REPORT 需要是表吗?您是否应该在车辆表中记录每辆车支付的金额?如果是这样,您可以通过查询创建报告,并且不需要REPORT 表。
    • LOCATION 上使用递归关系比使用显式表时更难查询。您真的需要这种复杂性吗?
    • 如果您确实需要REPORT 表,那么您最好在其中放置一个月,否则您只能存储一个月的数据。

    【讨论】:

    • 因为这个案例的范围纯粹是面向数据库的,我没有找到其他方法来表示报告的概念,同样文本没有指定它是否需要是一个表格,我'我当然会考虑你的观点。对于递归关系我是根据下面的文章来决定的; tomjewett.com/dbdesign/dbdesign.php?page=recursive.php我还在表格中添加了一个报告日期(月份),因为您说的很对。
    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多