miércoles, 22 de junio de 2011

LABORATORIO 1 CON POSTGRESQL


CLAVES FORANEAS EN POSTGRESQL



Primero creamos una base de datos:

CREATE DATABASE lab1;

y luego nos ubicamos en ella:

psql -d lab1

Esta es una de las tantas posibles implementaciones de las tablas de la figura de arriba.

CREATE TABLE Proveedores
(
IdProveedor INT,
NombreProveedor varchar(20),
Direccion varchar(20),
Ciudad varchar(20),
Region varchar(20),
Pais varchar(20),
Telefono int,
PRIMARY KEY(IdProveedor)
);



CREATE TABLE Categorias
(
IdCategoria INT,
NombreCategoria varchar(20),
Descripcion varchar(20),
PRIMARY KEY(
IdCategoria)
);



CREATE TABLE Clientes
(
IdCliente INT,
NombreCliente varchar(20),
NombreContacto varchar(20),
CargoContacto varchar(20),
Direccion varchar(20),
Ciudad varchar(20),
Region varchar(20),
Pais varchar(20),
Telefono int,
PRIMARY KEY(
IdCliente)
);



CREATE TABLE CiaEnvios
(
IdCiaEnvios INT,
NombreCia varchar(20),
telefono int,
PRIMARY KEY(
IdCiaEnvios)
);



CREATE TABLE Empleados
(
IdEmpleado INT,
Apellidos varchar(20),
Nombre varchar(20),
Cargo varchar(20),
FechaNacimiento date,
FechaContratacion date,
Direccion varchar(20),
PRIMARY KEY(
IdEmpleado)
);


CREATE TABLE
Productos
(
IdProducto INT NOT NULL,
NombreProducto INT NOT NULL,
IdProveedor INT NOT NULL,
IdCategoria INT NOT NULL,
CantidadPorUnidad int,
PrecioUnidad float,
Stock int,
PRIMARY KEY(
IdProducto),
FOREIGN KEY (
IdProveedor) REFERENCES Proveedores(IdProveedor) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (
IdCategoria) REFERENCES Categorias(IdCategoria) ON DELETE CASCADE ON UPDATE CASCADE
);


CREATE TABLE
Pedidos
(
IdPedido INT NOT NULL,
IdCliente INT NOT NULL,
IdEmpleado INT NOT NULL,
FechaPedido date,
FechaEntrega date,
FechaEnvio date,
FormaEnvio int,
PRIMARY KEY(
IdPedido),
FOREIGN KEY (
IdCliente) REFERENCES Clientes(IdCliente) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (
IdEmpleado) REFERENCES Empleados(IdEmpleado) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (
FormaEnvio) REFERENCES CiaEnvios(IdCiaEnvios) ON DELETE CASCADE ON UPDATE CASCADE
);


CREATE TABLE DetallesPedidos
(
IdPedido INT NOT NULL,
IdProducto INT NOT NULL,
PrecioUnidad float,
Cantidad int,
PRIMARY KEY(
IdPedido,IdProducto),
FOREIGN KEY (
IdPedido) REFERENCES Pedidos(IdPedido) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (
IdProducto) REFERENCES Productos(IdProducto) ON DELETE CASCADE ON UPDATE CASCADE
);


En la creación de tablas no se le indica el tipo porque PosgreSql usa un solo tipo: el sistema de almacenamiento Postgres (Postgres Storage System).

El manejo de indices es diferente (en este ejemplo no las utilizo para referenciar las claves foraneas); pero el resto es muy similar a MySQL ya que los dos manejan SQL.

También, a diferencia de MySQL, todos los nombres de las base de datos, tablas y atributos, asi lo nombremos con mayúsculas o combinación de mayúsculas y minúsculas, todo lo guarda en minúsculas.


No hay comentarios:

Publicar un comentario

otros