问题标签 [entity-attribute-value]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database-design - 在数据库中创建 Metatable 表
有人对在数据库中创建元表有什么建议吗?这些表将用于模拟数据库中的表,使用数据库。这是为了当您想要轻松地将结构(更多字段)动态添加到数据库中而不必担心所涉及的所有技术细节时。我唯一的例子是这样的:
表:MetaTables 字段:tableName、tableDescription
表:元字段字段:tableName、fieldName、fieldDesc、fieldDesc
表:元代码字段:tableName、fieldName、codeName、codeValue 等...
我以前从未真正使用过这样的东西,并且想知道是否有任何“陷阱”需要注意。
这样的事情是否可以合理维护,或者你会反对它吗?
sql - 与地址簿表设计有关的 SQL 数据库问题
我现在正在为我的软件编写地址簿模块。到目前为止,我已经设置了数据库,它支持非常灵活的地址簿配置。
我可以为我想要的每种类型创建 n 个条目。类型在这里表示“电子邮件”、“地址”、“电话”等数据。
我有一个名为“contact_profiles”的表。
这只有两列:
然后有一个名为contact_attributes 的表。这个有点复杂:
我现在可以链接到这些配置文件,例如从我的用户表中。但是从这里我遇到了问题。
目前,我必须为要检索的每个值创建一个 JOIN。是否有可能以某种方式创建一个视图,它给我一个以类型为列的结果?
所以现在我会得到类似的东西
但是得到这样的结果会很好:
我最初不想创建这样的表格布局的原因是,可能总是要添加一些东西,我希望能够拥有多个相同类型的属性。
那么你知道是否有可能动态转换它?
如果您需要更好的描述,请告诉我。
sql - 如何设计数据库模式以支持使用类别进行标记?
我正在尝试类似Database Design for Tagging之类的东西,除了我的每个标签都被分组到类别中。
例如,假设我有一个关于车辆的数据库。假设我们实际上对车辆知之甚少,因此我们无法指定所有车辆将具有的列。因此,我们将用信息“标记”车辆。
现在您可以看到所有汽车都标有其制造商和型号,但其他类别并不完全匹配。请注意,一辆车只能有一个类别。IE。一辆车只能有一个制造商。
我想设计一个数据库来支持搜索所有梅赛德斯,或者能够列出所有制造商。
我目前的设计是这样的:
我有所有正确的主键和外键,除了我无法处理每辆车只能有一个制造商的情况。或者我可以吗?
我可以在vehicleTags 中的复合主键中添加外键约束吗?IE。我可以添加一个约束,使得复合主键 (vid, tid) 只能添加到 vehicleTags 中,前提是在 vehicleTags 中还没有一行,这样对于同一个 vid,在 with 中还没有 tid同一个cid?
我的猜测是否定的。我认为解决这个问题的方法是在vehicleTags中添加一个cid列,并制作新的复合主键(vid,cid)。它看起来像:
这将防止汽车有两个制造商,但现在我已经复制了 tid 在 cid 中的信息。
我的架构应该是什么?
汤姆在我之前的问题中注意到我的数据库模式中的这个问题,你如何做多对多表外连接?
编辑
我知道在示例中制造确实应该是车辆表中的一列,但假设你不能这样做。这个例子只是一个例子。
database - 选择一种存储用户配置文件的方法?
我正在为网站开发用户配置文件系统,并且正在考虑采取什么更好(可扩展)的方法。我提出了两种解决方案,正在寻找输入或可能是我可能错过的东西的指针。
下面的 create table 语句并不意味着可执行,而只是为了让您了解所涉及的表的布局。
我最初的想法是这样的:
显然,这根本不是非常可扩展的,并且添加额外的属性我很烦人。一个优点是我可以快速搜索匹配一组特定属性的用户。我做了一些环顾四周,这是一种非常常见的方法(例如 Wordpress)。
我的第二种方法(我目前正在使用的方法)更具可扩展性,但我有点担心性能:
使用这种方法,每次使用都有一组与之关联的键值对,这使得添加其他属性以及在用户登录时加载用户配置文件变得微不足道。但是,我丢失了第一种方法中的所有类型信息(例如,DATETIME 现在存储为格式化字符串),因此一些搜索变得烦人。这确实让我可以更好地控制选择用户想要公开显示的属性。
混合方法会更好地让我平衡两种方法的优缺点吗?SO使用什么方法?还有另一种我没有想到或错过的方法吗?
扩展:使用混合方法将用户表中的属性插入到 user_profile 表中以控制它们对其他用户的可见性是否有利,或者这可能被视为额外开销?
database - 表模块与域模型
前几天我问了关于选择一种方法来存储用户配置文件的问题,并收到了来自 David Thomas Garcia 的有趣回复,建议我使用表模块设计模式。看起来这可能是我想要采取的方向。我在谷歌上出现的所有内容似乎都是相当高水平的讨论,所以如果有人能指出一些例子的方向或让我更好地了解所涉及的具体细节,那就太棒了。
sql-server - 工作流/业务流程应用的数据模型
工作流应用程序的数据模型应该是什么?目前,我们在 SQL Server 2000 中使用基于实体属性值的模型,用户能够创建动态表单(在 asp.net 上),但随着数据的增长,性能正在下降,难以生成报告,如果太多,情况会更糟用户同时查询数据(EAV)。
database - 如何为未知数量的“元”数据设计数据库
我想将某些项目存储在具有可变数量属性的数据库中。
例如:
一个项目可以有 'url' 和 'pdf' 属性,其他的都没有,而是有 'image' 和 'location' 属性。
所以问题是一些项目可以有一些属性,而另一些则很多。
你将如何设计这个数据库。如何使其可搜索和高性能?
架构会是什么样子?
谢谢!
sql-server - 如何在 SQL 中搜索“Property Bag”表?
我有一个基本的“property bag”表,用于存储有关我的主表“Card”的属性。所以当我想开始做一些高级的卡片搜索时,我可以这样做:
我需要做的是将这个想法提取到某种存储过程中,以便理想情况下我可以传入属性/值组合列表并获取搜索结果。
最初这将是一个“严格”搜索,这意味着结果必须匹配查询中的所有元素,但我还希望有一个“松散”查询,以便它匹配查询中的任何结果。
我似乎无法完全理解这一点。我之前的版本是生成一些大量的 SQL 查询来执行,其中包含很多 AND/OR 子句,但我希望这次能做一些更优雅的事情。我该怎么做呢?
database - 了解 EAV 数据库模型的最佳初学者资源?
我正在使用 Magento 进行一些自定义工作,它具有基于 EAV 模型的数据库设计,并且我需要一些很好的资源/教程来解释 EAV 数据库模型。请不要将维基百科作为资源提供......我正在寻找以友好方式为初学者教授 EAV 的东西。
sql - 数据库表中的键/值对
我需要在我的数据库中设计一个键/值表,我正在寻找有关最佳方法的指导。基本上,我需要能够将值与一组动态的命名属性相关联,并将它们应用于外部键。
我需要能够支持的操作是:
- 将键/值对应用于一组项目
- 枚举所有当前活动的键
- 确定具有给定键值的所有项目
- 确定与给定键关联的值与某些条件匹配的所有项目。
似乎最简单的方法是定义一个表:
看来我可能会在 Key 列中复制大量数据,因为我可能会为大量文档定义任何给定的键。用整数查找替换 Key varchar 到另一个表中似乎可以缓解这个问题(并使枚举所有活动键的效率显着提高),但让我遇到了维护该查找表的问题(只要我想就插入它)定义一个属性并可能在任何时候清除键/值时删除条目)。
最好的方法是什么?