En los primeros días de SQL, se eligió como la solución al problema de cómo tratar con nombres de columnas duplicados (ver nota más abajo).
Para tomar prestada una consulta de otra respuesta:
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
La columna ProductID(y posiblemente otras) es común a ambas tablas y dado que la sintaxis de la condición de unión requiere referencia a ambas, la 'calificación de punto' proporciona desambiguación.
Por supuesto, ¡la mejor solución fue nunca haber permitido duplicar nombres de columna en primer lugar! Felizmente, si usa la NATURAL JOINsintaxis más nueva , la necesidad de las variables de rango Py Odesaparece:
SELECT ProductName, ProductRetailPrice, Quantity
FROM Products NATURAL JOIN Orders
WHERE OrderID = 123456
Pero, ¿por qué la ASpalabra clave es opcional? Mi recuerdo de una discusión personal con un miembro del comité estándar de SQL (ya sea Joe Celko o Hugh Darwen) fue que su recuerdo era que, al momento de definir el estándar, el producto de un proveedor (¿Microsoft?) Requería su inclusión y el de otro proveedor. producto (¿Oracle?) requirió su omisión, por lo que el compromiso elegido fue hacerlo opcional. No tengo ninguna cita para esto, ¡o me crees o no!
En los primeros días del modelo relacional, el producto cruzado (o theta-join o equi-join) de las relaciones cuyos encabezados no son disjuntos parecía producir una relación con dos atributos del mismo nombre; La solución de Codd a este problema en su cálculo relacional fue el uso de la calificación de puntos, que luego se emuló en SQL (más tarde se dio cuenta de que la llamada unión natural era primitiva sin pérdida; es decir, la unión natural puede reemplazar todas las uniones y incluso producto cruzado).
Fuente: Sistema de negocios 12, Notas clave para diapositivas de la presentación realizada en el Taller de Implementadores de TTM, Universidad de Northumbria, 2-3 de junio de 2011 por Hugh Darwen