llaves foraneas

Iniciado por m@o_614, 28 Marzo 2014, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos, ya puede instalar bien el postgres y ahora estoy creando dos tablas, una con datos de un empleado y otra del departamento al que pertence

CREATE TABLE compania.empleado (
    codigo       INT,
    nombrep      VARCHAR(15)    NOT NULL,
    apellido     VARCHAR(15)    NOT NULL,
    sexo         CHAR           DEFAULT 'M',
    salario      DECIMAL(10,2),
    nd           INT            NOT NULL,

   CONSTRAINT pk_empleado PRIMARY KEY (codigo)
);

esta es la primer tabla, y la segunda es:

CREATE TABLE compania.departamento (
    numerod      INT            NOT NULL,
    nombred      VARCHAR(25)    NOT NULL,
    gerente      CHAR(9)        NOT NULL,

   CONSTRAINT pk_departamento PRIMARY KEY(numerod)
);

despues el ejercicio me dice que tengo que definir una llave foranea que apunte al departamento al que pertenece el empleado (nd) y hago lo siguiente:

ALTER TABLE compania.empleado ADD CONSTRAINT restriccion FOREIGN KEY(nd) REFERENCES compania.departamento(numerod);

no me marca error, pero no se si he hecho la llave correctamente, y antes de seguir agregandole cosas a las tablas quiero saber si esta mal

gracias

1mpuls0

Hola.

Lo haz hecho correctamente.

Si quieres comprobar haz un insert a la tabla de empleado.
Tomando en cuenta que debes ingresar un nd que sepas que no existe en la tabla departamento.

Por ejemplo.

Código (sql) [Seleccionar]
INSERT INTO empleado(codigo, nombrep, apellido, sexo, salario, nd) VALUES(1, 'nombre', 'apellido', 'M', 12000.00, 1);

Debes tener algun tipo de error.

En mysql sería:


Cannot add or update a child row: a foreign key constraint fails


Que bonita es la integridad referencial  ::)
abc

m@o_614

muchas gracias por tu respuestaDarhius, una ultima pregunta si yo quiero respaldar la base de datos que acabo de hacer en un archivo.txt, como lo hago?? que comando tengo que usar?

1mpuls0

Utilizas consola o una interfaz?.
Bueno aun así no sé como hacerlo xD nunca he utilizado postgres, pero una GUI puede facilitarte esa tarea.

Saludos!
abc

Carloswaldo

¿Instalaste también el PgAdminIII?

En ese caso puedes hacer clic derecho en la base de datos (hay una lista de bases de datos a la izquierda en la pantalla principal) y darle en "Backup"

También puedes ir de la forma tradicional y usar pg_dump, en mi caso está ubicado en "C:\Program Files\PostgreSQL\9.3\bin>", si no sabes como usarlo pues está pg_dump --help

Además te recomendaría no usar .txt como extensión sino .sql, es más descriptivo.