netgescon-day0/docs/91-database/README.md

203 lines
5.8 KiB
Markdown
Executable File

# 🗄️ 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**:
```env
# 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**:
```bash
# 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)**:
```sql
-- 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**:
```sql
-- 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**:
```bash
# 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`**