Questions tagged «eav»

5
此键值数据库模式有名称吗?
我们处理来自客户的例行数据馈送,该客户只是将其数据库从一种看起来很熟悉的形式(每个实体一行,每个属性一列)重构为一个我不熟悉的形式(每个实体每个属性一行,): 之前:每个属性一列 ID Ht_cm wt_kg Age_yr ... 1 190 82 43 ... 2 170 60 22 ... 3 205 90 51 ... 之后:所有属性的一列 ID Metric Value 1 Ht_cm 190 1 Wt_kg 82 1 Age_yr 43 1 ... 2 Ht_cm 170 2 Wt_kg 60 2 Age_yr 22 2 ... 3 Ht_cm …

5
如何在大表上使用LEFT JOIN优化非常慢的SELECT
我正在谷歌搜索,自我教育和寻找解决方案数小时,但没有运气。我在这里找到了一些类似的问题,但不是这种情况。 我的桌子: 人(约1000万行) 属性(位置,年龄,...) 人与属性之间的链接(M:M)(约4000万行) 完整转储〜280MB 情况: 我尝试person_id从某些位置(location.attribute_value BETWEEN 3000 AND 7000),性别(gender.attribute_value = 1),出生年份(bornyear.attribute_value BETWEEN 1980 AND 2000)和眼睛颜色(eyecolor.attribute_value IN (2,3))选择所有人的身份()。 这是我的询问女巫用了3〜4 分钟。我想优化: SELECT person_id FROM person LEFT JOIN attribute location ON location.attribute_type_id = 1 AND location.person_id = person.person_id LEFT JOIN attribute gender ON gender.attribute_type_id = 2 AND gender.person_id = person.person_id …

2
星型模式数据仓库中动态字段的EAV替代品
我需要在大型数据仓库中支持动态字段和值以存储API请求日志,而我的用例是我需要存储所有API请求查询字符串,并在将来能够对其进行查询(因此,不仅仅是存储,所以我不能为他们使用blob) 例如 http://example.com/?action=test&foo=abc&bar=def... 我需要存储所有field => value映射,即(action => test), (foo => abc), (bar => def),由于该字段是动态的,所以我发现的唯一解决方案是使用Entity-Attribute-Value,但是,人们一直说这是一个非常糟糕的设计。 因此,考虑以上我的用例,什么是EAV的合适替代方案? 我当前使用KAV的架构 表requests (id, timestamp, uri) 例如(1, 149382220, '/') 表params (request_id, key, value) 例如(1, 'action', 'test'), (1, 'foo', 'abc'), (1, 'bar', 'def') 有什么建议么? 更新:我们在AWS RedShift上运行仓库

3
具有多个变体/属性的产品的架构设计?
我正在使用MySQL。这个想法类似于具有不同概念的shopify,因此用户将添加具有多种变体和属性类型的自己的产品。 从我所做的所有研究来看,这似乎是我最可能的解决方案,我只是想知道以下方案是否存在问题,还有哪些优点/缺点? 谢谢 Table: products ------------------------------ | ID | ProductName | |----------------------------| | 1 | Leather Wallet Case | | 2 | Jeans | | 3 | Power Bank | Table: products_variants ------------------------------- | ID | ProductId | ParentId | Variant | VariantName | SKU | StockTotal | WholeSalePrice | …

4
正确的存储值的方式可能是多种不同的类型
我有一个答案表和一个问题表。 答案表中有值,但根据问题,这个值可以是一个bit,nvarchar或number(到目前为止)。该问题具有其预期答案值类型应为什么的概念。 在一个或另一个点解析这些Answer值非常重要,因为至少需要对这些数字进行比较。 对于更多情况,一些用户在各种调查中提供了问题和可能的答案(通常是文本框类型输入所允许的数据类型)。然后,其他指定的用户将提供答案。 我考虑过的几个选项是: A. XML或字符串,根据所需的类型进行不同的解析(在问题中始终保持跟踪) B.引用答案表(或由答案表引用)的三个单独的表,并根据预期的类型联接到其中。在这种情况下,我不确定设置约束的最佳方法,以确保每个问题只有一个答案,或者应该将其留给应用程序。 C. Answer表上的三个独立列可以根据预期的类型进行检索。 我很高兴就这些方法的优缺点获得一些意见,或者我没有考虑过的替代方法。

3
库存项目具有不同属性时的库存数据库结构
我正在建立一个库存数据库来存储企业硬件信息。数据库跟踪的设备范围从工作站,便携式计算机,交换机,路由器,移动电话等开始。我使用设备序列号作为主键。我遇到的问题是这些设备的其他属性各不相同,并且我不希望清单表中的字段与其他设备无关。下面是数据库部分ERD的链接(未显示某些FK关系)。例如,我正在尝试进行设置,因此无法将具有工作站设备类型的设备放入手机表中。这似乎需要使用许多触发器来验证设备类型或类,并且只要有不同属性的不同设备被跟踪,就可以创建新表。 我研究了设置可以映射到序列号的属性表,但是这将允许将不适用于设备类型的属性分配给设备,例如,有人可以根据需要将电话号码属性分配给工作站。我在此站点上找到了一个解释,该解释给出了以下结构: 如果属性都适用于我要存储的项目,则此结构将非常有用。例如,如果数据库仅存储手机,则属性可以是诸如触摸屏,触控板,键盘,4G,3G ...之类的东西。在这种情况下,它们都适用于电话。我的数据库将具有诸如主机名,circuitType,phoneNumber之类的属性,这些属性仅适用于特定类型的设备。 我要进行设置,以便仅将适用于给定设备类型的属性分配给该类型的设备。关于如何设置此数据库的任何建议?我不确定这是否是一对一关系的正确使用,还是有更好的方法来做到这一点。预先感谢您抽出宝贵的时间对此进行研究。 这是我阅读的其他一些主题。他们给了我一些很好的见解,但我认为它们并不适用: /programming/9335548/how-to-structure-database-for-inventory-of-unlike-items /programming/1249632/database-structure-for-items-with-varying-attributes /programming/5559587/product-inventory-with-multiple-attributes /programming/6613802/question-about-setting-up-inventory-database /programming/514111/how-to-best-represent-items-with-variable-of-attributes-in-a-database
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.