¿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 |
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:
me paresio mucho muy importante esta informacion a unque solicitara que pongaqn mas informacion sobre de todo esto
ResponderEliminarExcelente!! Muchas gracias por la explicación tan buena
ResponderEliminarUna 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?
ResponderEliminarUna 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?
ResponderEliminarta buena me ayudo muchisimo
ResponderEliminarSi 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
ResponderEliminarGRAAAAAAAAAAAACIAS ME AYUDOOOOOOO MUCHO
ResponderEliminary la llave principal?
ResponderEliminarCREATE TABLE PRODUCTOS
Eliminar( id_Producto char(8) primary key,
Rubro varchar(20),
Tipo varchar(20),
NombreProducto varchar(max)
);
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!
ResponderEliminarGracias, 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.
ResponderEliminarCREATE TABLE VENTAS
ResponderEliminar( 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)
);
hijo de tu puts madre no sirve para nada
ResponderEliminargracias por corregir:
ResponderEliminarCONSTRAINT fk_Fecha FOREIGN KEY (id_Fecha) REFERENCES FECHAS (id_Fecha)
);
Tambien podemos tener algo mas especifico como crear llaves foraneas en SQL:
ResponderEliminarhttps://codigosql.top/sql-server/crear-llaves-foraneas-en-sql-server/
crear Llaves Foraneas
Eliminarlos datos de cadena o binarios se truncarían
ResponderEliminar