database - normalización de la base de datos
dependencies primary-key (2)
Tengo 2 PK, VIN y Reg_no. VIN es el número de identificación del vehículo y el número de registro es el número de la placa del automóvil.
Tienes dos claves candidatas. VIN es único; el número de la placa también es probablemente único. (Pero depende de tu aplicación)
Cualquier tecla puede constar de varias columnas, pero no tiene una clave de varias columnas, tiene una clave (VIN) o dos claves separadas (VIN y placa). Y no hay nada de malo en eso.
Tengo un atributo llamado odómetro actual. ¿Tiene una dependencia parcial o una dependencia total de los 2 PK?
Independientemente de si tiene solo una o dos claves en esta tabla, cada tecla tiene solo una columna. Como cada clave posible tiene solo una columna, es imposible tener una dependencia de clave parcial.
Me gustaría preguntar sobre una cuestión relacionada con la normalización.
Tengo 2 PK, VIN y Reg_no. VIN es el número de identificación del vehículo y el número de registro es el número de la placa del automóvil. Tengo un atributo llamado odómetro actual. ¿Tiene una dependencia parcial o una dependencia total de los 2 PK?
Probablemente solo necesites UNA PK. Usa el VIN ya que es absolutamente único. El número de registro podría ser "reutilizado" en todos los estados / provincias.
Sus "claves primarias compuestas" estarán en sus tablas de unión cuando sea necesario.
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)
MANTENIMIENTO_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]
Esta respuesta también intenta "algo" responder a su otra pregunta.
¿Cuál es el PK y FK que debería asignar a mi mesa?