आपके प्रासंगिक संबंधों से संबंधित तालिकाओं के लिए इस डीडीएल को देखते हुए:
create table Boats(
bid int,
bname varchar(50),
color varchar(50)
);
create table Reserves(
sid int,
bid int,
day date
);
आप विभाजन सूत्र (3) को Oracle SQL सिंटैक्स में काफी सरलता से लिप्यंतरित कर सकते हैं, हालांकि यह वर्बोज़ है:
-- All sailors who reserved at least one boat
SELECT DISTINCT sid
FROM Reserves
MINUS
-- All sailors who reserved at least one boat, but not all of them
SELECT sid
FROM (
-- all combinations of a sailor who reserved any boat with any boat
-- available to be reserved:
SELECT Reserves.sid, Boats.bid
FROM
Reserves
CROSS JOIN
Boats
MINUS
-- all combinations of sailor and boat for actual reservations made
SELECT sid, bid
FROM Reserves
) sids
जैसा निर्दिष्ट किया गया है, वह केवल CROSS JOIN
. का उपयोग करता है और MINUS
संचालन, ताकि सीधे संबंधपरक बीजगणित सूत्र के अनुरूप हो। एक वास्तविक दुनिया डेटाबेस अनुप्रयोग में, हालांकि, एक पूरी तरह से अलग क्वेरी के माध्यम से एक ही परिणाम निश्चित रूप से प्राप्त होगा।
यह भी ध्यान दें कि SQL डेटाबेस औपचारिक संबंधपरक बीजगणित के सिद्धांत का उल्लंघन कर सकते हैं और कर सकते हैं कि संबंधों में डुप्लिकेट टुपल्स नहीं होते हैं। यही कारण है कि SELECT DISTINCT
पहली सबक्वेरी में। क्वेरी में कहीं और रणनीतिक रूप से लागू किया गया विशिष्ट चयन इसे और अधिक कुशल बना सकता है, लेकिन परिणाम को नहीं बदलेगा।