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