想象一下PostgreSQL 9.0上具有以下结构的表:
create table raw_fact_table (text varchar(1000));
Run Code Online (Sandbox Code Playgroud)
为了简化起见,我只提到一个文本列,实际上它有十几个.该表有100亿行,每列有很多重复.该表是使用COPY FROM从平面文件(csv)创建的.
为了提高性能,我想转换为以下星型模式结构:
create table dimension_table (id int, text varchar(1000));
Run Code Online (Sandbox Code Playgroud)
然后将事实表替换为如下事实表:
create table fact_table (dimension_table_id int);
Run Code Online (Sandbox Code Playgroud)
我当前的方法是基本上运行以下查询来创建维度表:
Create table dimension_table (id int, text varchar(1000), primary key(id));
Run Code Online (Sandbox Code Playgroud)
然后创建填充我使用的维度表:
insert into dimension_table (select null, text from raw_fact_table group by text);
Run Code Online (Sandbox Code Playgroud)
之后我需要运行以下查询:
select id into fact_table from dimension inner join raw_fact_table on (dimension.text = raw_fact_table.text);
Run Code Online (Sandbox Code Playgroud)
想象一下,通过多次将所有字符串与所有其他字符串进行比较,我获得了可怕的性能.
在MySQL上,我可以在COPY FROM期间运行存储过程.这可以创建字符串的哈希值,并且所有后续字符串比较都是在哈希而不是长原始字符串上完成的.这似乎不可能在PostgreSQL上,我该怎么办?
样本数据将是包含类似内容的CSV文件(我也使用整数和双精度的引号):
"lots and lots of text";"3";"1";"2.4";"lots of text";"blabla"
"sometext";"30";"10";"1.0";"lots of text";"blabla"
"somemoretext";"30";"10";"1.0";"lots of text";"fooooooo"
Run Code Online (Sandbox Code Playgroud) 我目前有3个表格,用于存储世界上所有主要城市的信息,每个地区/州对应这些国家/地区,以及每个城市/地区.
现在我在我的数据库中有大约6个其他表,例如需要完全相同的5列的用户或组织表:地址,郊区,城市,州/地区,国家.所以我想知道是否"良好"的规范化实践可能使用存储这5条信息的"位置"表,然后用户或组织表将有一个location_id来引用回来.

好主意还是坏主意?我也在考虑使用"联系人"表,其原理相同,包括home_phone,business_phone,mobile_phone,email_address,而不是在6个表中的每个表中都有相同的5列.
任何建议表示赞赏 非常感谢!
mysql database database-design normalization denormalization
什么是xml规范化.我在javadoc中找到了以下但我无法理解它?有人可以帮忙吗?
public void normalize()
Run Code Online (Sandbox Code Playgroud)
将所有Text节点放在此Node下面的子树的完整深度(包括属性节点)中,形成"普通"形式,其中只有结构(例如,元素,注释,处理指令,CDATA部分和实体引用)分隔Text节点,即既没有相邻的Text节点也没有空的Text节点.这可以用于确保文档的DOM视图与保存和重新加载的视图相同,并且在依赖于特定文档树结构的操作(例如XPointer [XPointer]查找)是使用.如果附加到Node.ownerDocument的DOMConfiguration对象的参数"normalize-characters"为true,则此方法还将完全规范化Text节点的字符.注意:如果文档包含CDATASections,单独的规范化操作可能是不够的,因为XPointers不区分Text节点和CDATASection节点.自:DOM Level 3
大学有不同的组织部门的方式.有些学校去了School -> Term -> Department.其他人介于两者之间,最长的是School -> Sub_Campus -> Program -> Term -> Division -> Department.
School,Term和,并且Department是学校的"树"部门中唯一存在的.这些类别的顺序永远不会改变,我给你的第二个例子是最长的.每一步都是1:N的关系.
现在,我不确定如何建立表之间的关系.例如,列中包含哪些列Term?其母公司可能是Program,Sub_Campus或School.它取决于学校的系统.我可以设想将Term表设置为所有这些(所有这些都默认为NULL)的外键,但我不确定这是在这里做事的规范方式.
再一次,我对unicode问题非常困惑.我无法弄清楚如何成功使用unicodedata.normalize按预期转换非ASCII字符.例如,我想转换字符串
u"Cœur"
Run Code Online (Sandbox Code Playgroud)
至
u"Coeur"
Run Code Online (Sandbox Code Playgroud)
我很确定unicodedata.normalize是这样做的方法,但我不能让它工作.它只是保持字符串不变.
>>> s = u"Cœur"
>>> unicodedata.normalize('NFKD', s) == s
True
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
python unicode normalization unicode-normalization python-2.7
这个问题显然是一个功课问题.我无法理解我的教授,也不知道他在大选期间所说的话.我需要逐步指示将下表归一化为1NF,然后是2NF,然后是3NF.

我感谢任何帮助和指导.
database database-design normalization relational-database database-schema
我有一个函数,我在其中规范化DataFrame的前N列.我想返回规范化的DataFrame,但保留原文.然而,似乎该函数也改变了传递的DataFrame!
using DataFrames
function normalize(input_df::DataFrame, cols::Array{Int})
norm_df = input_df
for i in cols
norm_df[i] = (input_df[i] - minimum(input_df[i])) /
(maximum(input_df[i]) - minimum(input_df[i]))
end
norm_df
end
using RDatasets
iris = dataset("datasets", "iris")
println("original df:\n", head(iris))
norm_df = normalize(iris, [1:4]);
println("should be the same:\n", head(iris))
Run Code Online (Sandbox Code Playgroud)
输出:
original df:
6x5 DataFrame
| Row | SepalLength | SepalWidth | PetalLength | PetalWidth | Species |
|-----|-------------|------------|-------------|------------|----------|
| 1 | 5.1 | 3.5 | 1.4 | 0.2 | "setosa" |
| 2 | 4.9 | …Run Code Online (Sandbox Code Playgroud) 我正在尝试将所有拉丁语unicode字符转换为它们的[a-z]表示形式
ó --> o
í --> i
Run Code Online (Sandbox Code Playgroud)
我可以轻松地逐一进行,例如:
myString = myString.replaceAll("ó","o");
Run Code Online (Sandbox Code Playgroud)
但由于存在大量的变化,这种方法是不切实际的
有没有其他方式在Java中这样做?例如a regular Expression或autility library
使用案例:
1-城市名称从其他语言到英语,例如
EspíritoSanto - > Espirito Santo,
Agda的记录和instance关键字的混合使我们的行为类似于Haskell的类型类.而且,忽略instance关键字,我们可以为同一类型设置多个实例 - 这是我们在Haskell中无法做到的.
我正处于需要Haskell的单实例要求的地步,但在Agda中.是否有编译器选项或一些技巧/启发式来强制执行此操作?
现在我采取的方法是,
record Yo (n : ?) : Set where
field
sem : (some interesting property involving n)
open Yo {{...}}
postulate UniqueYo: ? {n} (p q : Yo n) ? p ? q
Run Code Online (Sandbox Code Playgroud)
然而,每当我实际使用UniqueYo缺乏计算时,我的目标就会充斥着...| UniqueYo p p我喜欢的地方...| refl或完全重写为正常形式的东西.
任何帮助表示赞赏!
我尝试在Mnist数据集上使用函数tf.contrib.layers.batch_norm实现CNN.
当我训练和检查模型时,我发现损失正在减少(好!)但是测试数据集的准确性保持随机(~10%)(BAD !!!)
如果我在没有批量标准化的情况下使用相同的模型,我会发现测试精度正在按预期增加.
你可以在下面的代码中看到我如何使用批量规范化功能.如果我用于测试数据集来设置is_training = True我得到了很好的结果,所以问题是批量标准化函数的is_training = False模式.
请帮我解决一下这个.提前感谢所有人.
# BLOCK2 - Layer 1
conv1 = tf.nn.conv2d(output, block2_layer1_1_weights, [1, 1, 1, 1], padding='SAME')
conv2 = tf.nn.conv2d(output, block2_layer1_2_weights, [1, 1, 1, 1], padding='SAME')
conv3 = tf.nn.conv2d(output, block2_layer1_3_weights, [1, 1, 1, 1], padding='SAME')
conv4 = tf.nn.conv2d(output, block2_layer1_4_weights, [1, 1, 1, 1], padding='SAME')
conv_normed1 = tf.contrib.layers.batch_norm(conv1, scale=True, decay=batch_norm_decay, center=True, is_training=is_training, updates_collections=None )
conv_normed2 = tf.contrib.layers.batch_norm(conv2, scale=True, decay=batch_norm_decay, center=True, is_training=is_training, updates_collections=None )
conv_normed3 = tf.contrib.layers.batch_norm(conv3, scale=True, decay=batch_norm_decay, center=True, is_training=is_training, …Run Code Online (Sandbox Code Playgroud) normalization ×10
database ×3
java ×2
unicode ×2
agda ×1
dataframe ×1
etl ×1
fact-table ×1
haskell ×1
hierarchy ×1
julia ×1
mysql ×1
postgresql ×1
python ×1
python-2.7 ×1
regex ×1
sql ×1
star-schema ×1
string ×1
tensorflow ×1
terminology ×1
tree ×1
typeclass ×1
xml ×1