目前,我对数据库的整个规范化事物感到困惑。
任何人都可以帮我弄清楚如何在3NF之后去1NF吗?我的1NF版本看起来像这样但不确定这是正确的..:
http://imgur.com/i7JTcXw,qPMtPdq
该链接包含UNF和我的1NF表版本。
答案 0 :(得分:0)
刚看了这里的定义:):http://www.studytonight.com/dbms/database-normalization.php。 1nf要求可以可靠地识别每一行。在您的表中,您没有明确的主键。每行可以通过航班号和部分状态字段(到达或离开)和预定时间来识别
我可以看到你的表违反了2nf,因为你的状态字段似乎包含多条信息并且不是单一数据类型,即它告诉你两条信息:到达/离开和时间。 “已取消”的实际状态中也有一个隐含的值,它没有相关的时间。
3nf消除了不属于主键的字段之间的依赖关系,在您的情况下,我会将手指指向from和to字段:它们的值可能是查找表的一部分,因为每个航班号通常专用于特定路线,因此在此表中重复它们是不必要的重复。例如,你似乎要去'西德尼',但实际上你要去'西德尼'(没有逗号)所以对所有去西德尼的航班的查询将会找到QF431。 移除它们的另一个原因是,QF431的出发和目的地机场可能会在行之间发生变化,这可能违反了每个航班号对航线唯一的规则。使用当前结构,dbms
无法强制执行此规则