标签: entity-attribute-value

用于用户设计表单的数据存储区 - NoSQL for EAV的任何优点

我需要在我的软件中通过Web界面允许用户设计的表单创建.即,他们创建一个问题,类型(文本,广播,复选框等),选项(如果需要)(无线电/支票),然后添加,并继续在此过程中,直到他们在表单中创建所有字段.

除了查看/填写/打印它们之外,不会对它们进行任何查询,即它们添加可以无限次填写的"问卷"(有些可能是20次,数百万次).

经过一些研究后,似乎EAV类型的解决方案听起来不错,除了那里有很多负面看法.很多人建议在这种情况下使用NoSQL数据库,但我并没有真正看到它们的优点 - 你仍然拥有一个包含许多字段的表单,然后是许多字段的结果.

某些字段(text/text_area/date)会有一个可能的值,但许多字段也有多个选项(单选按钮,选择下拉菜单,复选框).

这是传统SQL中的示例设计:

form:creator_id,name

form_field:form_id,order,question,type(text,text_area,date,radio,select,check)

form_field_option:form_field_id,名称,值,顺序(用于收音机/选择/检查)

form_result:form_id,application_id(不是我使用的名称,但所有结果都属于'应用程序')

form_field_value:form_result_id,form_field_id,form_field_option_id,value(如果选项字段的值为空,则text_field_option_id的文本字段为空)

基于此构建表单并获得结果似乎相当容易.它可能或可能不完全有效但是说一个典型的形式是5-30个问题,那会不会很糟糕?

把它放在NoSQL数据库中是否有任何优势,即Mongo或类似的东西?如果是这样,你能给我具体的例子,给我一个样本设计吗?我已经看到很多答案,比如'NoSQL更适合这个',但我没有这方面的经验,是因为更快的检索结果,还是什么?使用NoSQL会有什么缺点?

谢谢

mongodb dynamic-forms nosql entity-attribute-value

4
推荐指数
1
解决办法
1719
查看次数

在 HTML / XML 源中的某些属性字符串(如 src 或 href )中添加换行符

我喜欢提高可读性并管理一些像这样的 HTML 源代码

<iframe src= "https://www.google.com/recaptcha/api2/anchor?k=6LeaOiITAAAAAF_A-e9qjM6TCgdt4-rqixnkkatL                                   &co=aHR0cDovL3BsYXkuc3BvdGlmeS5jb20                                 &hl=de&v=r20160802154045&theme=dark&size=normal&cb=ap65yyq41qhy" title="reCAPTCHA-Widget" ...
Run Code Online (Sandbox Code Playgroud)

我的意思是断行属性名称是第一步:

<iframe src= "https://www.google.com/recaptcha/api2/anchor?k=6LeaOiITAAAAAF_A-e9qjM6TCgdt4-rqixnkkatL                                   &co=aHR0cDovL3BsYXkuc3BvdGlmeS5jb20                                 &hl=de&v=r20160802154045&theme=dark&size=normal&cb=ap65yyq41qhy"
        title="reCAPTCHA-Widget" 
Run Code Online (Sandbox Code Playgroud)

然而,有没有一种方法可以分解那个长网址,我会看起来像这样:

   "https://www.google.com/recaptcha/api2/anchor" +
        "?k=6LeaOiITAAAAAF_A-e9qjM6TCgdt4-rqixnkkatL" +
        "&co=aHR0cDovL3BsYXkuc3BvdGlmeS5jb20" +
...
        "&size=normal" +
        "&cb=ap65yyq41qhy"
Run Code Online (Sandbox Code Playgroud)

html xml line-breaks entity-attribute-value

4
推荐指数
1
解决办法
2267
查看次数

为什么对 wp_postmeta 的引用如此缓慢?

在 WordPress 中获取属性(使用 MySQL)似乎比必要的要慢。

(这是一个自我回答的问题,所以继续我的回答。)

mysql indexing wordpress performance entity-attribute-value

4
推荐指数
1
解决办法
3382
查看次数

存储多种类型字段的最佳方式

假设我们有一个可以有多种类型的字段,例如:字符串或日期或XML数据类型.

现在我们有两种方法将它存储在数据库中

1-使用字符串类型字段+字段定义类型:丢失"类型感知"排序功能,需要强制转换

2-个单独的表(StringValues,DateValues,Decimal,XML ...等):指向值+字段定义类型的外键:某种程度上复杂,性能

如果仅存储唯一值,则第二种方法可能具有额外的优势:它将作为索引使用.

你有什么想法吗?


注1:最好考虑基于MS SQL Server 2008和Linq2SQL的项目


注2:也许我们将讨论如何在另一个问题中实现EAV,我在关系存储中询问EAV.


注3:类型可以更改,但不经常更改

architecture database-design types entity-attribute-value

3
推荐指数
1
解决办法
565
查看次数

数据库设计:EAV选项?

这只是一个数据库概念问题:以下EAV模型的优缺点是什么?

型号1:

TABLE: attribute_value
======================================
| id | fk_id | attribute | value     |
======================================
| 1  | 10    | FName     | John      |
| 2  | 10    | Lname     | Doe       |
| 3  | 55    | FName     | Bob       |
| 4  | 55    | Lname     | Smith     |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)

型号2:

TABLE: attribute
==================
| id | attribute |
==================
| 1  | FName     |
| 2  | Lname     |
------------------

TABLE: value
=====================================
| id | attribute_id …
Run Code Online (Sandbox Code Playgroud)

mysql database database-design entity-attribute-value

3
推荐指数
1
解决办法
1096
查看次数

如何使用EAV AddAttribute设置默认值

我想在magento中为我的产品设置一个新的属性集.此属性应该是某些选项的选择类型.

$installer->addAttribute('catalog_product', 'reserve', array(
    'backend_label'     => 'Attribute Reserve',
    'type'              => 'varchar',
    'input'             => 'select',
    #'backend'          => 'eav/entity_attribute_source_boolean',
    'frontend'          => '',
    'source'            => '',
    #'default'          => 1,
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => true,
    'searchable'        => false,
    'filterable'        => false,
    'comparable'        => false,
    'visible_on_front'  => false,
    'visible_in_advanced_search' => false,
    'unique'            => false,
    'option' => array(
        'value' => array( 
            'optionone' => array( 'O' ),
            'optiontwo' => array( 'P' ),
            'optionthree' => array( 'Kein Angabe' ),
        )
    ), …
Run Code Online (Sandbox Code Playgroud)

select attributes magento option entity-attribute-value

3
推荐指数
1
解决办法
8843
查看次数

如何在Oracle中将各种VARCHAR作为数字进行比较

我有一个表格,有各种数字格式,如:

  • 2
  • 3.44189
  • 4,1
  • -0.0022
  • 9.9E + 37
  • 1.9E-12

这些是varchar2列中的测量值,每个测量值都有一个带有上限和下限值的规范(格式相同),所以我想要的是这些边界之间的测量值

SELECT VALUE, LOW, HIGH FROM MEASUREMENTS
WHERE to_number(replace(VALUE,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
    > to_number(replace(LOW,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
AND   to_number(replace(VALUE,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''') 
    <=to_number(replace(HIGH,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
Run Code Online (Sandbox Code Playgroud)

这些查询适用于上面写的每个数字,除了像9.9E + 37这样的指数数字.我发现用TO_CHAR重写,但它不能用于varchar

有没有人可以比较存储为varchar的各种数字?谢谢

sql oracle entity-attribute-value

3
推荐指数
1
解决办法
5686
查看次数

雄辩的ORM和EAV

我将研究一个将使用EAV结构来存储对象数据的系统.模型本身将具有一些预定义的属性(坐标和日期/时间戳),即:

  • X
  • ÿ
  • ž
  • 开始日期/时间
  • 结束日期/时间

其余属性将由用户动态创建,并作为行添加到属性表中.这些行将被旋转并用作列以与值表对齐(不确定这是否需要解释,但更安全而不是抱歉).

属性关系的对象(或实体)是一对多的.

值与属性的属性是一对多关系.

我是Eloquent/Laravel的新手,但我已经阅读了关系文档并看到有一对多关系的功能,但是,我不清楚如何引用EAV中的所有数据(似乎更适合于RDBMS ).它会是这样的(请记住这是一个粗略的例子)?

class UserObject extends Eloquent {

    public function object_data()
    {
        return $this->hasMany(attributes_data);
    }

    public function attributes_data()
    {
        return $this->hasMany('Values');
    }

}
Run Code Online (Sandbox Code Playgroud)

基本上,我的问题是:

在检索与EAV相关的所有数据时,是否有一种可接受的(或正确的)方法来设计/编写模型?如果是这样,你能指出我的Eloquent/EAV方法的一些文档或教程吗?

一些想法:

我的想法是我需要为EAV的每个组件创建3个类(即一个用于实体组件数据,一个用于属性数据,一个用于值数据).

谢谢.

orm entity-attribute-value eloquent

3
推荐指数
1
解决办法
3859
查看次数

MySQL搜索产品及其属性

我有一个MySQL数据库,其中包含带有组/属性的产品/我创建了一个数据样本

http://sqlfiddle.com/#!2/7d8a04/1

create table products (
  id int(10),
  title varchar(50)
);
create table attributes (
  id int(10),
  title varchar(50)
);
create table filters (
  id int(10),
  attribute_id int(10),
  title varchar(50)
);
create table product_filters (
  id int(10),
  product_id int(10),
  attribute_id int(10),
  filter_id int(10)
);

#products
insert into products select '1', '1stphone';
insert into products select '2', '2ndphone';
#attributes
insert into attributes select '1', 'ram';
insert into attributes select '2', 'cpu';
insert into attributes select '3', 'hdd';
#filters
insert into filters …
Run Code Online (Sandbox Code Playgroud)

mysql search entity-attribute-value

3
推荐指数
1
解决办法
578
查看次数

Magento通过CSV导入产品图像媒体

是否有必要设置属性_media_image_media_attribute_id在CSV被上传?

所有图像都存储在CATALOG_PRODUCT_ENTITY_MEDIA_GALLERY中,而CATALOG_PRODUCT_ENTITY_VARCHAR中的缩略图,图像和small_image是否正确?根据CSV列格式

sku,image,image_label,small_image,small_image_label,thumbnail,thumbnail_label

图像只会在CATALOG_PRODUCT_ENTITY_VARCHAR中针对图像,small_image和缩略图的EAV attributes_id进行注册.因此,图像在前端product_list页面(作为缩略图)和product_view页面(作为产品图像)上可见.

但是当我们通过管理目录>管理产品进入产品选项而不是单击产品,然后单击左侧的图像选项卡时,将没有图像.原因是,图像不在"CATALOG_PRODUCT_ENTITY_MEDIA_GALLERY"中,并且要保存新的更新结果,Magento不会为基本图像,小图像和缩略图图像发送图像.当我们从管理员编辑任何产品时,这会导致图像丢失.

注意:我将图像上传到magento_root/media/catalog/import /.而且,目前我正在研究Magento 1.9.0.1.

谢谢!

database magento entity-attribute-value

3
推荐指数
1
解决办法
5393
查看次数