Domanda

Il problema è che ci sono rapporti che sono così enormi che dopo normalizzazione hanno come 20 chiavi primarie (le chiavi composte), che sono in realtà le chiavi esterne.

Questi devono essere dichiarati come chiavi primarie per individuare il rapporto in modo univoco.Questo è corretto?

È stato utile?

Soluzione

In primo luogo, non usare le chiavi composte mai.Sono una tecnica di male.Sono lento e sono un incubo da mantenere, quando il cambiamento.

Se avete bisogno di unicità nel corso di due o più campi, non hai bisogno di una chiave primaria, è necessario un indice univoco.Fare il PK della tabella una chiave surrogata (preferibilmente di tipo int).

Se si sta tentando di creare tabelle con un uno-a-uno di relazione, è accettabile utilizzare il PK della tabella padre come il PK della tabella Figlio e impostare un PK_FK relazione tra le tabelle;tuttavia sarebbe insolito bisogno di 20 separato one-to-one tabelle.

Altri suggerimenti

Se ti dico che sono "chiavi esterne che in realtà sono chiavi esterne, ma che devono essere dichiarati come chiavi primarie", poi in realtà si indica che ti manca la competenza e la professionalità e l'autorità per fare la progettazione di database.

Le chiavi esterne e le "primarie" tasti sono ben distinti i concetti, che sono abbastanza impossibile confondere l'uno con l'altro da parte di chiunque sia anche solo lontanamente esperto nel campo della progettazione di database.

Forse si potrebbe dare una seconda tenta di spiegare ciò che in realtà è che dire.

Sembra che il database è enorme e ha un sacco di relazioni;una cosa che si può fare per semplificare la chiave primaria situazione è quello di definire una singola colonna come chiave primaria per ogni tabella, e utilizzare un incrementato automaticamente int guid o il tipo di dati.In questo modo si può garantire l'unicità e la vostra chiavi esterne sono almeno indipendente di chiave primaria.

Ho problemi con la visualizzazione di un disegno con 20 tavoli che hanno una relazione a un tavolo.

Posso dire, senza guardare i dati di progettazione, ma sembra che il progetto è un database gerarchico, piuttosto che un database relazionale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top