martes, 5 de agosto de 2014

1. Crear Tablas con llave primaria y foranea en SQLServer 2012

14:45

¿Cómo agregar llave primaria y foranea en mis tablas?

Ya cree mis tablas que quiero ¿y ahora cómo las relaciono? En SQLServer (y en casi todos los gestores de base de datos) se puede realizar mediante dos formas: En código SQL o utilizando las herramientas del gestor.
Para esta clase utilizaremos el SQLServer 2012 mediante código SQL, para ello crearemos unas tablas de ejemplo:
Fuente: Google
Creando la tabla Clientes:
CREATE TABLE CLIENTES
( id_Cliente char(8) primary key,
NombreCliente varchar(max)
);

¿Por qué "max"? Quiero decir que la columna "NombreCliente" no tendrá límite de caracteres (bueno no tanto así), a diferencia de "id_Cliente" que sí tiene un límite 8 caracteres, es decir "NombreCliente" puede llegar hasta el máximo que soporta un "varchar" que según Microsoft en SQLServer 2012, indica que el tamaño máximo de almacenamiento es de 2GB.

Creando la tabla Productos:
CREATE TABLE PRODUCTOS
( id_Producto char(8) primary key,
Rubro varchar(20),
Tipo varchar(20),
NombreProducto varchar(max)
);

Creando la tabla Fechas:
CREATE TABLE FECHAS
( id_Fecha char(8) primary key,
Anio varchar(5),
Trimestre nvarchar(20),
Mes int,
Dia int
);

Creando la tabla Ventas:
CREATE TABLE VENTAS
( id_Cliente char(8) not null,
id_Producto char(8) not null,
id_Fecha char(8) not null,
importeTotal float,
Utilidad float,
CONSTRAINT fk_Cliente FOREIGN KEY (id_Cliente) REFERENCES CLIENTES (id_Cliente),
CONSTRAINT fk_Producto FOREIGN KEY (id_Producto) REFERENCES PRODUCTOS (id_Producto),
CONSTRAINT fk_Cliente FOREIGN KEY (id_Fecha) REFERENCES FECHAS (id_Fecha)
);

Por lo tanto se tienen que indicar que campo será la llave foránea y a qué tabla se referencia mencionando también el campo, que en la tabla referenciada es llave primaria.

Hasta ahí todo muy bien ¿verdad? Pero ahora, tal vez, te estarás preguntando ¿cómo agrego una llave foránea a una tabla que ya he creado? Simplemente tendrías que ejecutar lo siguiente, utilizando de ejemplo la tabla Ventas:

ALTER TABLE VENTAS
ADD FOREIGN KEY (id_Cliente) REFERENCES CLIENTES(id_Cliente);

Y listo! así lo realizar con las demás llaves foráneas y SQLServer lo añade a la tabla Ventas.
Si entendiste ¡Perfecto! ¡Misión Cumplida!, pero si aún tienes dudas, no te desesperes, tenemos un video muy bien explicado:


Written by

Blog de Somos Sistemas conformado por estudiantes con deseos de transmitir e intercambiar conocimientos relacionados con tecnología, sistemas e informática.

17 comentarios:

  1. me paresio mucho muy importante esta informacion a unque solicitara que pongaqn mas informacion sobre de todo esto

    ResponderEliminar
  2. Excelente!! Muchas gracias por la explicación tan buena

    ResponderEliminar
  3. Una pregunta, que pasa cuando tengo una relación entre 2 entidades que son de N a N, cuando yo paso esto al Modelo Relacional tengo que crear una nueva relación y sacar las claves primarias de las relaciones que participan y pasarlas como Claves Foráneas, yo quiero saber ¿como es la sentencia en SQL para decir que la combinación de mis 2 claves foráneas es la nueva Clave Primaria de mi tabla creada?

    ResponderEliminar
  4. Una pregunta, que pasa cuando tengo una relación entre 2 entidades que son de N a N, cuando yo paso esto al Modelo Relacional tengo que crear una nueva relación y sacar las claves primarias de las relaciones que participan y pasarlas como Claves Foráneas, yo quiero saber ¿como es la sentencia en SQL para decir que la combinación de mis 2 claves foráneas es la nueva Clave Primaria de mi tabla creada?

    ResponderEliminar
  5. Si desearia insertar 2 tablas al mismo tiempo, por ejemplo : tabla persona y tabla trabajador, la tabla trabajador tienen misma clave primaria de persona, y persona tiene clave primaria en auto_increment , como aria para insertar las 2 tablas al mismo tiempo?? please . help me

    ResponderEliminar
  6. GRAAAAAAAAAAAACIAS ME AYUDOOOOOOO MUCHO

    ResponderEliminar
  7. Respuestas
    1. CREATE TABLE PRODUCTOS
      ( id_Producto char(8) primary key,
      Rubro varchar(20),
      Tipo varchar(20),
      NombreProducto varchar(max)
      );

      Eliminar
  8. hello! I was wondering if you made a mistake in the last constraint...I suppose that is CONSTRAINT fk_Fecha instead of fk_Cliente (again). Let me know if I'm fine please!

    ResponderEliminar
  9. Gracias, estoy aprendiendo BD desde cero y creí que seria mas sencillo aprender desde con código, no se si me resulte mas eficiente pero considero que es mas claro que con el gestor de BD. Esta explicación me ayudo bastante aunque uso campos mas complejos.

    ResponderEliminar
  10. CREATE TABLE VENTAS
    ( id_Cliente char(8) not null,
    id_Producto char(8) not null,
    id_Fecha char(8) not null,
    importeTotal float,
    Utilidad float,
    CONSTRAINT fk_Cliente FOREIGN KEY (id_Cliente) REFERENCES CLIENTES (id_Cliente),
    CONSTRAINT fk_Producto FOREIGN KEY (id_Producto) REFERENCES PRODUCTOS (id_Producto),
    CONSTRAINT fk_Fecha FOREIGN KEY (id_Fecha) REFERENCES FECHAS (id_Fecha)
    );

    ResponderEliminar
  11. hijo de tu puts madre no sirve para nada


    ResponderEliminar
  12. gracias por corregir:
    CONSTRAINT fk_Fecha FOREIGN KEY (id_Fecha) REFERENCES FECHAS (id_Fecha)
    );

    ResponderEliminar
  13. Tambien podemos tener algo mas especifico como crear llaves foraneas en SQL:
    https://codigosql.top/sql-server/crear-llaves-foraneas-en-sql-server/

    ResponderEliminar

 

© 2013 Somos Sistemas. All rights resevered. Designed by Templateism

Back To Top