Newsgroup: it.comp.appl.access
Titolo: casella di riepilogo relativa a 2 tabelle

La tabella Attività è formata, tra gli altri, dai seguenti campi:
...|data_ora|impianto|utente|attività|...;
Il campo  "utente" può riferirsi sia alla tabella Persone che alle
tabella Società (2 diverse entità), ed il relativo valore dovrebbe
essere ricercato a mezzo di apposita casella di riepilogo che unisca i
valori.
L'entità "utente" dovrebbe in altre parole essere referenziata da
attributi che variano a seconda che siano "persone" (es. Nome,Cognome)
o "associazioni" (es. Denominazione, Partita Iva), oltre ad altri
attributi comuni (es. Indirizzo, Codice Fiscale).
Come posso relazionare tra loro le tabelle in modo da garantirmi anche
l'integrità referenziata uno-> molti tra Persone o Società ed
Attività?
Ho provato con una query di unione ma oltre a rallentare
l'elaborazione (credo) non mi consente l'applicazione della suddetta
integrità referenziata.
Forse ho impostato male il problema?
Scusate l'approssimazione della mia esposizione ma sono solo un
autodidatta di buona volontà.
Sarò veramente grato a chi vorrà aiutarmi e spero di poter
contraccambiare in qualche modo con la mia piccola esperienza.
Rinaldo


Ti consiglio di cambiare la struttura del tuo database, secondo me puoi
seguire due strade:
A) Sdoppi il campo utente della tabella A in due campi separati, in questo
modo puoi creare due diverse relazioni con le tabelle Persone e Societa' e
l'integrita' referenziale e' salva. Resta il problema della casella di
riepigolo, ma utilizzando la funzione IIF dovresti venirne a capo.
B) Unisci la Tabella Persone e la tabella Societa' dove la chiave primaria
sara' utente e i campi saranno tutti quelli di Persone e tutti quelli di
Societa' in questo modo se un utente e' una persona saranno compilati solo i
campi relativi alle persone e viceversa.
In entrambe le soluzioni eviti la query di unione ed e' facile impostare
l'integrita' referenziale tramite semplici relazioni.
Fammi sapere, saluti Antonio.

 ha scritto nel messaggio
news:987c8e18.02090...@posting.google.com...

A occhio direi che devi operare su un'unica tabella che contiene sia le
Persone che le Società, aggiungendo, al limite, un campo che classifica i
dati.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------



sbagliata la struttura dati...
persone e societò devono essere in una unica tabella con il campo
tipo(societò o persona) 
Saluti.
Emanuele.

Vi ringrazio per le osservazioni tempestive! E scusatemi invece per il
ritardo nella risposta, ma purtroppo posso dedicarmi allo sviluppo (da
dilettante allo sbaraglio!) soltanto a scappatempo, anche se lo scopo
è serio perché mi sono impegnato a realizzare un database per i
servizi dell'ufficio comunale dove lavoro.
Ma veniamo al dunque. Ho pensato di risolvere la questione in questo
modo.
Struttura tabelle:
-	Attività:  ...|data_ora|impianto|ID_Utenti|attività|...;
-	Utenti:    |ID|ID_Società|ID_Persone|
-	Società:   |ID|Denominazione|...;
-	Persone:   |ID|Cognome|Nome|...;
Note sulle tabelle:
-	i campi ID sono del tipo numerico contatore
-	i campi ID_* sono caselle di riepilogo
-	nella tabella Utenti i campi ID_Società ed ID_Persone costituiscono
altrettanti indici univoci ed inoltre le regole di convalida dei dati
inseriti nella medesima tabella costringono all'immissione di un
valore (1 soltanto!) nel campo ID_Società oppure nel campo ID_Persone
Relazioni con applicazione dell'integrità referenziale:
-	Utenti.ID -> Attività.ID_Utenti (tipo uno-a-molti)
-	Società.ID -> Utenti.ID_Società (tipo uno-a-uno)
-	Persone.ID -> Utenti.ID_Persone (tipo uno-a-uno)
In questo modo penso di:
1.	rispettare maggiormente le regole di normalizzazione, potendo poi
utilizzare più facilmente le entità Persone ed Associazioni in altri
contesti database
2.	avere a disposizione per le maschere ed i report da costruire una
casella di riepilogo Utenti, indipendente dalle diverse entità che vi
confluiscono: al momento ne ho individuate solo 2 (Società e Persone)
ma potrebbe aumentare;
3.	gestire l'immissione dei valori nella tabella utenti tramite gruppo
di opzioni sulla maschera principale e sottomaschera/e.
Può andare? Grazie e buon impegno a tutti. Rinaldo