Nos primeiros dias do SQL, ele foi escolhido como a solução para o problema de como lidar com nomes de colunas duplicados (veja a nota abaixo).
Para pedir emprestada uma consulta de outra resposta:
SELECT P.ProductName,
P.ProductRetailPrice,
O.Quantity
FROM Products AS P
INNER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE O.OrderID = 123456
A coluna ProductID
(e possivelmente outras) é comum a ambas as tabelas e, como a sintaxe da condição de junção requer referência a ambas, a 'qualificação de pontos' fornece desambiguação.
Obviamente, a melhor solução era nunca ter permitido nomes de colunas duplicados! Felizmente, se você usar a NATURAL JOIN
sintaxe mais recente , a necessidade das variáveis range P
e O
desaparecerá:
SELECT ProductName, ProductRetailPrice, Quantity
FROM Products NATURAL JOIN Orders
WHERE OrderID = 123456
Mas por que a AS
palavra - chave é opcional? Minha lembrança de uma discussão pessoal com um membro do comitê padrão do SQL (Joe Celko ou Hugh Darwen) foi que a lembrança deles era que, no momento da definição do padrão, o produto de um fornecedor (da Microsoft?) Exigia sua inclusão e o de outro fornecedor. produto (da Oracle?) exigia sua omissão; portanto, o compromisso escolhido foi torná-lo opcional. Não tenho citação para isso, você acredita em mim ou não!
Nos primeiros dias do modelo relacional, o produto cruzado (ou junção teta ou junção equi) de relações cujos títulos não são disjuntos parecia produzir uma relação com dois atributos com o mesmo nome; A solução de Codd para esse problema em seu cálculo relacional foi o uso da qualificação de pontos, que mais tarde foi emulada no SQL (percebeu-se mais tarde que a chamada junção natural era primitiva sem perda; isto é, a junção natural pode substituir todas as junções teta e mesmo produto cruzado.)
Fonte: Business System 12, Notes com os slides da apresentação do TTM Implementers 'Workshop, University of Northumbria, 2-3 de junho de 2011 por Hugh Darwen