标签: normalization

规范化数据库对资源的影响是什么?

从相对未规范化的形式获取数据库并对其进行规范化时,资源利用率会发生什么变化(如果有的话)?

例如,规范化通常意味着从更少的表创建更多的表,这意味着数据库现在具有更多的表,但是其中许多表非常小,允许经常使用的表更好地适应内存.

更多的表还意味着需要(可能)更多的连接来获取抽象出来的数据,因此可以预期系统需要进行的更多连接会产生某种影响.

那么,规范化非规范化数据库对资源使用有什么影响(即什么会改变)呢?


编辑:为了添加一些上下文,我有一个现有的(即遗留的)数据库,有超过300个可怕的表.大约1/2的数据是TEXT,另一半是char字段或整数.没有任何限制.我问的原因主要是获取更多信息,以说服其他人事情需要改变,并且不会降低性能或可维护性.不幸的是,那些我必须说服的人已经足够了解非规范化数据库的性能优势,希望尽可能避免规范化.

sql database resources database-design normalization

5
推荐指数
2
解决办法
2174
查看次数

是否有用于表示来自不同表的多个对象的规范化形式?

对于我当前正在构建的系统,会出现以下两种情况:

  1. 我的权限系统是将角色和角色的权限附加到用户的常年最爱,但有一个转折:权限可以应用于任何层的任何资产,并且有4个"层",编号为0到3.因此,角色分配表长度为5个字段:资产层,资产ID,角色ID,用户ID和"已禁用"标志.该"Tier/ID"系统还用于将用户分配给"Home Asset".

    这个系统的不幸副作用是,在应用程序本身中解析我的这些资产引用通常要简单得多,而不是在SQL中(我知道它可以这样做,但它会导致一些严重的丑陋查询) . 有没有更好的方式来表示这种关系?这是表达这种关系的可接受方式吗?

    旁注:资产本身的表(它们是分层的)是规范化的,外键引用从子节点指向父节点(例如,第3层包含有关第2层的信息等),因此一旦单个资产被固定,它就非常很容易找到它的孩子和祖先.

  2. 类似的问题,但不同的数据上下文:在最低层,设备可以"附加".还允许将设备放置在图形表示(如地图)上,并将它们的排列信息存储在数据库中.图形引用(也称为"点")应指向真实设备,但实际设备可能不指向图形引用.

    目前,所有"点"(代表设备)都有一个参考表,其中包含显示布局,位置,大小等信息.我可以从这里确定三个可能的事情:

    1. 创建一系列规范化表来表示各个设备,并使用类似的"设备类型/设备ID"系统查找它们,并将此信息存储在"点"表中; 这仍然需要应用程序在解析对各自表中的实际设备的引用时进行中间工作
    2. 创建一系列规范化表,并将它们指向"点"表; 此解决方案可能不需要应用程序取消引用点数据,但需要扫描所有设备表以查找任何第3层对象.
    3. 使用点表作为指导,将所有相关显示数据添加到每个相应的标准化表中.虽然这可以防止必须完全解决任何查找,但仍然需要扫描每个设备表,并且与其他解决方案相比,对于必须存储点数据的方式的任何变化也非常不容忍.

    这个问题已经解决了,我只是没有得到备忘录?是否有解决此问题的标准设计,或者我应该假设我必须自己解决这些引用?

注意:关于问题二,我认为以下两种解决方案是可怕的,我不会考虑它们(除非有一些疯狂的,令人惊讶的证据表明它是最好的方式,我很确定它不是):

  1. 在点表本身中存储有关每个设备的所有信息(在序列化数组或某些此类机制中).这具有明显的问题,即完全无法搜索并且违反正常形式
  2. 将所有设备存储在单个通用表中.不幸的是,这些设备在它们提供的数据类型以及它们必须如何被访问方面都有很大的不同,并且在一个表格中这样做需要,上次我尝试在纸上完成它,至少30(并且可能更多)列,其中一半以上的每行都为空.

请求和赞赏任何解决方案,但我特别寻找解决此问题的现有模式和/或规范化模式(如果存在).如果您知道这是正确答案的事实,"否"就足够了,我将继续使用应用程序层来解析这些引用.它还没有成为问题,我只是想知道当有人已经解决了这个/这些问题时,我并没有在错误的方向上开辟道路.提前致谢.

编辑:权限/资产架构

第0层实际上是隐含的,而不是在数据库中,但有些东西被注册为第0层(资产ID 0)

第1层:

id int(5) unsigned not null primary key auto_increment,
name varchar(32) not null,
disabled tinyint(1) unsigned not null,
Run Code Online (Sandbox Code Playgroud)

2级:

id int(5) unsigned not null primary key auto_increment,
parentId int(5) unsigned not null,
name varchar(32) not null,
abbr varchar(16) not null,
disabled tinyint(1) unsigned not null,
foreign key (parentId) references tier1(id)
Run Code Online (Sandbox Code Playgroud)

第3层:

id int(5) unsigned not null …
Run Code Online (Sandbox Code Playgroud)

php mysql architecture design-patterns normalization

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

设计具有层次结构/子类别的SQL表

我有一个看起来像这样的表:

ID | 关键字| 类别| 子类别| 子分类| 分分分类别

如果一个关键字只能属于一个类别,子类别等,我是否需要将其拆分为两个表(关键字表和具有父ID的类别表).意思是没有重复.还有需要拆分吗?

sql normalization categorization

5
推荐指数
2
解决办法
7879
查看次数

你如何规范一对一或其他关系?

我正在存储有关棒球统计数据的数据,并希望使用三个表格来执行此操作:player,battingStats和pitchingStats.出于问题的目的,每个玩家将有击球统计数据或投球统计数据,但不是两者都有.

我如何在3NF中规范这种关系?

normalization 3nf third-normal-form database-normalization

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

在一对一的关系中我应该删除表的id列之一吗?

MySQL中有以下2个表:Customer(Id,Firstname,Lastname ...)Bonus(Id,CustomerId,Value,...)

关系是一对一,每个客户只有一个奖金.(CustomerId在奖金表中是唯一的)

问:我应该删除奖励表的Id列吗?(我想知道为什么或为什么不)

mysql database-design normalization one-to-one relational-database

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

GWT中的Unicode规范化

可能重复:
在GWT中用等效的"eace"替换éàçè...

是否有一些库可用于在gwt中进行unicode规范化操作?(从上下文来保证拉丁O等于西里尔O,例如)

unicode gwt normalization unicode-normalization text-normalization

5
推荐指数
0
解决办法
119
查看次数

偏斜特征最合适的归一化/变换方法?

我正在尝试预处理生物数据以训练神经网络,尽管对各种归一化方法进行了广泛的搜索和重复演示,但我并不知道应该使用哪种方法.特别是我有许多输入变量,它们是正偏态的,并且一直试图确定是否存在最合适的归一化方法.

我还担心这些输入的性质是否会影响网络的性能,因此已经尝试过数据转换(特别是日志转换).但是,有些输入有很多零,但也可能是小的十进制值,并且似乎受到log(x + 1)(或者从1到0.0000001的任何数字)的高度影响,结果分布未能接近正常(或者仍然是倾斜或变为双峰,在最小值处具有尖峰).

这些与神经网络有关吗?即.我应该使用特定的特征转换/规范化方法来解释偏斜的数据,还是应该忽略它并选择规范化方法并推进?

对此事的任何建议将不胜感激!

谢谢!

machine-learning normalization biological-neural-network neural-network

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

标准化h/w

在此输入图像描述

被告知要把它放入UNF/1NF/2NF/3NF,这是对的吗?

将上述数据显示为UNF中的关系(非标准化数据).

客户(CustomerID,FirstName,LastName,Address,City,Phone,State,Postcode,Qty,ProductNo,Description,Unit price,Total,Subtotal,Shipping,Tax Rate,Date,OrderNo.))

在1NF中将数据显示为关系.(表示任何键.)

客户(CustomerID,FirstName,LastName,地址,城市,州,电话,州,邮政编码)产品(ProductNo,Qty,Description,Unitprice,total,subtotal,shipping,Tax rates(s),CustomerID(FK).)Order( OrderNo,Date,ProductNo(FK).)

在2NF中将数据显示为关系.(表示任何键.)

客户(CustomerID,FirstName,LastName,地址,城市,电话,州,邮政编码)产品(ProductNo,Qty,Description,UnitPrice,CustomerID(FK),Total(FK).)订单(OrderNo,Date,CustomerID(FK), ProductNo(FK).)总计(总计,小计,运费,税率,ProductNo(FK),CustomerID(FK))

在3NF中将数据显示为关系.(表示任何键.)

客户(CustomerID,FirstName,LastName,地址,城市,电话,州,邮政编码)产品(ProductNo ,,描述,单价,CustomerID(FK),Total(FK))订单(OrderNo,Date,CustomerID(FK).ProductNo (FK))总计(总计,小计,ProductNo(FK),客户ID(FK))运费(运费,税率,总计(FK),订单号(FK))数量(QtyID,Qty,ProductNo(FK),OrderNo( FK).)

sql database normalization

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

如何确定多值依赖MVD(传递规则)?

我有一些困难来确定以下关系的MVD

 R=(A,B,C,D,E) where A->>B and B->>D
Run Code Online (Sandbox Code Playgroud)

鉴于以下元组:

 (0,1,2,3,4) and (0,5,6,7,8) 
Run Code Online (Sandbox Code Playgroud)

我想确定all可以完成关系的元组.

据我所知,如果元组t(A)=u(A)必须有第三元组 v(A)=t(A)和 v(B)=t(B )第四元组w(A)=t(A)和w(B)=u(B)

所以我尝试过:

       A B C D E
   t   0 1 2 3 4
   u   0 5 6 7 8
   v   0 1 2 3 4
   w   0 5 6 7 8
Run Code Online (Sandbox Code Playgroud)

但是,我想我可能会错过一些东西(也就是传递性).因为元组中的非元组(v和w)包含在集合中:

   1.(0,1,2,7,4)
   2.(0,1,2,3,8)
   3.(0,1,6,3,4)
   4.(0,5,2,7,8)
Run Code Online (Sandbox Code Playgroud)

其中至少有一个元组必须为真.我只是不能把它放在一起,并希望任何帮助!关于传递,我想通了,A->>B和B->>D这样A->>(D-B)或A->>BD可我只是不能得到它的权利.

database normalization

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

对于Spark中的MinMaxScaler等缩放器,是否没有“ inverse_transform”方法?

训练模型(例如线性回归)时,我们可以像火车上的MinMaxScaler一样对测试数据集进行归一化处理。

得到训练有素的模型并使用它进行预测之后,将预测缩减为原始表示。

在python中,有“ inverse_transform”方法。例如:

from sklearn.preprocessing import MinMaxScaler
scalerModel.inverse_transform

from sklearn.preprocessing import MinMaxScaler

data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]

scaler = MinMaxScaler()
MinMaxScaler(copy=True, feature_range=(0, 1))
print(data)

dataScaled = scaler.fit(data).transform(data)
print(dataScaled)

scaler.inverse_transform(dataScaled)
Run Code Online (Sandbox Code Playgroud)

在火花中有类似的方法吗?

我在Google上搜索了很多,但没有找到答案。谁能给我一些建议?非常感谢你!

machine-learning normalization apache-spark apache-spark-mllib inverse-transform

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