Una clave es un conjunto de columnas que se puede utilizar para identificar de manera única cada fila dentro de una tabla.
Cada tabla tiene al menos una clave. Digamos que hemos identificado cada clave posible para la tabla. Cada una de estas claves es una clave candidata.
Al examinar cada una de estas claves, la clave puede consistir en ninguna columna (!), Una columna o más de una columna, que cuando se consideran juntas identifican de forma única cada fila. El término clave compuesta se refiere específicamente a una clave que consta de más de una columna.
En SQL, se decidió que una clave debería seleccionarse y tratarse "más igual" que las otras teclas de la tabla. Esta clave se llama clave principal. Otras claves también se pueden declarar en la tabla, estas se conocen generalmente como Contsraints únicos.
(!) En SQL, no está permitido declarar una clave sin columnas, aunque ocasionalmente sería útil (piense en una tabla que solo debería tener una sola fila, donde cada columna representa información de configuración)
Como ejemplo de una tabla que tiene varias teclas, todas ellas compuestas.Imagínese un sistema de citas, donde un cliente y un asesor se reúnen en una habitación en un momento determinado:
CREATE TABLE Appointments (
ClientID int not null,
CounsellorID int not null,
RoomID int not null,
AppointmentTime datetime not null
)
Las claves candidatas para este cuadro son {ClientID, AppointmentTime}, {CounsellorID, AppointmentTime} y {roomid, AppointmentTime }. Cualquiera de esas combinaciones de columnas podría usarse para identificar de manera única una fila en la tabla, y todas ellas son claves compuestas.
El que decidamos declarar como clave principal dependerá (probablemente) de nuestra propia interpretación del "foco" principal del sistema. ¿Nos preocupa principalmente el uso de la sala, los clientes o los consejeros? En cualquier caso, seleccionaremos uno y lo declararemos la clave principal. También esperamos declarar las otras claves como restricciones únicas.
O, podríamos decidir utilizar un sustituto, y declarar una columna AppointmentID
, utilizando las instalaciones de numeración automática disponibles en la base de datos. Esa podría ser la clave primaria (no compuesta). Pero aún deberíamos declarar las otras claves para la tabla.
Una clave compuesta es ** a ** Clave de .. no necesita ser la clave principal. – user2864740