मुझे यकीन नहीं है कि मैं प्रश्न को सही ढंग से समझ रहा हूं, लेकिन ऐसा लगता है कि व्यक्ति तालिका से डेटा चुनने वाले व्यक्ति को प्रतिबंधित करने की क्षमता मांग रहा है ताकि वे गुप्त कॉलम में मान नहीं देख सकें, लेकिन उन्हें अनुमति दी जानी चाहिए क्वेरी के इंटीरियर में सीक्रेट कॉलम का उपयोग करने के लिए (WHERE क्लॉज आदि में)।
CREATE TABLE Person
(
Id ...,
Secret ...,
...
);
REVOKE ALL ON Person FROM PUBLIC;
GRANT SELECT(id) ON Person TO SomeOne;
इसलिए, अगर मेरी व्याख्या सही है, जब कोई डेटा का चयन करता है:
SELECT Id FROM Person; -- Works (as required)
SELECT Secret FROM Person; -- Fails (as required)
SELECT Id
FROM Person
WHERE Secret = 1; -- Fails (but we want it to work)
एसक्यूएल इसकी अनुमति नहीं देता है, और अच्छे कारण के लिए। मूल रूप से, यदि आप सीक्रेट पर क्वेरी परिणामों को कंडीशन कर सकते हैं, तो आप बार-बार किए गए प्रश्नों के साथ सीक्रेट का मान निर्धारित कर सकते हैं, इसलिए जिसे गुप्त माना जाता है वह गुप्त नहीं रहता है। जानकारी लीक करना बहुत आसान है।
उस क्वेरी को देखते हुए जो विफल हो जाती है लेकिन "नहीं होनी चाहिए"...इसके परिणामों से, आप जानते हैं कि लौटाई गई प्रत्येक आईडी में 1 का गुप्त मान होता है, इसलिए उन आईडी मानों के लिए, रहस्य अब गुप्त नहीं है।
यदि आप सांख्यिकीय डेटाबेस में देखते हैं, जहां आपको केवल समग्र डेटा पर खोज करने की अनुमति है, तो आप पाते हैं कि अद्वितीय ट्रैकर नामक चीजें हैं जो मूल रूप से आपको एक व्यक्ति की विशेषताओं की पहचान करने की अनुमति देती हैं, भले ही आपको केवल समग्र देखने की अनुमति हो ( परिणाम सेट में SUM, COUNT, ...) मान। यह एक अधिक जटिल परिदृश्य है जिसका आप सामना कर रहे हैं (लेकिन एक आकर्षक)। सी जे डेट्स (प्रिंट आउट ऑफ प्रिंट) "Introduction to Database Systems, Vol II" ए> सांख्यिकीय डेटाबेस और अद्वितीय ट्रैकर्स की चर्चा है। ('सांख्यिकीय डेटाबेस अद्वितीय ट्रैकर' पर Google खोज से उपयोगी दिखने वाली जानकारी का पता चलता है जो अधिक सुलभ है।)
इसलिए, अगर मुझे समझ में आ गया है कि क्या वांछित है, तो मेरा मानना है कि इच्छा भटक गई है - और SQL मानक आपको जो चाहिए उसे अनुमति नहीं देता है।
क्या कोई उपाय हैं?
यदि क्वेरी को एक दृश्य में बनाया जा सकता है, तो दृश्य बनाने वाला व्यक्ति अंतर्निहित विवरण डेटा तक पहुंच सकता है और दृश्य तक पहुंच प्रदान कर सकता है, लेकिन दृश्य का उपयोग करने वाले लोग कच्ची क्वेरी निष्पादित नहीं कर सकते हैं; यह आपको वह सुरक्षा प्रदान कर सकता है जो आप चाहते हैं। इसी तरह की टिप्पणियां संग्रहीत कार्यविधियों पर लागू होती हैं और क्वेरी को बेहतर ढंग से परिचालित करने की अनुमति देती हैं।