Newsgroup: it.comp.appl.access
Titolo: Progetto Basi di dati

Ciao a tutti.
Sto progettando una base di dati per una tesina ed ho qualche dubbio.
In particolare:
1- Ho un'entità Candidato. Vorrei creare delle entità figlie del tipo: Uomo,
Donna, Occupato, Discoccupato e, successivamente, specializzare l'entità
"Occupato" con Dipendente e Autonomo.
In sostanza:
                -----------Candidato--------------------
                |                 |             |
|
             Uomo        Donna    Disoccupato        Occupato
                                                                        |
|
                                                            Dipendente
Autonomo
 Mi chiedo... ha senso? :-) In questo modo il candidato puo' ad esempio
essere contemporaneamente un Uomo-Occupato-Autonomo?
2- Ho un'entità Città. Un Candidato puo' essere nato, avere la residenza e/o
il domicilio in una Città. Città ha attributi (CAP(k), Nome, Provincia,
Regione, Nazione). Le relazioni Residenza e Domicilio devono prevedere anche
gli attributi via, numero civico, telefono, fax, cellulare, email.
Ho pensato a qualcosa del tipo:
Candidato(1,1)------Residenza------(0,N)Città.
Conviene creare un'entità indipendente per Residenza e Domicilio? Magari
come specializzazione di Città? Oppure inserire direttamente gli attributi
nelle relazioni stesse?
Grazie in anticipo.
Ciao,
Alfonso.


Puoi fare così (scusa se aggiungo qualche campo o tabella ma è solo per
darti qualche elemento in +)
Tabella: Città
CIT_COD                Chiave primaria
CIT_NOME
CIT_CAP
CIT_PROV
...
La regione e la nazione potrebbero essere campi a se stanti, o chiavi che
legano la tabella con le tabelle "Regioni" e "Nazioni". Bisogna vedere se ad
una regione o ad una nazione si vogliono legare altri campi relativi alla
regione od alla  nazione.
----------------------------------------------------------------
Tabella: Abitazioni
ABI_COD                Chiave primaria
ABI_INDIRIZZO
ABI_CIT_COD        rel. molti-1 con Città
ABI_TELEFONO
------------------------------------------------------------------
Tabella: Candidati
CAN_COD            Chiave primaria
CAN_NOME
CAN_DATA_NASC
CAN_ABI_COD_RESID        rel molti-1 con abitazioni
CAN_ABI_COD_DOMIC        rel molti-1 con abitazioni
CAN_ABI_COD_DIMORA        rel molti-1 con abitazioni
...
...
--------------------------------------------------------------------------
Tabella: NumeriCellulare
Introduco questa tabella in struttura per fare qualche osservazione sulla
definizione di una chiave primaria e per prevedere + numeri di cellulare per
candidato.
Gli stessi ragionamenti sono validi per campi simili come l'indirizzo di
posta elettronica.
Def. 1 per la K1
CEL_NUM           campo alfanumerico di 20 caratteri
In questo caso la K1 risulta molto lunga rallentando le ricerche, inoltre il
controllo di univocità della K1 va a farsi friggere per la possibilità di
inserire spazi e caratteri di interpunzione all'interno del N° di cellulare.
Non essendo un campo di importanza critica tanto vale toglierlo dalla K1 e
non farci sù troppe verifiche.
Def. 2 per la K1
CEL_PROG                Progressivo automatico
E' la soluzione che comporta  la chiave + semplice, ma dal momento che non
avrà molto senso effettuare ricerche ed ordinamenti all'interno del N°
progressivo dei N° di telefono, opteremo per la terza soluzione:
Def. 3 per la K1
Chiave primaria di due campi
CEL_CAN_COD        rel molti-1 con Candidati
CEL_PROG                 progressivo dei numeri di telefono all'interno del
cod. candidato,
                                     da proporre da VBA e lasciar modificare
all'utente.
Campi restanti del record
CEL_NUM
CEL_DESCRI
----------------------------------------------------------------------------
---------------
Spero di esserti stato di aiuto e non di confusione.
Ciao.
--
Francesco G. Rizzoni

 ha scritto nel messaggio
news:bnbj6g$gvl$1...@lacerta.tiscalinet.it...

forse mi sfuggoni i termini come attributo, entità, specializzazione ecc
ma non è difficile creare una tabella con i campi nominativo, sesso,
occupazione, condizione, residenza ecc
ciao

 forse mi sfuggoni i termini come attributo, entità, specializzazione ecc
Non sono ferrato dell'argomento, ma sono termini legati alla programmazione
ad oggetti, che tra l'altro puoi in parte trovare anche in VBA e quindi
Access (ad es. propietà e metodi).
Se fai una ricerca in Internet trovi tanto di quel materiale da aver paura.


 nelle relazioni stesse?
se la residenza e' intesa come RESIDENZA allora e' unica e quindi si tratta
di ulteriori attributi del candidato, se e' intesa come domicilio allora
puo' averne piu' d'una e quindi si tratta di una "entita' figlia" per usare
i tuoi termini.
In ogni caso la citta' forma una relazione con la residenza.
La teoria si puo' spiegare come si vuole, si puo' anche fare filosofia a
quel livello. Quando si deve fare una cosa che funzioni, invece, non si puo'
e non si deve andare tanto per il sottile.
Ciao
Sib

utilizzare solo la chiave progressiva?
Fin quì i ragionamenti sulla chiave primaria.
Poi, se sono previste ricerche, query, stampe in base a certi criteri, ci
sono diverse possibilità per creare chiavi secondarie da configurarsi ad
hoc.
Campo: [RagioneSociale], oppure [DescriArticoloMag]: K2 Univoca ad
inserimento obbligatorio
Campi: [Cognome] - [Nome]: K2 "Composta" o "Cluster" Univoca ad inserimento
facoltativo. Tra le regole di validazione della tabella devi mettere che
almeno uno dei due campi sia riempito.
Campo: [CAP] (di una città): K2 Duplicabile ad ins. facoltativo.
Campo: [N°Targa] (nel caso dell'autosalone): K2 Univoca ad Ins. facoltativo.
Veniamo alla domanda:
- Se prevedi un solo N° cellulare per ogni nominativo, metti un campo
[NCellulare] nel record dell'anagrafica.
- Se prevedi + Numeri, li porti in una tabella a parte:
- Se vuoi dare un'ordine particolare ai numeri di cellulare:
K1 composta da: [CodAnagrafica] - [NRiga] (con NRiga che fa salti di 5 in 5
e può essere modificato)
- Se non ti interessa di ordinare i numeri di cellulare:
K1 composta da: [Cod.Anagrafica] - [NCellulare]
- Negli ultimi 2 casi, indifferentemente dalla chiave primaria, se vuoi fare
ricerche x N° cellulare crei comunque una K2 con il campo [NCellulare].
Attenzione il campo rimane uno solo, ma questo campo può far parte di +
chiavi primaria o secondarie a campo singolo o cluster.
-Nel caso di una [DataMovimento] puoi creare sullo stesso campo due chiavi
secondarie duplicabili: una ordinata in maniera crescente, una in maniera
descrescente, per fare ricerche nei due sensi.
Di più... nin'zò.
