Browse Source

Il Sudato Merge

FRANCESCO CORADESCHI 5 months ago
parent
commit
8a62fd2209
2 changed files with 11 additions and 10 deletions
  1. BIN
      Serious_attempt/data/Struttura_NEW.xlsx
  2. 11 10
      Serious_attempt/the_one_that_does_it.py

BIN
Serious_attempt/data/Struttura_NEW.xlsx


+ 11 - 10
Serious_attempt/the_one_that_does_it.py

@@ -36,18 +36,19 @@ relations_keys = [cell for cell in next(relations_sheet.values) if cell]
 raw_relations = [{key: row[ind] for ind, key in enumerate(relations_keys)} for row in relations_sheet.values][1:]
 # %%
 # NOTE:
-# a. Non ci sono, al momento, constraint di unicità per le relazioni imposti tramite il "foglio master"
-# b. Non ci sono neanche constraint di esistenza, TRANNE l'id univoca, intesa NON come quella del sistema ma quella della comunità di riferimento, e tipica del settore di dominio considerato
-# c. Per identificare le informazioni 'atomiche' non si usa un campo dedicato, ma una logica. AL MOMENTO la logica è che si considera atomica una entità che non è mai 'prima' in una relazione. L'ORDINE DELLE RELAZIONI E' IMPORTANTE a differenza di quanto assumevo inizialmente.
-# d. Si effettua un controllo di unicità sulle entità, basato sul nome normalizzato (parole con iniziale maiuscola e il resto minuscolo, spazi ridotti a spazio singolo, strip()). Nessuna entità può avere nome vuoto.
-# e. Si effettua un controllo di unicità sulle relazioni, che però riguarda tutta la terna SOGGETTO-RELAZIONE-OGGETTO (normalizzata in modo simile ai nomi di entità, ma nella RELAZIONE gli spazi sono underscores e si usa lower() invece che title()). Nessuno dei membri della terna può essere vuoto; il nome della relazione inversa è opzionale.
+# a. Non ci sono, al momento, _constraints_ di unicità per le relazioni che siano imposti tramite il "foglio master".
+# b. Non ci sono neanche constraint di esistenza, TRANNE l'id univoca, intesa NON come quella del sistema ma quella della comunità di riferimento, e tipica del settore di dominio considerato; nel caso specifico, la SEGNATURA.
+# c. Per identificare le informazioni 'atomiche' non si usa un campo dedicato, ma una logica. AL MOMENTO la logica è che si considera atomica una entità che non è mai 'prima' in una relazione. L'ORDINE DELLE RELAZIONI E' IMPORTANTE a differenza di quanto assumevo inizialmente. 'Atomiche' è probabilmente un _misnomer_, dato che può trattarsi di informazioni composite, come ad esempio una data. Si tratta più precisamente (forse) di ATTRIBUTI, nel senso di informazioni "figlie" che hanno significato solo in associazione all'Entità _parent_ -- proprio come nel caso delle date.
+# d. Si effettua un controllo di unicità sulle entità, basato sul nome normalizzato (parole trattate con: sostituzione del _whitespace_ contiguo con spazio singolo ' ', title() e strip()). Nessuna entità può avere nome vuoto. Eventuali nomi duplicati vengono segnalati per un controllo manuale.
+# e. Si effettua un controllo di unicità sulle relazioni, che riguarda tutta la terna SOGGETTO-RELAZIONE-OGGETTO (normalizzata in modo simile ai nomi di entità, ma nella RELAZIONE gli spazi sono underscores e si usa lower() invece che title()). Nessuno dei membri della terna può essere vuoto; il nome della relazione inversa invece è opzionale e non viene controllato.
 # f. Si effettuano controlli di consistenza sulle relazioni:
-#   .f1. Nessuna relazione con entità non definite
-#   .f2. Nessuna entità "orfana", ovvero non presente in alcuna relazione
+#   .f1. Nessuna relazione con entità non definite come SOGGETTO.
+#   .f2. Warning sulle entità "orfane", ovvero non presenti in alcuna relazione.
+# g. Una relazione può avere un OGGETTO non definito nel foglio Entità. E' sottointeso, in questi casi, che si tratta di un'informazione 'atomica' / un attributo.
 #
-# TODO: completare secondo le specifiche sopra
-# TODO: effettuare il merge con i "miei" CSV, che hanno informazioni in più!
-# TODO: ottimizzare un po' la scrittura del codice
+# TODO: completare secondo le specifiche sopra -> Fatto al 90%
+# TODO: effettuare il merge con i "miei" CSV, che hanno informazioni in più! --> Fatto, solo da riverificare
+# TODO: ottimizzare un po' la scrittura del codice -> Non prioritario
 
 
 # Process entities: