2014-08-28 45 views
5

Il mio libro di scuola Database Systems definisce cardinalità come segue:Qual è la definizione di cardinalità in SQL

La cardinalità di una relazione è il numero di tuple in esso contenuti. Al contrario, il numero di tuple è chiamato cardinalità della relazione e questo cambia man mano che le tuple vengono aggiunte o eliminate. Cardinalità elevata: molte tuple, cardinalità bassa: poche tuple.

Mentre l'articolo Wikipedia sulla Cardinality (SQL statements), definisce come segue:

cardinalità riferisce all'unicità di valori di dati contenuti in una particolare colonna (attributo) di una tabella di database. Più bassa è la cardinalità, più elementi duplicati in una colonna. Esistono 3 tipi di cardinalità: cardinalità elevata, cardinalità normale e cardinalità bassa.

Possono entrambi avere ragione, ma non riesco a collegare le due definizioni come definizioni correlate. Una riformulazione sarebbe appagata!

+1

Cardinality è il numero di valori univoci/numero di record. Penso che il libro semplifica il problema. La cardinalità massima è 1. – Mihai

risposta

7

Stanno parlando la stessa cosa e ha a che fare con le tuple (relational algebra) o le righe (termine comune).

Quando si dice ad alta cardinalità sono possibili valori di attributo particolare (o campo) che sono unici e quindi il numero di righe o tuple sono superiori:

Esempio:

StudentID Lastname Firstname Gender 
101   Smith John  M 
102   Jones James  M 
103   Mayo  Ann  F 
104   Jones George  M 
105   Smith Suse  F 

Come fino a StudentID il cardinality è high perché è unico. In questo ha cinque (5) tuple/righe.

D'altra parte Cognome ha cardinalità normale, in particolare ci sono solo tre (3) tuple/righe univoche. Quindi ha normal cardinality.

E infine Il genere ha solo due possibili tuple uniche quindi Low Cardinality.

Probabilmente confondere Cardinality qui con Degree di una relazione che ha qualcosa a che fare del numero di attributes/fields in una relazione (o un tavolo).

D'altra parte il manuale per Database quando si parla di Cardinality normalmente ha a che fare con un'entità in relazione a un'altra entità, vale a dire il numero di possibili occorrenze di relazioni per un'entità che partecipa a un determinato tipo di relazione. Così per esempio per un binary relationshipcardinality potrebbe essere one-to-one, one-to-many o many-to-many.

4

Entrambe le definizioni stanno cercando di dire che la cardinalità è il "numero di righe". La differenza è se il confronto è "nella tabella" o "in una particolare colonna".

La versione nel tuo libro di testo del database si concentra sull'algebra relazionale e la struttura delle tabelle ("relazioni" in quel gergo).

La voce di Wikipedia è più pratica. Comprende la definizione del libro di testo, assumendo che la tabella abbia una chiave primaria (la cardinalità della chiave primaria è la stessa della tabella). Tuttavia, può essere applicato anche a, ad esempio, una colonna di bandiera. Se il flag assume solo due valori (0 rispetto a 1), allora possiamo dire che la cardinalità della colonna è 2.

Questo è importante per l'ottimizzazione delle query. La cardinalità è una componente della scelta dei metodi migliori per unire, aggregare e selezionare i dati. In pratica, la maggior parte dei database utilizza più informazioni rispetto alla cardinalità, le cosiddette "statistiche" sulle colonne e i loro valori per l'ottimizzazione.

0

Se abbiamo le tabelle A e B, pensiamo alla cardinalità come al numero di righe della tabella B che sarebbero correlate a una riga della tabella A. Se le tabelle sono PERSON e VEHICLE e la relazione è RODE_ON, allora la cardinalità è alto perché la maggior parte delle persone ha viaggiato su molti veicoli diversi in passato, e la maggior parte dei veicoli ha guidato molte persone. Se la relazione è PROPRIA, allora la cardinalità è bassa - la maggior parte delle persone possiede un veicolo, qualcuno non ne possiede, e un veicolo di solito ha uno o due proprietari, non di più.

Si noti che la cardinalità da un lato di una relazione non è uguale alla cardinalità dall'altro lato. Se i tavoli sono PERSON e FINGER, e la relazione è APPARTENENZA A, allora una persona ha molte dita, ma ogni dito appartiene a una sola persona.

Problemi correlati