Database design BCNF分解(数据库设计)

Database design BCNF分解(数据库设计),database-design,normalization,decomposition,Database Design,Normalization,Decomposition,我正在尝试将几个表分解为BCNF。我相信第一个是正确分解的,但是我不确定其他的是否可以分解。谢谢你的帮助 **make(id, name, est, founder, city, state)** id->name; name->est, city, state, founder; city->state New Relations: [Key(id),name], [Key(name),est,city,state,founder], [Key(city),state]

我正在尝试将几个表分解为BCNF。我相信第一个是正确分解的,但是我不确定其他的是否可以分解。谢谢你的帮助

**make(id, name, est, founder, city, state)**

id->name;
name->est, city, state, founder;
city->state

New Relations: [Key(id),name], [Key(name),est,city,state,founder], [Key(city),state]

**model(id, makeId, name, year, category)**

id->makeId, name;
name->year, category (not superkey, but can't really decompose)

**features(id, modelId, abs, tpms, sidebags, drl)**

id->modelID, abs, tpms, sidebags, drl 

**user(id, name, pass, first, last, phone, isAdmin)**

id->name, pass, isAdmin; name->first, last, phone

**selling(id, price, modelId, mileage, userId)**

id->price, modelId, mileage, userID

BCNF很简单:只需确保单个关系中属性集之间的所有依赖关系都依赖于关系的超键。你的第一个关系很密切,但是第二个关系需要省略“state”。通常,人们会停留在3NF,因为并非所有与FD的关系都具有保持依赖关系的BCNF分解。你需要帮助分解其他关系吗?如果你需要,我会帮你的

编辑:关于其他关系的帮助


销售和功能都很好。模型和用户需要在名称上进行拆分,才能进入BCNF;您指出这不是您可以为模型做的事情。为什么?名称暗示箭头右边的东西,对吗?

是的,如果你能帮我分解其他东西,我将不胜感激。我还在学习如何应用这个算法,所以看看在这些情况下如何应用它将是一个很大的帮助。lhs必须是一个超级键,对吗?如果我像[Key(id)、makeId、name][Key(name)、year、category]那样分解它,它是正确的吗?谢谢你的帮助。把名字放在第一位,好的。任何给定关系中的依赖项必须位于该关系的超键上;该超级键不必是原始的超级键。您在上面的评论中建议的分解是一种正确的、保持依赖关系的、无损的BCNF分解。很酷,谢谢!我假设users表分解如下:R1:[Key(id)、name、pass、isAdmin]R2:[Key(name)、first、last、phone]这些新关系会像新模型关系一样满足BNCF吗?BCNF中是否已考虑销售/功能?