我想在此类型中存储的信息类型为:“330.30欧元/吨”或“25.15美元/公斤”。
所以,基本上:
在进行查询时,我想直接访问成员,例如“selling_price.price”或“selling_price.currency”。
我希望能够按照这个领域进行排序......我知道,这会产生许多问题,因为我们需要转换货币和重量单位。
一种解决方案是添加第四个元素,以标准格式存储相同的信息(例如usd / kg作为浮点数),按此排序,然后在我们更新货币汇率时更新此信息。
所以,基本上,这个自定义类型(我们称之为PRICE_PER_UNIT)会存储:
此字段的排序必须由标准化字段完成,作为浮点数。
由于我之前从未在SQL中做过类似的事情,所以我不知道如何开始使用这些......任何人?
答案 0 :(得分:1)
PostgreSQL支持CREATE TYPE来创建复合类型。我认为这是你开始的最佳场所。
答案 1 :(得分:1)
除非你使用的是beta 9.1版本,否则请避免像瘟疫这样的PostgreSQL类型。更新它们是一件非常痛苦的事情,直到9.1,您才能在枚举中添加或删除值或更改属性。对于其他版本,您只能重命名,更改所有者和更改架构。
您可能需要谨慎存储用于分类的“标准化”价格。在这里,我假设您正在谈论将所有内容存储为(比如)每公斤美元。只要货币汇率发生变化,您就必须更新表格中的每一行。相反,您可能希望将货币的转换因子存储为USD,并将权重的转换因子存储为kg,然后根据计算的值进行排序(来自货币和权重类型表的转换因子将连接到您的数据表)。