假设我有一组数据,给定数据和关系模式,我可以假设这组数据以一种或另一种形式标准化。在我看来,给定的原始数据必须标准化为某种形式。然而,与朋友的讨论导致在这里问我这个问题。
为了详细说明这个问题,我想说给定关系或表的一组函数依赖关系,如果不是其他表,是否可以保证表至少处于 1NF
假设我有一组数据,给定数据和关系模式,我可以假设这组数据以一种或另一种形式标准化。在我看来,给定的原始数据必须标准化为某种形式。然而,与朋友的讨论导致在这里问我这个问题。
为了详细说明这个问题,我想说给定关系或表的一组函数依赖关系,如果不是其他表,是否可以保证表至少处于 1NF
SQL 模型允许根本不是真正关系的表(例如具有重复行的表)。因此,SQL 数据库当然不是总是标准化的。我希望大多数使用数据库的人都遇到过没有键的表的例子。
根据我的经验,在现实生活中,您会遇到从完全规范化到完全杂乱无章的怪异东西的整个范围的数据库,您永远不会期望在任何地方看到,更不用说在数据库中了。
你当然不能指望在 1NF 中找到数据(这应该是最“基本”的规范化形式)。
此外,这并不是说规范化数据应该是数据库设计的“目标”。您需要根据性能标准权衡干净的设计,完全规范化的数据库通常可以根据您的性能标准工作。
不,原始数据不一定在 1NF 中标准化。这取决于模式。甚至可以有 1NF 中没有的模式设计。
让我举个例子,假设有一个表存储所有学期学生的分数。每个学期都有 studentid 5。假设 Marks 的架构为
Marks(studentid,marks)
该表不在 1NF 中,因为它将具有重复值。
我会向你指出另一个关于 SO的对话。