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_personaen la tabladireccion. -
Referencia a la tabla
persona: La clave foránea en la columnaid_personade la tabladireccionestá referenciando la columnaid_personaen la tablapersona. Esto significa que los valores en la columnaid_personade la tabladirecciondeben coincidir con los valores en la columnaid_personade 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 tabladireccionque contienen el mismo valor en la columnaid_personatambié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 requestsen 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
issueen este repositorio.