«

»

May 25

Montar claves primarias, foráneas y relaciones a una bbdd de #SQLServer que no tiene

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.

Captura

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.