Mah, sento parlare di obblighi o meno sull'integrità referenziale..
Quale parte non si capisce del fatto che integrità referenziale fa si che sia il db a verificare se un dato è correlato ad un dato di un'altra tabella?
Ho fatto anche un esempio di sostituirsi al servizio di cortesia dell'integrità referenziale.
Se non ho impostato un'integrità ma da programmatore so che un dato è strettamente relazionato ad un altro, posso lanciare una query per verificare che quel dato non sia utilizzato in altre tabelle prima di cancellarlo.
Fai una cosa intelligente. In un ordine non ti serve che il db ti avvisi se il dato è movimentato su altri record.
Se metti integrità e sul campo scrivi “ciao” devi avere la tabella correlata col record chiave “ciao”
Se non metti l'integrità puoi scrivere anche la divina commedia senza che sia una chiave nella tabella relazionata. Semplicemente non ti mostra i dati della relazione perché non esistono.
Puoi, tuttavia, usare null se hai una integrità impostata oppure caricare un record relazionato senza altri dati, nel tuo caso al posto di Pinkopallo scriverai “Cliente generico”.
Non è complicato: hai una relazione che può non essere attivata per qualsiasi ragione che vuoi. E la stessa relazione può essere legata da integrità. Infatti anche con integrità refrrenziale il sistema salta il controllo di integrità nel caso sia null (in bianco, senza che ci sia scritto nulla, vuoto o come vuoi interpretarlo).
Ergo, se decidi per l'integrita, come cliente non metti nulla.
Considerazione:
Ti chiamano 2 persone, uno vuole tre capricciose e una romana, l'altro die margherite. Ritardano, come fai a chiamare l'uno e l'altro se non hai appuntato un nome e un recapito? E qui do ragione alla metafora di by65franco.
Un consiglio: fai una simulazione.
Prendi carta e penna e prendi una comanda.
Quel pezzo di carta contiene i dati che devi necessariamente inserire, quindi puoi registrare ogni persona che ti chiama o creare un campo “contatto” che non è codice cliente ma che domani possa diventare un cliente. In quel caso invece di scrivere nominativo e telefono scrivi il codice e ti colleghi alla tabella clienti. Quindi avrai idordine, idcliente, contatto. O popoli idcliente o scrivi il contatto e il suo recapito, potresti avere la necessità di chiamarlo per dirgli che le acciughe sono finite…