1

3NF で以下を正規化する必要があります。

Service (Service_ID, Service Item, service item cost, date of service)  
Customer (customer ID, customer name, customer telephone number, customer address)  
Vehicle (Vehicle ID, vehicle make, vehicle model, vehicle year)  
Parts (Parts ID, part code, part describtion, part cost)

正規化後に得たもの:

Service (Service_ID (PK), Service Item, service item cost, date of service, Vehicle_ID (FK))  
Customer (customer ID (PK), customer name, customer telephone number, customer address)  
Vehicle (Vehicle ID (PK), vehicle make, vehicle model, vehicle year, Customer_ID (FK))  
Parts (Parts ID (PK), part code, part describtion, part cost, Vehicle_ID (FK))

私が完全に間違った方向に進んでいると思いますか?

4

1 に答える 1

3

開始関係

  • サービス (Service_ID、サービス項目、サービス項目の費用、サービスの日付)

終了関係

  • サービス (Service_ID (PK)、サービス項目、サービス項目のコスト、サービスの日付、Vehicle_ID (FK))

3NF までの正規化は、いくつかの種類の機能依存関係を識別し、射影によって厄介なものを取り除きます。(別のリレーションを作成することによって。) プロジェクションによってリレーションの厄介な依存関係を削除すると、最初よりも常に属性が少なくなります。

あなたの関係「サービス」は、あなたが始めたよりも多くの列で終わります。サービスがどの車両に適用されるかを記録することは理にかなっていますが、開始したものだけに基づいて正規化とは何の関係もない可能性があります.

不足している外部キーを特定することは、間違いなく重要なことですが、それ自体は正規化の一部ではありません。{Service_ID, Service Item, service item cost, date of service, Vehicle_id, vehicle make, vehicle model, vehicle year} で始まる正規化では、Service_ID -> Vehicle_ID、Vehicle_ID -> 車両メーカー、車両モデル、車両年。それは推移的な依存関係です。その推移的な依存関係を修正するには、

  • これらの 4 つの列が射影され、新しいリレーション (Vehicles テーブル) が形成されます。
  • 車両の製造元、車両のモデル、および車両の製造年は、最初のリレーションから削除され、最初よりも 3 つ少ない属性が残ります。

そして、サービス関係にはまだ車両 ID があります。

ですから、あなたの先生は、あなたが正規化する必要のない課題をあなたに与えました。他の誰かが正規化を台無しにした場所を特定し、修正する必要があります。この種の代入は何も悪いことではありませんが、それを正規化と呼ぶことには多くの間違いがあります。(私見では)

于 2012-05-20T02:17:57.723 に答える