我想问一个关于标准化的问题。
我有 2 个 PK,VIN 和 Reg_no。VIN 是车辆 ID 号,注册号是车牌号。我有一个称为当前里程表的属性。它对 2 个 PK 有部分依赖还是完全依赖?
我想问一个关于标准化的问题。
我有 2 个 PK,VIN 和 Reg_no。VIN 是车辆 ID 号,注册号是车牌号。我有一个称为当前里程表的属性。它对 2 个 PK 有部分依赖还是完全依赖?
我有 2 个 PK,VIN 和 Reg_no。VIN 是车辆 ID 号,注册号是车牌号。
你有两个候选键。VIN是唯一的;车牌号也可能是唯一的。(但这取决于您的应用程序。)
任何键都可以由多列组成,但您没有一个多列键,您只有一个键 (VIN) 或两个单独的键(VIN 和车牌)。这并没有错。
我有一个称为当前里程表的属性。它对 2 个 PK 有部分依赖还是完全依赖?
无论您在此表中只有一个键还是两个键,每个键都只有一列。由于每个可能的键只有一列,因此不可能有部分键依赖。
您可能只需要 ONE PK。使用 VIN,因为它绝对是独一无二的。注册号可以跨州/省“重复使用”。
您的“复合主键”将在您需要的连接表上。
VEHICLE_TABLE
VIN nvarchar(50) [pk]
RegistrationNumber nvarchar(50)
NumberOfPassengers int
Make nvarchar(20)
Model nvarchar(20)
Color nvarchar (20)
Features nvarchar(MAX)
DRIVER_TABLE
DriverID int [pk]
Name nvarchar(20)
Address nvarchar(50)
OtherCrap nvarchar(MAX)
POSITION_TABLE
PositionID int [pk]
Position nvarchar(50)
MAINTENANCE_TABLE
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 是什么?