Las llaves secundarias son aquellas llaves candidatas que no se eligieron como llave primaria, es decir, tienen todas las características para ser claves primarias (le dan unicidad al registro), pero que por alguna razón no fueron tomadas como tal debido a que hubo otra que cumplía mejor con ese objetivo (ta y como se vió en el artículo de las llaves primarias)
Cuando se escoge, dentro de las llaves candidatas, a la que se quedará como llave primaria, las demás, por tanto, son las secundarias. A estas llaves secundarias se configuran dentro de las tablas dándoles la propiedad de UNIQUE y pueden utilizarse como llaves foráneas en otras tablas (aunque lo común es que se utilicen las llaves primarias).
CREATE TABLE peliculas ( clave smallint PRIMARY KEY, --LLave primaria titulo varchar(100) NOT NULL, --No permite valores nulos director varchar (100) NULL, --Si permite valores nulos genero varchar(100) NULL, --Si permite valores nulos anoEstreno smallint DEFAULT 2000 NULL CHECK (anoEstreno > 1900), --Si permite valores nulos, por default es 2000 y solo permite valores mayores a 1900 anoGrabacion smallint NULL, --Si permite valores nulos anoEdicion smallint NULL, --Si permite valores nulos clasificacion varchar(20) NULL DEFAULT 'A', --Si permite valores nulos y el default es 'A' protagonistas varchar (300) NULL DEFAULT '',--Si permite valores nulos y el default es una cadena vacía CONSTRAINT unique_tituloUnico UNIQUE (titulo,anoEstreno) );
Una vez que se definen como UNIQUE las llaves secundarias, todos los registros de la tabla no podrán tener valores duplicados en dichas claves secundarias (en el ejemplo SQL de arriba, la combinación de campos titulo+anoEstreno será único). No habrá manera de que dos registros tengan valores duplicados en campos UNIQUE.