El terme de base de dades "relacional" o "relació" descriu la forma en què les dades de les taules estan connectades.
Els nouvinguts al món de les bases de dades sovint tenen dificultats per veure la diferència entre una base de dades i un full de càlcul. Veuen taules de dades i reconeixen que les bases de dades us permeten organitzar i consultar dades de noves maneres, però no entenen la importància de les relacions entre les dades que donen el seu nom a la tecnologia de base de dades relacional.
Les relacions us permeten descriure de manera poderosa les connexions entre taules de base de dades diferents. Aquestes relacions es poden aprofitar per fer consultes de taules creuades poderoses, conegudes com joins.
Tipus de relacions de base de dades
Hi ha tres tipus diferents de relacions de base de dades, cadascuna d'elles segons el nombre de files de la taula que poden estar implicades en la relació. Cadascun d'aquests tres tipus de relació existeix entre dues taules.
- Les relacions entre persones es produeixen quan cada entrada de la primera taula té una, i només una, contrapartida a la segona taula. Les relacions personals són rarament utilitzades perquè sovint és més eficient simplement posar tota la informació en una sola taula. Alguns dissenyadors de bases de dades aprofiten aquesta relació creant taules que contenen un subconjunt de dades d'una altra taula.
- Les relacions entre persones són el tipus més comú de relació de la base de dades. Es produeixen quan cada registre de la Taula A correspon a un o més registres de la Taula B, però cada registre de la Taula B correspon a un sol registre de la Taula A. Per exemple, la relació entre una taula de professors i una taula d'estudiants en una escola primària la base de dades probablement sigui una relació d'un a molts, perquè cada estudiant només té un professor, però cada professor té diversos estudiants. Aquest disseny d'un a molts ajuda a eliminar les dades duplicades.
- Moltes relacions es produeixen quan cada registre de la taula A correspon a un o més registres de la taula B, i cada registre de la taula B correspon a un o més registres de la taula A. Per exemple, la relació entre un professorat i un curs La taula probablement sigui múltiple perquè cada professor pot indicar més d'un curs, i cada curs pot tenir més d'un instructor.
Relacions d'autoreferència: un cas especial
Les relacions d'autoreferència es produeixen quan només hi ha una taula implicada. Un exemple comú és una taula d'empleats que conté informació sobre el supervisor de cada empleat. Cada supervisor també és un empleat i té el seu propi supervisor. En aquest cas, hi ha una relació d'autoreferència d'un a molts, ja que cada empleat té un supervisor, però cada supervisor pot tenir més d'un empleat.
Creació de relacions amb claus externes
Podeu crear relacions entre taules especificant una clau externa . Aquesta clau indica a la base de dades relacional com es relacionen les taules. En molts casos, una columna de la Taula A conté claus principals que es fan referència a la Taula B.
Considereu de nou l'exemple de les taules de professors i estudiants. La taula Teachers conté només una ID, un nom i una columna de curs:
InstructorID | Teacher_Name | Curs |
---|---|---|
001 | John Doe | Anglès |
002 | Jane Schmoe | Matemàtiques |
La taula Student inclou una identificació, un nom i una columna de clau externa:
StudentID | Nom de l'estudiant | Teacher_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Méndez | 002 |
0203 | Monica Jones | 001 |
La columna Teacher_FK a la taula Student fa referència al valor clau principal d'un instructor a la taula Teachers.
Sovint, els dissenyadors de bases de dades utilitzaran "PK" o "FK" al nom de la columna per identificar fàcilment una clau principal o una columna de clau externa.
Tingueu en compte que aquestes dues taules il·lustren una relació d'un a molts entre els professors i els estudiants.
Relacions i integritat referencial
Una vegada que hàgiu afegit una clau externa a una taula, podeu crear una restricció de la base de dades que reforci la integritat referencial entre les dues taules. Això assegura que les relacions entre taules siguin coherents. Quan una taula té una clau externa en una altra taula, el concepte d'integritat referencial estableix que qualsevol valor de clau estrangera a la Taula B ha de fer referència a un registre existent a la Taula A.
Implementació de relacions
Depenent de la base de dades, s'implementen les relacions entre taules de diferents maneres. Microsoft Access proporciona un assistent que us permet enllaçar taules de forma senzilla i també fer complir la integritat referencial.
Si esteu escrivint SQL directament, primer creeu la taula Professors, declarant que una columna d'identificació és la clau principal:
CREA TAULA Mestres (
Instructor ID INT AUTO_INCREMENT PRIMARY KEY,
Teacher_Name VARCHAR (100),
Curs VARCHAR (100)
);
Quan creeu la taula Estudiants, declara que la columna Teacher_FK és una clau externa que fa referència a la columna InstructorID a la taula dels professors:
CREATE TABLE Estudiants (
Estudiant INT INT AUTO_INCREMENT PRIMARY KEY,
Student_Name VARCHAR (100), Teacher_FK INT,
CLAU EXTERIOR (Teacher_FK) REFERÈNCIES Professor (InstructorID))
);
Ús de relacions per unir taules
Un cop hàgiu creat una o més relacions a la base de dades, podeu aprofitar la vostra potència utilitzant consultes SQL JOIN per combinar informació de diverses taules. El tipus d'unió més comú és un SQL INNER JOIN o una simple combinació. Aquest tipus d'unió retorna tots els registres que compleixen la condició d'unió de diverses taules. Per exemple, aquesta condició JOIN retornarà Student_Name, Teacher_Name i Course, on la clau externa de la taula Students coincideix amb la clau principal de la taula Teachers:
SELECCIONAR Estudiants. Nombre d'estudiant, Professorat. Nombre de professor, Professorat. Professor
FROM Students
INNER JOIN Teachers
ON Students.Teacher_FK = Teachers.InstructorID;
Aquesta afirmació produeix una taula d'aquest tipus:
Taula retornada de la instrucció Join Statement
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica Jones John DoeEnglish