我是数据库设计的新手,我已经阅读了很多关于规范化的内容.如果我有三张桌子:住宿,火车站和机场.我是否在每个表中都有地址列或其他表引用的地址表?是否存在过度规范化的问题?
谢谢
database database-design normalization database-normalization
I would like to ask if there's any Java package or library that have the standard URL normalization?
5 Components of URL Representation
http://www[dot]example[dot]com:8040/folder/exist?name=sky#head
The 3 types of standard URL normalization
Syntax-Based Normalization
这是一个常见的面试问题.我面对一次采访,面试官给了我一张桌子,并告诉他桌子的正常形式是什么?如果它在## NF中,那么将其标准化为下一个NF?
我总是对这些正常形式的数据库感到困惑.任何人都可以向我解释这些正常形式,以及如何将每个NF建模到表格中的适当示例,以便在我的下一次采访中有所帮助吗?
我有一个使用关系数据库(MySQL)的Web应用程序.我们正在添加一项新功能,允许某些用户从可选表单元素池中动态构建"表单",并将这些表单分发给其他用户以完成/提交.
问题在于存储完成的表单提交.每个表单可以并且将在表单元素的数量和组合方面有所不同,并且对于关系数据库,我的选项在某种程度上局限于动态创建一个新表来保存每个表单的提交(似乎是一个坏的路径)或存储每个提交的表单都作为TEXT列中的JSON(丢失了所有有用的RDBMS查询功能)
我以前从未在生产项目中实际使用MongoDB,但我认为使用我的MySQL关系数据库存储我的应用程序的某些用户创建的所有表单,然后存储所有提交的内容可能是个好主意. MongoDB,每个文档引用MySQL中表单的UUID.
我用这种方法可以想到的第一个缺点是表单提交和MySQL中的表单之间没有引用完整性.如果我在MySQL中删除一个表单,则必须手动删除所有表单提交(如果我想复制'Cascade'效果)
我是否会将单个MongoDB集合中所有表单的所有表单提交存储为单独的文档?任何意见是极大的赞赏.:)
编辑1 基于此处的文档:http://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections
我现在正在考虑创建一个新的集合来保存每个独特表单类型的所有提交.
编辑2
经过一些仔细考虑和其他人的建议后,我决定放弃我的双数据库方法来解决这个问题,转而采用关系数据库模式,我认为这解决了创建动态表单和保存表单提交的问题.他们很容易查询复杂报告的方式.

基本上,"表单"中的每个记录都代表一个由用户构建的唯一表单.'forms_fields'有一个引用表单的外键和一个带有选项的枚举类型:1.复选框2. textfield 3. textarea 4.选择5.多选6.日期
'forms_fields_options'包含选择字段所具有的所有'选项'.通过这三个表,用户可以创建自定义表单.
当另一个用户填写并提交表单时,会在forms_submissions中创建一条记录.对于每个字段,将在'forms_submissions_fields'中创建相应的记录,该记录引用表单提交和forms_fields_id.最终表'forms_submissions_options_multiselect'本质上是一个连接表,用于指示用户选择的多选表单字段中的哪些选项.
我面临以下问题.我有一张非常大的桌子.此表是以前参与该项目的人员的遗产.该表位于MS SQL Server中.
该表具有以下属性:
正如您可能猜到的,无法对此表运行任何合理的查询.现在人们只在表中插入新记录,但没有人使用它.所以我需要对其进行重组.我计划创建一个新结构,并使用旧表中的数据重新填充新结构.显然,我将实施分区,但这不是唯一要做的事情.
该表最重要的特征之一是那些纯文本字段(即它们不必转换成另一种类型)通常具有频繁重复的值.因此,给定列中实际值的变化范围为5-30个不同的值.这导致了进行规范化的想法:对于每个这样的文本列,我将创建一个附加表,其中包含可能出现在此列中的所有不同值的列表,然后我将在此附加表中创建一个(tinyint)主键,然后将在原始表中使用适当的外键,而不是将这些文本值保留在原始表中.然后我将在这个外键列上放一个索引.以这种方式处理的列数约为100.
它提出了以下问题:
抱歉这么长的文字.
感谢您的评论!
PS我创建了一个关于加入100个表的相关问题; 加入100张桌子
sql sql-server normalization sql-server-2008 database-normalization
我正在使用高斯混合模型进行图像分类.我有大约34,000个特征,属于三个类,都位于23维空间中.我使用不同的方法对训练和测试数据进行了特征缩放,并且我观察到在执行缩放后精度实际上降低了.我执行了特征缩放,因为许多特征之间存在许多顺序的差异.我很想知道为什么会这样,我认为特征缩放会提高准确性,特别是考虑到功能的巨大差异.
我想将英语(i)的"I"的小写字母与土耳其语(i)的"İ"的小写字母相匹配.它们是相同的字形,但它们不匹配.当我做System.out.println("?".toLowerCase());字符i和打印点(此网站不能正确显示)
有没有办法匹配那些?(最好没有硬编码)我想让程序匹配与语言和utf代码无关的相同字形.这可能吗?
我测试了规范化没有成功.
public static void main(String... a) {
String iTurkish = "\u0130";//"?";
String iEnglish = "I";
prin(iTurkish);
prin(iEnglish);
}
private static void prin(String s) {
System.out.print(s);
System.out.print(" - Normalized : " + Normalizer.normalize(s, Normalizer.Form.NFD));
System.out.print(" - lower case: " + s.toLowerCase());
System.out.print(" - Lower case Normalized : " + Normalizer.normalize(s.toLowerCase(), Normalizer.Form.NFD));
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
结果未在网站中正确显示,但第一行(iTurkish)仍然具有? 接近小写的i.
目的和问题
这将是一个多语言词典.我希望程序能够识别"İFEL"以"if"开头.为了确保它们不区分大小写,我首先将两个文本转换为小写.İFEL成为i(点)fel并且"if"未被识别为其中的一部分
我有一个包含多列的org.apache.spark.sql.DataFrame.我想使用MinMax Normalization或任何技术缩放1列(lat_long_dist)以在-1和1之间缩放数据,并将数据类型保留为org.apache.spark.sql.DataFrame
scala> val df = sqlContext.csvFile("tenop.csv")
df: org.apache.spark.sql.DataFrame = [gst_id_matched: string,
ip_crowding: string, lat_long_dist: double, stream_name_1: string]
Run Code Online (Sandbox Code Playgroud)
我找到了StandardScaler选项,但是在我可以进行转换之前需要转换数据集.这是一种简单的干净方式.
我最近发现LayerNormBasicLSTMCell是LSTM的一个版本,它实现了Layer Normalization和dropout.因此,我使用LSTMCell替换了我的原始代码和LayerNormBasicLSTMCell.这种变化不仅将测试精度从~96%降低到~92%,而且需要更长的时间(~33小时)进行训练(原始训练时间约为6小时).所有参数都相同:历元数(10),堆叠层数(3),隐藏矢量大小数(250),丢失保持概率(0.5),......硬件也相同.
我的问题是:我在这里做错了什么?
我原来的模型(使用LSTMCell):
# Batch normalization of the raw input
tf_b_VCCs_AMs_BN1 = tf.layers.batch_normalization(
tf_b_VCCs_AMs, # the input vector, size [#batches, #time_steps, 2]
axis=-1, # axis that should be normalized
training=Flg_training, # Flg_training = True during training, and False during test
trainable=True,
name="Inputs_BN"
)
# Bidirectional dynamic stacked LSTM
##### The part I changed in the new model (start) #####
dropcells = []
for iiLyr in range(3):
cell_iiLyr = tf.nn.rnn_cell.LSTMCell(num_units=250, state_is_tuple=True)
dropcells.append(tf.nn.rnn_cell.DropoutWrapper(cell=cell_iiLyr, output_keep_prob=0.5))
##### The part I changed in the …Run Code Online (Sandbox Code Playgroud) 我尝试在 scipy 中使用 stats.zscore() 并得到以下结果让我感到困惑。
假设我有一个数组,我以两种不同的方式计算 z 分数:
>>> a = np.array([[1.0, 2.0], [3.0, 4.0]])
>>> a
array([[ 1., 2.],
[ 3., 4.]])
Run Code Online (Sandbox Code Playgroud)
第一个结果:
>>> stats.zscore(a)
array([[-1., -1.],
[ 1., 1.]])
Run Code Online (Sandbox Code Playgroud)
第二个结果:
>>> mean = np.mean(a)
>>> mean
2.5
>>> std = np.std(a)
>>> std
1.1180339887498949
>>> b = (a-mean)/std
>>> b
array([[-1.34164079, -0.4472136 ],
[ 0.4472136 , 1.34164079]])
Run Code Online (Sandbox Code Playgroud)
上面的结果是不同的,但是如果我使用另一个数组,
>>> c = np.array([ 0.7972, 0.0767, 0.4383, 0.7866, 0.8091, 0.1954, 0.6307, 0.6599, 0.1065, 0.0508])
>>> c
array([ 0.7972, 0.0767, 0.4383, …Run Code Online (Sandbox Code Playgroud) normalization ×10
database ×2
java ×2
sql ×2
apache-spark ×1
lstm ×1
mongodb ×1
mysql ×1
nosql ×1
numpy ×1
python ×1
rdbms ×1
scala ×1
scipy ×1
sql-server ×1
statistics ×1
tensorflow ×1
unicode ×1
url ×1