繁体   English   中英

数据库规范化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM