Esto me sirve de repaso para mi trabajo y la certificación, y de paso, vemos como se programa en t-sql poniendo clave primaria, foránea y relacionamos tablas
Buenos, vamos a presentar el escenario.
Una clave primaria es identificar cada registro de forma única y no se pueden repetir
Para saber las claves primarias
/* clave primaria */
SELECT i1.TABLE_NAME TABLA,
i2.COLUMN_NAME CLAVE_PRIMARIA
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
La clave o claves foráneas de una tabla hacen referencia a registros de otra tabla, formando entre las tablas una relación.
Para ver la foránea y su relación con otra tabla
/* Claves foraneas y relaciones tablas */
SELECT fk.name 'Clave_Foranea', tp.name 'Tabla_Padre', cp.name 'Campo_Padre', tr.name 'Tabla_Enlazada', cr.name 'Campo_Indice'
FROM sys.foreign_keys fk
INNER JOIN sys.tables tp ON fk.parent_object_id = tp.object_id
INNER JOIN sys.tables tr ON fk.referenced_object_id = tr.object_id
INNER JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
ORDER BY tp.name, cp.column_id
Vamos a hacerlo en 3 o 4 artículos diferentes para que se vea bien y después trabajaremos con los alias.