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 は簡単です。単一のリレーション内の属性セット間のすべての依存関係が、リレーションのスーパーキーへの依存関係であることを確認するだけです。最初の関係は近いですが、2 番目の関係は「状態」を省略する必要があります。多くの場合、FD とのすべての関係が依存関係を維持する BCNF 分解を持っているわけではないため、人々は 3NF で停止します。他の関係を分解するのに助けが必要ですか? 必要ならお手伝いします。

編集:他の関係についてのヘルプ。

販売と機能は問題ありません。BCNF に含めるには、モデルとユーザーを名前で分割する必要があります。これはモデルに対してできることではないことを示しています。なんで?名前は、矢印の右側にあるものを意味しますよね?

于 2011-07-31T20:44:45.180 に答える