mysql 对属性值作约束_mysql – 实体 – 属性值表设计

我将对这个问题的大部分意见提出相反的意见。虽然EAV是所有的原因,您可以在SO和DBA.SE等在其他地方彻底解释多次,但是有一个真正常见的应用程序,EAV的大多数事情在很大程度上是无关紧要的,少数)EAV的优势非常密切。该应用程序是在线产品目录。

EAV的主要问题是它不让数据库做它真正做得很好的事情,这有助于通过将它们安排在模式中来为不同实体的信息的不同属性提供适当的上下文。拥有架构在访问,解释和实施数据的完整性方面带来许多优点。

关于产品目录的事实是,产品的属性几乎完全与目录系统本身无关。产品目录系统(最多)做出三件事情,产品属性。

>以最终用户的形式显示列表中的产品属性:{attribute name}:{attribute value}。

>在比较网格中显示不同产品的属性相互排列的多个产品的属性(产品通常是列,属性通常是行)

>根据特定的属性/值组合驱动某些东西(例如定价)的规则。

如果您的所有系统都是在语义上与系统无关的信息,那么该信息的模式基本上是无益的。实际上,该模式会阻碍在线产品目录中,特别是如果您的目录具有多种不同类型的产品,因为您始终不得不回到模式来修补它,以允许新的产品类别或属性类型。

由于它的使用方式,产品目录中的属性值的数据类型不一定非常重要。对于某些属性,您可能需要施加约束,例如“必须是数字”或“必须来自此列表{…}”。这取决于您的目录的属性一致性是多么重要,以及您希望实现的精细程度。看几个在线零售商的产品目录,我会说最多的是准备交换简单的一致性。

是的,EAV是邪恶的,除非它不是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值