DDL schemas for Trading Platform: - User management - Authentication - Payments - Education - ML predictions - Trading data Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
55 lines
2.1 KiB
SQL
55 lines
2.1 KiB
SQL
-- =====================================================
|
|
-- TABLE: education.certificates
|
|
-- =====================================================
|
|
-- Proyecto: OrbiQuant IA (Trading Platform)
|
|
-- Módulo: OQI-002 - Education
|
|
-- Especificación: ET-EDU-001-database.md
|
|
-- =====================================================
|
|
|
|
CREATE TABLE education.certificates (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
-- Relaciones
|
|
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
course_id UUID NOT NULL REFERENCES education.courses(id) ON DELETE RESTRICT,
|
|
enrollment_id UUID NOT NULL REFERENCES education.enrollments(id) ON DELETE RESTRICT,
|
|
|
|
-- Información del certificado
|
|
certificate_number VARCHAR(50) NOT NULL UNIQUE, -- OQI-CERT-XXXX-YYYY
|
|
|
|
-- Datos del certificado (snapshot)
|
|
user_name VARCHAR(200) NOT NULL,
|
|
course_title VARCHAR(200) NOT NULL,
|
|
instructor_name VARCHAR(200),
|
|
completion_date DATE NOT NULL,
|
|
|
|
-- Metadata de logro
|
|
final_score DECIMAL(5,2), -- Promedio de quizzes
|
|
total_xp_earned INTEGER,
|
|
|
|
-- URL del PDF generado
|
|
certificate_url VARCHAR(500),
|
|
|
|
-- Verificación
|
|
verification_code VARCHAR(100) UNIQUE, -- Para verificar autenticidad
|
|
is_verified BOOLEAN DEFAULT true,
|
|
|
|
-- Metadata
|
|
issued_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
CONSTRAINT unique_user_course_cert UNIQUE(user_id, course_id)
|
|
);
|
|
|
|
-- Índices
|
|
CREATE INDEX idx_certificates_user ON education.certificates(user_id);
|
|
CREATE INDEX idx_certificates_course ON education.certificates(course_id);
|
|
CREATE INDEX idx_certificates_number ON education.certificates(certificate_number);
|
|
CREATE INDEX idx_certificates_verification ON education.certificates(verification_code);
|
|
|
|
-- Comentarios
|
|
COMMENT ON TABLE education.certificates IS 'Certificados emitidos al completar cursos';
|
|
COMMENT ON COLUMN education.certificates.certificate_number IS 'Número único formato: OQI-CERT-YYYY-NNNNN';
|
|
COMMENT ON COLUMN education.certificates.verification_code IS 'Código para verificar autenticidad del certificado';
|
|
COMMENT ON COLUMN education.certificates.final_score IS 'Promedio de todos los quizzes del curso';
|