4.9 KiB
4.9 KiB
Club Daguerre Camera Database - Schema Installation
Overview
Complete PostgreSQL 16 schema for the Club Daguerre camera database, preserving Harald Goergens' 30+ year classification work with modern metadata management.
Prerequisites
- PostgreSQL 16 installed
- camera_db database created
- Port 5433 (or your configured port)
Installation Order
The schema is split into logical sections for clarity and maintainability:
- 01-core-hierarchy.sql - Manufacturers, models, variants, combos
- 02-supporting.sql - Lenses, shutters, formats, terminology
- 03-content.sql - Images, documents, articles (multi-level linking)
- 04-auth.sql - Members, research access, audit log
- 05-history.sql - History tables for audit trail
- 06-triggers.sql - Triggers and functions for automation
- 07-views.sql - Materialized views for performance
- 08-seed-data.sql - Initial data (sources, terminology, samples)
Quick Installation
Method 1: All at Once
cd /data/camera-database/schema
# Run all files in order
for file in 0{1..8}-*.sql; do
echo "Installing $file..."
psql -h localhost -p 5433 -U postgres -d camera_db -f "$file"
done
Method 2: One by One
cd /data/camera-database/schema
psql -h localhost -p 5433 -U postgres -d camera_db -f 01-core-hierarchy.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 02-supporting.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 03-content.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 04-auth.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 05-history.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 06-triggers.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 07-views.sql
psql -h localhost -p 5433 -U postgres -d camera_db -f 08-seed-data.sql
Verification
After installation:
-- Connect to database
psql -h localhost -p 5433 -U postgres -d camera_db
-- Check tables
\dt
-- Check views
\dv
-- Check materialized views
\dm
-- Check functions
\df
-- Run validation
SELECT * FROM validate_goergens_structure();
-- Check seed data
SELECT * FROM content_sources;
SELECT * FROM terminology LIMIT 10;
-- Exit
\q
Schema Statistics
Expected after installation:
- Tables: 35
- Indexes: ~80
- Views: 2
- Materialized Views: 3
- Functions: 5
- Triggers: 8
Key Features
1. Goergens Hierarchy Preservation
- Manufacturers (ERNM, ZEII, etc.)
- Models (1910, 0450, etc.)
- Variants (a, b, c - color/material)
- Combos (01, 02 - lens/shutter configs)
2. Multi-Level Content Linking
Images, documents, and articles can link at ANY level:
- Manufacturer level (company history)
- Model level (camera manual - shared by all variants)
- Variant level (color-specific photo)
- Combo level (lens manual - combo-specific)
3. Rights Management
- verified: Publishable content
- uncertain: Research-only (Steimer data)
- restricted: Internal only
4. Performance Optimizations
- Denormalized fields in lens_shutter_combos
- Materialized views for dashboard/search
- GIN indexes for full-text search
- GIST indexes for range queries
5. Audit Trail
- Version numbers on all records
- History tables track all changes
- Comprehensive audit log
- Timestamp tracking
6. Multilingual Support
- German/English core (expandable)
- Separate i18n tables for content
- Language-agnostic codes
Maintenance
Refresh Materialized Views
-- Hourly (manufacturer stats)
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_manufacturer_stats;
-- Every 15-30 minutes (search catalog)
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_public_catalog;
-- Every 5 minutes (dashboard)
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_dashboard_stats;
Backup
# Full backup
pg_dump -h localhost -p 5433 -U postgres camera_db | gzip > /mnt/data/postgresql/backups/camera_db_$(date +%Y%m%d).sql.gz
# Schema only
pg_dump -h localhost -p 5433 -U postgres -s camera_db > /mnt/data/postgresql/backups/camera_db_schema.sql
Next Steps
- ✅ Schema installed
- Import Goergens data (74,000+ cameras)
- Import Photo Antiquaria articles
- Add images and documents
- Develop Flask web application
Troubleshooting
"relation already exists"
Schema already partially installed. Either:
- Drop database and recreate:
DROP DATABASE camera_db; CREATE DATABASE camera_db; - Or skip to the file where installation failed
Foreign key violations
Files must be run in order (01 through 08). Foreign keys depend on tables from earlier files.
Permission denied
Use postgres superuser: -U postgres
Documentation
- Design Document: /data/camera-database/docs/database-design.md
- PostgreSQL Setup: /data/camera-database/docs/postgresql-setup.md
- Goergens Email: /data/camera-database/docs/goergens-email.txt
Version
- Schema Version: 1.0
- PostgreSQL: 16+
- Date: November 2025
- Author: Walter Jekat / Club Daguerre e.V.