根据第二标准化形式"所有非关键属性完全功能取决于主键"。这意味着所有非关键属性都不能依赖于主键的子集。 在Facebook中,我们可以通过email_id,user_name或mobile_number登录(因此email_id,user_name或mobile_number是主键)。在使用任何这些方法登录后,我们访问整个帐户。 我的问题是"它不是非关键属性对主键子集的部分依赖吗?"。 我在Facebook社区发布了这个问题,但没有得到任何答案。
答案 0 :(得分:1)
对于2NF,非键属性不能依赖于候选键的正确子集。 (每一组都是自身的一个子集。一个合适的子集是一个较小的子集。)(可以有多个候选键。一个可以被选为主要。)
如果关系变量的所有键都是单列,则唯一正确的子集将是空集。当且仅当该列中的所有值都相同时,列才在功能上不依赖于列。列在功能上不依赖于其他正确的子集。因此,如果所有列都可以具有不同的值,并且所有候选键只有一列,则关系变量必须为2NF。
功能依赖性和普通形式适用于特定的关系变量。你必须假设一个特定的设计来询问它的特定表格。
“整个帐户”通常不会仅通过一个关系变量来表示(作为实现状态或用户描述的一部分),因为它会有很多更新异常,而规范化将会消除。