0

我正在尝试将几个表分解为 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
4

1 回答 1

1

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

编辑:对其他关系的帮助。

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

于 2011-07-31T20:44:45.180 回答