首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推广及其类型的数据库设计

推广及其类型的数据库设计
EN

Stack Overflow用户
提问于 2018-10-03 12:18:32
回答 2查看 6K关注 0票数 0

有一个需要创建促销表的要求,该表可以有多个晋升类型。例如优惠券、宣传代码、礼物等

问题是在创建促销时,如何保存促销类型的外键值,其中每个促销类型都是一个单独的实体,并具有自己的属性。

我脑海中的决议:

  1. 为每种晋升类型创建单独的表,以适应晋升与相关类型表(例如: Promotion_Coupon_Relation )之间的关系
  2. 在“升级”表中删除“外键”约束,并创建一个列,该列将在每次基于类型创建升级时存储外键值。但在这种情况下,这种关系将不是具体的,将被识别的基础上的推广类型。

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

请指点。

EN

回答 2

Stack Overflow用户

发布于 2018-10-03 13:31:43

我看到了两种解决方案

通用表

所有晋升类型都在一个表中。但是,由于每个促销类型的详细信息都是可变的,因此必须创建泛型列来存储此类属性。哼,这对XML文件来说是个很好的地方。

  • 餐桌推广:推广,头衔,.
  • 表PromotionType: attribute1name attribute1value,attribute2name,attribute2value .,属性名,属性名
  • 表提升-类型-关系:启动类型

如果只有一种类型可以链接到晋升,则不需要“晋升-类型-关系”表.只需在“促销”中添加序言类型作为预测键即可。

专用表

每个促销类型都有一个表。

  • 餐桌推广:推广,头衔,.
  • 餐桌礼物:礼物,名字,.
  • 桌子优惠券:优惠券,名字,.
  • 餐桌促销-礼品-关系:简体,礼品
  • 表格推广-优惠券-关系:

同样,如果只允许每种类型中的一个,则也不需要链接表。

讨论

通用表方法在数据库级别上更简单,但在代码中可能会变成地狱。假设礼品和优惠券都有到期日,您可以将属性的名称设置为该日期,并在某个日期设置值。现在,要查询该日期,您必须查看属性名。

票数 1
EN

Stack Overflow用户

发布于 2018-10-03 12:39:04

如果您要在单行中完成此操作,那么所有晋升的所有字段都需要在表中。我过去曾这样做过,我可以建议你不要这样做。从长远来看,这类解决方案变得非常笨拙。

其他选项是存储元数据/键值对,因此一行将包含类似以下内容的数据:

  • 主键
  • PromotionType外键
  • 密钥类型。"PromoType“"CouponName”"PromoCodeText“
  • 关联值。"BoGoF“、"M&S报价”、“购买一份免费”

它们可以被查询、旋转或以XML等形式返回。但是,在使用和呈现元数据时总是会遇到麻烦。可能值得考虑数据的下一步去向,并将其输出为预先格式化的JSON或XML,以供进一步使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52626891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档