Изглежда грешно четеш спецификацията. Един артикул се доставя в търговския център на UPS и след това се изпраща до местоназначение. Но нека разгледаме тройната връзка, при която изпратеният артикул изисква транспортно събитие, за да достигне до конкретна дестинация .
Това е една от многото възможни връзки за тези три субекта.
Да, така е. Но тройната връзка се изразява в термините на тези диаграмни двоични връзки. (И не обратното.)
Всяка таблица – базова променлива или резултат от заявка – съдържа редове, които участват в някаква конкретна връзка. Можем да характеризираме връзката чрез предикат --шаблон на изявление, параметризиран от атрибути.
Таблицата съдържа редовете, чиито стойности за атрибути правят вярно твърдение от нейния предикат. Предикатът на основна променлива се дава от DBA.
-- shipped item ItemNumber is received by retail center UniqueId
SELECT * FROM ReceivedFrom
-- shipped item ItemNumber takes transportation event ScheduleNumber
SELECT * FROM ShippedVia
Предикатът на израз на заявка се изгражда от неговите оператори и аргументи. Например предикатът на ЕСТЕСТВЕНОТО JOIN на две таблици е И на предикатите на таблиците.
-- shipped item ItemNumber is received by retail center UniqueId
and takes transportation event ScheduleNumber
SELECT * FROM ReceivedFrom NATURAL JOIN ShippedVia
Разбира се, вашата конкретна концепция за тройната връзка може да не е точно тази заявка/таблица. Но практична UPS база данни би имала таблици за основните взаимоотношения, по отношение на които може да се изрази всяка релевантна връзка.
(Нормализацията разделя предикатите от формата "... AND ..." на отделни предикати за "...", когато това е възможно и полезно; оригиналната таблица се връща от JOIN на компонентите.)