Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: m@o_614 en 28 Marzo 2014, 23:43 pm



Título: llaves foraneas
Publicado por: m@o_614 en 28 Marzo 2014, 23:43 pm
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


Título: Re: llaves foraneas
Publicado por: 1mpuls0 en 28 Marzo 2014, 23:54 pm
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
  1. 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:

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

Que bonita es la integridad referencial  ::)


Título: Re: llaves foraneas
Publicado por: m@o_614 en 29 Marzo 2014, 00:56 am
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?


Título: Re: llaves foraneas
Publicado por: 1mpuls0 en 29 Marzo 2014, 07:28 am
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!


Título: Re: llaves foraneas
Publicado por: Carloswaldo en 31 Marzo 2014, 17:57 pm
¿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.