CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

di il
8 risposte

CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

Salve avrei bisogno di una dritta riguardo alla mia intenzione di modificare la chiave primaria di una tabella. Su questa tabella (di cui invio foto in allegato, è quella sulla dx) esistono due campi che stanno in rapporto 1:1, si tratta del campo ID e di quello Denominazione. Precedentemente è stato scelto di applicare la chiave primaria al campo Denominazione, a me è venuto in mente però che, così facendo, qualora si presentasse la necessità di inserire più di una volta lo stesso nome di azienda nel campo Denominazione (casi di omonimia), Access non me lo consentirebbe. Allora mi sono detto: dal momento che ho il campo ID, perché non sfruttarlo per assegnargli la chiave primaria? Mi chiedo se questo è corretto.

Inoltre dal momento che vorrei imporre per sicurezza un vincolo UNIQUE al campo Denominazione (perché i casi di omonimia sono rari) mi stavo chiedendo se, esiste il modo di consentire eccezioni ai vincoli sulle colonne, ovvero un modo per violare il vincolo UNIQUE, qualora necessario.

Grazie
Allegati:
14310_77af1978ae82044fd55430085874fe65.png
14310_77af1978ae82044fd55430085874fe65.png

8 Risposte

  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    iaccess14 ha scritto:


    Allora mi sono detto: dal momento che ho il campo ID, perché non sfruttarlo per assegnargli la chiave primaria? Mi chiedo se questo è corretto.
    È la scelta migliore.

    iaccess14 ha scritto:


    Inoltre dal momento che vorrei imporre per sicurezza un vincolo UNIQUE al campo Denominazione (perché i casi di omonimia sono rari) mi stavo chiedendo se, esiste il modo di consentire eccezioni ai vincoli sulle colonne, ovvero un modo per violare il vincolo UNIQUE, qualora necessario.
    Credo di no. Io farei leva sulle seguenti considerazioni.
    Su un campo è possibile impostare la proprietà Indicizzato: Sì (Duplicati non ammessi) per impedire la duplicazione dei dati. Tale impostazione diventa ovviamente obbligata per i campi chiave primaria. Succede che se tu digiti 2 volte "Barilla", la 2a volta Access ti invia un messaggio di errore dicendo in sostanza che "stai violando l'univocità del campo"...allora potresti aggiustare la digitazione aggiungendo qualcosaltro magari scritto tra parentesi per differenziare.
    Un altro strumento per sopperire a ciò è l'"Indice Multicampo Univoco" che sortisce lo stesso effetto della proprietà Indicizzato: Sì (Duplicati non ammessi), ma spalmato su più campi. Prova a leggere la guida in linea sull'argomento.
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    Ottimo, grazie mille.
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    Relazione 1 a 1 ?
    ogni azienda ha 1 solo referente?
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    No, la relazione 1:1 è tra il campo ID e il campo Denominazione entrambi nella tabella Anagrafica Aziende. In sostanza ogni volta che si introduce una nuova denominazione il contatore ID viene incrementato automaticamente dal DBMS di un'unità.
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    Ok ho capito.

    Secondo me, se ogni azienda può avere più referenti, dovresti:
    • 1) Eliminare La relazione 1:1 tra Denominazione e Nome Azienda
      2) impostare una relazione 1 a molti tra ID della tabella Anagrafica aziendale e IDAzienda (tipo numerico) da mettere nella tabella Referenti Aziendali in sostituzione del campo Nome Azienda (che potrai ricavare in maniera implicità tramite una querydove ti servirà)
      3) Nella relazione di cui al punto 2 potresti applicare l'integrità referenziale (solo le prime 2 spunte non la terza)
    Motivazioni
    Il punto 1 è conseguenza del punto 2.
    il punto 2 ti permetterà una migliore indicizzazione e inoltre rispetta meglio i canoni di normalizzazione da applicare ai db... hai una chiave interna (ID), con tutti i campi ad essa collegata, dove ogni record è collegato ad una chiave esterna (IDAzienda) che sarà presente, e dunque riconducibile, in ogni referente...
    Il punto 3 ti permetterebbe di aggiornare a cascata tutti i record laddove fosse necessario...

    INTEGRAZIONE
    Quanto sopra (per rimanere coerenti con l'oggetto di questa discussione) allo scopo poi di passare la chiave primaria al campo ID... Denominazione puoi anche lasciarla indicizzata se non vuoi che si ripeta...
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    Ok, spiegazione chiarissima, grazie 1000.

    p.s. stavo pensando che l'indicizzazione ha un costo, in quanto immagino che il sistema crei un vettore indice, o qualcosa di analogo per indicizzare un campo. Sapete qualcosa in merito? Sarebbe interessante.

    Grazie.
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    Non mi risulta. Se è vero, è davvero irrisorio. L'indicizzazione è una impostazione molto utile da applicare.
  • Re: CRITERIO DI SCELTA CHIAVE PRIMARIA - CASO PARTICOLARE

    Ok, grazie per il chiarimento, mi chiedevo infatti se la cosa potesse avere o meno un impatto significativo.
Devi accedere o registrarti per scrivere nel forum
8 risposte