Este manual proporciona una guía paso a paso para aprender PostgreSQL, un sistema de gestión de bases de datos relacional de código abierto y potente.
- Introducción
- Instalación
- Conceptos Básicos
- Operaciones Básicas
- Modificación de Tablas
- Eliminación de Tablas
PostgreSQL es un sistema de gestión de bases de datos relacional extremadamente potente y versátil. Se destaca por su capacidad para manejar grandes cargas de trabajo y su amplia gama de características.
Para instalar PostgreSQL, sigue las instrucciones específicas para tu sistema operativo en la documentación oficial.
Algunos conceptos básicos que necesitas comprender antes de comenzar son:
- Tablas: Almacenan los datos en filas y columnas.
- Consultas: Se utilizan para recuperar datos de la base de datos.
- Claves primarias y extranjeras: Se utilizan para establecer relaciones entre tablas.
- Comandos SQL: Se utilizan para interactuar con la base de datos.
-- Ejemplo de creación de tabla
-- Tabla Imagenes
CREATE TABLE Imagenes (
id_imagen SERIAL PRIMARY KEY,
ruta VARCHAR(255) NOT NULL,
formato VARCHAR(10) NOT NULL,
tamaño INT NOT NULL,
fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabla Servicios
CREATE TABLE Servicios (
id_servicio SERIAL PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT,
precio DECIMAL(10,2) NOT NULL,
proveedor VARCHAR(50) NOT NULL,
imagenes_id INTEGER, -- Añadimos la columna imagenes_id
CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen)
);
-- Tabla Productos
CREATE TABLE Productos (
id_producto SERIAL PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT,
precio DECIMAL(10,2) NOT NULL,
stock INT NOT NULL,
marca VARCHAR(50) NOT NULL,
dimensiones VARCHAR(50),
imagenes_id INTEGER, -- Añadimos la columna imagenes_id
CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen)
);
-- Tabla Categorias
CREATE TABLE Categorias (
id_categoria SERIAL PRIMARY KEY,
nombre VARCHAR(50) NOT NULL
);
-- Tabla Intermedia ProductoCategoria
CREATE TABLE ProductoCategoria (
id_producto INTEGER NOT NULL,
id_categoria INTEGER NOT NULL,
tipo_categoria VARCHAR(50),
PRIMARY KEY (id_producto, id_categoria),
FOREIGN KEY (id_producto) REFERENCES Productos(id_producto),
FOREIGN KEY (id_categoria) REFERENCES Categorias(id_categoria)
);
En caso de haber creado las tablas sin relaciones, se pueden añadir después con el siguiente comando:
-- Añadir clave foránea
-- Agregar columna imagenes_id y relación de clave externa en la tabla Productos
ALTER TABLE productos
ADD COLUMN imagenes_id INTEGER,
ADD CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen);
-- Agregar columna imagenes_id y relación de clave externa en la tabla Servicios
ALTER TABLE servicios
ADD COLUMN imagenes_id INTEGER,
ADD CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen);
-
ALTER TABLE: Esta es la instrucción SQL que se utiliza para realizar cambios en la estructura de una tabla existente.
-
productos: Es el nombre de la tabla en la que queremos hacer cambios.
-
ADD COLUMN imagenes_id INTEGER: Esto agrega una nueva columna llamada 'imagenes_id' a la tabla 'productos'.
- La columna es de tipo INTEGER, lo que significa que almacenará valores numéricos enteros.
-
ADD CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen):
-
Esta parte establece una restricción de clave externa (foreign key constraint) en la columna 'imagenes_id' de la tabla 'productos'.
-
La restricción se llama 'fk_imagenes_id'.
-
Esto significa que los valores en la columna 'imagenes_id' de la tabla 'productos' deben hacer referencia a los valores en la columna 'id_imagen' de la tabla 'imagenes'.
-
Esto establece una relación entre las dos tablas, donde 'productos' tiene una referencia a 'imagenes'.
-
-- Eliminar tabla con relaciones:
DROP TABLE nombre_tabla CASCADE;
-- Ejemplos:
DROP TABLE categorias CASCADE;
DROP TABLE imagenes CASCADE;
DROP TABLE productocategoria CASCADE;
DROP TABLE productos CASCADE;
DROP TABLE servicios CASCADE;
-- Crear tabla
-- Crear la tabla persona
CREATE TABLE persona (
id_persona SERIAL PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
edad INTEGER
);
-- Crear la tabla direccion
CREATE TABLE direccion (
id_direccion SERIAL PRIMARY KEY,
calle VARCHAR(100) NOT NULL,
ciudad VARCHAR(50) NOT NULL,
codigo_postal VARCHAR(10) NOT NULL,
id_persona INTEGER UNIQUE, -- Se añade la restricción UNIQUE para asegurar que cada dirección esté asociada a una sola persona
FOREIGN KEY (id_persona) REFERENCES persona(id_persona) ON DELETE CASCADE -- Se establece la clave foránea con opción de eliminación en cascada
);
En la definición de la tabla direccion
, hemos establecido una restricción de clave foránea (FOREIGN KEY), que es una regla que asegura la consistencia de los datos entre dos tablas relacionadas en una base de datos relacional.
-
Clave Foránea (FOREIGN KEY): Esta restricción garantiza la integridad referencial entre dos tablas. En este caso, la clave foránea se ha aplicado a la columna
id_persona
en la tabladireccion
. -
Referencia a la tabla
persona
: La clave foránea en la columnaid_persona
de la tabladireccion
está referenciando la columnaid_persona
en la tablapersona
. Esto significa que los valores en la columnaid_persona
de la tabladireccion
deben coincidir con los valores en la columnaid_persona
de la tablapersona
. -
ON DELETE CASCADE: Esto es una especificación adicional que hemos añadido a la restricción de clave foránea. Cuando se establece en
ON DELETE CASCADE
, indica que si se elimina una fila en la tablapersona
, todas las filas relacionadas en la tabladireccion
que contienen el mismo valor en la columnaid_persona
también se eliminarán automáticamente. Esta acción es útil para mantener la integridad referencial y evitar registros huérfanos en la base de datos.
¡Tu contribución es bienvenida para mejorar este manual! Si tienes sugerencias para agregar contenido adicional, corregir errores o mejorar la claridad de la información, ¡no dudes en participar!
- Haz un clone de este repositorio y clona tu copia localmente:
git clone https://github.com/TuUsuario/NombreDelRepositorio.git
- Crea una nueva rama para tu contribución:
git checkout -b nueva-funcionalidad
- Crea un Pull Request (PR) desde tu rama en GitHub.
- Describa detalladamente tus cambios en el PR y espera comentarios o revisiones.
-
Esta sección proporciona instrucciones claras sobre cómo contribuir al proyecto a través de
pull requests
en GitHub, así como cómo informar problemas o sugerencias a través deissues
. -
Si encuentras un problema o tienes una sugerencia para mejorar el manual, por favor crea un
issue
en este repositorio.