ڈیٹابیس اوریکل ڈیٹا بیس

ارادہ ہے ڈیٹا بیس پر عموما اور اوریکل پر خصوصا ایک دو دھاگے شروع کیے جائیں جس میں اوریکل اور ایس کیو ایل پر گفتگو کی جائے اور اسے سیکھنے اور سکھانے کی کوشش کی جائے۔ اس سلسلے میں بہت زیادہ بنیادی باتوں پر بات نہیں ہوگی مگر اگر وقت ہوا تو ساتھ ساتھ کچھ بنیادی باتوں پر بات ہوتی جائے گی۔ اس سلسلے میں اگر کچھ اور دوست اور احباب شامل ہونا چاہیں تو کافی آسانی ہو جائے گی اور سلسلہ دلچسپ بھی رہے گا۔

تبصرے اور تجاویز کے لیے http://یہاں تشریف لائیں۔
 
یوں تو ڈیٹا بیس کی بہت سی قسمیں ہیں مگر فی الوقت ہم توجہ Relational Database پر مرکوز رکھیں گے ۔ عام طور پر ڈیٹا بیس اکیلی نہیں ہوتی بلکہ اس کے ساتھ ایک مینیجمنٹ سسٹم بھی ہوتا ہے اور یوں جدید ڈیٹا بیس سافٹ وئیر عموما
RDBMS - Relational Database Management Systems
کہلاتا ہے جس کی مثالیں مندرجہ ذیل ہیں

اوریکل ORACLE
ڈی بی ٹو DB2
ایس کیو ایل سرور SQL Server

Relational Database Management Systems کا متعارف کروانے کا سہرا ایک IBM کے انجنیئر ڈاکٹر ای ایف کوڈ Dr. E.F.Codd کے سر جاتا ہے جنہوں نے 1970 میں اپنے ایک مقالے​
A Relational Model of Data for Large Shared Data Banks
میں اسے شائع کیا اور اس کے ساتھ ہی سافٹ ویئر کی دنیا میں ایک انقلاب برپا کر دیا۔​
 
RDBMS سے پہلے ، سافٹ ویئر ڈویلپر ایسے اطلاقیے بناتے رہتے تھے جس میں ڈیٹا کا استعمال ہوتا تھا۔ ان اطلاقیوں میں عموما ڈیٹ کو مختلف شکلوں میں محفوظ ، تبدیل اور واپس حاصل کیا جاتا تھا چونکہ ڈیٹا ہر اطلاقیے میں مختلف ہوتا تھا مگر مطلوبہ وظیفہ ایک جیسے ہی ہوا کرتا تھا یعنی محفوظ کرنا ، تبدیل کرنا اور واپس حاصل کرنا۔ اس مشترکہ وظیفہ کی ضرورت کے باوجود کوئی ایسا مشترکہ طریقہ کار موجود نہیں تھا جو اس کام کو پورا کرتا۔ ڈیٹا بیس ڈیزائن ، ڈیٹا محفوظ ، تبدیل اور حاصل کرنے کے لیے کوئی اسٹینڈرڈ یا منطقی اصولوں کا سیٹ موجود نہیں تھا جس کی وجہ سے ہر پروگرامر اپنی ہی منطق کے تحت اطلاقیوں میں ڈیٹا کے مسائل سے نمٹتا تھا۔ اس کا نتیجہ سست رفتار ڈویلپمنٹ اور ذاتی ڈیٹا اسٹرکچر کی شکل میں نکلتا۔ پروگرامر حضرات کے لیے اپنا ڈیٹا کسی سے شیئر کرنا انتہائی مشکل عمل ہوتا اور اگر وہ کرنا بھی چاہتے تو اس کے لیے انہیں بہت دشواری اور سخت محنت کا سامنا کرنا پڑتا۔ کچھ بہتر اور آسان کی ضرورت تھی۔ اس ضرورت کو پورا کیا ریلیشنل ڈیٹا بیس مینیجمنٹ سسٹم RDBMS نے اور کرنے والے تھے ڈاکٹر ای ایف کوڈ جو کہ IBM کے انجنیئر تھے۔
 
Relational Model
ڈاکٹر کوڈ کے ذہن کے میں ایسے سسٹم کا خاکہ تھا جس میں پروگرامر اپنی ڈیٹا بیس بنا سکے جس میں اسٹینڈرڈ فنکش اور طریقہ کار اپناتے ہوئے ڈیٹا کو محفوظ ، تبدیل اور حاصل کیا جا سکے چند اندرونی مشترکہ فنکشن کی مدد سے جو ڈیٹا بیس میں ہی موجود ہوں۔ عام طور پر یہ خیال کیا جاتا ہے کہ لفظ “Relation“ (تعلق) جو کہ ریلیشنل ماڈل میں موجود ہے وہ ریلیشنل ڈیٹا بیس میں موجود ٹیبلز کے درمیان تعلق () جوڑنے کی وجہ سے استعمال ہوتا ہے۔ گو کہ یہ اس اصطلاح کے متعلق سوچنے کا آسان طریقہ ہے مگر غلط ہے۔ درحقیقت لفظ “Relation“ (تعلق) کی جڑیں اس اصطلاح سے ملتی ہیں جس میں ڈاکٹر کوڈ نے ریلیشنل ماڈل کو بیان کرنے کے لیے اسے استعمال کیا۔ ٹیبل کوڈ کی تحریر میں ایک تعلق (باہمی معلومات کا سیٹ) کو ظاہر کرنے کے لیے استعمال ہوا۔ ڈاکٹر کوڈ نے Relation , Attribute , Tuple کی اصطلاحات استعمال کی جبکہ عموما ہم ٹیبل ، کالم اور قطار کی اصطلاحات استعمال کرتے ہیں۔

Relation ---------> Table
Attribute -------> Column
Tuple ------------ Row

Relational Model کا اطلاق ڈیٹا بیس اور ڈیٹا بیس مینیجمنٹ سسٹم دونوں پر ہوتا ہے۔ Relational Model کے ابتدائی خدوخال ڈاکٹر کوڈ کے بارہ اصولوں پر مبنی تھے ( اب بڑھ کر تین سو سے زائد ہو چکے ہیں ) جن کی مدد سے پرکھا جا سکتا ہے کہ کوئی بھی DBMS کس حد تک ریلیشنل ماڈل پر پورا اترتا ہے.
Relational Model کا اطلاق ڈیٹا بیس اور ڈیٹا بیس مینیجمنٹ سسٹم دونوں پر ہوتا ہے۔ Relational Model کے ابتدائی خدوخال ڈاکٹر کوڈ کے بارہ اصولوں پر مبنی تھے ( اب بڑھ کر تین سو سے زائد ہو چکے ہیں ) جن کی مدد سے پرکھا جا سکتا ہے کہ کوئی بھی DBMS کس حد تک ریلیشنل ماڈل پر پورا اترتا ہے.
 
Relational Database Design

ڈیٹابیس ڈیزائن کرتے ہوئے کوشش کی جاتی ہے کس طرح بہترین طریقے سے حقیقی دنیا میں چلتے ہوئے سسٹم کو ڈیٹابیس ماڈل میں ڈھالا جا سکے۔ اس عمل میں فیصلہ کیا جاتا ہے کہ کونسے ٹیبل بنائے جائیں گے، کونسے کالم شامل ہوں گے، ٹیبل کے درمیان کیا تعلق ہوگا۔ ایک عمدہ ڈیٹا بیس ڈیزائن وقت اور کوشش سے بنتا ، بگڑتا اور بہتر ہوتا ہے۔ اس کے لیے کوئی شارٹ کٹ یا دو جمع دو کا فارمولا نہیں ہے۔

Tables and Keys
ریلیشنل ماڈل میں ٹیبلز اکائیوں(Entities) کو ظاہر کرتے ہیں۔ اکائی(Entity) کوئی بھی ایسی شے ہو سکتی ہے جس کے بارے میں ہم معلومات محفوظ کرنا چاہیں جیسا کہ طالب علم ، استاد ، کورس۔
RDBMS میں ڈیٹا ٹیبل () میں محفوظ کیا جاتا ہے جس میں ایک یا زائد کالم (Column) موجود ہوتے ہیں جو کسی نہ کسی معلومات پر مشتمل ہوتے ہیں(اگر ٹیبل خالی نہ ہو تو اس میں ایک یا زائد قطاریں Row بھی ہوں گی) ۔ کالم کو فیلڈ اور قطار کو ریکارڈ بھی کہا جاتا ہے۔
ریلیشنل ماڈل تقاضہ کرتا ہے کہ ہر ٹیبل میں موجود ہر ریکارڈ (Row) منفرد ہو کیونکہ اگر ٹیبل میں غیر منفرد ریکارڈ ہوں گے تو بذریعہ پروگرامنگ کسی مخصوص ریکارڈ اور فیلڈ تک پہنچنا ممکن نہ ہوگا۔ اس سے بہت سے اشتمالات اور پیچیدگیاں پیدا ہوتی ہیں جن سے پرہیز کرنا چاہیے۔ کسی بھی ٹیبل میں انفرادیت پیدا کرنے کے لیے اس میں ایک پرائمری کی (Primary Key) کا اضافہ کیا جاتا ہے جو کہ ٹیبل کا ایسا کالم ہوتا ہے جس میں تمام مقداریں(values) منفرد ہوتی ہیں. ہر ٹیبل میں صرف اور صرف ایک پرائمری کی ہو سکتی ہے جبکہ کسی ایک تیبل میں بہت سے کالم منفرد مقداروں کی شرط پر پورا اتر سکتے ہیں۔ تمام ایسے کالم یا کالموں کے مجموعہ جن میں منفرد مقدار ہوں وہ امیدوار کیز (Candidate Keys) کہلاتے ہیں اور انہی میں سے پرائمری کی کا انتخاب ہوتا ہے۔ پرائمری کی کے انتخاب کے بعد بچنے والے تمام امیدوار کی کالم متبادل کیز(Alternate keys) کہلاتے ہیں۔ کیز سادہ بھی ہو سکتی ہیں اور کثرت (composite) بھی. سادہ ایک کالم پر مشتمل ہوتی ہے اور کثرت والی دو یا زائد کالموں سے مل کر بنتی ہے۔
 
کونسی امیدوار کی پرائمری بننی چاہیے اس کا کوئی لگا بندھا اصول نہیں ہے بلکہ زیادہ تر یہ ڈیٹا بیس ڈیزائنر اور ڈیٹا ماڈلر کے ہاتھ میں ہی ہوتا ہے۔ Fabian Pascal اپنی کتاب SQL and Relational Basics میں اس پر اپنی رائے دیتے ہوئے لکھتے ہیں کہ اس کا فیصلہ کم از کم کے اصول پر مبنی ہونا چاہیے (یعنی کم سے کم ضروری کالم) ، پائیداری (ایسا فیلڈ جو کم شاذ و نادر بدلتی ہو) اور سادگی و شناسائی (ایسی فیلڈ جو سادہ بھی ہو اور صارف کے لیے جانی پہچانی بھی)۔ مثال کے طور پر ایک کمپنی کے گاہکوں کا ٹیبل لیتے ہیں۔ جس میں مندرجہ ذیل فیلڈ موجود ہیں

Table Name: Customer
CustomerId, LastName, FirstName, Address, City, State, ZipCode, Phone
 
اب ہم ٹیبل اور اس میں ڈیٹا کی بات کرتے ہیں۔ مندرجہ ذیل مثال میں ایک ٹیبل Company لیتے ہیں اور اس کے حوالے سے گفتگو کو آگے بڑھاتے ہیں۔
 
ai208.gif
 
Top