标签: denormalized

NOSQL非规范化数据模型

我多次读到NOSQL数据库中的数据存储为非规范化.例如,考虑国际象棋游戏记录.它不仅可以包含参与国际象棋游戏的玩家ID,还可以包含该玩家的名字和姓氏.我想这样做是因为在NOSQL中无法进行连接,因此如果您只是复制数据,您仍然可以在一次调用中检索所需的所有数据,而无需手动应用程序级别处理数据.

我不明白的是,现在当你想要更新国际象棋选手的名字时,你必须编写一个查询来更新该玩家参与的国际象棋游戏记录以及该玩家的玩家记录.这似乎是一个巨大的性能开销,因为数据库必须搜索该玩家参与的所有游戏,然后更新每个记录.

数据是否经常像我的例子一样存储为非规范化?

database denormalization nosql denormalized

14
推荐指数
1
解决办法
5751
查看次数

在数据库中存储数组

我想知道将数组存储在数据库中是否真的很好?我倾向于使用json_encode而不是serialize,但只是想知道这是不是一个好主意.如果没有,那么我可以做一些小改动,然后用逗号破坏数组.

php database serialization json denormalized

13
推荐指数
2
解决办法
8183
查看次数

如何在NoSQL中维护非规范化的一致性?

假设我有两个集合,每个集合的值彼此独立,但每个集合彼此相关.他们是photosusers.用户和照片之间存在一对多的关系.

非规范化数据的一个例子:

users:
{
  "id": "AABC",
  "name": "Donna Smith"
}

photos:
{
  "id": "FAD4",
  "description": "cute dog",
  "user_id": "AABC",  // This is the relationship
  "user_name": "Donna Smith"  // This is the denormalized value from the "users" collection
}
Run Code Online (Sandbox Code Playgroud)

photos当用户"AABC"将名称从"Donna Smith"更改为"Donna Chang"时,如何确保与集合中的文档保持一致?

作为非交易性的,我理解一致性将是最终的.

在更改用户"AABC"以更新user_id ="AABC"的所有照片后,简单(天真)实现可能会触发后台作业.在单次更新的情况下,这将很好.但这是一个多用户环境,并且会同时在各个方向上进行更新.例如,如果在照片的背景更新中途将"Donna Smith"更改为"Donna Chang",用户"AABC"的名称将更改为"Donna Smith"?

在线搜索,我看到很多关于如何建模非规范化数据的讨论.但是关于如何维护它的任何讨论似乎都被轻视为"你还需要更新所有相关记录".在这种情况下,是否有任何NoSQL系统为您提供繁重的工作?任何框架或实用程序?

我已经阅读了Thomas Wanschik关于"物化视图"主题的精彩博客文章以及这个场景的背景更新.但我担心:

  1. 后台作业必须延迟一个大于更新允许的最大时间的预定量(如何确定延迟?如果操作需要更长时间?),和;
  2. 这是我发现实际解决方案的唯一讨论.NoSQL是一个大问题,为什么我没有看到更多关于此的讨论?我错过了什么?

eventual-consistency nosql denormalized

8
推荐指数
1
解决办法
651
查看次数

Oracle SQL获取第n个元素regexp

我试图在Oracle中使用SQL获取逗号分隔字符串中的第n个元素.

到目前为止我有以下内容..

SELECT regexp_substr(
   '100016154,5101884LT00001,,,,,100000010892100000012655,L,SEI,5101884LT00001,1,SL,3595.03,00,2,N,N,G,N',
   '[^,]+',
   1,
   7)
FROM dual;
Run Code Online (Sandbox Code Playgroud)

但是当元素为空时它不起作用,即任何人都可以帮忙吗?

regex sql oracle denormalized

6
推荐指数
1
解决办法
9437
查看次数

Mysql WHERE问题以逗号分隔列表

我需要帮助解决这个问题.

在MYSQL表中我有一个字段:

Field  : artist_list  
Values : 1,5,3,401
Run Code Online (Sandbox Code Playgroud)

我需要找到艺术家uid 401的所有记录

我这样做

SELECT uid FROM tbl WHERE artist_list IN ('401');
Run Code Online (Sandbox Code Playgroud)

我有记录,其中artist_list字段值仅为'401',但如果我有11,401,则此查询不匹配.

任何的想法 ?

(我不能使用LIKE方法,因为如果艺术家uid是3(匹配30,33,3333)...

mysql sql denormalized

5
推荐指数
1
解决办法
2153
查看次数

使用PHP在MySQL数据库中存储多个复选框数据

我想将多个复选框值存储到数据库中的一个字段中.(例如,1,26,56,100).我想知道如何实现这一点,如果我想在查询中调用变量,PHP如何从数据库中读取这些值?

基本上我正在创建一个博客应用程序(为了娱乐和体验),我希望用户能够通过复选框更改每篇博文的可见性.我知道你可能在想为什么我不为每篇博文都提供可见性字段.我理解为什么不建议这样做,但我想不出任何其他方法来做到这一点.为了解释一下:我想将这个应用程序附加到我已经构建的CMS上,基本上我有一个包含博客文章的表,然后我希望用户能够访问其站点中的不同页面并添加一个博客.那么,如果用户想要在3个不同的页面上使用相同的博客,但只希望在每个页面上显示某些帖子,该怎么办?所以这就是我现在感到困惑的原因.

php mysql denormalized

5
推荐指数
1
解决办法
6万
查看次数

将非规范化数据从excel导出到xml

我们正在尝试将带有"非规范化数据"的excel表导出到xml.表头如下:

| AssetManager Code | AssetManager Date | Portfolio Code | Portfolio Name | MarketValue | NetCashFlow | Field | Field Code | Field Name |
Run Code Online (Sandbox Code Playgroud)

AssetManager代码和AssetManager日期始终相同,其余列包含可变数据.

以下是我们想要的xml输出示例:

<AssetManager Code="PFM" Date="20130117">                   
    <Portfolios>            
        <Portfolio Code="CC PSP" Name="Consilium Capital">      
            <MarketValue>5548056.51</MarketValue>   
            <NetCashFlow>0</NetCashFlow>    
            <UserFields>    
                <Field Code="AM UCGT" Name="AM daily Unrealised CG">4375</Field>
            </UserFields>   
        </Portfolio>        
        <Portfolio Code="MM (FC)" Name="Money Market UT (FC)">      
            <MarketValue>28975149.6500735</MarketValue> 
            <NetCashFlow>0</NetCashFlow>    
            <UserFields>    
                <Field Code="UCGT" Name="AM daily Unrealised CG">0</Field>
            </UserFields>   
        </Portfolio>        
    </Portfolios>           
</AssetManager> 
Run Code Online (Sandbox Code Playgroud)

我们的xsd文件包含映射:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AssetManager">
    <xs:complexType>
        <xs:sequence>
                    <xs:element …
Run Code Online (Sandbox Code Playgroud)

xml excel xsd denormalized

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

从序列化数组MySQL中检索特定值

数据库结构如下:

id|metaKey|metaValue
--+-------+-----------------------------------
55|product|a:8:{s:3:"sku";s:0:"";s:8:"products";a:3:{i:1;a:3:{s:6:"option";s:1:"1";s:5:"price";s:5:"14.95";s:9:"saleprice";s:0:"";}i:2;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:3;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}}s:11:"description";s:124:"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";s:8:"shiprate";s:1:"A";s:8:"featured";s:2:"no";s:4:"sale";s:3:"yes";s:10:"cart_radio";s:1:"0";s:6:"optset";s:0:"";}
Run Code Online (Sandbox Code Playgroud)

这是来自wordpress网站,我需要检索第一个"价格"值14.95什么是从存储在mysql中的序列化数组中检索特定值的最佳方法?

php mysql wordpress denormalized

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

表链,何时反规范化?

假设TABLE-A在TABLE-B中可以有一行或多行,它们可以在TABLE-C中有一行或多行,它们可以在TABLE-D中有一行或多行......依此类推.

假设我在TABLE-Z并且需要知道有关TABLE-A的详细信息.我是否从TABLE-Z一直到TABLE-A进行SQL查询?在某些时候,如果说TABLE-Z有一个FK到TABLE-A那么也许会很好,所以查询不会那么痛苦.但是,如果我把那个FK,我想我会破坏正常化,对吧?

关于如何处理这个问题的一般建议?

mysql database-design normalization denormalization denormalized

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

是否可以查询逗号分隔列的特定值?

我有(并且不拥有,所以我无法更改)具有类似于此的布局的表.

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100
Run Code Online (Sandbox Code Playgroud)

我需要返回包含特定类别ID的行.我首先使用LIKE语句编写查询,因为值可以在字符串中的任何位置

SELECT id FROM table WHERE categories LIKE '%c2%'; 将返回第2行和第3行

SELECT id FROM table WHERE categories LIKE '%c3%' and categories LIKE '%c2%'; 会再次给我第2行和第3行,但不是第4行

SELECT id FROM table WHERE categories LIKE '%c3%' or categories LIKE '%c2%'; 再次给我第2,3和4行

我不喜欢所有的LIKE陈述.我FIND_IN_SET()在Oracle文档中找到了,但它似乎不适用于10g.我收到以下错误:

ORA-00904: "FIND_IN_SET": invalid identifier
00904. 00000 -  "%s: invalid identifier"
Run Code Online (Sandbox Code Playgroud)

运行此查询时:( SELECT id FROM table WHERE FIND_IN_SET('c2', categories);来自文档的示例)或此查询:( …

sql csv oracle ora-00904 denormalized

2
推荐指数
1
解决办法
2万
查看次数

使用firebase,angularFire获取非规范化数据

我正在尝试获取属于特定用户的所有鲜花数据,在本例中为simplelogin:69.

我开始从用户那里获取所有花键,如下所示:

/users/simplelogin:69/flowers/

var ref = new Firebase("https://URL.firebaseio.com/users/"+uid+"/flowers");
var sync = $firebase(ref);
Run Code Online (Sandbox Code Playgroud)

现在我很难找到一个干净的方法来获取所有花卉数据通过循环thrue每个花键来自simplelogin:69没有循环thrue每个键/ flowers /(在下面的示例我只有三个花键但在生产中我可能有10k ).

我尝试过FirebaseIndex和firebase-util,但无法让它正常工作.有没有人有任何提示或任何东西?我已经在堆栈上阅读了以前的帖子,但大多数似乎已经过时或者不适合我的目标.真的可以用AngularFire来解决任何问题.

亲切的问候,伊莱亚斯

{
  "flowers" : {
    "-JiU57sFAfQwYtIq-LCl" : {
      "image" : "test",
      "name" : "test",
      "type" : "Roses",
      "uid" : "simplelogin:69"
    },
    "-JiU9-3ajlnFLpyUmBvL" : {
      "image" : "dasdasd",
      "name" : "sadasdas",
      "type" : "Roses",
      "uid" : "simplelogin:69"
    },
    "-JiUF-mioK3jQCYy6ZiG" : {
      "image" : "ss",
      "name" : "ss",
      "type" : "Lilies",
      "uid" : "simplelogin:69"
    }
  },
  "users" : {
    "simplelogin:69" : {
      "flowers" : { …
Run Code Online (Sandbox Code Playgroud)

denormalized firebase angularfire firebasesimplelogin

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

如何在SQL Server中选择非规范化的成分数据?

我使用以下声明制作产品库存并显示数据

SELECT _PRODNAME      AS [Manufacture Product], 
       _BASEPRODNAME  AS [Sub Product], 
       _PRDDEFQTY     AS [Required Qty / Unit], 
       _PURQTY        AS [Purchase Qty], 
       _PURRETQTY     AS [Return Qty], 
       _ISSUEQTY      AS [Issue Qty], 
       _DAMAGEQTY     AS [Damage Qty], 
       _BALQTY        AS [Balance Qty], 
       _MINESTIMATE   AS [Estimate Qty], 
       _SALEQTY       AS [Sale Qty], 
       _MANUDAMAGEQTY AS Damage, 
       _AVAILQTY      AS [Avail Qty] 
FROM   dbo.VIEW_MANUFACTURING 
Run Code Online (Sandbox Code Playgroud)

此查询返回此结果:

在此输入图像描述

但我的预期结果是

在此输入图像描述

在我的样品数据中,香草蛋糕是主要产品,黄油奶油,鸡蛋,面粉是子产品,列3,4,5,6,7,8是子产品数据,第9,10,11,12列是主要产品.

我的问题是如何单独显示这些数据,我对此没有任何想法.

编辑赏金

正如您在第一张图片中看到的,有两种制造产品1)Manu 2)Vanila Cake

在这里我们将获得vanila蛋糕示例:

Vanila蛋糕有3个子产品1)黄油奶油2)鸡蛋3)面粉

第3至第8列与子产品(所需数量/单位列平衡数量列)相关

第9至12栏与制造产品相关(估算数量列到可用数量列)

预期结果如图2所示

sql sql-server select sql-server-2008 denormalized

-2
推荐指数
1
解决办法
261
查看次数