Crear Llaves Primarias y Foraneas en SQL SERVER

En este artículo les presentó una práctica importante al momento de crear Base de Datos y tablas en el gestor Sql Server, me refiero a crear llaves primarias (en ingles Primary key) y llaves foráneas (Foreign key) en tablas de la Base de Datos.

que es una llave foranea en base de datos

Antes de todo es importante conocer los conceptos básicos de ambos conceptos:

La cláusula PRIMARY KEY (Llave primaria) se utiliza para definir la clave principal de la tabla. Las columnas que forman la clave principal no pueden contener valores nulos ni pueden haber valores duplicados de la combinación de columnas.

La cláusula FOREIGN KEY (Llave foránea) sirve para definir una clave foránea sobre una columna o una combinación de columnas. Una clave foránea es una columna o conjunto de columnas que contiene un valor que hace referencia a una fila de otra tabla.

Llave foranea SQL

Quizás te preguntas que es una llave foránea, clave foránea o foreign key es un campo (o campos) que señala la clave primaria de otra tabla. El propósito de la clave foránea es asegurar la integridad referencial de los datos. La columna o columnas señaladas como llave foránea, solo podrán tener valores que ya existan en la clave primaria PRIMARY KEY de la otra tabla.

La clave foránea en resumen se refiere a una columna o varias columnas, que sirven para señalar cual es la clave primaria de otra tabla. Es importante que comprendas que hay dos etapas en las que podemos agregar llaves foráneas a las tablas: la primera es al momento de crear la tabla en Sql Server, ya que podemos definir de una vez las llaves foráneas y campos de la tabla de nuestra Base de Datos; la segunda opción es agregar las llaves foráneas en tablas ya creadas, esto consiste en modificar la estructura previamente diseñada.

Foreign key

Foreign key es la la forma en ingles de referirse a la llave foránea de una tabla en una Base de Datos, y en la parte superior de este articulo conocimos a detalle que es una llave foránea.

También Leer:  Crear Procedimiento Almacenado en Sql Server

Crear tabla con primary key y foreign key en Management Studio

Vamos a crear cuatro tablas en Sql Server para hacer las relaciones respectivas y agregar las claves primarias y foráneas en la Base de Datos. Las tablas a crear son: AlumnosAsignaturaprofesor Inscripción. Las primeras tres tablas tendrán únicamente las claves primarias y la tabla inscripción tendrá las claves foráneas que estarán relacionadas con las llaves primarias (campos Id) de las tablas Alumnos, Asignatura y Profesor.

Diagrama con claves primarias y claves foraneas en Sql Server

A continuación les presento la estructura y relación de las tablas antes mencionadas:

llave foranea sql

Agregar clave primaria y clave foranea

En el siguiente código creamos la base de datos «Escuela» y cuatro tablas en Sql Server para hacer las relaciones respectivas y agregar las claves foráneas en la Base de Datos. Las tablas a crear son: Alumnos, Asignatura, profesor e Inscripción. Las primeras tres tablas tendrán únicamente las claves primarias y la tabla inscripción tendrá las claves foráneas que estarán relacionadas con las llaves primarias (campos Id) de las tablas Alumnos, Asignatura y Profesor.

Código SQL para crear primary key y foreign key en Management Studio:

CREATE DATABASE Escuela

go

use Escuela
go

/* Creando tabla Alumno, asignatura y profesor */

Create table Alumnos(
Id char(8) primary key,
Nombre varchar(20) not null,
Apellido varchar(20) not null,
Direccion varchar(50),
Fecha_nacimiento char(8)
);

Create table Asignatura(
Id char(8) primary key,
Nombre varchar(20) not null
);

Create table Profesor(
Id char(8) primary key,
Nombre varchar(20) not null,
Apellido varchar(20) not null,
Direccion varchar(50),
Fecha_nacimiento char(8),
Nivel_Academico varchar (20)
);

/* Creando tabla Inscripción con campos para llaves foraneas */

Create table Inscripcion(
Id char(8) primary key,
IdAsignatura char(8) not null,
IdAlumno char(8) not null,
IdProfesor char(8) not null,
Fecha char(8),
CONSTRAINT fk_Asignatura FOREIGN KEY (IdAsignatura) REFERENCES Asignatura (Id),
CONSTRAINT fk_Alumno FOREIGN KEY (IdAlumno) REFERENCES Alumnos (Id),
CONSTRAINT fk_Profesor FOREIGN KEY (IdProfesor) REFERENCES Profesor (Id)
);

Agregar llave primaria y foránea a tablas ya creadas

Supongamos que es necesario modificar tablas existentes y agregar llaves primarias o foráneas. Con el siguiente código modificamos la tabla profesor para agregar su clave primaria:

ALTER TABLE Profesor ADD CONSTRAINT pk_Profesor_Id PRIMARY KEY (Id)

Agregar clave foranea sql a Tabla ya creada

También Leer:  Insertar datos en una tabla Sql Server

Supongamos que la tabla Profesor no ha sido relacionada con la tabla Inscripción, entonces en caso de no existir dicha clave foránea, la podemos agregar con el siguiente código Sql:

ALTER TABLE Inscripcion

ADD FOREIGN KEY (IdProfesor) REFERENCES Profesor(Id);

Consideraciones:

1- Las columnas señaladas como llave foránea (IdAsignatura, IdAlumno, IdProfesor), solo podrán tener valores que ya existan en la clave primaria PRIMARY KEY de la tabla principal, es decir un IdAlumno ya debería estar creado en la tabla Alumnos.

2- No pueda eliminarse un registro de una tabla ni modificar la clave primaria si una clave externa hace referencia al registro. Por ejemplo, que no se pueda eliminar o modificar un Id de «Alumnos» si existen una inscripción con dicho el Id a eliminar.

3- La clave primaria y foránea que de las tablas que se relacionan deben ser del mismo tipo de dato y longitud en ambas tablas.

curso de sql server online

Curso de SQL Server Desde Cero

Te interesa aprender a crear Bases de Datos en SQL Server paso a paso y desde cero? La oportunidad de aprender es ahora! Inscrite a mi curso de Base de ...

Tutorial Crear Llaves Primarias y Foraneas en Sql Server

En el siguiente vídeo les explico todo lo expuesto anteriormente y hacemos la practica de relacionar las tablas con codigo SQL y Management Studio.

Ver vídeo en Youtube

Entradas Relacionadas:

Reseña
Video Image
Fecha:
Articulo:
Llaves Primarias y Foráneas en SQL Server
Valoración:
51star1star1star1star1star
Tutorial:
Crear Llaves foráneas en SQL Server
Descripción:
Tutorial en que se explica la creación de Llaves primarias y foráneas en SQL Server.
Fecha de subido:
2020-02-26T23:47:56+00:00

10 comentarios en «Crear Llaves Primarias y Foraneas en SQL SERVER»

  1. Hola buenas¡¡¡¡
    Estoy siguiendo tus tutoriales de como crear BBDD y tengo dos problemas.
    1) Si copio y pego tu código de como crear llaves foránea me lo hace bien. El problema es cuando lo intento hacer yo, sigo los mismo paso pero me da este error «La clave externa ‘fk_Coche’ hace referencia a la tabla no valida ‘Coche’. No me deja crear el diagrama
    2)El otro problema es que al entrar en la carpeta de diagramas me sale el siguiente error:»No se pudo obtener información acerca del grupo o usuario de Windows NT ‘USERSAD\….’; código de error 0x54b. (Microsoft SQL Server, Error: 15404)

    ¿Podrías ayudarme con estos problemillas?

    Muchas gracias y un saludo.

    Responder
    • Hola, Victor.
      Dando respuesta a tu comentario te comento lo siguiente:
      En el primer error pareciera que la tabla coche no ha sido creada previamente, recuerda que primero se debe crear la tabla que tiene la llave primaria.
      En cuanto al segundo error, en realidad es nuevo para mi, he copiado el error y lo he buscado en google y al parecer es un error del usuario o la autentificacion de este, por lo tanto es un problema de management studio, te recomiendo que lo vuelvas a instalar (no desinstalarlo), pero seleccionando la opción «reparar». Inclusive el primer error puede derivarse del segundo.
      Saludos

      Responder
  2. Hola
    Primero que nada gracias por la información, esta muy bien explicado, pero tengo una duda:Porque no usas identity al declarar las llaves primarias?

    Responder
    • Hola, en realidad no lo use para poder definir a mi gusto los datos que voy a ingresar. Sin embargo es bueno usar identity para qe sea autoincrementable el identificador.

      Responder
    • Recuerda que la tabla inscripcion posee llaves foráneas, en ese caso debes haber ingresado registros a las otras tablas para poder usarlos en la tabla inscripcion.

      Responder
  3. hola hice ha creado todo icluyendo el digrama
    pero las letras en referencia cuando pongo los nombres de las tablas me aparecen en error aun asi se ha creado todo

    Responder

Deja un comentario