Theory
उन्हें prices दिखाइए, profit नहीं
Meera की sales table में एक cost price column है, उसका गुप्त ख़रीद मूल्य। उसके counter staff को ग्राहकों को bill करने के लिए selling prices देखने चाहिए, पर cost कभी नहीं देखना चाहिए।
वह उन्हें पूरी table query नहीं करने दे सकती। पर चुने हुए columns को एक नई table में copy करने का मतलब होगा दो copies बनाए रखना जो अलग हो जाती हैं।
सुरुचिपूर्ण जवाब एक view है: एक सहेजी हुई query जो एक table की तरह काम करती है पर कोई data store नहीं करती, सिर्फ वे columns दिखाती है जो वह चुनती है, हमेशा live। यह आख़िरी topic पूरे subject को एक साथ बाँधता है: view एक table के कपड़े पहने एक query है।
Theory
एक खिड़की, एक कमरा नहीं
एक table एक कमरा है फ़र्नीचर से भरा, असल store किया data। एक view उस कमरे में एक खिड़की है, बस उसका एक हिस्सा दिखाने को framed। खिड़की का अपना कोई फ़र्नीचर नहीं; यह बस असली कमरे में जो है वह दिखाती है, आपके तरीक़े से framed। फ़र्नीचर हिलाइए (data बदलिए) और खिड़की बदलाव तुरंत दिखाती है। एक भी कुर्सी दोहराए बिना frame को चौड़ा या सँकरा कीजिए।
Practical
A view that hides the cost price
-- A saved query: item + selling price only, cost hidden
CREATE VIEW public_prices AS
SELECT item, price
FROM sales
WHERE category <> 'Confidential';
-- Staff query the view exactly like a table
SELECT * FROM public_prices;
-- They see item and price, never the cost column
-- Remove the view (the sales table is untouched)
DROP VIEW public_prices;This example runs in Gri-Learn on the web, where you can edit it and see the output.
Theory
View बनाम table: मुख्य फ़र्क़
exam का मूल सवाल: एक view एक table से कैसे अलग है?
- एक table भौतिक रूप से disk पर data store करती है।
- एक view सिर्फ SELECT query store करता है, अपना कोई data नहीं। हर बार जब आप इसे इस्तेमाल करते हैं, यह base tables के ख़िलाफ़ query live चलाता है।
तो एक view हमेशा मौजूदा होता है (यह नवीनतम base-table data अपने-आप दिखाता है), लगभग कोई storage नहीं लेता, और एक जटिल query को आसान कर सकता है (एक बार सहेजिए, नाम से दोबारा इस्तेमाल कीजिए) या security दे सकता है (सिर्फ सुरक्षित columns दिखाइए)। सादे views updatable होते हैं; joins या aggregates वाले views आम तौर पर read-only।
Quiz
Meera sales TABLE में एक price update करती है। क्या उसका public_prices VIEW नया price दिखाता है, और क्यों?
- हाँ, एक view अपना कोई data store नहीं करता; यह हर बार base table के ख़िलाफ़ अपनी query live चलाता है
- नहीं, view data की अपनी जमी हुई copy रखता है
- सिर्फ अगर वह view हाथ से फिर बनाए
- नहीं, views prices नहीं दिखा सकते
Show the answer
हाँ, एक view अपना कोई data store नहीं करता; यह हर बार base table के ख़िलाफ़ अपनी query live चलाता है
एक view कोई data नहीं रखता, सिर्फ store की हुई SELECT। हर बार जब यह इस्तेमाल होता है यह live base table के ख़िलाफ़ फिर से चलता है, तो sales में कोई भी बदलाव public_prices में तुरंत दिखता है, कोई rebuild ज़रूरी नहीं। यह 'हमेशा मौजूदा, कोई data store नहीं' गुण एक table से परिभाषित करने वाला फ़र्क़ है, और सबसे ज़्यादा पूछा जाने वाला view exam बिंदु।
Think first
बस एक दूसरी table क्यों न बनाएँ?
Meera item और price को एक view के बजाय एक नई TABLE में copy कर सकती थी। उसके cost-छिपाने के लक्ष्य के लिए एक view बेहतर होने के दो कारण दीजिए।
Show the answer
एक: यह कभी बासी नहीं होता। एक copy की हुई table prices को copy के वक़्त जमा देती और पुरानी होती जाती; एक view हमेशा live है। दो: कोई duplicate storage या दोहरा maintenance नहीं। एक view सिर्फ query store करता है (लगभग शून्य जगह), जबकि एक दूसरी table data दोहराती है जिसे उसे sync में रखना पड़ता। साथ ही security: view सिर्फ सुरक्षित columns दिखाता है जबकि असली cost base table में सुरक्षित रहता है। Live, हल्का, और सुरक्षित, यही वजह है कि views मौजूद हैं।
Watch out
Marks कहाँ कटते हैं
यह कहना कि एक view data store करता है, यह सिर्फ query store करता है (एक table data store करती है; एक view एक SELECT store करता है)। यह सोचना कि एक view बासी हो सकता है, यह हमेशा live है। यह भूलना कि DROP VIEW सिर्फ view हटाता है, base table का data अछूता रहता है। और यह कि जटिल views (joins, aggregates, GROUP BY) आम तौर पर read-only होते हैं, सिर्फ सादे views updatable हैं। view-बनाम-table फ़र्क़ पक्के marks है अगर सटीक कहा जाए।
Formula
Subject, पूरा
पूरी यात्रा देखिए: Meera की अतिभारित spreadsheet (Unit 1-2) ने एक database की ओर क़दम मजबूर किया (Unit 3), जिसे वह अब SQL में धाराप्रवाह query करती है (Unit 4), views समेत। आप एक table बना सकते हैं, उसे constrain कर सकते हैं, भर सकते हैं, query कर सकते हैं, summarise कर सकते हैं, और views से सुरक्षित कर सकते हैं। यह असली, रोज़गार-योग्य database कौशल है। Databases हर उस app को चलाते हैं जो आप कभी बनाएँगे, उस एक समेत जिस पर आप यह पढ़ रहे हैं। आपने BCA105 पूरा कर लिया।
Summary
Key takeaways
- एक view एक store की हुई SELECT query से परिभाषित एक virtual table है; यह अपना कोई data नहीं रखता।
- यह हर बार base tables के ख़िलाफ़ live चलता है, तो यह हमेशा मौजूदा data दिखाता है।
- काम: जटिल queries आसान करना (सहेजना और दोबारा इस्तेमाल), और security (सिर्फ चुने columns/rows दिखाना)।
- Table भौतिक रूप से data store करती है; view सिर्फ query store करता है (मुख्य फ़र्क़)।
- सादे views updatable हैं; joins/aggregates वाले views आम तौर पर read-only। DROP VIEW सिर्फ view हटाता है।
- याद रखने का hook: एक view data के कमरे में एक खिड़की है, अपना कमरा नहीं।