Database 数据库规范化
我想问一个有关正常化的问题 我有两个包裹,VIN和注册号。 VIN是车辆识别号,登记号是车牌号。 我有一个属性叫做当前里程表。Database 数据库规范化,database,dependencies,primary-key,normalization,partial,Database,Dependencies,Primary Key,Normalization,Partial,我想问一个有关正常化的问题 我有两个包裹,VIN和注册号。 VIN是车辆识别号,登记号是车牌号。 我有一个属性叫做当前里程表。 它对两个PK是部分依赖还是完全依赖?您可能只需要一个PK。使用VIN,因为它是绝对唯一的。注册号可在各州/各省“重复使用” 您的“复合主键”将位于需要的联接表上 车辆表 VIN nvarchar(50) [pk] RegistrationNumber nvarchar(50) NumberOfPassengers int Mak
它对两个PK是部分依赖还是完全依赖?您可能只需要一个PK。使用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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
驱动程序表
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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
位置表
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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
维护表
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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
职员表
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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
车辆加入司机表
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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
车辆加入员工表
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)
PositionID int [pk]
Position nvarchar(50)
MaintenanceID int [pk]
VIN nvarchar(50) [fk - VEHICLE_TABLE.VIN]
Odometer decimal(9,2)
MaintenanceDate DateTime
StaffID int [pk]
Name nvarchar(20)
PositionID int [fk - POSITION_TABLE.PositionID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
VIN nvarchar(50) [cpk fk - VEHICLE_TABLE.VIN]
DriverID int [cpk fk - DRIVER_TABLE.DriverID]
StaffID int [cpk fk - STAFF_TABLE.StaffID]
此答案还试图“稍微”回答您的其他问题。我有两个PK,VIN和注册号。VIN是车辆ID号和 车牌号就是车牌号 您有两个候选密钥。VIN是唯一的;车牌号也可能是唯一的。(但这取决于您的应用程序。) 任何键都可以由多列组成,但您没有一个多列键,您有一个键(VIN)或两个单独的键(VIN和车牌)。这没什么错 我有一个属性叫做当前里程表。它有一个局部的吗 依赖于2个PK还是完全依赖于2个PK 无论此表中只有一个键还是两个键,每个键都只有一列。因为每个可能的键只有一列,所以不可能有部分键依赖关系