પ્રશ્ન 1(અ) [3 માર્ક્સ]#
વ્યાખ્યા આપો: DBMS, ઈન્સટન્સ, મેટાડેટા
ઉત્તર:
- DBMS (ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમ): એક સોફ્ટવેર જે વપરાશકર્તાઓને ડેટાબેઝ બનાવવા, જાળવવા, અને ઍક્સેસ કરવા સક્ષમ બનાવે છે. જે ડેટા ઑર્ગેનાઈઝેશન, સ્ટોરેજ, પુનઃપ્રાપ્તિ, સુરક્ષા, અને અખંડતાનું નિયંત્રણ કરે છે.
- ઈન્સટન્સ: કોઈ ચોક્કસ સમયે ડેટાબેઝમાં સંગ્રહિત વાસ્તવિક ડેટા. તે ડેટાબેઝની વર્તમાન સ્થિતિ અથવા સ્નેપશોટ છે.
- મેટાડેટા: ડેટા વિશેનો ડેટા, જે ડેટાબેઝ સ્ટ્રક્ચરનું વર્ણન કરે છે, જેમાં ટેબલ્સ, ફીલ્ડ્સ, સંબંધો, કન્સ્ટ્રેઈન્ટ્સ, અને ઇન્ડેક્સનો સમાવેશ થાય છે.
મ્નેમોનિક: “DIM દૃશ્ય” - ડેટાબેઝ સિસ્ટમ, ઈન્સટન્સ સ્નેપશોટ, મેટાડેટા વર્ણન
પ્રશ્ન 1(બ) [4 માર્ક્સ]#
વ્યાખ્યા આપો અને ઉદાહરણ સાથે સમજાવો: 1.Entity 2. Attribute
ઉત્તર:
કોષ્ટક: Entity અને Attribute વચ્ચેનો તફાવત
કોન્સેપ્ટ | વ્યાખ્યા | ઉદાહરણ |
---|---|---|
એન્ટિટી | એક વાસ્તવિક દુનિયાની વસ્તુ અથવા ખ્યાલ જેને સ્પષ્ટપણે ઓળખી શકાય છે | વિદ્યાર્થી (જોન), પુસ્તક (હેરી પોટર), કાર (ટોયોટા કેમરી) |
એટ્રિબ્યુટ | એક લક્ષણ અથવા ગુણધર્મ જે એન્ટિટીનું વર્ણન કરે છે | વિદ્યાર્થી: રોલ_નં, નામ, સરનામું પુસ્તક: ISBN, શીર્ષક, લેખક |
આકૃતિ:
erDiagram STUDENT { int student_id string name string address } BOOK { string ISBN string title string author }
મ્નેમોનિક: “EA-PC” - એન્ટિટીઝ આર ફિઝિકલ/કોન્સેપ્ચ્યુઅલ, એટ્રિબ્યુટ્સ પ્રોવાઇડ કેરેક્ટરિસ્ટિક્સ
પ્રશ્ન 1(ક) [7 માર્ક્સ]#
DBA નું પૂર્ણ નામ લખો. DBAની ભૂમિકા અને જવાબદારીઓ સમજાવો.
ઉત્તર:
DBA એટલે ડેટાબેઝ એડમિનિસ્ટ્રેટર.
કોષ્ટક: DBA જવાબદારીઓ
ભૂમિકા | વર્ણન |
---|---|
ડેટાબેઝ ડિઝાઇન | લોજિકલ/ફિઝિકલ ડેટાબેઝ સ્ટ્રક્ચર અને સ્કીમા બનાવે છે |
સિક્યોરિટી મેનેજમેન્ટ | યુઝર એકાઉન્ટ્સ અને પરમિશન્સ દ્વારા ઍક્સેસ નિયંત્રિત કરે છે |
પરફોર્મન્સ ટ્યુનિંગ | ઝડપી ડેટા પુનઃપ્રાપ્તિ માટે ક્વેરીઝ, ઇન્ડેક્સ ઓપ્ટિમાઇઝ કરે છે |
બેકઅપ & રિકવરી | ડેટા નુકસાન રોકવા માટેની વ્યૂહરચના અમલમાં મૂકે છે |
મેઇન્ટેનન્સ | સોફ્ટવેર અપડેટ કરે છે, પેચિસ લાગુ કરે છે, સ્પેસનું મોનિટરિંગ કરે છે |
આકૃતિ:
mindmap root((DBA)) ડિઝાઇન સ્કીમા ટેબલ્સ રિલેશનશિપ્સ સિક્યોરિટી યુઝર્સ પરમિશન્સ એન્ક્રિપ્શન પરફોર્મન્સ ક્વેરી ઓપ્ટિમાઇઝેશન ઇન્ડેક્સિંગ મોનિટરિંગ બેકઅપ નિયમિત બેકઅપ્સ રિકવરી પ્લાન્સ મેઇન્ટેનન્સ અપડેટ્સ સ્પેસ મેનેજમેન્ટ
મ્નેમોનિક: “SPMBU” - સિક્યોરિટી, પરફોર્મન્સ, મેઇન્ટેનન્સ, બેકઅપ, અપડેટ્સ
પ્રશ્ન 1(ક) OR [7 માર્ક્સ]#
રીલેશનલ અને નેટવર્ક ડેટા મોડેલ વિસ્તારથી સમજાવો.
ઉત્તર:
કોષ્ટક: રીલેશનલ અને નેટવર્ક ડેટા મોડેલની તુલના
લક્ષણ | રીલેશનલ મોડેલ | નેટવર્ક મોડેલ |
---|---|---|
સ્ટ્રક્ચર | ટેબલ્સ (રીલેશન્સ) - રો અને કોલમ્સ સાથે | રેકોર્ડ્સ પોઇન્ટર્સ દ્વારા જોડાયેલા જટિલ નેટવર્ક બનાવે છે |
સંબંધ | પ્રાઇમરી અને ફોરેન કી દ્વારા જોડાયેલા | પેરન્ટ-ચાઇલ્ડ રેકોર્ડ્સ વચ્ચે ડાયરેક્ટ લિંક્સ |
ફ્લેક્સિબિલિટી | ઉચ્ચ - ટેબલ્સ જરૂરિયાત મુજબ જોઈન કરી શકાય છે | સીમિત - પૂર્વનિર્ધારિત ફિઝિકલ કનેક્શન |
ઉદાહરણો | MySQL, Oracle, SQL Server | IDS, IDMS |
ક્વેરી લેંગ્વેજ | SQL (સ્ટ્રક્ચર્ડ ક્વેરી લેંગ્વેજ) | પ્રોસીજરલ લેંગ્વેજ |
આકૃતિ:
graph TD subgraph "રીલેશનલ મોડેલ" A[ટેબલ: વિદ્યાર્થીઓ] --- B[ટેબલ: અભ્યાસક્રમો] A --- C[ટેબલ: ગ્રેડ્સ] end subgraph "નેટવર્ક મોડેલ" D[રેકોર્ડ: વિદ્યાર્થી] --> E[રેકોર્ડ: અભ્યાસક્રમ1] D --> F[રેકોર્ડ: અભ્યાસક્રમ2] F --> G[રેકોર્ડ: ગ્રેડ] end
મ્નેમોનિક: “RSPEN” - રીલેશનલ યુઝિસ સેટ્સ, પોઇન્ટર્સ એનેબલ નેટવર્ક્સ
પ્રશ્ન 2(અ) [3 માર્ક્સ]#
Generalization આકૃતિ સાથે સમજાવો.
ઉત્તર:
Generalization: બે કે વધુ એન્ટિટીઓમાંથી સામાન્ય લક્ષણો કાઢીને નવી ઉચ્ચ સ્તરની એન્ટિટી બનાવવાની પ્રક્રિયા.
આકૃતિ:
classDiagram Vehicle <|-- Car Vehicle <|-- Truck Vehicle <|-- Motorcycle class Vehicle{ +vehicle_id +manufacturer +year } class Car{ +num_doors +fuel_type } class Truck{ +cargo_capacity +towing_capacity } class Motorcycle{ +engine_size +type }
મ્નેમોનિક: “BUSH” - બોટમ-અપ શેર્ડ હાયરાર્કી
પ્રશ્ન 2(બ) [4 માર્ક્સ]#
Primary કી અને Foreign કી Constraints સમજાઓ.
ઉત્તર:
કોષ્ટક: પ્રાઇમરી કી વિ. ફોરેન કી
કન્સ્ટ્રેઇન્ટ | વ્યાખ્યા | ગુણધર્મો | ઉદાહરણ |
---|---|---|---|
પ્રાઇમરી કી | ટેબલમાં દરેક રેકોર્ડને અનન્ય રીતે ઓળખે છે | અનન્ય, નોટ નલ, ટેબલ દીઠ માત્ર એક | વિદ્યાર્થી ટેબલમાં StudentID |
ફોરેન કી | ટેબલો વચ્ચે ડેટાને જોડે છે, બીજા ટેબલના પ્રાઇમરી કીનો સંદર્ભ આપે છે | NULL હોઈ શકે, એક ટેબલમાં અનેક હોઈ શકે | એમ્પ્લોયી ટેબલમાં DeptID |
આકૃતિ:
erDiagram DEPARTMENT { int dept_id PK string dept_name } EMPLOYEE { int emp_id PK string name int dept_id FK } DEPARTMENT ||--o{ EMPLOYEE : "has"
મ્નેમોનિક: “PURE FIRE” - પ્રાઇમરી યુનિકલી રેફરન્સિસ એન્ટિટીઝ, ફોરેન ઇમ્પોર્ટ્સ રેફરન્સ્ડ એન્ટિટીઝ
પ્રશ્ન 2(ક) [7 માર્ક્સ]#
હોસ્પિટલ મેનેજમેન્ટ સિસ્ટમ માટે E-R ડાયાગ્રામ બનાવો
ઉત્તર:
હોસ્પિટલ મેનેજમેન્ટ સિસ્ટમ માટે E-R ડાયાગ્રામ:
erDiagram PATIENT ||--o{ APPOINTMENT : makes DOCTOR ||--o{ APPOINTMENT : conducts APPOINTMENT ||--o{ PRESCRIPTION : generates DEPARTMENT ||--o{ DOCTOR : employs ROOM ||--o{ PATIENT : admits PATIENT { int patient_id PK string name string address date DOB string phone } DOCTOR { int doctor_id PK string name string specialization int dept_id FK } DEPARTMENT { int dept_id PK string name string location } APPOINTMENT { int app_id PK int patient_id FK int doctor_id FK datetime date_time string status } PRESCRIPTION { int pres_id PK int app_id FK date date string medications } ROOM { int room_id PK string type boolean availability }
મ્નેમોનિક: “PADRE” - પેશન્ટ અપોઇન્ટમેન્ટ ડોક્ટર રૂમ એન્ટિટીઝ
પ્રશ્ન 2(અ) OR [3 માર્ક્સ]#
Specialization આકૃતિ સાથે સમજાવો.
ઉત્તર:
Specialization: હાલની એન્ટિટીમાંથી તેમને અલગ ઓળખવા માટે અનન્ય લક્ષણો ઉમેરીને નવી એન્ટિટીઓ બનાવવાની પ્રક્રિયા.
આકૃતિ:
classDiagram Employee --> FullTime Employee --> PartTime class Employee{ +emp_id +name +address +phone } class FullTime{ +salary +benefits } class PartTime{ +hourly_rate +hours_worked }
મ્નેમોનિક: “TDSB” - ટોપ-ડાઉન સ્પેશલાઇઝ્ડ બ્રેકડાઉન
પ્રશ્ન 2(બ) OR [4 માર્ક્સ]#
યોગ્ય ઉદાહરણ સાથે સિંગલ વેલ્યુડ અને મલ્ટીવેલ્યુડ એટ્રીબ્યુટ વચ્ચેનો તફાવત સમજાવો.
ઉત્તર:
કોષ્ટક: સિંગલ-વેલ્યુડ અને મલ્ટી-વેલ્યુડ એટ્રીબ્યુટ્સ
પ્રકાર | વ્યાખ્યા | ઉદાહરણ | ઇમ્પ્લિમેન્ટેશન |
---|---|---|---|
સિંગલ-વેલ્યુડ | દરેક એન્ટિટી ઇન્સ્ટન્સ માટે માત્ર એક જ મૂલ્ય ધરાવે છે | વ્યક્તિની જન્મતારીખ, SSN | સીધા ટેબલ કોલમમાં સંગ્રહિત |
મલ્ટી-વેલ્યુડ | એક જ એન્ટિટી માટે અનેક મૂલ્યો ધરાવી શકે છે | વ્યક્તિની કુશળતાઓ, ફોન નંબરો | અલગ ટેબલ અથવા વિશિષ્ટ ફોર્મેટ |
આકૃતિ:
erDiagram EMPLOYEE { int emp_id string name date birth_date "સિંગલ-વેલ્યુડ" } EMPLOYEE ||--o{ PHONE_NUMBERS : has EMPLOYEE ||--o{ SKILLS : possesses PHONE_NUMBERS { int emp_id string phone_number "મલ્ટી-વેલ્યુડ" } SKILLS { int emp_id string skill "મલ્ટી-વેલ્યુડ" }
મ્નેમોનિક: “SOME” - સિંગલ વન, મલ્ટિપલ એન્ટ્રીઝ
પ્રશ્ન 2(ક) OR [7 માર્ક્સ]#
બેન્કિંગ મેનેજમેન્ટ સિસ્ટમ માટે E-R ડાયાગ્રામ બનાવો
ઉત્તર:
બેન્કિંગ મેનેજમેન્ટ સિસ્ટમ માટે E-R ડાયાગ્રામ:
erDiagram CUSTOMER ||--o{ ACCOUNT : owns ACCOUNT ||--o{ TRANSACTION : has BRANCH ||--o{ ACCOUNT : maintains EMPLOYEE }|--|| BRANCH : works_at LOAN }o--|| CUSTOMER : takes CUSTOMER { int customer_id PK string name string address string phone string email } ACCOUNT { int account_no PK int customer_id FK int branch_id FK float balance string type date opening_date } TRANSACTION { int trans_id PK int account_no FK date trans_date float amount string type string description } BRANCH { int branch_id PK string name string location string manager } EMPLOYEE { int emp_id PK string name string position float salary int branch_id FK } LOAN { int loan_id PK int customer_id FK float amount float interest_rate date start_date date end_date }
મ્નેમોનિક: “CABLE” - કસ્ટમર્સ અકાઉન્ટ્સ બ્રાન્ચિસ લોન્સ એમ્પ્લોયીઝ
પ્રશ્ન 3(અ) [3 માર્ક્સ]#
WHERE અને DESC ક્લોઝ ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
કોષ્ટક: WHERE અને DESC ક્લોઝનો ઉપયોગ
ક્લોઝ | હેતુ | સિન્ટેક્સ | ઉદાહરણ |
---|---|---|---|
WHERE | ચોક્કસ શરત પર આધારિત રો ફિલ્ટર કરે છે | SELECT columns FROM table WHERE condition | SELECT * FROM employees WHERE salary > 50000 |
DESC | પરિણામોને ઉતરતા ક્રમમાં ગોઠવે છે | SELECT columns FROM table ORDER BY column DESC | SELECT * FROM products ORDER BY price DESC |
આકૃતિ:
-- Students ટેબલમાં મૂળ ડેટા
| ID | Name | Marks |
|----|--------|-------|
| 1 | Alice | 85 |
| 2 | Bob | 92 |
| 3 | Carol | 78 |
| 4 | David | 65 |
-- WHERE વાપરીને: SELECT * FROM Students WHERE Marks > 80
| ID | Name | Marks |
|----|--------|-------|
| 1 | Alice | 85 |
| 2 | Bob | 92 |
-- DESC વાપરીને: SELECT * FROM Students ORDER BY Marks DESC
| ID | Name | Marks |
|----|--------|-------|
| 2 | Bob | 92 |
| 1 | Alice | 85 |
| 3 | Carol | 78 |
| 4 | David | 65 |
મ્નેમોનિક: “WDF” - Where ડેટા ફિલ્ટર કરે છે, DESC ઉચ્ચતમ પહેલા ક્રમ આપે છે
પ્રશ્ન 3(બ) [4 માર્ક્સ]#
DDL કમાન્ડની યાદી બનાવો. કોઈ પણ ૨ DDL કમાન્ડ ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
DDL (ડેટા ડેફિનિશન લેંગ્વેજ) કમાન્ડ્સ:
- CREATE
- ALTER
- DROP
- TRUNCATE
- RENAME
કોષ્ટક: CREATE અને ALTER કમાન્ડ્સ
કમાન્ડ | હેતુ | સિન્ટેક્સ | ઉદાહરણ |
---|---|---|---|
CREATE | ટેબલ, વ્યૂ, ઇન્ડેક્સ જેવા ડેટાબેઝ ઑબ્જેક્ટ્સ બનાવે છે | CREATE TABLE table_name (column definitions) | CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50)) |
ALTER | હાલના ડેટાબેઝ ઑબ્જેક્ટની સ્ટ્રક્ચર સુધારે છે | ALTER TABLE table_name action | ALTER TABLE students ADD COLUMN email VARCHAR(100) |
કોડબ્લોક:
-- CREATE ઉદાહરણ
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
dept VARCHAR(30),
salary DECIMAL(10,2)
);
-- ALTER ઉદાહરણ
ALTER TABLE employees
ADD COLUMN hire_date DATE;
મ્નેમોનિક: “CADTR” - Create Alter Drop Truncate Rename
પ્રશ્ન 3(ક) [7 માર્ક્સ]#
eno, ename, salary, dept ફિલ્ડ ધરાવતા Company ટેબલ પર નીચેની Query perform કરો. ૧. Company ટેબલના તમામ રેકોર્ડ ડિસ્પ્લે કરો. ૨. ડુપ્લિકેટ વેલ્યુ સિવાય માત્ર dept ડિસ્પ્લે કરો. ૩. ename ના ઉતરતા ક્રમમાં તમામ રેકોર્ડ ડિસ્પ્લે કરો. ૪. શહેરનું નામ સ્ટોર કરવા માટે “cityname” નામથી નવી કોલમ ઉમેરો. ૫. “Mumbai” શહેરમાં ન રહેતા હોય તેવા તમામ કર્મચારીઓનાં નામ ડિસ્પ્લે કરો. ૬. ૧૦૦૦૦ કરતા ઓછું પગાર ધરાવતા તમામ કર્મચારીઓને ડીલીટ કરો. ૭. “A” થી શરુ થતા તમામ કર્મચારીઓના નામ ડિસ્પ્લે કરો.
ઉત્તર:
કોડબ્લોક:
-- ૧. Company ટેબલના તમામ રેકોર્ડ ડિસ્પ્લે કરો
SELECT * FROM Company;
-- ૨. ડુપ્લિકેટ વેલ્યુ સિવાય માત્ર dept ડિસ્પ્લે કરો
SELECT DISTINCT dept FROM Company;
-- ૩. ename ના ઉતરતા ક્રમમાં તમામ રેકોર્ડ ડિસ્પ્લે કરો
SELECT * FROM Company ORDER BY ename DESC;
-- ૪. શહેરનું નામ સ્ટોર કરવા માટે "cityname" નામથી નવી કોલમ ઉમેરો
ALTER TABLE Company ADD COLUMN cityname VARCHAR(50);
-- ૫. "Mumbai" શહેરમાં ન રહેતા હોય તેવા તમામ કર્મચારીઓનાં નામ ડિસ્પ્લે કરો
SELECT ename FROM Company WHERE cityname != 'Mumbai';
-- ૬. ૧૦૦૦૦ કરતા ઓછું પગાર ધરાવતા તમામ કર્મચારીઓને ડીલીટ કરો
DELETE FROM Company WHERE salary < 10000;
-- ૭. "A" થી શરુ થતા તમામ કર્મચારીઓના નામ ડિસ્પ્લે કરો
SELECT ename FROM Company WHERE ename LIKE 'A%';
કોષ્ટક: SQL ઓપરેશન્સ
ઓપરેશન | SQL કમાન્ડ | હેતુ |
---|---|---|
SELECT | SELECT * FROM Company | બધો ડેટા મેળવે છે |
DISTINCT | SELECT DISTINCT dept | ડુપ્લિકેટ દૂર કરે છે |
ORDER BY | ORDER BY ename DESC | ઉતરતા ક્રમમાં ગોઠવે છે |
ALTER | ALTER TABLE ADD COLUMN | નવી કોલમ ઉમેરે છે |
WHERE | WHERE cityname != ‘Mumbai’ | ફિલ્ટર શરત |
DELETE | DELETE FROM WHERE | રેકોર્ડ દૂર કરે છે |
LIKE | WHERE ename LIKE ‘A%’ | પેટર્ન મેચિંગ |
મ્નેમોનિક: “SODA-WDL” - Select Order Distinct Alter - Where Delete Like
પ્રશ્ન 3(અ) OR [3 માર્ક્સ]#
SELECT અને DISTINCT ક્લોઝ ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
કોષ્ટક: SELECT અને DISTINCT ક્લોઝનો ઉપયોગ
ક્લોઝ | હેતુ | સિન્ટેક્સ | ઉદાહરણ |
---|---|---|---|
SELECT | ડેટાબેઝમાંથી ડેટા મેળવે છે | SELECT columns FROM table | SELECT name, age FROM students |
DISTINCT | ડુપ્લિકેટ મૂલ્યો દૂર કરે છે | SELECT DISTINCT columns FROM table | SELECT DISTINCT department FROM employees |
આકૃતિ:
-- Departments ટેબલમાં મૂળ ડેટા
| dept_id | dept_name |
|---------|-----------|
| 1 | Sales |
| 2 | IT |
| 3 | HR |
| 4 | IT |
| 5 | Sales |
-- SELECT વાપરીને: SELECT dept_name FROM Departments
| dept_name |
|-----------|
| Sales |
| IT |
| HR |
| IT |
| Sales |
-- DISTINCT વાપરીને: SELECT DISTINCT dept_name FROM Departments
| dept_name |
|-----------|
| Sales |
| IT |
| HR |
મ્નેમોનિક: “SUD” - Select Unique with Distinct
પ્રશ્ન 3(બ) OR [4 માર્ક્સ]#
DML કમાન્ડની યાદી બનાવો. કોઈ પણ ૨ DML કમાન્ડ ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
DML (ડેટા મેનિપ્યુલેશન લેંગ્વેજ) કમાન્ડ્સ:
- INSERT
- UPDATE
- DELETE
- SELECT
કોષ્ટક: INSERT અને UPDATE કમાન્ડ્સ
કમાન્ડ | હેતુ | સિન્ટેક્સ | ઉદાહરણ |
---|---|---|---|
INSERT | ટેબલમાં નવા રેકોર્ડ ઉમેરે છે | INSERT INTO table_name VALUES (values) | INSERT INTO students VALUES (1, ‘John’, 85) |
UPDATE | હાલના રેકોર્ડમાં ફેરફાર કરે છે | UPDATE table_name SET column=value WHERE condition | UPDATE students SET marks=90 WHERE id=1 |
કોડબ્લોક:
-- INSERT ઉદાહરણ
INSERT INTO employees (emp_id, name, dept, salary)
VALUES (101, 'John Smith', 'IT', 65000);
-- UPDATE ઉદાહરણ
UPDATE employees
SET salary = 70000
WHERE emp_id = 101;
મ્નેમોનિક: “IUDS” - Insert Update Delete Select
પ્રશ્ન 3(ક) OR [7 માર્ક્સ]#
નીચેની Query ના આઉટપુટ લખો. 1. ABS(-34),ABS(16) 2. SQRT(16),SQRT(64) 3. POWER(5,2), POWER(2,4) 4. MOD(15,3), MOD(13,3) 5. ROUND(123.456,1), ROUND(123.456,2) 6. CEIL(122.6), CEIL(-122.6) 7. FLOOR(-157.5),FLOOR(157.5)
ઉત્તર:
કોષ્ટક: SQL ફંક્શન આઉટપુટ
ફંક્શન | વર્ણન | આઉટપુટ |
---|---|---|
ABS(-34),ABS(16) | નિરપેક્ષ મૂલ્ય | 34, 16 |
SQRT(16),SQRT(64) | વર્ગમૂળ | 4, 8 |
POWER(5,2), POWER(2,4) | પાવર ફંક્શન | 25, 16 |
MOD(15,3), MOD(13,3) | મોડ્યુલસ (બાકી) | 0, 1 |
ROUND(123.456,1), ROUND(123.456,2) | દશાંશ સ્થાન સુધી રાઉન્ડ | 123.5, 123.46 |
CEIL(122.6), CEIL(-122.6) | પૂર્ણાંક સુધી ઉપર રાઉન્ડ | 123, -122 |
FLOOR(-157.5),FLOOR(157.5) | પૂર્ણાંક સુધી નીચે રાઉન્ડ | -158, 157 |
આકૃતિ:
graph TD A[SQL ગણિત ફંક્શન્સ] A --> B[ABS: નિરપેક્ષ મૂલ્ય
ABS(-34) = 34
ABS(16) = 16] A --> C[SQRT: વર્ગમૂળ
SQRT(16) = 4
SQRT(64) = 8] A --> D[POWER: ઘાતાંક
POWER(5,2) = 25
POWER(2,4) = 16] A --> E[MOD: બાકી
MOD(15,3) = 0
MOD(13,3) = 1] A --> F[ROUND: દશાંશ રાઉન્ડ
ROUND(123.456,1) = 123.5
ROUND(123.456,2) = 123.46] A --> G[CEIL: ઉપર રાઉન્ડ
CEIL(122.6) = 123
CEIL(-122.6) = -122] A --> H[FLOOR: નીચે રાઉન્ડ
FLOOR(-157.5) = -158
FLOOR(157.5) = 157]
મ્નેમોનિક: “ASPRCF” - Absolute Square Power Remainder Ceiling Floor
પ્રશ્ન 4(અ) [3 માર્ક્સ]#
SQLમાં ડેટા ટાઈપની યાદી બનાવો. 1.VARCHAR() અને 2.INT() ડેટા ટાઈપ ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
SQL ડેટા ટાઈપ કેટેગરીઝ:
- ન્યુમેરિક (INT, FLOAT, DECIMAL)
- કેરેક્ટર (CHAR, VARCHAR)
- ડેટ/ટાઈમ (DATE, TIME, DATETIME)
- બાઈનરી (BLOB, BINARY)
- બૂલિયન (BOOL)
કોષ્ટક: VARCHAR અને INT ડેટા ટાઈપ્સ
ડેટા ટાઈપ | વર્ણન | સાઈઝ | ઉદાહરણ |
---|---|---|---|
VARCHAR(n) | વેરિએબલ-લેન્થ કેરેક્ટર સ્ટ્રિંગ | n કેરેક્ટર સુધી, માત્ર જરૂરી જગ્યાનો ઉપયોગ | નામ, ઈમેલ માટે VARCHAR(50) |
INT | ઇન્ટિજર ન્યુમેરિક ડેટા | સામાન્ય રીતે 4 બાઈટ્સ, -2,147,483,648 થી 2,147,483,647 | ID, કાઉન્ટ, ઉંમર માટે INT |
કોડબ્લોક:
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
email VARCHAR(100)
);
મ્નેમોનિક: “VIA” - Variable strings, Integers for Ages
પ્રશ્ન 4(બ) [4 માર્ક્સ]#
2NF (સેકન્ડ નોર્મલ ફોર્મ) ઉદાહરણ અને ઉકેલ સાથે સમજાવો.
ઉત્તર:
2NF વ્યાખ્યા: એક સંબંધ 2NF માં છે જો તે 1NF માં હોય અને કોઈપણ નોન-પ્રાઈમ એટ્રિબ્યુટ કોઈપણ કેન્ડિડેટ કીના સબસેટ પર આધારિત ન હોય.
કોષ્ટક: 2NF પહેલાં
student_id | course_id | course_name | instructor |
---|---|---|---|
S1 | C1 | Database | Prof. Smith |
S1 | C2 | Networking | Prof. Jones |
S2 | C1 | Database | Prof. Smith |
S3 | C3 | Programming | Prof. Wilson |
સમસ્યા: નોન-પ્રાઈમ એટ્રિબ્યુટ્સ (course_name, instructor) માત્ર course_id પર આધારિત છે, સંપૂર્ણ કી (student_id, course_id) પર નહીં.
આકૃતિ: 2NF ઉકેલ
erDiagram ENROLLMENT { string student_id PK string course_id PK } COURSE { string course_id PK string course_name string instructor } ENROLLMENT }o--|| COURSE : references
કોષ્ટક: 2NF પછી Enrollment ટેબલ:
student_id | course_id |
---|---|
S1 | C1 |
S1 | C2 |
S2 | C1 |
S3 | C3 |
Course ટેબલ:
course_id | course_name | instructor |
---|---|---|
C1 | Database | Prof. Smith |
C2 | Networking | Prof. Jones |
C3 | Programming | Prof. Wilson |
મ્નેમોનિક: “PFPK” - Partial Functional dependency on Primary Key
પ્રશ્ન 4(ક) [7 માર્ક્સ]#
Function dependency સમજાવો. Partial function dependency ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
Functional Dependency: એટ્રિબ્યુટ્સ વચ્ચેનો સંબંધ જ્યાં એક એટ્રિબ્યુટનું મૂલ્ય બીજા એટ્રિબ્યુટના મૂલ્યને નક્કી કરે છે.
નોટેશન: X → Y (X Y ને નક્કી કરે છે)
Partial Functional Dependency: જ્યારે નોન-પ્રાઈમ એટ્રિબ્યુટ કંપોઝિટ કીના સંપૂર્ણ કરતાં ભાગ પર આધારિત હોય.
કોષ્ટક: Order Details (નોર્મલાઈઝેશન પહેલાં)
order_id | product_id | quantity | product_name | price |
---|---|---|---|---|
O1 | P1 | 5 | Keyboard | 50 |
O1 | P2 | 2 | Mouse | 25 |
O2 | P1 | 1 | Keyboard | 50 |
O3 | P3 | 3 | Monitor | 200 |
Functional Dependencies:
- (order_id, product_id) → quantity
- product_id → product_name
- product_id → price
આકૃતિ:
flowchart TD A["(order_id, product_id)"] -->|"પૂર્ણપણે નક્કી કરે છે"| B[quantity] C[product_id] -->|"આંશિક રીતે નક્કી કરે છે"| D[product_name] C -->|"આંશિક રીતે નક્કી કરે છે"| E[price] style C fill:#f9f,stroke:#333,stroke-width:2px style D fill:#bbf,stroke:#333,stroke-width:2px style E fill:#bbf,stroke:#333,stroke-width:2px
ઉકેલ (નોર્મલાઈઝ્ડ ટેબલ્સ): Orders ટેબલ:
order_id | product_id | quantity |
---|---|---|
O1 | P1 | 5 |
O1 | P2 | 2 |
O2 | P1 | 1 |
O3 | P3 | 3 |
Products ટેબલ:
product_id | product_name | price |
---|---|---|
P1 | Keyboard | 50 |
P2 | Mouse | 25 |
P3 | Monitor | 200 |
મ્નેમોનિક: “PDPK” - Partial Dependency on Part of Key
પ્રશ્ન 4(અ) OR [3 માર્ક્સ]#
કમાન્ડ સમજાવવો: 1) To_Char() 2) To_Date()
ઉત્તર:
કોષ્ટક: કન્વર્ઝન ફંક્શન્સ
ફંક્શન | હેતુ | સિન્ટેક્સ | ઉદાહરણ |
---|---|---|---|
TO_CHAR() | ડેટ/નંબરને ફોર્મેટ મોડેલનો ઉપયોગ કરીને કેરેક્ટર સ્ટ્રિંગમાં રૂપાંતરિત કરે છે | TO_CHAR(value, [format]) | TO_CHAR(SYSDATE, ‘DD-MON-YYYY’) → ‘14-JUN-2024’ |
TO_DATE() | કેરેક્ટર સ્ટ્રિંગને ફોર્મેટ મોડેલનો ઉપયોગ કરીને ડેટમાં રૂપાંતરિત કરે છે | TO_DATE(string, [format]) | TO_DATE(‘14-JUN-2024’, ‘DD-MON-YYYY’) → ડેટ વેલ્યુ |
કોડબ્લોક:
-- TO_CHAR ઉદાહરણો
SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY') FROM DUAL; -- '14-JUN-2024'
SELECT TO_CHAR(1234.56, '$9,999.99') FROM DUAL; -- '$1,234.56'
-- TO_DATE ઉદાહરણો
SELECT TO_DATE('2024-06-14', 'YYYY-MM-DD') FROM DUAL;
SELECT TO_DATE('14/06/24', 'DD/MM/YY') FROM DUAL;
મ્નેમોનિક: “DCS” - Date Conversion Strings
પ્રશ્ન 4(બ) OR [4 માર્ક્સ]#
Full function dependency ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
Full Functional Dependency: જ્યારે એક એટ્રિબ્યુટ કંપોઝિટ કી પર ફંક્શનલી ડિપેન્ડન્ટ હોય, અને માત્ર ભાગ પર નહીં પણ સંપૂર્ણ કી પર આધારિત હોય.
કોષ્ટક: Exam Results
student_id | course_id | exam_date | score |
---|---|---|---|
S1 | C1 | 2024-05-10 | 85 |
S1 | C2 | 2024-05-15 | 92 |
S2 | C1 | 2024-05-10 | 78 |
S2 | C2 | 2024-05-15 | 88 |
Full Functional Dependency:
- (student_id, course_id) → score (સ્કોર વિદ્યાર્થી અને કોર્સ બંને પર આધારિત છે)
આકૃતિ:
flowchart LR A["(student_id, course_id)"] -->|"પૂર્ણપણે નક્કી કરે છે"| B[score] style A fill:#f9f,stroke:#333,stroke-width:2px style B fill:#bbf,stroke:#333,stroke-width:2px
સમજૂતી: સ્કોર એટ્રિબ્યુટ સંપૂર્ણ રીતે કંપોઝિટ કી (student_id, course_id) પર આધારિત છે કારણ કે:
- અલગ અલગ વિદ્યાર્થીઓના એક જ કોર્સ માટે અલગ અલગ સ્કોર હોઈ શકે છે
- એક જ વિદ્યાર્થીના અલગ અલગ કોર્સ માટે અલગ અલગ સ્કોર હોઈ શકે છે
- ચોક્કસ સ્કોર જાણવા માટે આપણને student_id અને course_id બંનેની જરૂર પડે છે
મ્નેમોનિક: “FCEK” - Fully dependent on Complete/Entire Key
પ્રશ્ન 4(ક) OR [7 માર્ક્સ]#
નોર્મલાઇઝેશનની વ્યાખ્યા આપો. 1NF (ફર્સ્ટ નોર્મલ ફોર્મ) ઉદાહરણ અને ઉકેલ સાથે સમજાવો.
ઉત્તર:
નોર્મલાઇઝેશન: ડેટા રિડન્ડન્સી ઘટાડવા, ડેટા અખંડતા સુધારવા અને એનોમલીઓને દૂર કરવા માટે મોટા ટેબલને નાના સંબંધિત ટેબલમાં વિભાજિત કરીને ડેટાને વ્યવસ્થિત કરવાની પ્રક્રિયા.
1NF વ્યાખ્યા: એક સંબંધ 1NF માં છે જો તેના બધા એટ્રિબ્યુટ્સ માત્ર અવિભાજ્ય (એટોમિક) મૂલ્યો ધરાવતા હોય.
કોષ્ટક: 1NF પહેલાં
student_id | name | courses |
---|---|---|
S1 | John | Math, Physics |
S2 | Mary | Chemistry, Biology, Physics |
S3 | Tim | Computer Science |
સમસ્યાઓ:
- નોન-એટોમિક મૂલ્યો (એક સેલમાં અનેક કોર્સ)
- ચોક્કસ કોર્સને ક્વેરી કે અપડેટ કરવું સરળ નથી
આકૃતિ:
flowchart TD A[Non-1NF ટેબલ] --> B[સમસ્યા: એક કોલમમાં અનેક મૂલ્યો] B --> C[ઉકેલ: દરેક મૂલ્ય અલગ રોમાં] C --> D[1NF ટેબલ]
કોષ્ટક: 1NF પછી
student_id | name | course |
---|---|---|
S1 | John | Math |
S1 | John | Physics |
S2 | Mary | Chemistry |
S2 | Mary | Biology |
S2 | Mary | Physics |
S3 | Tim | Computer Science |
મ્નેમોનિક: “ASAV” - Atomic Single-value Attributes only Valid
પ્રશ્ન 5(અ) [3 માર્ક્સ]#
Transaction નો concept ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
Transaction: એક લૉજિકલ કાર્ય એકમ જે સંપૂર્ણપણે અમલમાં મૂકવામાં આવે અથવા સંપૂર્ણપણે રદ કરવામાં આવે.
કોષ્ટક: Transaction ગુણધર્મો
ગુણધર્મ | વર્ણન |
---|---|
Atomicity | બધા ઓપરેશન સફળતાપૂર્વક પૂર્ણ થાય અથવા કોઈ નહીં |
Consistency | ટ્રાન્ઝેક્શન પહેલાં અને પછી ડેટાબેઝ સુસંગત સ્થિતિમાં રહે |
Isolation | સમાંતર ટ્રાન્ઝેક્શન એકબીજામાં દખલ ન કરે |
Durability | સફળ ટ્રાન્ઝેક્શન પછી પણ ફેરફાર ટકી રહે |
ઉદાહરણ:
-- બેંક અકાઉન્ટ ટ્રાન્સફર ટ્રાન્ઝેક્શન
BEGIN TRANSACTION;
-- અકાઉન્ટ A માંથી $500 કાઢવા
UPDATE accounts SET balance = balance - 500 WHERE account_id = 'A';
-- અકાઉન્ટ B માં $500 ઉમેરવા
UPDATE accounts SET balance = balance + 500 WHERE account_id = 'B';
-- જો બંને ઓપરેશન સફળ હોય તો
COMMIT;
-- જો કોઈ ઓપરેશન નિષ્ફળ જાય તો
-- ROLLBACK;
END TRANSACTION;
મ્નેમોનિક: “ACID” - Atomicity Consistency Isolation Durability
પ્રશ્ન 5(બ) [4 માર્ક્સ]#
equi join સિન્ટેક્સ અને ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
Equi Join: એક જોઈન જે સામાન્ય ફીલ્ડના આધારે બે કે વધુ ટેબલના રેકોર્ડને મેચ કરવા માટે સમાનતા તુલના ઓપરેટરનો ઉપયોગ કરે છે.
સિન્ટેક્સ:
SELECT columns
FROM table1, table2
WHERE table1.column = table2.column;
-- વૈકલ્પિક સિન્ટેક્સ (સ્પષ્ટ JOIN)
SELECT columns
FROM table1 JOIN table2
ON table1.column = table2.column;
ટેબલ ઉદાહરણ: Employees ટેબલ:
emp_id | name | dept_id |
---|---|---|
101 | Alice | 1 |
102 | Bob | 2 |
103 | Carol | 1 |
Departments ટેબલ:
dept_id | dept_name | location |
---|---|---|
1 | HR | New York |
2 | IT | Chicago |
3 | Finance | Boston |
કોડબ્લોક:
-- Equi Join ઉદાહરણ
SELECT e.name, d.dept_name, d.location
FROM employees e, departments d
WHERE e.dept_id = d.dept_id;
પરિણામ:
name | dept_name | location |
---|---|---|
Alice | HR | New York |
Bob | IT | Chicago |
Carol | HR | New York |
આકૃતિ:
graph LR subgraph Employees E1[emp_id: 101
name: Alice
dept_id: 1] E2[emp_id: 102
name: Bob
dept_id: 2] E3[emp_id: 103
name: Carol
dept_id: 1] end subgraph Departments D1[dept_id: 1
dept_name: HR
location: New York] D2[dept_id: 2
dept_name: IT
location: Chicago] D3[dept_id: 3
dept_name: Finance
location: Boston] end E1-->|સમાન|D1 E2-->|સમાન|D2 E3-->|સમાન|D1
મ્નેમોનિક: “MEET” - Match Equal Elements Every Table
પ્રશ્ન 5(ક) [7 માર્ક્સ]#
Conflict serializability વિસ્તારથી સમજાવો.
ઉત્તર:
Conflict Serializability: સમાંતર ટ્રાન્ઝેક્શનની સાચી કાર્યપ્રણાલી સુનિશ્ચિત કરવાની એક રીત, જે એ ગેરંટી આપે છે કે એક્ઝિક્યુશન શેડ્યૂલ કોઈ સીરિયલ એક્ઝિક્યુશનના સમકક્ષ છે.
કોષ્ટક: Conflict Serializability ના મુખ્ય ખ્યાલો
ખ્યાલ | વર્ણન |
---|---|
Conflicting Operations | બે ઓપરેશન કોન્ફ્લિક્ટ કરે છે જો તેઓ એક જ ડેટા આઇટમ ઍક્સેસ કરે અને ઓછામાં ઓછું એક રાઇટ હોય |
Precedence Graph | સંઘર્ષો દર્શાવતો ડાયરેક્ટેડ ગ્રાફ |
Conflict Serializable | શેડ્યૂલ conflict serializable છે જો તેનો precedence graph એસાઇક્લિક હોય |
આકૃતિ:
graph TD A[Conflict Serializable શેડ્યૂલ] --> B{શું precedence graph એસાઇક્લિક છે?} B -->|હા| C[કોઈ સીરિયલ શેડ્યૂલના સમકક્ષ] B -->|ના| D[conflict serializable નથી] subgraph "ઉદાહરણ Precedence Graph" T1 --> T2 T2 --> T3 end subgraph "સાયકલ ઉદાહરણ (Serializable નથી)" T4 --> T5 T5 --> T6 T6 --> T4 end
ઉદાહરણ: ટ્રાન્ઝેક્શન T1 અને T2 ધ્યાનમાં લો:
- T1: Read(A), Write(A)
- T2: Read(A), Write(A)
શેડ્યૂલ S1: R1(A), W1(A), R2(A), W2(A) - Serializable (T1→T2 સમકક્ષ) શેડ્યૂલ S2: R1(A), R2(A), W1(A), W2(A) - Not serializable (precedence ગ્રાફમાં સાયકલ છે)
Conflict Serializability નક્કી કરવાના પગલાં:
- બધા કોન્ફ્લિક્ટિંગ ઓપરેશન જોડીઓ ઓળખો
- precedence ગ્રાફ બનાવો
- ચેક કરો કે ગ્રાફમાં સાયકલ છે કે નહીં
- જો સાયકલ ન હોય, તો શેડ્યૂલ conflict serializable છે
મ્નેમોનિક: “COPS” - Conflicts, Operations, Precedence, Serializability
પ્રશ્ન 5(અ) OR [3 માર્ક્સ]#
Transaction નાં ગુણધર્મો ઉદાહરણ સાથે સમજાવો.
ઉત્તર:
ટ્રાન્ઝેક્શનના ACID ગુણધર્મો:
કોષ્ટક: ACID ગુણધર્મો
ગુણધર્મ | વર્ણન | ઉદાહરણ |
---|---|---|
Atomicity | બધા ઓપરેશન સફળતાપૂર્વક પૂર્ણ થાય અથવા કોઈ નહીં | બેંક ટ્રાન્સફર - ડેબિટ અને ક્રેડિટ બંને એકસાથે સફળ થવા જોઈએ અથવા નિષ્ફળ થવા જોઈએ |
Consistency | ટ્રાન્ઝેક્શન પહેલાં અને પછી ડેટાબેઝ સુસંગત સ્થિતિમાં રહે | $100 ટ્રાન્સફર કર્યા પછી, સિસ્ટમમાં કુલ પૈસા અપરિવર્તિત રહે |
Isolation | સમાંતર ટ્રાન્ઝેક્શન એકબીજામાં દખલ ન કરે | ટ્રાન્ઝેક્શન A ટ્રાન્ઝેક્શન B ના આંશિક પરિણામો જોતું નથી |
Durability | એકવાર કમિટ થયા પછી, ફેરફારો કાયમી છે | પાવર ફેલ્યોર પણ કમિટેડ ટ્રાન્ઝેક્શનને ખોવાતું નથી |
આકૃતિ:
graph TD A[ACID ગુણધર્મો] --> B[Atomicity] A --> C[Consistency] A --> D[Isolation] A --> E[Durability] B --> B1[All or Nothing] C --> C1[Valid State Transition] D --> D1[Concurrent Execution] E --> E1[Permanent Changes]
ઉદાહરણ:
-- ATM Withdrawal ટ્રાન્ઝેક્શન
BEGIN TRANSACTION;
-- બેલેન્સ ચેક કરો
SELECT balance FROM accounts WHERE account_id = 'A123';
-- જો પૂરતું હોય, તો બેલેન્સ અપડેટ કરો
UPDATE accounts SET balance = balance - 100 WHERE account_id = 'A123';
-- ઉપાડની નોંધ કરો
INSERT INTO transactions (account_id, type, amount, date)
VALUES ('A123', 'WITHDRAWAL', 100, SYSDATE);
-- જો બધા ઓપરેશન સફળ હોય તો
COMMIT;
-- જો કોઈ ઓપરેશન નિષ્ફળ જાય તો
-- ROLLBACK;
END TRANSACTION;
મ્નેમોનિક: “ACID” - Atomicity Consistency Isolation Durability
પ્રશ્ન 5(બ) OR [4 માર્ક્સ]#
ઉપર Q.5 (b) માં આપેલ “Faculty” અને “CT” ટેબલનો ઉપયોગ કરીને સેટ ઓપરેટર દ્વારા નીચેની Query લખો. ૧. Faculty અથવા CT હોય તેવા વ્યક્તિઓની યાદી બનાવો. ૨. Faculty અને CT હોય તેવા વ્યક્તિઓની યાદી બનાવો. ૩. માત્ર Faculty હોય તેવા વ્યક્તિઓની યાદી બનાવો. ૪. માત્ર CT હોય તેવા વ્યક્તિઓની યાદી બનાવો.
ઉત્તર:
ટેબલ ડેટા: Faculty ટેબલ:
FacultyName | ErNo | Dept |
---|---|---|
Prakash | FC01 | ICT |
Ronak | FC02 | IT |
Rakesh | FC03 | EC |
Kinjal | FC04 | ICT |
CT (ક્લાસ ટીચર) ટેબલ:
Dept | CTName |
---|---|
EC | Rakesh |
CE | Jigar |
ICT | Prakash |
IT | Gunjan |
કોડબ્લોક:
-- ૧. Faculty અથવા CT હોય તેવા વ્યક્તિઓની યાદી બનાવો
SELECT FacultyName AS Name FROM Faculty
UNION
SELECT CTName AS Name FROM CT;
-- ૨. Faculty અને CT હોય તેવા વ્યક્તિઓની યાદી બનાવો
SELECT FacultyName AS Name FROM Faculty
INTERSECT
SELECT CTName AS Name FROM CT;
-- ૩. માત્ર Faculty હોય તેવા વ્યક્તિઓની યાદી બનાવો
SELECT FacultyName AS Name FROM Faculty
MINUS
SELECT CTName AS Name FROM CT;
-- ૪. માત્ર CT હોય તેવા વ્યક્તિઓની યાદી બનાવો
SELECT CTName AS Name FROM CT
MINUS
SELECT FacultyName AS Name FROM Faculty;
આકૃતિ:
venn { sets = [ {sets: ["Faculty"], size: 4, label: "Faculty"}, {sets: ["CT"], size: 4, label: "CT"} ] intersections = [ {sets: ["Faculty", "CT"], size: 2, label: "Prakash, Rakesh"} ] sets = [ {sets: ["Faculty"], size: 2, label: "Ronak, Kinjal"}, {sets: ["CT"], size: 2, label: "Jigar, Gunjan"} ] }
પરિણામો:
- UNION: Prakash, Ronak, Rakesh, Kinjal, Jigar, Gunjan
- INTERSECT: Prakash, Rakesh
- MINUS (Faculty - CT): Ronak, Kinjal
- MINUS (CT - Faculty): Jigar, Gunjan
મ્નેમોનિક: “UIMM” - Union Intersect Minus Minus
પ્રશ્ન 5(ક) OR [7 માર્ક્સ]#
View serializability વિસ્તારથી સમજાવો.
ઉત્તર:
View Serializability: એક શેડ્યૂલ view serializable છે જો તે કોઈ સીરિયલ શેડ્યૂલના view equivalent હોય, એટલે કે તે ડેટાબેઝની એક જ “દૃશ્ય” (અથવા અંતિમ સ્થિતિ) ઉત્પન્ન કરે.
કોષ્ટક: Conflict Serializability સાથે તુલના
પાસું | View Serializability | Conflict Serializability |
---|---|---|
વ્યાખ્યા | રીડ અને રાઇટના અંતિમ પરિણામો પર આધારિત | ઓપરેશન વચ્ચેના કોન્ફ્લિક્ટ પર આધારિત |
શરત | પ્રારંભિક રીડ, અંતિમ લખાણ, અને રીડ-રાઇટ ડિપેન્ડન્સી જાળવે છે | ઓપરેશન વચ્ચેના બધા કોન્ફ્લિક્ટ જાળવે છે |
સ્કોપ | શેડ્યૂલનો વ્યાપક વર્ગ | view serializable શેડ્યૂલનો સબસેટ |
ટેસ્ટિંગ | પરીક્ષણ વધુ જટિલ | precedence ગ્રાફ વડે ટેસ્ટ કરી શકાય |
આકૃતિ:
graph TD A[View Serializable શેડ્યૂલ] -->|subset of| B[તમામ શક્ય શેડ્યૂલ] C[Conflict Serializable શેડ્યૂલ] -->|subset of| A subgraph "View Equivalence આવશ્યકતાઓ" D[પ્રારંભિક રીડ મેચ] E[અંતિમ રાઇટ મેચ] F[રીડ-રાઇટ ડિપેન્ડન્સી મેચ] end
View Equivalence શરતો:
- પ્રારંભિક રીડ: જો T1 શેડ્યૂલ S1 માં ડેટા આઇટમ A ની પ્રારંભિક વેલ્યુ વાંચે છે, તો તેણે S2 માં પણ પ્રારંભિક વેલ્યુ વાંચવી જોઈએ.
- અંતિમ રાઇટ: જો T1 શેડ્યૂલ S1 માં ડેટા આઇટમ A પર અંતિમ લખાણ કરે છે, તો તેણે S2 માં પણ અંતિમ લખાણ કરવું જોઈએ.
- રીડ-રાઇટ ડિપેન્ડન્સી: જો T1 શેડ્યૂલ S1 માં T2 દ્વારા લખાયેલ A ની વેલ્યુ વાંચે છે, તો તેણે S2 માં પણ T2 દ્વારા લખાયેલ વેલ્યુ વાંચવી જોઈએ.
ઉદાહરણ - View Serializable પરંતુ Conflict Serializable નહીં: બ્લાઇન્ડ રાઇટ (વાંચ્યા વિના લખાણ) ધરાવતા ટ્રાન્ઝેક્શન ધ્યાનમાં લો:
- T1: W1(A)
- T2: W2(A)
શેડ્યૂલ S: W1(A), W2(A) - T1→T2 અને T2→T1 બંને માટે view serializable છે (અંતિમ લખાણ હંમેશા T2 દ્વારા થાય છે) પરંતુ W1(A) અને W2(A) કોન્ફ્લિક્ટ કરે છે, એટલે કોન્ફ્લિક્ટ ગ્રાફમાં બંને દિશામાં એજ હશે.
મ્નેમોનિક: “IRF” - Initial reads, Result writes, Final view