netgescon-day0/docs/91-database
2026-03-10 21:00:01 +00:00
..
01-struttura-principale chore: NetGescon day-0 baseline 2026-03-10 2026-03-10 21:00:01 +00:00
02-tabelle-collegate chore: NetGescon day-0 baseline 2026-03-10 2026-03-10 21:00:01 +00:00
99-gescon-staging-archivi.md chore: NetGescon day-0 baseline 2026-03-10 2026-03-10 21:00:01 +00:00
README.md chore: NetGescon day-0 baseline 2026-03-10 2026-03-10 21:00:01 +00:00

🗄️ NETGESCON DATABASE STRUTTURA

Organizzazione sistematica del database NetGescon

📅 Versione: 3.0 - 5 Agosto 2025

🎯 Obiettivo: Database strutturato per amministratori con codice univoco 8 cifre


🔑 CONNESSIONE DATABASE SVILUPPO

Credenziali Standard NetGescon:

# Database di sviluppo
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=netgescon
DB_USERNAME=netgescon_user
DB_PASSWORD=NetGescon2024!

# Path Laravel
DB_CONFIG_PATH=/var/www/netgescon/.env
DB_MIGRATIONS_PATH=/var/www/netgescon/database/migrations/

Test Connessione:

# Verifica connessione database
mysql -u netgescon_user -p netgescon
# Password: NetGescon2024!

# Oppure via Laravel
cd /var/www/netgescon
php artisan tinker
DB::connection()->getPdo();

🏗️ ARCHITETTURA DATABASE

🎯 Principio Fondamentale:

Ogni amministratore ha un CODICE UNIVOCO di 8 CIFRE alfanumeriche che identifica la sua "bolla" di dati

Vantaggi Architettura:

  • Isolamento dati per amministratore
  • Portabilità database per singolo amministratore
  • Backup selettivo per codice amministratore
  • Scalabilità e distribuzione facilitata
  • Security multi-tenant nativa

📂 STRUTTURA CARTELLE DATABASE

📋 Organizzazione File:

01-struttura-principale/

  • README.md - Tabelle core del sistema
  • amministratori.md - Tabella amministratori (codice 8 cifre)
  • users.md - Utenti sistema (collegati ad amministratore)
  • roles-permissions.md - Sistema ruoli e permessi
  • schema-completo.md - Schema ER completo

02-tabelle-collegate/

  • stabili.md - Condomini e stabili
  • gestioni.md - Gestioni annuali
  • unita-immobiliari.md - Unità immobiliari
  • soggetti.md - Anagrafica persone/aziende
  • contabilita.md - Movimenti e piano conti
  • documenti.md - Sistema documentale

03-archivi-specifici/

  • comuni-italiani.md - Anagrafica comuni (8100 record)
  • codici-catastali.md - Codici catastali
  • tabelle-millesimali.md - Template millesimi
  • piano-conti-standard.md - Piano conti default

04-migrations-seeds/

  • migration-order.md - Ordine esecuzione migrations
  • seeder-data.md - Dati iniziali sistema
  • import-scripts.md - Script importazione dati
  • backup-restore.md - Procedure backup/restore

🎯 TABELLE PRINCIPALI IDENTIFICATE

Core Sistema (con codice amministratore):

-- Tabella master con codice 8 cifre
amministratori (
    id,
    codice_univoco CHAR(8) UNIQUE,  -- ES: A1B2C3D4
    nome, cognome, email,
    created_at, updated_at
)

-- Utenti collegati ad amministratore
users (
    id,
    amministratore_id,  -- FK verso amministratori
    name, email, password,
    created_at, updated_at
)

-- Stabili con filtro amministratore
stabili (
    id,
    amministratore_id,  -- FK verso amministratori
    denominazione, indirizzo,
    created_at, updated_at
)

Tabelle Collegate (filtrate per amministratore):

  • gestioni → collegate a stabili → filtrate per amministratore
  • unita_immobiliari → collegate a stabili → filtrate per amministratore
  • soggetti → collegati a stabili → filtrati per amministratore
  • contabilita_registrazioni → collegate a gestioni → filtrate per amministratore
  • documenti → collegati a stabili → filtrati per amministratore

Tabelle Condivise (senza filtro):

  • comuni_italiani → anagrafica nazionale
  • roles → ruoli sistema
  • permissions → permessi sistema

🔄 FLUSSO CREAZIONE DATABASE

Step 1: Struttura Principale

  1. Leggi 01-struttura-principale/README.md
  2. Crea tabelle core (amministratori, users, roles)
  3. Implementa sistema codice 8 cifre

Step 2: Tabelle Collegate

  1. Leggi 02-tabelle-collegate/README.md
  2. Crea tabelle business (stabili, gestioni, unita)
  3. Implementa foreign keys con amministratore

Step 3: Archivi Specifici

  1. Leggi 03-archivi-specifici/README.md
  2. Importa comuni italiani (8100 record)
  3. Configura dati master

Step 4: Migrations e Seeds

  1. Leggi 04-migrations-seeds/README.md
  2. Esegui migrations in ordine corretto
  3. Popola con dati iniziali

🔍 QUERY PATTERN STANDARD

Filtro per Amministratore:

-- Pattern base per tutte le query
SELECT s.*, a.codice_univoco as admin_code
FROM stabili s
JOIN amministratori a ON s.amministratore_id = a.id
WHERE a.codice_univoco = 'A1B2C3D4';

-- Pattern Laravel
$stabili = DB::table('stabili')
    ->join('amministratori', 'stabili.amministratore_id', '=', 'amministratori.id')
    ->where('amministratori.codice_univoco', auth()->user()->amministratore->codice_univoco)
    ->get();

Backup per Amministratore:

# Backup dati singolo amministratore
mysqldump -u netgescon_user -p netgescon \
    --where="amministratore_id IN (SELECT id FROM amministratori WHERE codice_univoco='A1B2C3D4')" \
    stabili gestioni unita_immobiliari > backup_A1B2C3D4.sql

🎯 PROSSIMI PASSI

Ora Procediamo Con:

  1. 📖 Leggi 01-struttura-principale/README.md per tabelle core
  2. 🏗️ Implementa sistema amministratori con codice 8 cifre
  3. 🔗 Collega tutte le tabelle business con foreign key
  4. 📊 Verifica filtri e query pattern
  5. 🧪 Testa con dati demo per 2-3 amministratori

File da Studiare in Ordine:

  1. 01-struttura-principale/amministratori.md
  2. 01-struttura-principale/users.md
  3. 02-tabelle-collegate/stabili.md
  4. 02-tabelle-collegate/gestioni.md
  5. 03-archivi-specifici/comuni-italiani.md

🎯 DATABASE ORGANIZZATO E STRUTTURATO
Ogni file contiene la documentazione completa per implementazione sistematica

📖 Inizia dalla lettura di 01-struttura-principale/README.md