【发布时间】:2020-12-26 14:54:29
【问题描述】:
我正在开发一个表来存储具有位置的对象。对象可以具有指定的州/地区(可选),并且它们始终具有指定的国家/地区。所以,简化的起点是:
现在,州(可通过 ISO 代码唯一标识)和国家/地区之间存在功能依赖关系,国家决定国家/地区。这将建议我创建一个新表:State,它具有引用另一个表 Country 的 Country_id。问题是,在要放入数据库的数据中,“State”值可能会丢失,因此为 NULL,所以我没有任何东西可以放入中间表。
在州-国家/地区之间的依赖关系中存在 NULL(由于缺少信息)是否意味着此处无法实现第三种范式,我需要将州和国家/地区表与对象表分开引用?或者这种情况下最好的设计方案是什么?
编辑:这确实是关于Functional dependencies in case of nulls 问题的实际实现的问题,关于在 id-state-country 之间可能的传递函数依赖可以包含 state 的 null 值的情况下,哪种设计解决方案适合。
【问题讨论】:
-
您的第一个问题是什么?是什么阻止您确定设计的 NF 或规范化到给定的 NF?你被困在哪里了?否则这只是要求我们重写教科书或问答。
-
为什么不同国家的2个州不能同名?--为什么你认为国家决定国家?即使两个州不能有相同的名字,如果两个 id 可以有相同的国家但 null 国家,国家不能确定国家,那你为什么这么说呢?如果您不想使用空值并且“没有任何东西可以放入该表”,那么是什么阻止您拥有另一个表?您似乎没有正确使用术语或遵循设计方法。
-
一个州可以通过一个 ISO 代码来识别,这使得它们可以唯一地确定一个国家,所以它们可以有相同的名称是没有问题的(只要没有一个州跨越一个以上的国家.. .).
-
请use text, not images/links, for text--including tables & ERDs.。仅将图像用于无法表达为文本或扩充文本的内容。
标签: sql database-design database-normalization