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 કાઢે છે.
- યાદ રાખવાની યુક્તિ: એક view data ના ઓરડામાં એક બારી છે, પોતાનો ઓરડો નહીં.