标签: normalization

这是一个好的数据库设计概念吗?

EDIT1:试图通过重命名表格及其关系来清除问题.编辑2:请不要查看我在三个数据库表中保存的数据类型.它们是在飞行中组成的.它们不是我真实世界的场景(不,我不能谈论我的真实世界数据......实际上它是1个父母和6个孩子,目前).请忽略哪种类型的数据,只看一些数据是必需的.EDIT3:两个FK是0或1比1的关系.不是0到很多.不是1比1.我试图避免0或1比1关系到1比1的关系,所以我不需要有OUTER JOINS但是有一个INNER JOIN.

问题:我需要知道建议的数据库设计是好还是坏/跛足等.

问题:今天我尝试制作索引视图,但失败了因为我的表有外连接.叹.所以我想知道我是否可以将其重新设置为以下设计:

  • 三张桌子.
  • table_User在table_Address上有一个FK
  • table_User在table_Vehicle上有一个FK
  • 等等..

和表B和C(现在像查找表一样)有...

  • Id INT IDENTITY PK
  • 描述NVARCHAR(100)NULLABLE

注意到可空的?这样,table_Address中的某些内容在table_Address中不存在...该字段为null(因为内部连接).

之前,我做了一个LEFT OUTER JOIN,所以如果table_b中没有数据,我将得到空值是每个字段的结果.

我会在这里抛出一些数据示例......

Table_User

  • ID:1,名称:Fred,AddressID:1(NULL)
  • ID:2,姓名:Joe,地址ID:2(史密斯街1号.....)
  • ID:3,姓名:Jane,地址ID:2(史密斯街1号.....)

Table_Address

  • ID:1,描述= NULL
  • ID:2,描述= 1史密斯街

等等

那么我最终可以把这一切都放到一个索引视图中.(我的现实生活场景有大约8个表).

注意:DB是Microsoft Sql Server 2008,但这可能适用于任何数据库.

Q1:那个设计看起来好吗?

Q2:所以我在这里做的是我正在对数据进行规范化,对吗?通过保持内部连接在一起.

Q3:最后,如果这是一个好的方式..我还可以确保表中的数据是唯一的(例如街道地址)有一些独特的约束或键或索引或什么(我不确定适当的术语).

谢谢大师!

database-design normalization

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

ER图(绘图)


对于表示大型大学当前学期注册的关系数据库,考虑所有断言的模式的ER图是什么:

•100名教师,200门课程和800名学生.
•教师可以在一个学期内教授一门或多门课程(平均为2.0门课程).
•教师必须指导至少一名学生(平均= 2.5名学生)的研究.
•课程可能没有,一个或两个先决条件(平均值= 1.5个先决条件).
•即使目前没有学生注册,也可能存在课程.
•每门课程由一名教师授课.
•课程的平均入学人数为30名学生.
•学生每学期必须选择至少一门课程(平均= 4.0课程选择).

我曾多次尝试过这个答案,但我不能.所有帮助对我都很有价值.我将非常感谢MS Visio图表(如果可以节省时间),以帮助我可视化解决方案.

注意:我不是在寻找RTFM响应.

sql database-design data-modeling normalization

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

如何在单个语句中将CSV数据拆分并插入新表?

我有一个名为"Documents"的表,其中包含如下列:

DocumentID

我有格式的数据 - @DIDID = 1,2,3,4

如何使用单个查询在单独的行中插入这些documentID?

sql-server sql-server-2005 normalization

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

如何在插入时自动映射数据库查找表(Oracle)

我有几乎非规范化的现有表.事物列表状态,类型,国家等没有查找表...这个原始设计只是为了简化应用程序对数据库的访问,因此这种非规范化没有性能原因.

这导致了包含大量重复数据的表格,我想通过为各种状态/类型/国家/地区列引入查找表来正确规范化.

是否有一些我可以在数据库(oracle)中做到这一点,对客户端保持透明?应用程序将继续执行插入操作,但数据库会将事物映射到幕后的正确查找表.

我一直在尝试使用可以进行映射的视图和触发器的组合,但感觉应该有更自动的方法来执行此操作.

sql oracle normalization lookup-tables denormalization

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

在matlab中规范化mat文件

我有一个mat文件,其结构如下所示:

在此输入图像描述

如何规范化数据并将其另存为.dat文件(ascii)

matlab normalization

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

如何在一个范围内创建一个整数数组?

只是说我想要一组数字:

$a['a'] = 10;
$a['b'] = 20;
$a['c'] = 500;
$a['d'] = 1000;
Run Code Online (Sandbox Code Playgroud)

并迫使它们适合范围(例如1到100),如下所示:

$a['a'] = 1;
$a['b'] = 2;
$a['c'] = 50;
$a['d'] = 100;
Run Code Online (Sandbox Code Playgroud)

另一个例子...

从:

$a['a'] = 12;
$a['b'] = 28;
Run Code Online (Sandbox Code Playgroud)

至:

$a['a'] = 1;
$a['b'] = 100;
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法呢?

php arrays normalization

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

规范化问题

我正在尝试规范化这种关系:

film_year  film_name  critic_id critic_name cinemas_debut           score
     2004  I robot          111        John  NY_cinema, LA_cinema       4 
     2004  I robot          222     Mathiew  NY_cinema, LA_cinema       5
Run Code Online (Sandbox Code Playgroud)

哪里......

  • film_year和film_name识别一部电影.
  • Cinemas_debut是一个多值属性.
  • critic_id - > critic_name
  • film_year,film_name,critic_id - >得分

我无法将关系转换为3FN.这是我试过的:

  • 步骤1

到1NF:

film_year  film_name  critic_id critic_name cinemas_debut           score
     2004  I robot          111        John  NY_cinema                  4 
     2004  I robot          222     Mathiew  LA_cinema                  5
     2004  I robot          111        John  NY_cinema                  4 
     2004  I robot          222     Mathiew  LA_cinema                  5
Run Code Online (Sandbox Code Playgroud)
  • 第2步

至2NF:

我认为critics关系 critics ( critic_id (pk), critic_name …

database-design normalization

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

在没有复合键的情况下归一化到1NF

它经常声明要达到1nf,必须创建一个新实体,并且该实体必须有一个复合键.

LeadID | leadDate | Name | DOB | streetAddress | city | state | residenceType

如果我要规范化streetAddress, city, state, residenceType为一个新实体,那么我必须立即创建一个新的主键.我无法使用,LeadID因为这意味着没有线索就无法创建地址,这是不正确的.我不能使用,streetAddress因为街道不是好的候选人(5123 glowsville way st.n ave.根本不是一个好关键).

所以我不得不为这个新实体创建一个密钥.这好吗?

sql database database-design entity-relationship normalization

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

在numpy中实现零均值和单位方差

我得到了一个函数的定义,并要求实现如下:

# Problem 1 - Apply zero mean and zero variance scale to the image features
def normalize(data):
    pass
Run Code Online (Sandbox Code Playgroud)

然后提供单元测试使用numpy它将断言我的实现成功

编辑

不是我的单元测试,而是由课程讲师分配.

np.testing.assert_array_almost_equal(
    normalize(np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])),
    np.array([-0.4, -0.3, -0.2, -0.099, 0.0, 0.099, 0.199, 0.3, 0.4, 0.5]),
    decimal=3)
Run Code Online (Sandbox Code Playgroud)

我的解决方案是

def normalize(data):
    return ((data - data.mean()) / data.max() - data.min())
Run Code Online (Sandbox Code Playgroud)

但是我的理解肯定存在差距,因为我得到了

AssertionError: 
Arrays are not almost equal to 3 decimals

(mismatch 100.0%)
 x: array([-1.45, -1.35, -1.25, -1.15, -1.05, -0.95, -0.85, -0.75, …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning normalization

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

Scikit-Learn:如何使用矩阵X的变换来变换目标变量Y.

我正在研究回归问题,我的特征在矩阵X中,目标值在Y中.

我想缩放输入.我使用这样做sklearnMinMaxScaler:

# scale data to 0-1
scaler = MinMaxScaler(feature_range=(0, 1))
X = scaler.fit_transform(X)
Run Code Online (Sandbox Code Playgroud)

我的理解是Y现在应该相应地缩放真正的标签向量.如何使用该scaler对象执行此操作?从文档中,我可以将真实标签传递给fit_transform方法,但似乎这只是"管道兼容性" - 即,方法忽略Y并仅返回转换后的X.

谢谢!

python machine-learning normalization scikit-learn

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