Skip to content

Latest commit

 

History

History
190 lines (128 loc) · 16 KB

File metadata and controls

190 lines (128 loc) · 16 KB

ڈیٹا کے ساتھ کام کرنا: رلیشنل ڈیٹا بیسز

 اسکیچنوٹ بذریعہ (@sketchthedocs)
ڈیٹا کے ساتھ کام کرنا: رلیشنل ڈیٹا بیسز - اسکیچنوٹ بذریعہ @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
-- Auckland

SELECT وہ جگہ ہے جہاں آپ کالموں کی فہرست دیتے ہیں، اور 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 اور رلیشنل ڈیٹا بیس کے تصورات کی مزید دریافت جاری رکھ سکیں۔

اسائنمنٹ

ایئرپورٹ ڈیٹا دکھانا


دستخطی نوٹ:
یہ دستاویز AI ترجمہ سروس Co-op Translator کے ذریعے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر عائد نہیں ہوتی۔