ruby-on-rails - 数据库 - 动态表选择

标签 ruby-on-rails database database-design

我有一个奇怪的问题,似乎无法在任何地方找到答案。我正在构建一个小型 Rub​​y on Rails 应用程序来计算电费。

为此,我需要知道一个人的关税是多少,这对于正常关税来说是可以的。 (例如,通常人们白天和黑夜的每千瓦成本都是固定的 => 包含每种关税类型静态数据的关税表)

但我的问题是有些人现在使用所谓的动态关税。所以基本上每小时成本都会根据电网的总体需求而上升或下降。所以现在我同时拥有静态关税数据和动态关税数据。

我在想这样的事情:
客户表 => ID、姓名、TariffID 等等
关税表 => ID,类型
静态关税表 => ID、每千瓦成本、TariffID 等
动态关税表 => ID、每千瓦成本、时间戳、TariffID

然后根据关税表中的关税类型,我会知道使用静态表还是动态表。

此外,我需要记录每个动态关税的时间戳,以计算一天中每小时的成本与一天中每小时的用电量,但我不需要静态关税;)

对我来说这看起来有点沉重,我想知道是否有人可以提出更微妙的解决方案?

提前致谢

谢默斯

最佳答案

您可能想继续阅读 Single Table Inheritance - 这似乎是一个很好的用例。

在这个 Stack Overflow question 中有很多关于它的好信息

您似乎想要一个关税表、一个包含所有通用代码的 Tariff 类,然后是一个继承自 Tariff 的 StaticTariff 和 DynamicTariff 类。这样,您可以覆盖子类中的方法来计算每小时成本。 StaticTariff 很容易,因为它可能会返回数据库中的列值,而 DynamicTariff 可能需要根据日期/时间进行计算。

两者之间的任何共享代码都可以安全地放置在您的父 Tariff 类中,您应该在路上。

关于ruby-on-rails - 数据库 - 动态表选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750171/

相关文章:

mysql - 加入或不加入,数据库结构

oracle - 征求意见: One sequence for all tables

ruby-on-rails - 如何使用 ActiveRecord 按书籍数量对作者进行排序?

c# - 将数据库表传输到类/类到数据库表

ruby-on-rails - 如何使用 FactoryGirl 初始化名为 'sequence' 的列

c# - 一个 ASP.net 网站/项目可以有超过 1 个数据库吗?

php - 如何将表的行从一个数据库插入到另一个数据库(使用两个 PDO)

mysql - 主键作为外键

ruby-on-rails - 将大型数据集导入 MongoDB 的最佳实践是什么?

ruby-on-rails - 接受父模型的嵌套属性