标签: normalization

我应该如何将数据从"糟糕"的数据库设计迁移到可用的设计?

我继承的当前项目主要围绕一个非标准化表.有一些尝试正常化,但没有实施必要的限制.

示例:在Project表中,有一个客户端名称(以及其他值),还有一个客户端表,它只包含客户端名称[无任何键在任何地方].clients表仅用作值池,以便在添加新项目时为用户提供.客户端表或外键上没有主键.

诸如此类的"设计模式"在数据库的当前状态和使用它的应用程序中很常见.我可以使用的工具是SQL Server 2005,SQL Server Management Studio和Visual Studio 2008.我最初的方法是手动确定哪些信息需要规范化并运行Select INTO查询.有没有比个案更好的方法,或者无论如何这可以自动化?

编辑: 此外,我发现"工单号"不是IDENTITY(自动编号,唯一)字段,它们是按顺序生成的,对每个工单都是唯一的.现有编号也存在一些差距,但都是独一无二的.这是编写存储过程以在迁移之前生成虚拟行的最佳方法吗?

sql sql-server refactoring rdbms normalization

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

8
推荐指数
2
解决办法
3747
查看次数

如何正确实现Unicode密码?

添加对Unicode密码的支持,这是开发人员不应忽视的重要功能.

仍然,在密码中添加对Unicode的支持是一项棘手的工作,因为相同的文本可以在Unicode中以不同的方式编码,并且您不希望阻止人们因此而登录.

假设您将密码存储为UTF-8,并且请注意此问题与Unicode编码无关,而且与Unicode规范化有关.

现在的问题是你应该如何规范化 Unicode数据?

你必须确保你能够比较它.您需要确保在下一个Unicode标准发布时,它不会使您的密码验证无效.

注意:仍然有一些地方可能永远不会使用Unicode密码,但这个问题不是关于为什么或何时使用Unicode密码,而是关于如何以正确的方式实现它们.

第一次更新

是否可以在不使用ICU的情况下实现这一点,例如使用OS进行规范化?

passwords unicode normalization unicode-normalization text-normalization

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

淹没在无海之中

我继承的应用程序跟踪对材料样本执行的实验室测试结果.数据存储在单个表(tblSampleData)中,主键为SampleID,235列表示潜在的测试结果.问题是每个样本只执行少量测试,因此每行包含200多个空值.实际上,还有第二个类似的表(tblSampleData2),其中包含另外215个主要为空的列和一个SampleID的主键.这两个表具有一对一的关系,大多数SampleID在两个表中都有一些数据.但是,对于每个SampleID,都有400个空列!

这个糟糕的数据库设计?如果是这样,哪个正常形式规则被打破?如何查询此表以确定哪些列通常与数据一起填充?我的目标是拥有45个表,10列,空值更少.我怎样才能做到这一点?如何避免破坏现有应用程序?

到目前为止,这些表有大约200,000个样本记录.用户要求我为更多测试添加更多列,但我宁愿构建一个新表.这是明智的吗?

null refactoring database-design normalization

8
推荐指数
2
解决办法
339
查看次数

我的数据库是否过度设计?

好的我是数据库设计的新手,请给我建议.

1 何时应使用复合索引?

我不知道索引做了什么,但我知道我们应该把它放在像WHERE Verified = 1那样重载,并在搜索中像company.name = something.我对吗 ?

2 MySQL索引 - 有多少足够?

它够了吗?

3 数据库规范化

它恰到好处吗?

alt text http://i28.tinypic.com/awp2cz.png

谢谢.

编辑*

规则.

  1. 每个用户(公司成员或所有者)可以是公司的成员
  2. 每个公司都有一些用户.
  3. 有公司管理员(首席执行官,管理员),有公司成员(插入产品)
  4. 每个公司都可以有产品.

对于数字3,我将在users_company中添加一点 - 1表示admin - 0表示成员

mysql database-design normalization

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

如何规范Lucene分数?

我需要将Lucene得分标准化为0到1之间.

例如,随机查询返回以下分数......

8.864665
2.792687
2.792687
2.792687
2.792687
0.49009037
0.33730242 
0.33730242 
0.33730242 
0.33730242 
Run Code Online (Sandbox Code Playgroud)

得分最高的是什么?10.0?

谢谢

lucene normalization

8
推荐指数
2
解决办法
7962
查看次数

SSE:如果不是零,则为倒数

如何使用SSE指令获取浮点数的倒数(反向),但仅适用于非零值?

背景情况:

我想规范化一个向量数组,以便每个维度具有相同的平均值.在C中,这可以编码为:

float vectors[num * dim]; // input data

// step 1. compute the sum on each dimension
float norm[dim];
memset(norm, 0, dim * sizeof(float));
for(int i = 0; i < num; i++) for(int j = 0; j < dims; j++)
    norm[j] += vectors[i * dims + j];
// step 2. convert sums to reciprocal of average
for(int j = 0; j < dims; j++) if(norm[j]) norm[j] = float(num) / norm[j];
// step 3. normalize the data …
Run Code Online (Sandbox Code Playgroud)

c sse normalization

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

设计城市,州,国家/地区表的最佳方式是什么?

我需要帮助设计我的国家,城市,州表.我将从我的表中提供样本数据,以便您可以更好地解决我的问题.

这是我的国家表:

Country
______
code   name
US     United States
SG     Singapore
GB     United Kingdom
Run Code Online (Sandbox Code Playgroud)

这是我的城市表:

City
_____
id   country   city        state
1    US        Birmingham  Alabama
2    US        Auburn      Alabama
.
.
29   GB        Cambridge   NULL
30   GB        Devon       NULL
Run Code Online (Sandbox Code Playgroud)

我的问题是,唯一拥有州领域的国家是美国.所有其他城市都有空值.

我的临时解决方案是为美国创建一个特殊的城市表,然后所有其他国家都有另一个没有州字段的城市表.

我认为这只会使问题复杂化,因为我有两个城市表.

我该如何改进这个设计?

mysql database normalization

8
推荐指数
2
解决办法
7452
查看次数

创建数据库表

我正在为调查创建一个数据库表,我需要记录报告事件的人,这可能是来自供应商或用户表的记录.最简单的方法是在我的调查表中同时使用一个flexir和一个用户id列,但这似乎是错误的,有什么更好的方法呢?

谢谢.

sql database normalization database-table

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

scikit-learn MinMaxScaler产生的结果与NumPy实现略有不同

我将scikit-learn Min-Max定标器与其preprocessing模块与使用NumPy的"手动"方法进行了比较.但是,我注意到结果略有不同.有没有人对此有解释?

使用以下等式进行最小 - 最大缩放:

在此输入图像描述

这应该与scikit-learn one相同: (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

我使用两种方法如下:

def numpy_minmax(X):
    xmin =  X.min()
    return (X - xmin) / (X.max() - xmin)

def sci_minmax(X):
    minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True)
    return minmax_scale.fit_transform(X)
Run Code Online (Sandbox Code Playgroud)

在随机样本上:

import numpy as np

np.random.seed(123)

# A random 2D-array ranging from 0-100

X = np.random.rand(100,2)
X.dtype = np.float64
X *= 100 
Run Code Online (Sandbox Code Playgroud)

结果略有不同:

from matplotlib import pyplot as plt

sci_mm = sci_minmax(X)
numpy_mm = numpy_minmax(X)

plt.scatter(numpy_mm[:,0], numpy_mm[:,1],
        color='g',
        label='NumPy bottom-up',
        alpha=0.5, …
Run Code Online (Sandbox Code Playgroud)

python scaling numpy normalization scikit-learn

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