# Merge Database IT e CH

## Descrizione

Questo processo ha unito i dati delle province e comuni di Italia e Svizzera in un unico dataset, aggiungendo le colonne `nazione_id`, `created_at` e `updated_at`.

## File Generati

### 1. `provincia_merged.sql`

- **Contenuto**: Tutte le province IT e CH
- **Struttura**: `id`, `nome`, `sigla`, `created_at`, `updated_at`, `nazione_id`
- **Statistiche**:
  - Province IT: 111 (ID 1-111, nazione_id = 118)
  - Province CH: 26 (ID 112-137, nazione_id = 220)
  - **Totale**: 137 province

### 2. `comune_merged.sql`

- **Contenuto**: Tutti i comuni IT e CH
- **Struttura**: `id`, `provincia_id`, `nome`, `codice_catastale`, `created_at`, `updated_at`, `nazione_id`
- **Statistiche**:
  - Comuni IT: 8.002 (ID originali 1-110014, nazione_id = 118)
  - Comuni CH: 2.136 (ID 110015-112150, nazione_id = 220)
  - **Totale**: 10.138 comuni

## Logica di Merge

### Province

- **IT**: Mantengono gli ID originali (1-111)
- **CH**: Rinumerate da 112 in poi (112-137)
- **Mappatura CH**:
  - Zürich: 1 → 112
  - Bern: 2 → 113
  - Luzern: 3 → 114
  - Uri: 4 → 115
  - Schwyz: 5 → 116
  - Obwalden: 6 → 117
  - Nidwalden: 7 → 118
  - Glarus: 8 → 119
  - Zug: 9 → 120
  - Fribourg: 10 → 121
  - Solothurn: 11 → 122
  - Basel-Stadt: 12 → 123
  - Basel-Landschaft: 13 → 124
  - Schaffhausen: 14 → 125
  - Appenzell Ausserrhoden: 15 → 126
  - Appenzell Innerrhoden: 16 → 127
  - St. Gallen: 17 → 128
  - Graubünden: 18 → 129
  - Aargau: 19 → 130
  - Thurgau: 20 → 131
  - Ticino: 21 → 132
  - Vaud: 22 → 133
  - Valais: 23 → 134
  - Neuchâtel: 24 → 135
  - Genève: 25 → 136
  - Jura: 26 → 137

### Comuni

- **IT**: Mantengono gli ID originali (1-110014)
- **CH**: Rinumerati da 110015 in poi (110015-112150)
- **Provincia_id**: Aggiornati secondo la nuova numerazione delle province
- **Esempio**: Comuni di Zürich ora hanno `provincia_id = 112` invece di `1`

## Script Utilizzati

### `merge_comuni.py`

- Parsa i file `comune.sql` di IT e CH (gestisce tutte le query INSERT multiple)
- Gestisce correttamente gli apostrofi nei nomi dei comuni (es. L'Aquila, Albiano d'Ivrea)
- Genera il file `comune_merged.sql`
- Aggiunge le colonne `created_at`, `updated_at`, `nazione_id`
- Rinumera gli ID dei comuni CH partendo da 110015

### `merge_province.py`

- Parsa i file `provincia.sql` di IT e CH
- Gestisce correttamente gli apostrofi nei nomi delle province (es. Valle d'Aosta, Reggio nell'Emilia, L'Aquila)
- Genera il file `provincia_merged.sql`
- Rinumera gli ID delle province CH
- Aggiorna i `provincia_id` nei comuni CH (ID >= 110015)

## Utilizzo

1. **Importare le province**:

   ```sql
   SOURCE provincia_merged.sql;
   ```

2. **Importare i comuni**:

   ```sql
   SOURCE comune_merged.sql;
   ```

## Note Importanti

- Tutti i valori `created_at` e `updated_at` sono impostati a `NULL`
- I codici catastali sono preservati dove presenti
- Le relazioni tra comuni e province sono mantenute corrette
- Gli ID sono univoci e non ci sono conflitti
- Le province CH sono rinumerate correttamente da 112 a 137
- I comuni CH sono rinumerati da 110015 a 112150
- I file originali contengono multiple query INSERT che sono state tutte processate
- Gli apostrofi nei nomi dei comuni sono gestiti correttamente (es. L'Aquila, Albiano d'Ivrea)
- Gli apostrofi nei nomi delle province sono gestiti correttamente (es. Valle d'Aosta, Reggio nell'Emilia, L'Aquila)

## File Originali

- `it/provincia.sql` - Province italiane originali
- `it/comune.sql` - Comuni italiani originali (6 query INSERT)
- `ch/provincia.sql` - Province svizzere originali
- `ch/comune.sql` - Comuni svizzeri originali (4 query INSERT)
