Relacions de base de dades

Les relacions de base de dades són la columna vertebral de totes les bases de dades relacionals

S'estableix una relació entre dues taules de base de dades quan una taula té una clau externa que fa referència a la clau principal d'una altra taula. Aquest és el concepte bàsic darrere del terme base de dades relacional.

Com funciona una clau estrangera per establir una relació

Anem a revisar els conceptes bàsics de les claus primàries i estrangeres. Una clau principal identifica de manera única cada registre de la taula. Es tracta d'un tipus de clau candidata que sol ser la primera columna d'una taula i que la base de dades pot generar automàticament per garantir que sigui única.

Una clau externa és una altra clau candidata (no la clau principal) que s'utilitza per vincular un registre de dades en una altra taula.

Per exemple, considereu aquestes dues taules que identifiquen el professor que imparteix el curs.

Aquí, la clau principal de la taula de cursos és Course_ID. La seva clau externa és Teacher_ID:

Cursos
Curs_ID Nom del curs Teacher_ID
Curs_001 Biologia Professor_001
Curs_002 Matemàtiques Professor_001
Curs_003 Anglès Professor_003

Podeu veure que la clau estrangera a Cursos coincideix amb una clau principal a Professors:

Professors
Teacher_ID Teacher_Name
Professor_001 Carmen
Professor_002 Veronica
Professor_003 Jorge

Podem dir que la clau estrangera Teacher_ID ha ajudat a establir una relació entre les taules de Cursos i els professors.

Tipus de relacions de base de dades

Usant claus externes o altres claus candidates, podeu implementar tres tipus de relacions entre taules:

Un a un : aquest tipus de relació només permet un registre a cada costat de la relació.

La clau principal es refereix a només un registre - o cap - en una altra taula. Per exemple, en un matrimoni, cada cònjuge només té un altre cònjuge. Aquest tipus de relació es pot implementar en una sola taula i, per tant, no s'utilitza una clau externa.

Un a molts : una relació d'un a molts permet que un sol registre d'una taula es relacioni amb diversos registres d'una altra taula.

Considereu un negoci amb una base de dades que tingui taules Clients i comandes.

Un sol client pot comprar diverses comandes, però un sol ordre no es pot enllaçar amb diversos clients. Per tant, la taula Ordres contindria una clau externa que coincideix amb la clau principal de la taula Customers, mentre que la taula Customers no tindria una clau externa que assenyalés la taula Ordres.

Molts-a-molts : Aquesta és una relació complexa en la qual molts registres d'una taula poden enllaçar a molts registres d'una altra taula. Per exemple, el nostre negoci probablement no només necessita taules de clients i comandes, sinó que també necessita una taula de productes.

Una vegada més, la relació entre la taula de clients i comandes és d'un a molts, però considera la relació entre la taula de comandes i productes. Una comanda pot contenir diversos productes i un producte es pot vincular a diverses comandes: diversos clients poden enviar un encàrrec que contingui alguns dels mateixos productes. Aquest tipus de relació requereix com a mínim tres taules.

Què són les relacions de base de dades importants?

Establir relacions coherents entre taules de base de dades ajuda a garantir la integritat de les dades, contribuint a la normalització de la base de dades. Per exemple, què passa si no vam enllaçar cap taula a través d'una clau externa i, en canvi, només hem combinat les dades a les taules de Cursos i Professors, així:

Professors i Cursos
Teacher_ID Teacher_Name Curs
Professor_001 Carmen Biologia, matemàtiques
Professor_002 Veronica Matemàtiques
Professor_003 Jorge Anglès

Aquest disseny és inflexible i incompleix el primer principi de normalització de la base de dades, First Normal Form (1NF), que estableix que cada cel · la de la taula ha de contenir una única i discreta informació.

O potser vam decidir simplement afegir un segon registre per a Carmen, per fer complir 1NF:

Professors i Cursos
Teacher_ID Teacher_Name Curs
Professor_001 Carmen Biologia
Professor_001 Carmen Matemàtiques
Professor_002 Veronica Matemàtiques
Professor_003 Jorge Anglès

Aquest encara és un disseny feble, introdueix una duplicació innecessària i el que es coneix com a anomalies d'inserció de dades , el que significa que podria contribuir a dades incongruents.

Per exemple, si un professor té registres múltiples, què passa si es necessiten editar algunes dades, però la persona que realitza l'edició de dades no s'adona que hi ha diversos registres? La taula contindria dades diferents per a la mateixa persona, sense cap forma clara d'identificar-la o evitar-la.

Trencant aquesta taula en dues taules, els professors i els cursos (tal com es mostra a dalt), crea la relació adequada entre les dades i, per tant, ajuda a garantir la coherència i la precisió de les dades.