0

ノーマライゼーションに関する質問です。

VIN と Reg_no の 2 つの PK があります。VIN は車両 ID 番号で、登録番号は車のプレート番号です。現在の走行距離計という属性があります。2 つの PK に部分的な依存関係がありますか、または完全な依存関係がありますか?

4

2 に答える 2

1

VIN と Reg_no の 2 つの PK があります。VIN は車両 ID 番号で、登録番号は車のプレート番号です。

候補キーが 2 つあります。VIN は一意です。プレート番号もおそらく一意です。(ただし、アプリケーションによって異なります。)

どのキーも複数の列で構成できますが、複数列のキーは 1 つではなく、1 つのキー (VIN) または 2 つの個別のキー (VIN とプレート) のいずれかです。そして、それは何も悪いことではありません。

現在の走行距離計という属性があります。2 つの PK に部分的な依存関係がありますか、または完全な依存関係がありますか?

このテーブルにキーが 1 つだけか 2 つしかないかに関係なく、各キーには 1 つの列しかありません。考えられる各キーには列が 1 つしかないため、部分的なキー依存関係を持つことはできません。

于 2012-10-18T04:32:19.380 に答える
0

おそらく、必要な PK は 1 つだけです。VIN は完全に一意であるため、VIN を使用してください。登録番号は、州/州全体で「再利用」できます。

「複合主キー」は、必要に応じて結合テーブルに配置されます。

車両_テーブル

VIN                  nvarchar(50) [pk]
RegistrationNumber   nvarchar(50)
NumberOfPassengers   int
Make                 nvarchar(20)
Model                nvarchar(20)
Color                nvarchar (20)
Features             nvarchar(MAX)

ドライバー_テーブル

DriverID             int [pk]
Name                 nvarchar(20)
Address              nvarchar(50)
OtherCrap            nvarchar(MAX)

POSITION_TABLE

PositionID           int [pk]
Position             nvarchar(50)

メンテナンス_テーブル

MaintenanceID        int [pk]
VIN                  nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer             decimal(9,2)
MaintenanceDate      DateTime

STAFF_TABLE

StaffID              int [pk]
Name                 nvarchar(20)
PositionID           int [fk - POSITION_TABLE.PositionID]

VEHICLE_JOIN_DRIVER_TABLE

VIN                  nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID             int [cpk fk - DRIVER_TABLE.DriverID]

VEHICLE_JOIN_STAFF_TABLE

VIN                  nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID             int [cpk fk - DRIVER_TABLE.DriverID]
StaffID              int [cpk fk - STAFF_TABLE.StaffID]

この回答は、他の質問にも「ある程度」回答しようとします。
テーブルに割り当てる必要がある PK と FK は何ですか?

于 2012-10-18T02:19:36.660 に答える