Què és una relació de base de dades?

Taula de continguts:

Què és una relació de base de dades?
Què és una relació de base de dades?
Anonim

S'estableix una relació entre dues taules de base de dades quan una taula utilitza una clau estrangera que fa referència a la clau primària 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ó

Una clau primària identifica de manera única cada registre de la taula. És 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 estrangera és una altra clau candidata (no la clau primària) que s'utilitza per enllaçar un registre amb dades d'una altra taula.

Per exemple, tingueu en compte aquestes dues taules que identifiquen quin professor imparteix quin curs. Aquí, la clau principal de la taula de cursos és Course_ID. La seva clau estrangera és Teacher_ID:

Course_ID Nom_del_curs Teacher_ID
Curs_001 Biologia Teacher_001
Curs_002 Matemàtiques Teacher_002
Curs_003 Anglès Teacher_003

Podeu veure que la clau estrangera a Cursos coincideix amb una clau primària a Teachers:

Teacher_ID Nom_del_professor
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Podem dir que la clau externa Teacher_ID va ajudar a establir una relació entre els cursos i les taules de professors.

Image
Image

Tipus de relacions de bases de dades

Feu servir 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 primària només es relaciona amb 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 única taula i, per tant, no utilitza una clau estrangera.

Un a molts

Una relació d'un a molts permet que un sol registre d'una taula estigui relacionat amb diversos registres d'una altra taula. Penseu en una empresa amb una base de dades que tingui taules de clients i comandes.

Un sol client pot comprar diverses comandes, però una sola comanda no es pot enllaçar amb diversos clients. Per tant, la taula de comandes contindria una clau estrangera que coincideixi amb la clau primària de la taula de clients, mentre que la taula de clients no tindria cap clau estrangera que apuntés a la taula de comandes.

Molts a molts

Aquesta és una relació complexa en la qual molts registres d'una taula poden enllaçar amb molts registres d'una altra taula. Per exemple, és probable que la nostra empresa necessiti taules de clients i comandes, i probablement també necessiti una taula de productes.

Un cop més, la relació entre la taula Clients i Comandes és d'un a molts, però tingueu en compte la relació entre la taula Comandes i Productes. Una comanda pot contenir diversos productes i un producte podria estar enllaçat a diverses comandes, ja que diversos clients poden enviar una comanda que contingui alguns dels mateixos productes. Aquest tipus de relació requereix tres taules com a mínim.

Per què són importants les relacions amb bases de dades?

L'establiment de relacions coherents entre les taules de la base de dades ajuda a garantir la integritat de les dades, contribuint a la normalització de la base de dades. Per exemple, què passaria si no enllaçéssim cap taula mitjançant una clau estrangera i, en canvi, combinem les dades de les taules de cursos i professors, com ara:

Teacher_ID Nom_del_professor Curs
Teacher_001 Carmen Biologia, matemàtiques
Teacher_002 Veronica Matemàtiques
Teacher_003 Jorge Anglès

Aquest disseny és inflexible i infringeix el primer principi de normalització de bases de dades, First Normal Form, que estableix que cada cel·la de la taula ha de contenir una única peça de dades discreta.

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

Teacher_ID Nom_del_professor Curs
Teacher_001 Carmen Biologia
Teacher_001 Carmen Matemàtiques
Teacher_002 Veronica Matemàtiques
Teacher_003 Jorge Anglès

Aquest és encara un disseny feble, que introdueix duplicacions innecessàries i el que s'anomenen anomalies d'inserció de dades, la qual cosa significa que podria contribuir a dades inconsistents. Per exemple, si un professor té diversos registres, què passa si s'han d'editar algunes dades, però la persona que realitza l'edició de dades no s'adona que existeixen diversos registres? Aleshores, la taula contindria dades diferents per a la mateixa persona, sense cap manera clara d'identificar-la o evitar-la.

Dividir aquesta taula en dues taules, Professors i Cursos, crea la relació adequada entre les dades i, per tant, ajuda a garantir la coherència i la precisió de les dades.

Recomanat: