每个子类的表策略意味着您的层次结构中的每个类都有一个表(包括抽象类,如果有的话),并且它们都有共享的主键。在您的情况下,这意味着您将为每个
Benefit
,
FreeMinutesBenefit
和
PriceDiscountBenefit
类。您的表名有点混乱,表结构与每个子类的表有些不一致。
假设
map_id
是共享的主键,
BenefitDetails_PriceDiscount
表必须这样定义它。
plan_id
属于不同的('映射
) table that will hold a map between
价格折扣优惠
,
plan`和十进制值。换言之:
create table BenefitDetails_PriceDiscount (
map_id integer PRIMARY KEY,
... /* any other attributes, perhaps? */
FOREIGN KEY (map_id) references Promo_Benefit(map_id)
);
create table BenefitDetails_PriceDiscount_Map (
map_id integer references Promo_Benefit(map_id),
plan_id integer references Plans(plan_id),
reduced_price numeric not null,
PRIMARY KEY (map_id, plan_id)
FOREIGN KEY (map_id) references Promo_Benefit(map_id)
);