Initial commit (code), runtime ignoré, secrets exclus
This commit is contained in:
184
SQL_TABLES_ANTITRICHE.sql
Normal file
184
SQL_TABLES_ANTITRICHE.sql
Normal file
@ -0,0 +1,184 @@
|
||||
-- ============================================================================
|
||||
-- SCRIPT SQL : Tables Anti-Triche - VERSION CORRIGÉE DÉFINITIVE
|
||||
-- ============================================================================
|
||||
-- Date : 29 décembre 2025
|
||||
-- Base : mathematiques_db
|
||||
-- Correction : Utilisation des bons noms de colonnes (id_tentative, id_question)
|
||||
-- ============================================================================
|
||||
|
||||
USE mathematiques_db;
|
||||
|
||||
-- ============================================================================
|
||||
-- TABLE 1 : sessions_calc
|
||||
-- ============================================================================
|
||||
|
||||
DROP TABLE IF EXISTS sessions_calc;
|
||||
CREATE TABLE sessions_calc (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
id_tentative INT(11) NOT NULL,
|
||||
id_eleve INT(11) NOT NULL,
|
||||
session_token VARCHAR(64) UNIQUE NOT NULL,
|
||||
|
||||
computer_name VARCHAR(100),
|
||||
computer_username VARCHAR(100),
|
||||
ip_address VARCHAR(45),
|
||||
user_agent TEXT,
|
||||
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
disconnected_at TIMESTAMP NULL,
|
||||
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
|
||||
macro_hash VARCHAR(64) DEFAULT NULL,
|
||||
file_hash VARCHAR(64) DEFAULT NULL,
|
||||
|
||||
FOREIGN KEY (id_tentative) REFERENCES tentatives_eleves(id_tentative) ON DELETE CASCADE,
|
||||
FOREIGN KEY (id_eleve) REFERENCES utilisateurs(id_utilisateur) ON DELETE CASCADE,
|
||||
|
||||
INDEX idx_session_token (session_token),
|
||||
INDEX idx_active (is_active, last_activity),
|
||||
INDEX idx_tentative (id_tentative),
|
||||
INDEX idx_eleve (id_eleve)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- TABLE 2 : reponses_calc
|
||||
-- ============================================================================
|
||||
|
||||
DROP TABLE IF EXISTS reponses_calc;
|
||||
CREATE TABLE reponses_calc (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
id_tentative INT(11) NOT NULL,
|
||||
id_question INT(11) NOT NULL,
|
||||
session_token VARCHAR(64) NOT NULL,
|
||||
|
||||
reponse_choisie VARCHAR(10) NOT NULL,
|
||||
|
||||
saved_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
computer_name VARCHAR(100),
|
||||
|
||||
client_timestamp BIGINT DEFAULT NULL,
|
||||
time_spent_seconds INT DEFAULT NULL,
|
||||
|
||||
FOREIGN KEY (id_tentative) REFERENCES tentatives_eleves(id_tentative) ON DELETE CASCADE,
|
||||
FOREIGN KEY (id_question) REFERENCES questions(id_question) ON DELETE CASCADE,
|
||||
FOREIGN KEY (session_token) REFERENCES sessions_calc(session_token) ON DELETE CASCADE,
|
||||
|
||||
INDEX idx_tentative (id_tentative),
|
||||
INDEX idx_question (id_question),
|
||||
INDEX idx_session (session_token),
|
||||
INDEX idx_saved_at (saved_at)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- TABLE 3 : logs_actions
|
||||
-- ============================================================================
|
||||
|
||||
DROP TABLE IF EXISTS logs_actions;
|
||||
CREATE TABLE logs_actions (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
id_tentative INT(11) NOT NULL,
|
||||
session_token VARCHAR(64) NOT NULL,
|
||||
|
||||
action_type ENUM(
|
||||
'connexion',
|
||||
'deconnexion',
|
||||
'reponse_modifiee',
|
||||
'copier_coller',
|
||||
'changement_fenetre',
|
||||
'inactivite',
|
||||
'reconnexion',
|
||||
'soumission',
|
||||
'autre'
|
||||
) NOT NULL,
|
||||
|
||||
action_details TEXT,
|
||||
|
||||
computer_name VARCHAR(100),
|
||||
ip_address VARCHAR(45),
|
||||
|
||||
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (id_tentative) REFERENCES tentatives_eleves(id_tentative) ON DELETE CASCADE,
|
||||
|
||||
INDEX idx_tentative (id_tentative),
|
||||
INDEX idx_action_type (action_type),
|
||||
INDEX idx_timestamp (timestamp)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- TABLE 4 : fraud_alerts
|
||||
-- ============================================================================
|
||||
|
||||
DROP TABLE IF EXISTS fraud_alerts;
|
||||
CREATE TABLE fraud_alerts (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
id_tentative INT(11) NOT NULL,
|
||||
|
||||
alert_type ENUM(
|
||||
'multi_connexion',
|
||||
'ip_changee',
|
||||
'machine_changee',
|
||||
'timing_suspect',
|
||||
'reponses_identiques',
|
||||
'macro_modifiee',
|
||||
'fichier_modifie',
|
||||
'autre'
|
||||
) NOT NULL,
|
||||
|
||||
severity ENUM('low', 'medium', 'high', 'critical') NOT NULL DEFAULT 'medium',
|
||||
|
||||
alert_message TEXT NOT NULL,
|
||||
alert_details JSON,
|
||||
|
||||
detected_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
is_reviewed BOOLEAN DEFAULT FALSE,
|
||||
reviewed_at TIMESTAMP NULL,
|
||||
reviewed_by INT(11) NULL,
|
||||
review_notes TEXT,
|
||||
|
||||
FOREIGN KEY (id_tentative) REFERENCES tentatives_eleves(id_tentative) ON DELETE CASCADE,
|
||||
FOREIGN KEY (reviewed_by) REFERENCES utilisateurs(id_utilisateur) ON DELETE SET NULL,
|
||||
|
||||
INDEX idx_tentative (id_tentative),
|
||||
INDEX idx_alert_type (alert_type),
|
||||
INDEX idx_severity (severity),
|
||||
INDEX idx_detected_at (detected_at),
|
||||
INDEX idx_is_reviewed (is_reviewed),
|
||||
INDEX idx_reviewed_by (reviewed_by)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- VÉRIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
SELECT '✅ Tables créées avec succès !' AS status;
|
||||
|
||||
SHOW TABLES LIKE '%calc%';
|
||||
|
||||
SELECT
|
||||
TABLE_NAME,
|
||||
ENGINE,
|
||||
TABLE_ROWS,
|
||||
TABLE_COLLATION
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = 'mathematiques_db'
|
||||
AND TABLE_NAME IN ('sessions_calc', 'reponses_calc', 'logs_actions', 'fraud_alerts');
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- FIN DU SCRIPT
|
||||
-- ============================================================================
|
||||
Reference in New Issue
Block a user