database dependencies primary-key normalization partial

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?