Relacions un a molts en una base de dades

Taula de continguts:

Relacions un a molts en una base de dades
Relacions un a molts en una base de dades
Anonim

Una relació d'un a molts en una base de dades es produeix quan cada registre de la taula A pot tenir molts registres enllaçats a la taula B, però cada registre de la taula B pot tenir només un registre corresponent a la taula A.

Una relació d'un a molts en una base de dades és el disseny de base de dades relacional més comú i és el centre d'un bon disseny.

Les bases de dades també poden implementar una relació un a un i una relació de molts a molts.

Image
Image

Exemple d'una relació d'un a molts

Considereu la relació entre un professor i els cursos que imparteix. Un professor pot impartir diverses classes, però el curs no tindria la mateixa relació amb el professor.

Per tant, per a cada registre d'una taula de professors, hi podria haver molts registres a la taula de cursos. Aquest exemple il·lustra una relació d'un a molts: un professor a diversos cursos.

Per què és important establir una relació un a molts

Per representar una relació d'un a molts, necessiteu almenys dues taules. Vegem per què.

Adhesió al primer disseny de forma normal

Potser hem creat una taula en la qual volem anotar el nom i els cursos impartits. Podríem dissenyar una taula de professors i cursos com aquesta:

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

I si la Carmen imparteix dos o més cursos? Tenim dues opcions amb aquest disseny. El podríem afegir al registre existent de Carmen, com aquest:

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

No obstant això, el disseny anterior és inflexible i podria provocar problemes més tard quan inseriu, editeu o suprimiu dades. Dificulta la cerca de dades.

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

La segona regla de la forma normal

Una altra alternativa de disseny podria ser afegir un segon registre per a Carmen:

Professor_ID Professor_Nom Curs
Teacher_001 Carmen Biologia
Teacher_001 Carmen Matemàtiques
Teacher_002 Veronica Matemàtiques
Teacher_003 Jorge Anglès

Aquest enfocament s'adhereix a 1NF, però encara és un disseny de base de dades deficient perquè introdueix redundància i podria inflar una base de dades gran innecessàriament. Més important encara, les dades podrien tornar-se incoherents.

Per exemple, què passaria si el nom de Carmen canviés? És possible que algú que treballi amb les dades actualitzi el seu nom en un registre i no l'actualitzi al segon registre.

Aquest disseny infringeix l'estàndard de la segona forma normal (2NF), que s'adhereix a 1NF i també ha d'evitar la redundància de diversos registres. La regla 2NF aconsegueix això separant subconjunts de dades en diverses taules i creant una relació entre elles.

Com dissenyar una base de dades amb relacions d'un a molts

Per implementar una relació d'un a molts a la taula de professors i cursos, divideix les taules en dues i enllaça-les amb una clau estrangera.

Aquí hem eliminat la columna Curs de la taula Professors:

Professor_ID Professor_Nom
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

I aquí teniu la taula de cursos. Tingueu en compte que la seva clau estrangera, Teacher_ID, enllaça un curs amb un professor a la taula de professors:

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

Hem desenvolupat una relació entre el professorat i la taula de cursos mitjançant una clau estrangera. Aquesta disposició ens diu que la Carmen ensenya biologia i matemàtiques i que Jorge ensenya anglès.

Podem veure com aquest disseny evita possibles acomiadaments, permet als professors individuals impartir diversos cursos i implementa una relació d'un a molts.

Recomanat: