Schema DB fin (core)
π― Cosa faβ
Persistence layer del dominio formazione finanziata. 29 tabelle totali β questa pagina dettaglia le 8 core della spec corrente.
πΊοΈ Tabelle core (8)β
| Area | Tabella | Ruolo |
|---|---|---|
| Progetti | fin.projects | Progetto finanziato |
| Progetti | fin.phases | Anagrafica fasi |
| Progetti | fin.projectPhases | Fasi istanziate per progetto |
| Struttura | fin.modules | Moduli formativi |
| Struttura | fin.editions | Edizioni dei moduli |
| Partecipazione | fin.projectCompanies | Aziende nel progetto |
| Partecipazione | fin.enrollments | Iscrizioni lavoratori |
| Partecipazione | fin.companyMemberships | Adesioni al fondo |
π Relazioniβ
Referenze esterne:
fin.projects.accountIdβfin.accounts(id)(fuori scope)fin.projects.noticeIdβfin.notices(id)(fuori scope)fin.companyMemberships.companyIdβreg.companies(id)fin.companyMemberships.accountIdβfin.accounts(id)(fuori scope)fin.projectCompanies.companyIdβreg.companies(id)fin.enrollments.workerIdβjob.workers(id)fin.modules.thematicAreaIdβfin.thematicAreas(id)(fuori scope)fin.modules.teachingMethodIdβfin.teachingMethods(id)(fuori scope)
ποΈ Dettaglio tabelleβ
fin.projectsβ
- PK:
id - FK:
accountId,noticeId(nullable) - Campi chiave:
code(stringa),label(stringa estesa)status(default'BOZZA') β rif. enumProjectStatus- Date:
startDate,endDate,submissionDate,approvalDate,closureDate,rendicontazioneDeadline totalHours(decimali)description(NVARCHAR MAX)
fin.phasesβ
- PK:
id - Campi:
codeValue(string identificativo),label,sortOrder,managedType(active/tracking/tracking_readonly),hideable(default 0),description
fin.projectPhasesβ
- PK:
id - FK:
projectId β fin.projects(id),phaseId β fin.phases(id) - Campi:
status(default'not_started', enumProjectPhaseStatus),completionRate(0-100),startedAt,completedAt,forceUnlocked(default 0),notes
fin.modulesβ
- PK:
id - FK:
projectId,thematicAreaId(nullable),teachingMethodId(nullable) - Campi:
hours(decimali),notes
fin.editionsβ
- PK:
id - FK:
moduleId β fin.modules(id) - Campi:
maxPeople(nullable),notes
fin.projectCompaniesβ
- PK:
id - FK:
projectId,companyId - Campi:
aidRegime(enumAidRegime: de_minimis, aiuti_formazione),notes
fin.enrollmentsβ
- PK:
id - FK:
editionId,workerId - Campi:
attendanceHours,attendanceRate(percentuale),passed(flag),notes
fin.companyMembershipsβ
- PK:
id - FK:
companyId β reg.companies(id),accountId β fin.accounts(id) - Campi:
inpsCode,memberSince,memberUntil,availableBalance(decimali),status(default'active', enumMembershipStatus)
π Tabelle fuori scope (~21)β
Vedi Panoramica per elenco completo per area.
π File chiaveβ
TrainingHub.Database/fin/Tables/*.sqlβ 29 tabelleTrainingHub.Shared/Enums.csβ enum dominio
β οΈ Debito tecnicoβ
-
fin.projects.statuscome stringa libera. Check constraint assente: qualsiasi valore Γ¨ accettato in DB. Validazione solo via enum C# conEnum.Parse. - Indici sui filtri frequenti.
projectCompanies.companyId,enrollments.editionId,enrollments.workerIdsono join frequenti: valutare indici espliciti. -
editionssenza date. Le edizioni non hanno date di inizio e fine in questa tabella (forse insessions, fuori scope). ScomoditΓ per reportistica da elementi core. -
projectPhases.completionRate. Come viene calcolato? Manuale o derivato dal numero di requisiti soddisfatti? Documentazione assente. -
companyMemberships.availableBalance. Chi la aggiorna? Movimenti attesi quando un progetto viene approvato / saldato. -
totalHourssuprojects. Ridondante rispetto alla somma dimodules.hours: rischio di divergenza.
π Vedi ancheβ
- Panoramica dominio
- Aggiungere un campo
- Dominio
reg: schema DB - Dominio
job: schema DB