[英]normalization of database
我想问一个有关归一化的问题。
我有2个PK,VIN和Reg_no。 VIN是车辆ID号,而注册号是车牌号。 我有一个称为当前里程表的属性。 它对这两个PK有部分依赖关系还是完全依赖关系?
我有2个PK,VIN和Reg_no。 VIN是车辆ID号,而注册号是车牌号。
您有两个候选键。 VIN是唯一的; 车牌号也可能是唯一的。 (但这取决于您的应用程序。)
任何键都可以包含多列,但是您没有一个多列键,您只有一个键(VIN)或两个单独的键(VIN和板)。 这没有错。
我有一个称为当前里程表的属性。 它对这两个PK有部分依赖关系还是完全依赖关系?
无论在此表中是只有一个键还是只有两个键,每个键只有一列。 由于每个可能的键只有一列,因此不可能有部分键依赖性。
您可能只需要一个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是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.