DBMS - Joins
Entendemos os benefícios de tomar um produto cartesiano de duas relações, o que nos dá todas as tuplas possíveis que são emparelhadas. Mas pode não ser viável para nós, em certos casos, tomar um produto cartesiano no qual encontramos relações enormes com milhares de tuplas tendo um número considerável de atributos.
Joiné uma combinação de um produto cartesiano seguido de um processo de seleção. Uma operação de junção emparelha duas tuplas de relações diferentes, se e somente se uma determinada condição de junção for satisfeita.
Descreveremos brevemente vários tipos de junção nas seções a seguir.
Theta (θ) Join
A junção Theta combina tuplas de relações diferentes, desde que satisfaçam a condição theta. A condição de junção é denotada pelo símboloθ.
Notação
R1 ⋈θ R2
R1 e R2 são relações com atributos (A1, A2, .., An) e (B1, B2, .., Bn) de forma que os atributos não têm nada em comum, ou seja, R1 ∩ R2 = Φ.
A junção Theta pode usar todos os tipos de operadores de comparação.
Aluna | ||
---|---|---|
SID | Nome | Std |
101 | Alex | 10 |
102 | Maria | 11 |
assuntos | |
---|---|
Classe | Sujeito |
10 | Matemática |
10 | Inglês |
11 | Música |
11 | Esportes |
Student_Detail -
STUDENT ⋈Student.Std = Subject.Class SUBJECT
Student_detail | ||||
---|---|---|---|---|
SID | Nome | Std | Classe | Sujeito |
101 | Alex | 10 | 10 | Matemática |
101 | Alex | 10 | 10 | Inglês |
102 | Maria | 11 | 11 | Música |
102 | Maria | 11 | 11 | Esportes |
Equijoin
Quando o Theta join usa apenas equalityoperador de comparação, é denominado equijoin. O exemplo acima corresponde a equijoin.
União Natural ( ⋈ )
A junção natural não usa nenhum operador de comparação. Ele não concatena a maneira como um produto cartesiano o faz. Podemos realizar uma junção natural apenas se houver pelo menos um atributo comum entre duas relações. Além disso, os atributos devem ter o mesmo nome e domínio.
A junção natural atua sobre os atributos correspondentes em que os valores dos atributos em ambas as relações são iguais.
Cursos | ||
---|---|---|
CID | Curso | Departamento |
CS01 | Base de dados | CS |
ME01 | Mecânica | MIM |
EE01 | Eletrônicos | EE |
HoD | |
---|---|
Departamento | Cabeça |
CS | Alex |
MIM | Maia |
EE | Mira |
Cursos ⋈ HoD | |||
---|---|---|---|
Departamento | CID | Curso | Cabeça |
CS | CS01 | Base de dados | Alex |
MIM | ME01 | Mecânica | Maia |
EE | EE01 | Eletrônicos | Mira |
Junções Externas
Theta Join, Equijoin e Natural Join são chamados de junções internas. Uma junção interna inclui apenas as tuplas com atributos correspondentes e o restante é descartado na relação resultante. Portanto, precisamos usar junções externas para incluir todas as tuplas das relações de participação na relação resultante. Existem três tipos de junções externas - junção externa esquerda, junção externa direita e junção externa completa.
União Externa Esquerda (R S)
Todas as tuplas da relação Esquerda, R, são incluídas na relação resultante. Se houver tuplas em R sem nenhuma tupla correspondente na relação direita S, então os S-atributos da relação resultante são tornados NULL.
Esquerda | |
---|---|
UMA | B |
100 | Base de dados |
101 | Mecânica |
102 | Eletrônicos |
Direito | |
---|---|
UMA | B |
100 | Alex |
102 | Maia |
104 | Mira |
Cursos HoD | |||
---|---|---|---|
UMA | B | C | D |
100 | Base de dados | 100 | Alex |
101 | Mecânica | --- | --- |
102 | Eletrônicos | 102 | Maia |
União Externa Direita: (R S)
Todas as tuplas da relação Right, S, são incluídas na relação resultante. Se houver tuplas em S sem nenhuma tupla correspondente em R, então os atributos R da relação resultante são tornados NULL.
Cursos HoD | |||
---|---|---|---|
UMA | B | C | D |
100 | Base de dados | 100 | Alex |
102 | Eletrônicos | 102 | Maia |
--- | --- | 104 | Mira |
União externa completa: (R S)
Todas as tuplas de ambas as relações participantes são incluídas na relação resultante. Se não houver tuplas correspondentes para ambas as relações, seus respectivos atributos não correspondentes serão tornados NULL.
Cursos HoD | |||
---|---|---|---|
UMA | B | C | D |
100 | Base de dados | 100 | Alex |
101 | Mecânica | --- | --- |
102 | Eletrônicos | 102 | Maia |
--- | --- | 104 | Mira |