有一个需要创建促销表的要求,该表可以有多个晋升类型。例如优惠券、宣传代码、礼物等
问题是在创建促销时,如何保存促销类型的外键值,其中每个促销类型都是一个单独的实体,并具有自己的属性。
我脑海中的决议:
PromotionType:
PromotypeID,PromoTypeDesc (如:优惠券,PromoCode,礼品,未来还可以更多)
促销:
PromotionID,PromotypeID,PromotionTypeReferenceID,EffectiveDate,EndDate,Active
优惠券:
CouponID,CouponName,CouponCOde,CouponTitle,isActive
PromoCode:
PromoCodeID,PromoCodeName,PromoCodeText,PromoCodeTitle,isActive
礼物:
GiftID,GiftTitle,GiftDesc,isActive
请指点。
发布于 2018-10-03 13:31:43
我看到了两种解决方案
通用表
所有晋升类型都在一个表中。但是,由于每个促销类型的详细信息都是可变的,因此必须创建泛型列来存储此类属性。哼,这对XML文件来说是个很好的地方。
如果只有一种类型可以链接到晋升,则不需要“晋升-类型-关系”表.只需在“促销”中添加序言类型作为预测键即可。
专用表
每个促销类型都有一个表。
同样,如果只允许每种类型中的一个,则也不需要链接表。
讨论
通用表方法在数据库级别上更简单,但在代码中可能会变成地狱。假设礼品和优惠券都有到期日,您可以将属性的名称设置为该日期,并在某个日期设置值。现在,要查询该日期,您必须查看属性名。
发布于 2018-10-03 12:39:04
如果您要在单行中完成此操作,那么所有晋升的所有字段都需要在表中。我过去曾这样做过,我可以建议你不要这样做。从长远来看,这类解决方案变得非常笨拙。
其他选项是存储元数据/键值对,因此一行将包含类似以下内容的数据:
它们可以被查询、旋转或以XML等形式返回。但是,在使用和呈现元数据时总是会遇到麻烦。可能值得考虑数据的下一步去向,并将其输出为预先格式化的JSON或XML,以供进一步使用。
https://stackoverflow.com/questions/52626891
复制相似问题