![]() |
|---|
| ڈیٹا کے ساتھ کام کرنا: رلیشنل ڈیٹا بیسز - اسکیچنوٹ بذریعہ @nitya |
امکان ہے کہ آپ نے ماضی میں معلومات ذخیرہ کرنے کے لیے اسپریڈشیٹ استعمال کی ہو۔ آپ کے پاس قطاروں اور کالموں کا ایک سیٹ ہوتا تھا، جہاں قطاروں میں معلومات (یا ڈیٹا) ہوتی تھی، اور کالم معلومات کی وضاحت کرتے تھے (جسے کبھی کبھار میٹا ڈیٹا بھی کہا جاتا ہے)۔ ایک رلیشنل ڈیٹا بیس اس بنیادی اصول پر مبنی ہوتا ہے کہ ٹیبلز میں کالم اور قطاریں ہوتی ہیں، جو آپ کو معلومات کو متعدد ٹیبلز میں پھیلانے کی اجازت دیتا ہے۔ اس سے آپ زیادہ پیچیدہ ڈیٹا کے ساتھ کام کر سکتے ہیں، نقل سے بچ سکتے ہیں، اور ڈیٹا کو دریافت کرنے کے طریقے میں لچک حاصل کر سکتے ہیں۔ آئیے رلیشنل ڈیٹا بیس کے تصورات کو دریافت کرتے ہیں۔
رلیشنل ڈیٹا بیس کے مرکز میں ٹیبلز ہوتے ہیں۔ بالکل اسپریڈشیٹ کی طرح، ایک ٹیبل کالموں اور قطاروں کا مجموعہ ہوتا ہے۔ قطار میں وہ ڈیٹا یا معلومات ہوتی ہے جن کے ساتھ ہم کام کرنا چاہتے ہیں، جیسے کسی شہر کا نام یا بارش کی مقدار۔ کالم وہ ڈیٹا بیان کرتے ہیں جو وہ ذخیرہ کرتے ہیں۔
آئیے اپنے سفر کا آغاز کرتے ہیں اور شہروں کی معلومات ذخیرہ کرنے کے لیے ایک ٹیبل بناتے ہیں۔ ہم ان کے نام اور ملک سے شروع کر سکتے ہیں۔ آپ اسے ایک ٹیبل میں اس طرح ذخیرہ کر سکتے ہیں:
| شہر | ملک |
|---|---|
| ٹوکیو | جاپان |
| اٹلانٹا | ریاستہائے متحدہ |
| آکلینڈ | نیوزی لینڈ |
نوٹ کریں کہ کالم کے نام شہر، ملک اور آبادی ذخیرہ کیے جانے والے ڈیٹا کی وضاحت کرتے ہیں، اور ہر قطار میں ایک شہر کی معلومات ہوتی ہے۔
امکان ہے کہ اوپر والا ٹیبل آپ کو نسبتاً مانوس لگے۔ آئیے اپنے بڑھتے ہوئے ڈیٹا بیس میں کچھ اضافی ڈیٹا شامل کریں - سالانہ بارش (ملی میٹر میں)۔ ہم 2018، 2019 اور 2020 کے سالوں پر توجہ مرکوز کریں گے۔ اگر ہم اسے ٹوکیو کے لیے شامل کریں تو یہ کچھ اس طرح نظر آ سکتا ہے:
| شہر | ملک | سال | مقدار |
|---|---|---|---|
| ٹوکیو | جاپان | 2020 | 1690 |
| ٹوکیو | جاپان | 2019 | 1874 |
| ٹوکیو | جاپان | 2018 | 1445 |
آپ ہمارے ٹیبل کے بارے میں کیا نوٹ کرتے ہیں؟ آپ دیکھ سکتے ہیں کہ ہم شہر کے نام اور ملک کو بار بار دہرارہے ہیں۔ یہ کافی سٹوریج لے سکتا ہے، اور متعدد نقول رکھنے کی ضرورت نہیں ہے۔ آخرکار، ٹوکیو کا صرف ایک نام ہے جس میں ہم دلچسپی رکھتے ہیں۔
ٹھیک ہے، آئیے کچھ اور کوشش کرتے ہیں۔ ہر سال کے لیے نئے کالم شامل کرتے ہیں:
| شہر | ملک | 2018 | 2019 | 2020 |
|---|---|---|---|---|
| ٹوکیو | جاپان | 1445 | 1874 | 1690 |
| اٹلانٹا | ریاستہائے متحدہ | 1779 | 1111 | 1683 |
| آکلینڈ | نیوزی لینڈ | 1386 | 942 | 1176 |
اگرچہ اس سے قطار کی نقل سے بچا جاتا ہے، لیکن یہ کچھ اور چیلنجز بھی پیدا کرتا ہے۔ ہر نئے سال کے لیے ہمیں اپنے ٹیبل کی ساخت میں ترمیم کرنی پڑے گی۔ مزید برآں، جیسے جیسے ہمارا ڈیٹا بڑھتا ہے، سالوں کو کالم کے طور پر رکھنا اقدار کو بازیافت اور حساب کرنے میں مشکل بنائے گا۔
اسی لیے ہمیں متعدد ٹیبلز اور تعلقات کی ضرورت ہے۔ اپنے ڈیٹا کو توڑ کر ہم نقل سے بچ سکتے ہیں اور اپنے ڈیٹا کے ساتھ کام کرنے میں زیادہ لچک حاصل کر سکتے ہیں۔
آئیے اپنے ڈیٹا پر واپس آتے ہیں اور فیصلہ کرتے ہیں کہ ہم چیزوں کو کیسے تقسیم کرنا چاہتے ہیں۔ ہم جانتے ہیں کہ ہم اپنے شہروں کے نام اور ملک کو ذخیرہ کرنا چاہتے ہیں، لہٰذا یہ شاید ایک ٹیبل میں سب سے بہتر کام کرے گا۔
| شہر | ملک |
|---|---|
| ٹوکیو | جاپان |
| اٹلانٹا | ریاستہائے متحدہ |
| آکلینڈ | نیوزی لینڈ |
لیکن اگلا ٹیبل بنانے سے پہلے، ہمیں یہ معلوم کرنا ہوگا کہ ہر شہر کو کیسے حوالہ دیا جائے۔ ہمیں کسی قسم کا شناخت کنندہ، ID یا (تکنیکی ڈیٹا بیس اصطلاحات میں) پرائمری کی کی ضرورت ہے۔ پرائمری کی ایک ایسی قدر ہے جو ٹیبل میں ایک مخصوص قطار کی شناخت کے لیے استعمال ہوتی ہے۔ اگرچہ یہ خود کسی قدر پر مبنی ہو سکتی ہے (مثلاً ہم شہر کے نام کو استعمال کر سکتے ہیں)، لیکن یہ تقریباً ہمیشہ ایک نمبر یا دیگر شناخت کنندہ ہونا چاہیے۔ ہم نہیں چاہتے کہ ID کبھی بدلے کیونکہ اس سے تعلق ٹوٹ جائے گا۔ آپ اکثر دیکھیں گے کہ پرائمری کی یا ID خودکار طور پر پیدا ہونے والا نمبر ہوتا ہے۔
✅ پرائمری کی کو اکثر PK کے طور پر مخفف کیا جاتا ہے
| city_id | شہر | ملک |
|---|---|---|
| 1 | ٹوکیو | جاپان |
| 2 | اٹلانٹا | ریاستہائے متحدہ |
| 3 | آکلینڈ | نیوزی لینڈ |
✅ آپ نوٹ کریں گے کہ ہم اس سبق کے دوران "id" اور "پرائمری کی" کی اصطلاحات کو باری باری استعمال کرتے ہیں۔ یہاں کے تصورات DataFrames پر بھی لاگو ہوتے ہیں، جنہیں آپ بعد میں دریافت کریں گے۔ DataFrames "پرائمری کی" کی اصطلاح استعمال نہیں کرتے، تاہم آپ دیکھیں گے کہ وہ تقریباً اسی طرح کام کرتے ہیں۔
اپنے شہروں کے ٹیبل کے بن جانے کے بعد، آئیے بارش کا ڈیٹا ذخیرہ کریں۔ شہر کی مکمل معلومات کو دہرائے بغیر، ہم ID استعمال کر سکتے ہیں۔ ہمیں یہ بھی یقینی بنانا چاہیے کہ نئے بنائے گئے ٹیبل میں بھی id کالم ہو، کیونکہ تمام ٹیبلز میں id یا پرائمری کی ہونا چاہیے۔
| rainfall_id | city_id | سال | مقدار |
|---|---|---|---|
| 1 | 1 | 2018 | 1445 |
| 2 | 1 | 2019 | 1874 |
| 3 | 1 | 2020 | 1690 |
| 4 | 2 | 2018 | 1779 |
| 5 | 2 | 2019 | 1111 |
| 6 | 2 | 2020 | 1683 |
| 7 | 3 | 2018 | 1386 |
| 8 | 3 | 2019 | 942 |
| 9 | 3 | 2020 | 1176 |
نوٹ کریں کہ نئے بنائے گئے rainfall ٹیبل کے اندر city_id کالم ہے۔ اس کالم میں وہ قدریں شامل ہیں جو cities ٹیبل میں IDs کی طرف اشارہ کرتی ہیں۔ تکنیکی رلیشنل ڈیٹا اصطلاحات میں، اسے foreign key کہا جاتا ہے؛ یہ کسی دوسرے ٹیبل کی پرائمری کی ہوتی ہے۔ آپ اسے صرف ایک حوالہ یا پوائنٹر سمجھ سکتے ہیں۔ city_id 1 ٹوکیو کی طرف اشارہ کرتا ہے۔
Note
foreign key کو اکثر FK کے طور پر مخفف کیا جاتا ہے
جب ہمارا ڈیٹا دو ٹیبلز میں تقسیم ہو چکا ہے، تو آپ سوچ رہے ہوں گے کہ ہم اسے کیسے بازیافت کرتے ہیں۔ اگر ہم MySQL، SQL Server یا Oracle جیسے رلیشنل ڈیٹا بیس استعمال کر رہے ہیں، تو ہم ایک زبان استعمال کر سکتے ہیں جسے Structured Query Language یا SQL کہتے ہیں۔ SQL (جسے کبھی کبھی sequel بھی کہا جاتا ہے) ایک معیاری زبان ہے جو رلیشنل ڈیٹا بیس میں ڈیٹا بازیافت اور ترمیم کے لیے استعمال ہوتی ہے۔
ڈیٹا بازیافت کرنے کے لیے آپ SELECT کمانڈ استعمال کرتے ہیں۔ بنیادی طور پر، آپ وہ کالم منتخب کرتے ہیں جو آپ دیکھنا چاہتے ہیں اور ان ٹیبلز سے جہاں وہ موجود ہیں۔ اگر آپ صرف شہروں کے نام دکھانا چاہتے ہیں، تو آپ درج ذیل استعمال کر سکتے ہیں:
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- AucklandSELECT وہ جگہ ہے جہاں آپ کالموں کی فہرست دیتے ہیں، اور FROM وہ جگہ ہے جہاں آپ ٹیبلز کی فہرست دیتے ہیں۔
Note
SQL کی نحو کیس حساس نہیں ہوتی، یعنی select اور SELECT کا مطلب ایک ہی ہوتا ہے۔ تاہم، آپ جس قسم کا ڈیٹا بیس استعمال کر رہے ہیں اس کے لحاظ سے کالم اور ٹیبلز کیس حساس ہو سکتے ہیں۔ اس لیے پروگرامنگ میں ہمیشہ سب کچھ کیس حساس سمجھنا ایک بہترین عمل ہے۔ SQL کوئریز لکھتے وقت عام رواج ہے کہ کی ورڈز کو تمام بڑے حروف میں لکھا جائے۔
اوپر والا کوئری تمام شہروں کو دکھائے گا۔ فرض کریں ہم صرف نیوزی لینڈ کے شہر دکھانا چاہتے ہیں۔ ہمیں کسی قسم کا فلٹر چاہیے۔ SQL کا کی ورڈ اس کے لیے WHERE ہے، یعنی "جہاں کچھ سچ ہو"۔
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Aucklandاب تک ہم نے ایک ٹیبل سے ڈیٹا بازیافت کیا ہے۔ اب ہم دونوں cities اور rainfall کے ڈیٹا کو ایک ساتھ لانا چاہتے ہیں۔ یہ جوڑ کر کے کیا جاتا ہے۔ آپ درحقیقت دونوں ٹیبلز کے درمیان ایک ربط بنائیں گے، اور ہر ٹیبل کے ایک کالم کی قدروں کو ملائیں گے۔
ہمارے مثال میں، ہم rainfall میں city_id کالم کو cities میں city_id کالم کے ساتھ ملائیں گے۔ اس سے بارش کی مقدار متعلقہ شہر کے ساتھ مل جائے گی۔ جوڑ کی قسم جسے ہم انجام دیں گے اسے inner join کہا جاتا ہے، یعنی اگر کوئی قطار دوسری ٹیبل کی کسی قطار سے میل نہیں کھاتی تو وہ ظاہر نہیں ہوگی۔ ہمارے معاملے میں ہر شہر کے پاس بارش کا ڈیٹا ہے، اس لیے سب کچھ ظاہر ہوگا۔
آئیے 2019 کے لیے تمام شہروں کی بارش بازیافت کریں۔
ہم اسے مراحل میں کریں گے۔ پہلا مرحلہ ڈیٹا کو جوڑنا ہے، جس کے لیے ہم نے پہلے نمایاں کیا تھا کہ کون سے کالم جوڑنے کے لیے استعمال ہوں گے - city_id۔
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_idہم نے دو کالمز کو نمایاں کیا ہے جنہیں ہم چاہتے ہیں، اور یہ کہ ہم ٹیبلز کو city_id کے ذریعے جوڑنا چاہتے ہیں۔ اب ہم WHERE بیان شامل کر سکتے ہیں تاکہ صرف سال 2019 کو فلٹر کیا جا سکے۔
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942رلیشنل ڈیٹا بیسز معلومات کو متعدد ٹیبلز میں تقسیم کرنے کے گرد گھومتے ہیں، جنہیں پھر دکھانے اور تجزیہ کرنے کے لیے دوبارہ جوڑا جاتا ہے۔ یہ حسابات کرنے اور ڈیٹا کو مختلف طریقوں سے تبدیل کرنے کے لیے اعلیٰ درجے کی لچک فراہم کرتا ہے۔ آپ نے رلیشنل ڈیٹا بیس کے بنیادی تصورات دیکھے، اور دو ٹیبلز کے درمیان جوڑ کیسے کیا جاتا ہے۔
انٹرنیٹ پر متعدد رلیشنل ڈیٹا بیسز دستیاب ہیں۔ آپ اوپر سیکھی گئی مہارتوں کا استعمال کرتے ہوئے ڈیٹا کو دریافت کر سکتے ہیں۔
Microsoft Learn پر کئی وسائل دستیاب ہیں تاکہ آپ SQL اور رلیشنل ڈیٹا بیس کے تصورات کی مزید دریافت جاری رکھ سکیں۔
- رلیشنل ڈیٹا کے تصورات کی وضاحت کریں
- Transact-SQL کے ساتھ کوئری شروع کریں (Transact-SQL SQL کا ایک ورژن ہے)
- Microsoft Learn پر SQL کا مواد
دستخطی نوٹ:
یہ دستاویز AI ترجمہ سروس Co-op Translator کے ذریعے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر عائد نہیں ہوتی۔
