Newsgroup: it.comp.appl.access
Titolo: Integrità referenziale e campo Non richiesto

Buongiorno a tutti!
Ritorno a chiedervi consiglio, visto che ho ancora qualche problema
con le mie tabelle. 
Il database sul quale sto lavorando, serve a me e a due amici per
gestire un'attivita' mooolto secondaria (vendiamo fumetti alle fiere).
Siamo moooolto all'inizio e, non avendo una clientela consolidata, non
facciamo acquisti su commissione, ma prima ordiniamo il materiale e
poi lo piazziamo (o almeno ci proviamo ^_^;;;;). 
Detto questo, mi ritrovo con le mie solite quattro tabelle
1 - Ordini
2 - Prodotti
3 - Clienti
4 - Fornitori
1-2-4 sono collegate con integrità referenziale e funziona tutto senza
problemi, il problema nasce invece con la tabella Clienti, perche' non
è detto che io abbia un cliente (mentre ho sempre un fornitore ed un
prodotto).
Quando vado ad applicare l'integrità referenziale, il campo Cliente mi
viene SEMPRE richiesto, mentre per me è facoltativo e lo vado ad
inserire solo se effettivamente riesco a piazzare la merce.
Se stabilisco una relazione uno a molti senza integrità referenziale
non ci sono ovviamente problemi, ma mi chiedevo se mi fossi persa
qualcosa lungo la via.
Ho provato anche con Il Db Northwind, ma li' si presuppone che ci sia
sempre un cliente e quindi l'integrità referenziale è sempre applicata
senza restrizioni.
Se lascio la relazione come "normale" uno a molti è un problema?
Grazie in anticipo per l'aiuto!!
Erika
-- 
Per rispondermi... Togli "nospam"

 ha scritto nel messaggio
news:0vr2001644m4i2c6h...@4ax.com...

Ci sono due strade:
1)Non usare l'integrità referenziale
2) Usare l'integrità referenziale, inserendo un cliente "fittizio" (puoi
chiamarlo Ancora Da Inserire o come meglio credi) che userai ogni volta che
il cliente non esiste. Ti servirà anche per ricercare gli ordini non
conclusi.
Ciao
Salvatore

Ami ha scritto:

Se la struttura del db è progettata bene non dovresti avere problemi con
le integrità referenziali, che è sempre bene tenere abilitate.
Forse c'è qualcosa che non va nella progettazione logica della struttura
del db: per esempio, perchè inserisci un ordine se non c'è un cliente?
Cosa intendi per ordine? Quando tu comperi dal fornitore, o quando vendi
al cliente? Forse dovresti usare due tabelle: una per gli acquisti dai
fornitori ed una per le vendite ai clienti.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

fornitori ed una per le vendite ai clienti.
Gia', i problemi pero' sono 2:
1) Non so se vendero' effettivamente la cosa e quindi, anche avendo
una tabella clienti...
2) Non sapro' sempre il nome del cliente, perche' se vendo ad uno
sconosciuto in fiera non gli vado a chiedere nome e cognome.
Per ovviare al punto 2 inseriro' un cliente fittizio (anche per
facilitarmi le statistiche), ma resta il fatto che il campo cliente
restera' sempre opzionale, quindi un "campo orfano" e l'integrita'
referenziale non è applicabile in questo caso.
Grazie 


 Erika
Se vuoi continuare con questo sistema, oltre al cliente "<unknown>" puoi
usare un secondo cliente fittizio che chiamerai "<non venduto>" e che puoi
impostare come valore predefinito del campo cliente, così te li segnerà
tutti in automatico "<non venduto>" finchè non andrai a cambiarli tu.
Naomr


tutti in automatico "<non venduto>" finchè non andrai a cambiarli tu.
In effetti qualcosa di questo genere l'avevo prevista, anche se non ho
creato il famoso cliente non "non venduto" (l'unknown si chiama "Tom
Cruise", cosi' non ci confondiamo di sicuro ^_______^), ma ho una
serie di controlli di questo tipo
Vendibile (non sempre quel che compriamo lo vogliamo vendere)
Se vendibile è si' allora
Abbiamo la scelta tra non fare nulla (e quindi il prodotto non è
venduto) oppure onHold e Venduto. OnHold e Venduto si annullano a
vicenda e le statistiche le abbiamo fatte con delle query basate sui
controlli.
Adesso comunque vedro' di implementare qualcosa di piu' professionale.
Grazie!!!


 Erika
Puoi usare il flag "vendibile" anche nella tabella dei movimenti che ti
avevo suggerito io, per indicare se un oggetto che hai acquistato è o non
è disponibile per la vendita.
Namor
