Pagila es una base de datos de ejemplo para PostgreSQL que simula una tienda de alquiler de DVDs 📀. Sirve como material didáctico para tutoriales, artículos y demostraciones, ya que está específicamente diseñada para mostrar las características de PostgreSQL.
Los siguientes artículos utilizan Pagila para mostrar diversas funcionalidades de PostgreSQL:
- Sample Applications - Pagila (PostgreSQL)
- Showcasing REST in PostgreSQL - The PreQuel
- DataEdo
Pagila es una adaptación (port) de la base de datos de ejemplo Sakila, creada originalmente para MySQL. Al igual que otras bases de datos de ejemplo, proporciona un esquema y datos de una hipotética "tienda de alquiler de DVDs" para usar en libros, tutoriales y artículos.
Para quienes estén interesados en los detalles técnicos de la adaptación, se migraron todas las tablas, datos, vistas y funciones, lo que implicó algunos cambios en el esquema:
- Se cambiaron los campos
char(1)detrue/falsea campos booleanos reales. - Se configuraron disparadores (
triggers) para actualizar automáticamente las columnaslast_update. - Se agregaron claves foráneas (
foreign keys). - Se eliminó
DEFAULT 0en las claves foráneas, ya que es innecesario con claves foráneas reales. - Se utilizó la funcionalidad de búsqueda de texto completo (
fulltext searching) integrada en PostgreSQL, lo que eliminó la necesidad de la tablafilm_text. - La función
rewards_reportse adaptó a un procedimiento almacenado que devuelve múltiples referencias de cursor.
El esquema y los datos de la base de datos Sakila original están disponibles bajo la licencia BSD.
- Partes con copyright (c) 2006-2025 Robert Treat
- Partes con copyright (c) 2006 MySQL AB
Pagila está disponible bajo la Licencia de PostgreSQL. Ten en cuenta que las versiones de Pagila anteriores a la 0.10.1 (inclusive) también se publicaron bajo la misma licencia BSD que Sakila.
- Versión 16.a
- Reemplazada la constante
create_datepor defecto en la tablacustomercon el estándar SQLcurrent_date. - Agregado un ejemplo de
tsrangepor defecto pararental.rental_period. - Agregada la vista
sales_by_store. - Corregida la vista "film list" para incluir películas sin actores.
- Reemplazada la constante
- Versión 15.a
- Agregada la vista
sales_by_film_categoryjunto conCOMMENT ON view. - Agregada la vista
sales_top5_by_film_categoryque muestra la función de ventanatopNpor categoría. - Agregado el procedimiento de utilidad
make_payment_data_current()que actualiza las fechas de pago a valores recientes.
- Agregada la vista
- Versión 14.a
- Convertida la vista
nicer_but_slower_film_lista una vista materializada. - Reemplazadas las columnas
rental_date/rental_returnpor una única columnatsrangellamadarental_period. - Creado un esquema no público de ejemplo, también conocido como "legacy".
- Creada una vista en el esquema "legacy" que coincide con el esquema original de la tabla
rental.
- Convertida la vista
- Versión 13.a
- Agregado un ejemplo complejo de JSONB a través de la vista
rental_report. - Agregado un ejemplo de columna generada no
IDENTITYenfilm.revenue_projection.
- Agregado un ejemplo complejo de JSONB a través de la vista
- Versión 12.a
- Uso de
:=para la asignación en la funciónlast_updated. - Mejoras menores en la vista
nicer_but_slower_film_list. - Agregadas las particiones
DEFAULTyMAXVALUEpara la tablapayment. - Reconstruidos los datos para la tabla
payment.
- Uso de
- Versión 11.a
- Nueva descarga del esquema y datos con una versión más reciente de
pg_dump. Esto fuerza la calificación del esquema para todos los objetos de la base de datos. - Convertida la función
reward_reporta un procedimiento almacenado basado enrefcusor. - Eliminados el manejador de fechas de pago obsoleto y los
triggersde apoyo. - Agregadas columnas de cobertura al índice de la clave primaria de
actor. - Reescrita la vista
staff_listusando la sintaxisJOIN...USING.
- Nueva descarga del esquema y datos con una versión más reciente de
- Versión 10.a
- Reconstruida la tabla
paymentsusando particionamiento nativo. - Agregada una función, una regla y
triggerspara manejar las actualizaciones de la tabla de pagos particionada. - Corregidos numerosos errores en el archivo de inserción de datos.
- Reconstruida la tabla
- Versión 9.6.a
- Cambiada la versión para seguir las versiones principales de Postgres.
- Actualizados los enlaces en la sección de artículos (donde estaban disponibles).
- Revisado el texto del archivo README.
- Versión 0.10.1
- Agregado el archivo
pagila-data-insert.sqly la sección de artículos.
- Agregado el archivo
- Versión 0.10
- Soporte para fulltext integrado. Agregado un ejemplo de
enum.
- Soporte para fulltext integrado. Agregado un ejemplo de
- Versión 0.9
- Agregado un ejemplo de particionamiento de tablas.
- Versión 0.8
- Primera versión de Pagila.