Ruby on rails 轨道;多态性中的1:1关系

Ruby on rails 轨道;多态性中的1:1关系,ruby-on-rails,database-design,Ruby On Rails,Database Design,我很少看到多态设计在数据库模式中有一个关系 我只想在发票项目与其他项目之间实现1:1关系(下标项目或使用项目) 我知道多态关系不是好的设计 如果没有多态性,我如何实现1:1关系 我应该将FK也设置为PK(保证唯一性)还是对其设置唯一约束? SubscriptionItems -------- - id - title - period_start - period_end UsageItems -------- - id - title - description InvoiceItems

我很少看到多态设计在数据库模式中有一个关系

我只想在
发票项目
与其他项目之间实现
1:1
关系(
下标项目
使用项目

我知道多态关系不是好的设计

如果没有多态性,我如何实现1:1关系

我应该将FK也设置为PK(保证唯一性)还是对其设置唯一约束?

SubscriptionItems
--------
- id
- title
- period_start
- period_end

UsageItems
--------
- id
- title
- description


InvoiceItems
--------
- id
- itemable_id
- itemable_type (either a subscription_item *or* a usage_item)
下标

    #model subscription_item.rb
    ---
    has_one  :invoice_item
    ---
UsageItem

    #model usage_item.rb
    ---
    has_one  :invoice_item
    ---
发票项目

    #model invoice_item.rb
    ---
    belongs_to :usage_item, :class_name => 'UsageItem', :foreign_key => 'usage_item_id'
    belongs_to :subscription_item, :class_name => 'SubscriptionItem', :foreign_key => 'subscription_item_id'
    ---

我想确认发票项目属于使用项目或订阅项目。