在我参与的几个Web应用程序项目中,客户端要求能够创建自己的表单.问题出现在如何存储其表单定义,以及如何将用户输入的值存储到这些自定义表单中.
我已经看到它有两种方式:
假设客户端仅定义了多少个字段,以及与这些字段关联的标签; 我们可以找到一个涉及四个表的解决方案. FormDefinition,FormFieldDefinition,FormInstances,FormFieldValues.客户端对FormDefinition和进行更改FormFieldDefinition,并且Web应用程序使用该信息呈现HTML Web表单,网站访问者(最终用户)将在该表单上提交表单,其中FormInstances创建新行并将值保存在FormFieldValues表.
行中
FormDefinition定义了表单,即form definition ID = 2, form title = 'Car Registration Form'.行中FormFieldDefinition定义表单的字段FormDefinition,即field definition ID = 7, field label = 'Car Model', field type = 'varchar(50)'.行FormInstance是用户填写的每个表单的实例,即definition id = 2, date_entered = '2008-09-24'.并且行FormFieldValues是用户的条目,即field definition = 7, value = 'Tiburon'.
不幸的是,这意味着value列FormFieldValues必须是客户端可能在Web表单中指定的最大可能大小的char类型...并且当表单定义更改时,管理旧数据变得不确定.但用户条目是可查询的(我写了一个快速查询,列出了给定表单ID的用户条目,这类似于 …
我有一些产品属于某个类别.
每个类别可以具有不同的属性.
例如,
类别数量约为10-15.每个类别的属性数量为3-15.产品数量非常大.
这个应用程序的主要要求是非常好的搜索.我们将选择类别,并为此类别中的每个属性输入标准.
必须为此方案设计数据库.(SQL Server 2005)
sql database sql-server database-design entity-attribute-value
我有兴趣在SQL Server数据库上使用EAV模型.是否有人能够指出我现有模型/模式的文章或框架(我对Saas没有兴趣)?
我一直在加载我的Magento网上商店,其中包含大量具有大量自定义属性的产品,但是,后端的"可见"值设置为"否".
除了这是我的错误(以及帮助我填写此产品数据库的人),我似乎无法找到将属性可见性设置为是的方法.
我已经尝试在attribute_id(102)中eav_attribute查找attribute_code"可见性",并希望将其设置为另一个值catalog_product_entity_int,但随后我突然意识到"我必须至少有一个属性设置为可见,所以我必须在这个值不是4"的至少一个记录.在写了一个排除4的小查询后,我发现我根本没有记录.
我究竟做错了什么?我在这看错了桌子吗?
还有另一种方法可以将属性本身的所有"可见"属性设置为"是"吗?
我正在为我的应用程序的数据模型寻找一个理智的方法.大多数线程专注于电子商务产品,我的情况有所不同.
目标是存储从客户收到的物品并报告给他们.虽然初始报告将是简单列表(这些是您的项目及其键/值对),但我希望为将来对集合的查询做好准备,因此我不确定EAV是一种好方法.
每个项目都是(重复)类型,每个项目将具有灵活数量的键/值对.我们有大约15种商品类型,他们不太可能快速增长.
键/值对的数量将很低,在4到20之间,并且(每个要求)不是基于项目类型,而是基于项目所属的客户.
为了澄清,客户可能希望我存储项目的条件,而另一个人可能希望我存储颜色或替换ID.这真的取决于.因此,无论如何我很可能在我的集合中都有NULL值,因为每个项目类型都将获得该客户的所有键/值.这让我觉得单表继承(带有NULL值)是可以接受的,但它必须是field_1 field_2等 - 通过某种映射,因为客户将决定所需键的名称.哪个对我不合适?
客户项目(及其键/值)的集合通常将> 20且<500,因此每个客户的数据集肯定不是很大.
也许在MySQL中为应用程序本身(创建客户及其所需的字段)中的(半)EAV是一种很好的方法,但是将实际收集的项目记录作为"文档"移动到NoSQL数据库(Redis等所有)中以进一步处理?
或者这是否可以/应该在RDBMS中解决的问题复杂化?
我也遇到了这个http://backchannel.org/blog/friendfeed-schemaless-mysql这似乎是一个解决方案但不确定,因为我的数字太低了.
祝大家新年快乐!我刚刚开始为运行工具招聘业务的客户端建模ASP.NET MVC 5应用程序.部分解决方案涉及构建管理(后端)功能,管理员用户可以通过该功能创建/编辑从特定工具组附加到每个工具的自定义属性或工具元数据.我正在研究的概念是,在运行时,应用程序不应该知道元数据架构将是什么.所以我从这开始:
是的,我知道...... 另一个EAV噩梦!我知道如果数据被正确地规范化,并且创建了相关的索引,那么它应该不会太糟糕.但老实说,我没有看到任何其他选择.例如:
博世无绳电钻
MetaAttributeListOption表中预填充)MetaAttributeListOption表中预填充)现在这些属性将用于3个目的:
所以我想我为此坚持使用RDBMS(SQL Server).我知道对此采用一种流行的方法是使用一些NoSQL解决方案,但说实话,我没有太多的实践经验来与MSSQL一起使用它.我可以将Values表组合成一个表,其中每个数据类型值都在它自己的列中,但这将留下很多空值来应对.
如果你能帮助我,我会留下以下问题:
MetaAttributeListOption是否正确设计了桌子的关系.我非常感谢StackOverflow社区提供的任何帮助.如果您需要更多信息,请告诉我,如果您认为不合适,请不要关闭此信息,因为我认为我的问题与编程相关.谢谢!
编辑: 我在这个值得我自己积分的200分钟上开始给予奖励...... 100个用于协助/建议我的问题1和2,以及100分的问题3.谢谢
data-modeling entity-attribute-value entity-framework-6 asp.net-mvc-5
尝试为自定义模块设置配置文件 - 我是否需要为每个'resourceModel'设置一个唯一的模型,或者每个模型可以有多个表实体?
有可能让这样的东西工作:
<config>...
<model>
<namespace>
<class>Namespace_Module_Model</class>
<resourceModel>module_mysq4</resourceModel>
</namespace>
<module_mysql4>
<class>Namespace_Module_Model_Mysql4</class>
<entities>
<table_1>
<table>table_1</table>
</table_1>
<table_2>
<table>table_2</table>
</table_2>
<table_3>
<table>table_3</table>
</table_3>
...
</entities>
</module_mysql4>
..</config>Run Code Online (Sandbox Code Playgroud)
然后通过模型在表之间动态切换?
和相关的:任何人都知道这些人的可能性和他们的本性是什么?我见过'实体','协会'和'项目' - thx
假设我有以下表格:
____________________ ____________________
| Organisms | | Species |
|--------------------| |--------------------|
|OrganismId (int, PK)| |SpeciesId (int, PK) |
|SpeciesId (int, FK) |?---------1|Name (varchar) |
|Name (varchar) | |____________________|
|____________________| 1
1 |
| |
| |
? ?
______________________ ____________________ _______________
| OrganismPropsValues | | SpeciesProps | | Props |
|----------------------| |--------------------| |---------------|
|OrganismId (int, FK) | |PropId (int,PK,FK) | ?-----1|PropId (int,PK)|
|PropId (int, FK) | |SpeciesId(int,PK,FK)| |Name (varchar) |
|Value (varchar) | |____________________| |_______________|
|______________________| 1
? |
| …Run Code Online (Sandbox Code Playgroud) sql polymorphism database-design sql-server-2008 entity-attribute-value
我正在实现一个包含表中动态属性的数据库.类似于Magento电子商务网站的东西.我们知道Magento遵循MySQL的EAV模型,并且非常灵活地进行自定义.是否有基于使用NoSQL数据库的EAV建模实现的开源系统.很想知道使用NoSQL数据库应用EAV模型的最佳实践.或者是否有其他方法在NoSQL中实现.
我是数据库的新手MySQL,特别是.假设我需要存储平面键值数据结构MySQL.每个数据结构都有一些必需的字段和许多可预先知道的可选字段,并且可能经常更改.
我需要通过其中一个必填字段检索所有数据结构,并可能删除它们.
所以我想将这些数据结构存储在这样的表中:(只是来自Internet的复制粘贴而不是工作代码)
CREATE TABLE my_data_structures (
my_data_structure_id INT NOT NULL,
my_required_field1 VARCHAR NOT NULL,
my_required_field2 INT NOT NULL,
PRIMARY KEY (my_data_structure_id)
)
CREATE TABLE my_optional_fields (
my_optional_field_name VARCHAR NOT NULL,
my_optional_field_value VARCHAR NOT NULL,
FOREIGN KEY (my_data_structure_id) REFERENCES my_data_structures(my_data_structure_id)
)
Run Code Online (Sandbox Code Playgroud)
这种方法有意义吗?如何定义primary key第二个表?
magento ×3
sql ×3
database ×2
nosql ×2
sql-server ×2
attributes ×1
config ×1
forms ×1
mysql ×1
php ×1
polymorphism ×1
rdbms ×1
visibility ×1
webforms ×1