从相对未规范化的形式获取数据库并对其进行规范化时,资源利用率会发生什么变化(如果有的话)?
例如,规范化通常意味着从更少的表创建更多的表,这意味着数据库现在具有更多的表,但是其中许多表非常小,允许经常使用的表更好地适应内存.
更多的表还意味着需要(可能)更多的连接来获取抽象出来的数据,因此可以预期系统需要进行的更多连接会产生某种影响.
那么,规范化非规范化数据库对资源使用有什么影响(即什么会改变)呢?
编辑:为了添加一些上下文,我有一个现有的(即遗留的)数据库,有超过300个可怕的表.大约1/2的数据是TEXT,另一半是char字段或整数.没有任何限制.我问的原因主要是获取更多信息,以说服其他人事情需要改变,并且不会降低性能或可维护性.不幸的是,那些我必须说服的人已经足够了解非规范化数据库的性能优势,希望尽可能避免规范化.
对于我当前正在构建的系统,会出现以下两种情况:
我的权限系统是将角色和角色的权限附加到用户的常年最爱,但有一个转折:权限可以应用于任何层的任何资产,并且有4个"层",编号为0到3.因此,角色分配表长度为5个字段:资产层,资产ID,角色ID,用户ID和"已禁用"标志.该"Tier/ID"系统还用于将用户分配给"Home Asset".
这个系统的不幸副作用是,在应用程序本身中解析我的这些资产引用通常要简单得多,而不是在SQL中(我知道它可以这样做,但它会导致一些严重的丑陋查询) . 有没有更好的方式来表示这种关系?这是表达这种关系的可接受方式吗?
旁注:资产本身的表(它们是分层的)是规范化的,外键引用从子节点指向父节点(例如,第3层包含有关第2层的信息等),因此一旦单个资产被固定,它就非常很容易找到它的孩子和祖先.
类似的问题,但不同的数据上下文:在最低层,设备可以"附加".还允许将设备放置在图形表示(如地图)上,并将它们的排列信息存储在数据库中.图形引用(也称为"点")应指向真实设备,但实际设备可能不指向图形引用.
目前,所有"点"(代表设备)都有一个参考表,其中包含显示布局,位置,大小等信息.我可以从这里确定三个可能的事情:
这个问题已经解决了,我只是没有得到备忘录?是否有解决此问题的标准设计,或者我应该假设我必须自己解决这些引用?
注意:关于问题二,我认为以下两种解决方案是可怕的,我不会考虑它们(除非有一些疯狂的,令人惊讶的证据表明它是最好的方式,我很确定它不是):
请求和赞赏任何解决方案,但我特别寻找解决此问题的现有模式和/或规范化模式(如果存在).如果您知道这是正确答案的事实,"否"就足够了,我将继续使用应用程序层来解析这些引用.它还没有成为问题,我只是想知道当有人已经解决了这个/这些问题时,我并没有在错误的方向上开辟道路.提前致谢.
第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) 我有一个看起来像这样的表:
ID | 关键字| 类别| 子类别| 子分类| 分分分类别
如果一个关键字只能属于一个类别,子类别等,我是否需要将其拆分为两个表(关键字表和具有父ID的类别表).意思是没有重复.还有需要拆分吗?
我正在存储有关棒球统计数据的数据,并希望使用三个表格来执行此操作:player,battingStats和pitchingStats.出于问题的目的,每个玩家将有击球统计数据或投球统计数据,但不是两者都有.
我如何在3NF中规范这种关系?
MySQL中有以下2个表:Customer(Id,Firstname,Lastname ...)Bonus(Id,CustomerId,Value,...)
关系是一对一,每个客户只有一个奖金.(CustomerId在奖金表中是唯一的)
问:我应该删除奖励表的Id列吗?(我想知道为什么或为什么不)
mysql database-design normalization one-to-one relational-database
可能重复:
在GWT中用等效的"eace"替换éàçè...
是否有一些库可用于在gwt中进行unicode规范化操作?(从上下文来保证拉丁O等于西里尔O,例如)
unicode gwt normalization unicode-normalization text-normalization
我正在尝试预处理生物数据以训练神经网络,尽管对各种归一化方法进行了广泛的搜索和重复演示,但我并不知道应该使用哪种方法.特别是我有许多输入变量,它们是正偏态的,并且一直试图确定是否存在最合适的归一化方法.
我还担心这些输入的性质是否会影响网络的性能,因此已经尝试过数据转换(特别是日志转换).但是,有些输入有很多零,但也可能是小的十进制值,并且似乎受到log(x + 1)(或者从1到0.0000001的任何数字)的高度影响,结果分布未能接近正常(或者仍然是倾斜或变为双峰,在最小值处具有尖峰).
这些与神经网络有关吗?即.我应该使用特定的特征转换/规范化方法来解释偏斜的数据,还是应该忽略它并选择规范化方法并推进?
对此事的任何建议将不胜感激!
谢谢!
machine-learning normalization biological-neural-network neural-network

被告知要把它放入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).)
我有一些困难来确定以下关系的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可我只是不能得到它的权利.
训练模型(例如线性回归)时,我们可以像火车上的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
normalization ×10
database ×3
sql ×3
mysql ×2
3nf ×1
apache-spark ×1
architecture ×1
gwt ×1
one-to-one ×1
php ×1
resources ×1
unicode ×1