JavaRush /جاوا بلاگ /Random-UR /حصہ 2۔ DBMS ڈھانچہ، میزیں اور ڈیٹا کی اقسام

حصہ 2۔ DBMS ڈھانچہ، میزیں اور ڈیٹا کی اقسام

گروپ میں شائع ہوا۔
پہلا حصہ
حصہ 2۔ DBMS ڈھانچہ، میزیں اور ڈیٹا کی اقسام - 1
ہم اپنا سادہ اسٹاک ایکسچینج ایمولیٹر بناتے رہتے ہیں۔ یہاں ہم کیا کریں گے:
  • آئیے ایک ڈیٹا بیس تنظیم کا خاکہ بنائیں۔
  • ہم بیان کریں گے کہ یہ کیا، کیسے اور کہاں ذخیرہ کیا جاتا ہے۔
  • آئیے جانتے ہیں کہ ڈیٹا کا ایک دوسرے سے کیا تعلق ہے۔
  • آئیے SQL ٹیبل تخلیق کمانڈ CREATE TABLE , ڈیٹا ڈیفینیشن لینگویج ( DDL ) SQL زبان کی مثال کا استعمال کرتے ہوئے SQL کی بنیادی باتیں سیکھنا شروع کریں۔
  • آئیے جاوا پروگرام لکھنا جاری رکھیں۔ ہم JDBC اور تین درجے کے فن تعمیر کا استعمال کرتے ہوئے اپنے ڈیٹا بیس کو پروگرامی طور پر بنانے کے لیے java.sql کے لحاظ سے DBMS کے اہم افعال کو نافذ کرتے ہیں۔
یہ دو حصے زیادہ بڑے نکلے، کیونکہ ہمیں ایس کیو ایل کی بنیادی باتوں اور اندر سے ڈی بی ایم ایس کی تنظیم سے واقف ہونے کی ضرورت ہے، اور جاوا کے ساتھ مشابہت پیدا کرنے کی ضرورت ہے۔ کوڈ کی فہرستوں سے آپ کو بور نہ کرنے کے لیے، آخر میں پروگرام کے ساتھ متعلقہ کمٹ گیتھب ریپوزٹری کے لنکس موجود ہیں۔

ڈی بی ایم ایس ڈیزائن

درخواست کی تفصیل

آپ نے پہلے ہی سنا ہے کہ ڈیٹا اسٹوریج کو منظم کرنا پروگرامنگ کا ایک لازمی حصہ ہے۔ میں آپ کو یاد دلاتا ہوں کہ ہماری درخواست کا مقصد آسان ترین ایکسچینج ایمولیشن ہے:
  • ایسے حصص ہیں جن کی قیمت دیے گئے قواعد کے مطابق ٹریڈنگ دن کے دوران تبدیل ہو سکتی ہے۔
  • ابتدائی سرمایہ کے ساتھ تاجر ہیں؛
  • تاجر اپنے الگورتھم کے مطابق حصص خرید و فروخت کر سکتے ہیں۔
ایکسچینج ٹِکس میں کام کرتا ہے - وقت کی مقررہ مدت (ہمارے معاملے میں - 1 منٹ)۔ ایک ٹک کے دوران، اسٹاک کی قیمت بدل سکتی ہے، اور پھر تاجر حصص خرید یا فروخت کر سکتا ہے۔

ایکسچینج ایمولیشن ڈیٹا ڈھانچہ

آئیے انفرادی ایکسچینج اداروں کے ماڈلز کو کال کریں۔ راؤنڈنگ کی غلطیوں سے بچنے کے لیے، ہم کلاس کے ذریعے مالی رقوم کے ساتھ کام کریں گے BigDecimal(تفصیلات مضمون کے آخر میں دیے گئے لنک میں دیکھی جا سکتی ہیں)۔ آئیے ہر ماڈل کی ساخت کو مزید تفصیل سے بیان کرتے ہیں: فروغ:
وصف قسم تفصیل
name Srting نام
changeProbability int ہر ٹک پر فیصد کے طور پر شرح کی تبدیلی کا امکان
startPrice بڑا اعشاریہ ابتدائ اخراجات
delta int فی صد میں زیادہ سے زیادہ رقم جس سے موجودہ قدر تبدیل ہو سکتی ہے۔
حصص کی قیمت:
وصف قسم تفصیل
operDate لوکل ڈیٹ ٹائم شرح مقرر کرنے کا وقت (ٹک)
share پروموشن پروموشن کا لنک
rate بڑا اعشاریہ حصص کی قیمت
تاجر:
وصف قسم تفصیل
name تار شرح مقرر کرنے کا وقت (ٹک)
sfreqTick int لین دین کی تعدد۔ مدت کی طرف سے مخصوص، ticks میں، جس کے بعد تاجر آپریشن کرتا ہے۔
cash بڑا اعشاریہ حصص کے علاوہ رقم کی رقم
traidingMethod int تاجر کے ذریعہ استعمال کردہ الگورتھم۔ آئیے اسے مستقل نمبر کے طور پر سیٹ کریں، الگورتھم کا نفاذ جاوا کوڈ میں (مندرجہ ذیل حصوں میں) ہوگا۔
changeProbability int آپریشن مکمل ہونے کا امکان، فیصد
about تار شرح میں تبدیلی کا امکان، فی صد میں، ہر ٹک پر
تاجر کے اعمال:
وصف قسم تفصیل
operation int لین دین کی قسم (خرید یا فروخت)
traider تاجر تاجر لنک
shareRate حصص کی قیمت اسٹاک کی قیمت سے لنک کریں (بالترتیب، اسٹاک خود، اس کی شرح اور اسے جاری کرنے کا وقت)
amount لمبی لین دین میں شامل حصص کی تعداد
ہر ماڈل کی انفرادیت کو یقینی بنانے کے لیے، ہم طویلid قسم کی ایک خصوصیت شامل کریں گے ۔ یہ وصف ماڈل مثالوں میں منفرد ہو گا اور منفرد طور پر اس کی شناخت کرے گا۔ وہ صفات جو دوسرے ماڈلز (تاجر، اسٹاک، اسٹاک کی قیمت) کا حوالہ دیتے ہیں اس کو متعلقہ ماڈل کی منفرد شناخت کے لیے استعمال کر سکتے ہیں۔ ذہن میں فوراً خیال آتا ہے کہ ہم اس طرح کے ڈیٹا کو ذخیرہ کرنے کے لیے استعمال کر سکتے ہیں، متعلقہ ماڈل کہاں ہے۔ تاہم، درج ذیل شرائط کے تحت کوڈ میں اس کو نافذ کرنے کی کوشش کریں: idMap<Long, Object>Object
  • ڈیٹا کا سائز نمایاں طور پر دستیاب RAM کی مقدار سے زیادہ ہے۔
  • درجن بھر مختلف جگہوں سے ڈیٹا تک رسائی متوقع ہے۔
  • ڈیٹا کو بیک وقت تبدیل کرنے اور پڑھنے کی صلاحیت درکار ہے۔
  • ڈیٹا کی تشکیل اور سالمیت کے لیے قواعد کو یقینی بنانا ضروری ہے۔
...اور آپ کو ایسے کاموں کا سامنا کرنا پڑے گا جن پر عمل درآمد کے لیے مناسب قابلیت اور وقت درکار ہوتا ہے۔ "وہیل کو دوبارہ ایجاد کرنے" کی ضرورت نہیں ہے۔ ہمارے لیے پہلے ہی بہت کچھ سوچا اور لکھا جا چکا ہے۔ لہذا ہم استعمال کریں گے جو پہلے سے ہی سالوں میں تجربہ کیا گیا ہے.

جاوا میں ڈیٹا اسٹور کرنا

آئیے عمل پر غور کریں۔ Shareجاوا میں، ہم نے اس ماڈل کے لیے فیلڈز کے ساتھ ایک مخصوص کلاس بنائی ہے name, changeProbability, startPrice. deltaاور بہت سے شیئرز کو بطور محفوظ کیا گیا تھا Map<Long, Share>، جہاں کلید ہر شیئر کے لیے ایک منفرد شناخت کنندہ ہے۔
public class Share {
    private String name;
    private BigDecimal startPrice;
    private int changeProbability;
    private int delta;
}
Map<Long, Share> shares = new HashMap<>();
shares.put(1L, new Share("ibm", BigDecimal.valueOf(20.0), 15, 10));
shares.put(2L, new Share("apple", BigDecimal.valueOf(14.0), 25, 15));
shares.put(3L, new Share("google", BigDecimal.valueOf(12.0), 20, 8));
...
shares.put(50L, new Share("microsoft", BigDecimal.valueOf(17.5), 10,4 ));
ID کے ذریعے مطلوبہ پروموشن تک رسائی حاصل کرنے کے لیے، طریقہ استعمال کریں shares.get(id)۔ نام یا قیمت کے لحاظ سے اسٹاک تلاش کرنے کے کام کے لیے، ہم تمام ریکارڈز کو تلاش کریں گے جس کی ہمیں ضرورت ہے، وغیرہ۔ لیکن ہم دوسری طرف جائیں گے اور قدروں کو DBMS میں محفوظ کریں گے۔

ڈی بی ایم ایس میں ڈیٹا اسٹوریج

آئیے ڈی بی ایم ایس کے لیے ڈیٹا سٹوریج کے اصولوں کا ایک ابتدائی سیٹ بنائیں:
  • ڈی بی ایم ایس میں ڈیٹا کو ٹیبلز ( ٹیبل ) میں ترتیب دیا جاتا ہے، جو کہ ریکارڈ کا ایک سیٹ ہے۔
  • تمام ریکارڈز میں فیلڈز کے ایک جیسے سیٹ ہوتے ہیں۔ ٹیبل بناتے وقت وہ سیٹ ہوتے ہیں۔
  • فیلڈ کو ڈیفالٹ ویلیو ( DEFAULT ) پر سیٹ کیا جا سکتا ہے۔
  • ایک ٹیبل کے لیے، آپ رکاوٹیں ( ConstraINT ) سیٹ کر سکتے ہیں جو اس کے ڈیٹا کی سالمیت کو یقینی بنانے کے لیے اس کی ضروریات کو بیان کرتی ہے۔ یہ ٹیبل بنانے کے مرحلے پر کیا جا سکتا ہے ( ٹیبل بنائیں ) یا بعد میں شامل کیا جا سکتا ہے ( ALTER TABLE ... ADD Constraint
  • سب سے عام پابندی :
    • بنیادی کلید PRIMARY ہے (ہمارے معاملے میں ID)۔
    • منفرد ویلیو فیلڈ UNIQUE (گاڑی کی میز کے لیے VIN)۔
    • چیک فیلڈ کو چیک کیا جا رہا ہے (فیصد کی قدر 100 سے زیادہ نہیں ہو سکتی)۔ کسی فیلڈ پر نجی پابندیوں میں سے ایک NOT NULL یا NULL ہے ، جو ٹیبل فیلڈ میں NULL کو ذخیرہ کرنے سے منع کرتی ہے۔
    • تھرڈ پارٹی ٹیبل فارن KEY سے لنک کریں (اسٹاک پرائس ٹیبل میں اسٹاک سے لنک)۔
    • انڈیکس INDEX (کسی فیلڈ میں اقدار کی تلاش کو تیز کرنے کے لیے انڈیکس کرنا)۔
    • کسی ریکارڈ میں ترمیم ( INSERT , UPDATE ) نہیں ہوگی اگر اس کے فیلڈز کی قدریں پابندیوں (CONSTRAINT) سے متصادم ہوں۔
  • ہر ٹیبل میں ایک کلیدی فیلڈ (یا کئی) ہو سکتی ہے جسے کسی ریکارڈ کی منفرد شناخت کے لیے استعمال کیا جا سکتا ہے۔ ایسی فیلڈ (یا فیلڈز، اگر وہ ایک جامع کلید بناتے ہیں) ٹیبل کی بنیادی کلید بناتی ہے - PRIMARY KEY ۔
    • بنیادی کلید ٹیبل میں ریکارڈ کی انفرادیت کو یقینی بناتی ہے؛ اس پر ایک انڈیکس بنایا جاتا ہے، جو کلیدی قدر کی بنیاد پر پورے ریکارڈ تک فوری رسائی فراہم کرتا ہے۔
    • بنیادی کلید رکھنے سے ٹیبلز کے درمیان روابط بنانا بہت آسان ہو جاتا ہے۔ اگلا، ہم ایک مصنوعی بنیادی کلید استعمال کریں گے: پہلے ریکارڈ کے لیے id = 1، ہر اس کے بعد کا ریکارڈ ٹیبل میں داخل کیا جائے گا جس کی شناخت کی قدر میں ایک اضافہ ہوگا۔ اس کلید کو اکثر AutoIncrement یا AutoIdentity کہا جاتا ہے ۔
دراصل، اسٹاک کی ایک میز: حصہ 2۔ DBMS ڈھانچہ، میزیں اور ڈیٹا کی اقسام - 2 کیا اس معاملے میں اسٹاک کے نام کو کلید کے طور پر استعمال کرنا ممکن ہے؟ بڑے پیمانے پر - ہاں، لیکن اس بات کا امکان ہے کہ کچھ کمپنی مختلف حصص جاری کرتی ہے اور انہیں صرف اپنے نام سے پکارتی ہے۔ اس صورت میں اب انفرادیت باقی نہیں رہے گی۔ عملی طور پر، ایک مصنوعی بنیادی کلید اکثر استعمال ہوتی ہے۔ متفق ہوں، لوگوں کے ریکارڈ پر مشتمل جدول میں منفرد کلید کے طور پر مکمل نام کا استعمال انفرادیت کو یقینی نہیں بنائے گا۔ اس کے ساتھ ساتھ مکمل نام اور تاریخ پیدائش کا مجموعہ استعمال کرنا۔

DBMS میں ڈیٹا کی اقسام

کسی بھی دوسری پروگرامنگ زبان کی طرح، SQL میں ڈیٹا ٹائپنگ ہے۔ یہاں سب سے عام SQL ڈیٹا کی اقسام ہیں: عددی اقسام
ایس کیو ایل کی قسم SQL مترادفات جاوا میں ملاپ تفصیل
آئی این ٹی INT4، INTEGER java.lang.Integer 4 بائٹ انٹیجر، -2147483648 … 2147483647
بولین BOOL، BIT java.lang.Bolean درست غلط
TINYINT java.lang.Byte 1 بائٹ انٹیجر، -128 … 127
SMALLINT INT2 java.lang.Short 2 بائٹ انٹیجر، -32768 … 32767
بڑا INT8 java.lang.Long 8 بائٹ انٹیجر، -9223372036854775808 … 9223372036854775807
خودکار اضافہ اضافہ java.lang.Long جدول کے لیے منفرد ایک اضافی کاؤنٹر۔ اگر اس میں کوئی نئی ویلیو ڈالی جاتی ہے تو اس میں ایک اضافہ کیا جاتا ہے۔
اصلی
ایس کیو ایل کی قسم SQL مترادفات جاوا میں ملاپ تفصیل
اعشاریہ (N,M) DEC، NUMBER java.math.BigDecimal فکسڈ درستگی اعشاریہ (N عددی ہندسے اور M فریکشنل ہندسے)۔ بنیادی طور پر مالیاتی ڈیٹا کے ساتھ کام کرنے کے لیے ڈیزائن کیا گیا ہے۔
دگنا FLOAT8 java.lang.Double ڈبل درستگی حقیقی نمبر (8 بائٹس)۔
حقیقی FLOAT4 java.lang.Real واحد صحت سے متعلق حقیقی نمبر (4 بائٹس)۔
تار
ایس کیو ایل کی قسم SQL مترادفات جاوا میں ملاپ تفصیل
ورچار (ن) نوارچار java.lang.String UNICODE سٹرنگ کی لمبائی N. لمبائی 2147483647 تک محدود سٹرنگ کے پورے مواد کو میموری میں لوڈ کرتی ہے۔
تاریخ اور وقت
ایس کیو ایل کی قسم SQL مترادفات جاوا میں ملاپ تفصیل
وقت java.time.LocalTime، java.sql.Time ذخیرہ کرنے کا وقت (نینو سیکنڈز تک)، جب DATETIME میں تبدیل ہوتا ہے، تو تاریخ 1 جنوری 1970 پر سیٹ ہوتی ہے۔
DATE java.time.LocalDate, java.sql.Timestamp تاریخوں کو yyyy-mm-dd فارمیٹ میں ذخیرہ کرنا، وقت 00:00 پر سیٹ کیا گیا ہے۔
تاریخ وقت ٹائم اسٹیمپ java.time.LocalDateTime، java.sql.Timestamp ذخیرہ کرنے کی تاریخ + وقت (وقت کے زون کو مدنظر رکھے بغیر)۔
ڈیٹا کی بڑی مقدار کا ذخیرہ
ایس کیو ایل کی قسم جاوا میں ملاپ تفصیل
BLOB java.io.InputStream, java.sql.Blob بائنری ڈیٹا کو ذخیرہ کرنا (تصاویر، فائلیں...)
CLOB java.io.Reader, java.sql.Clob VARCHAR کے برعکس بڑے ٹیکسٹ ڈیٹا (کتابیں، مضامین...) کو ذخیرہ کرنا، ڈیٹا کو حصوں میں میموری میں لوڈ کرتا ہے۔

ایس کیو ایل لکھنے کا انداز

بہت سی زبانوں کے لیے، کوڈ فارمیٹنگ کے رہنما خطوط ہیں۔ عام طور پر، اس طرح کی دستاویزات میں متغیرات، مستقل، طریقوں اور زبان کے دیگر ڈھانچے کو نام دینے کے اصول ہوتے ہیں۔ لہذا، Python کے لیے PEP8 ہے، جاوا کے لیے - اوریکل کوڈ کنونشنز جاوا کے لیے ۔ ایس کیو ایل کے لیے کئی مختلف سیٹ بنائے گئے ہیں، جو ایک دوسرے سے قدرے مختلف ہیں۔ قطع نظر، آپ کو اپنے کوڈ کو فارمیٹ کرتے وقت قواعد پر عمل کرنے کی عادت پیدا کرنی چاہیے، خاص طور پر اگر آپ کسی ٹیم میں کام کرتے ہیں۔ اصول، مثال کے طور پر، مندرجہ ذیل ہو سکتے ہیں (یقیناً، آپ اپنے لیے قواعد کا ایک مختلف سیٹ تیار کر سکتے ہیں، اہم بات یہ ہے کہ مستقبل میں ان پر قائم رہیں):
  • مطلوبہ الفاظ اور مخصوص الفاظ بشمول کمانڈز اور آپریٹرز کو بڑے حروف میں لکھا جانا چاہیے: ٹیبل بنائیں، پابندی...
  • ٹیبلز، فیلڈز اور دیگر اشیاء کے نام SQL زبان کے کلیدی الفاظ کے ساتھ نہیں ہونے چاہئیں (مضمون کے آخر میں لنک دیکھیں)، لیکن ان پر مشتمل ہو سکتا ہے۔
  • ٹیبل کے نام اپنے مقصد کی عکاسی کریں۔ وہ چھوٹے حروف میں لکھے جاتے ہیں۔ نام کے الفاظ انڈر سکور کے ذریعے ایک دوسرے سے الگ ہوتے ہیں۔ آخر میں لفظ جمع میں ہونا چاہیے : تاجر (تاجر)، شیئر_ریٹ (شیئر کی شرح)۔
  • ٹیبل فیلڈ کے نام اپنے مقصد کی عکاسی کریں۔ انہیں چھوٹے حروف میں لکھا جانا چاہیے، نام کے الفاظ اونٹ کیس کے انداز میں فارمیٹ کیے جائیں ، اور آخر میں لفظ واحد میں استعمال کیا جانا چاہیے : نام (نام)، شیئر_ریٹ (شیئر کی شرح)۔
  • مصنوعی کلیدی فیلڈز میں لفظ id کا ہونا ضروری ہے۔
  • CONSTRAINT ناموں کو ٹیبل کے نام دینے کے کنونشنز پر عمل کرنا چاہیے۔ انہیں ان میں شامل فیلڈز اور ٹیبلز کو بھی شامل کرنا چاہیے، ایک سیمنٹک سابقہ ​​سے شروع کریں: check_ (فیلڈ ویلیو کی جانچ کرنا)، pk_ (پرائمری کلید)، fk_ (غیر ملکی کلید)، uniq_ (فیلڈ کی انفرادیت)، idx_ (انڈیکس)۔ مثال: pk_traider_share_actions_id (trader_share_actions ٹیبل کے لیے id فیلڈ پر بنیادی کلید)۔
  • اور اسی طرح، جیسا کہ آپ SQL کا مطالعہ کریں گے، قواعد کی فہرست کو دوبارہ بھر دیا جائے گا/تبدیل کیا جائے گا۔

ڈی بی ایم ایس ڈیزائن

DBMS بنانے سے پہلے، اسے ڈیزائن کرنے کی ضرورت ہے۔ حتمی اسکیما میں ٹیبلز، فیلڈز کا ایک سیٹ، کنسٹرائنٹ، کیز، فیلڈز کے لیے پہلے سے طے شدہ حالات، ٹیبلز اور دیگر ڈیٹا بیس اداروں کے درمیان تعلقات شامل ہیں۔ انٹرنیٹ پر آپ کو چھوٹے ڈی بی ایم ایس ڈیزائن کرنے کے لیے بہت سے مفت آن لائن/آف لائن ڈیزائنرز مل سکتے ہیں۔ سرچ انجن میں "ڈیٹا بیس ڈیزائنر فری" جیسا کچھ ٹائپ کرنے کی کوشش کریں۔ اس طرح کی ایپلی کیشنز میں مفید اضافی خصوصیات ہیں:
  • ڈی بی ایم ایس بنانے کے لیے ایس کیو ایل کمانڈز تیار کر سکتا ہے۔
  • آریھ پر ترتیبات کو بصری طور پر دکھائیں۔
  • بہتر تصور کے لیے آپ کو میزیں منتقل کرنے کی اجازت دیتا ہے۔
  • ڈایاگرام پر چابیاں، اشاریہ جات، تعلقات، پہلے سے طے شدہ اقدار اور اس طرح کی چیزیں دکھائیں۔
  • وہ DBMS اسکیما کو دور سے اسٹور کر سکتے ہیں۔
مثال کے طور پر، dbdiffo.com کلیدوں کو نمایاں کرتا ہے، غیر خالی فیلڈز اور AI (AutoIncrement) کاؤنٹرز کو NN لیبل کے ساتھ دکھاتا ہے:
حصہ 2۔ DBMS ڈھانچہ، میزیں اور ڈیٹا کی اقسام - 3

ڈی بی ایم ایس میں میزیں بنانا

تو ہمارے پاس ایک خاکہ ہے۔ اب ٹیبل بنانے کی طرف چلتے ہیں (ٹیبل بنائیں)۔ ایسا کرنے کے لیے، ہمارے لیے ابتدائی ڈیٹا رکھنے کا مشورہ دیا جاتا ہے:
  • ٹیبل کا نام
  • فیلڈ کے نام اور قسم
  • کھیتوں پر پابندیاں (پابندیاں)
  • فیلڈز کے لیے پہلے سے طے شدہ اقدار (اگر دستیاب ہو)
  • بنیادی کلید (پرائمری کلید) اگر دستیاب ہو۔
  • میزوں کے درمیان رابطے (فارن کلید)
ہم CREATE TABLE کمانڈ کے تمام اختیارات کا تفصیل سے مطالعہ نہیں کریں گے؛ ہم تاجروں کے لیے ٹیبل بنانے کی مثال استعمال کرتے ہوئے SQL کی بنیادی باتوں کو دیکھیں گے:
CREATE TABLE traiders(
	id BIGINT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(255) NOT NULL,
	freqTiсk INTEGER NOT NULL,
	cash  DECIMAL(15,2) NOT NULL DEFAULT 1000,
	tradingMethod INTEGER NOT NULL,
	changeProbability INTEGER NOT NULL DEFAULT 50,
	about VARCHAR(255) NULL
);
ALTER TABLE traiders ADD CONSTRAINT check_traiders_tradingMethod
	CHECK(tradingMethod IN (1,2,3));
ALTER TABLE traiders ADD CONSTRAINT check_traiders_changeProbability
	CHECK(changeProbability <= 100 AND changeProbability > 0)
آئیے ایک قریبی نظر ڈالیں:
  • CREATE TABLE traiders(فیلڈ کی تفصیل) - مخصوص نام کے ساتھ ایک ٹیبل بناتا ہے؛ تفصیل میں، فیلڈز کوما سے الگ کیا جاتا ہے۔ کوئی بھی کمانڈ سیمی کالون کے ساتھ ختم ہوتی ہے۔
  • فیلڈ کی تفصیل اس کے نام سے شروع ہوتی ہے، اس کے بعد اس کی قسم، کنسٹرائنٹ، اور ڈیفالٹ ویلیو۔
  • id BIGINT AUTO_INCREMENT PRIMARY KEY- ایک عددی قسم کا id فیلڈ ایک بنیادی کلید ہے اور ایک اضافی کاؤنٹر ہے (ID فیلڈ کے لیے ہر نئے ریکارڈ کے لیے، ایک قدر پیدا کی جائے گی جو اس جدول کے لیے پہلے سے بنائی گئی ایک سے بڑی ہو)۔
  • cash DECIMAL(15,2) NOT NULL DEFAULT 1000- کیش فیلڈ، اعشاریہ، اعشاریہ سے پہلے 15 ہندسے اور دو بعد (مالی ڈیٹا، مثال کے طور پر، ڈالر اور سینٹ)۔ NULL اقدار کو قبول نہیں کر سکتے۔ اگر کوئی قدر نہیں دی جاتی ہے تو اسے 1000 کی قدر ملے گی۔
  • about VARCHAR(255) NULL- کے بارے میں فیلڈ، 255 حروف تک لمبی تار، خالی اقدار کو قبول کر سکتی ہے۔
نوٹ کریں کہ ہم ٹیبل بنانے کے بعد کنسٹرائنٹ شرائط کا کچھ حصہ سیٹ کر سکتے ہیں۔ آئیے ٹیبل کے ڈھانچے اور اس کے فیلڈز میں ترمیم کرنے کے لیے تعمیر پر غور کریں: ALTER TABLE table_name ADD Constraint_name مثالوں کا استعمال کرتے ہوئے چیک کریں:
  • CHECK(tradingMethod IN (1,2,3))- ٹریڈنگ میتھڈ فیلڈ صرف 1,2,3 ویلیوز لے سکتی ہے۔
  • CHECK(changeProbability <= 100 AND changeProbability > 0)- تبدیلی کا امکان فیلڈ 1 سے 100 کی حد میں عددی اقدار لے سکتا ہے۔

میزوں کے درمیان تعلقات

جدولوں کے درمیان تعلقات کی تفصیل کا تجزیہ کرنے کے لیے، آئیے شیئر_ریٹ کی تخلیق کو دیکھتے ہیں:
CREATE TABLE share_rates(
	id BIGINT AUTO_INCREMENT PRIMARY KEY,
	operDate datetime NOT NULL,
	share BIGINT NOT NULL,
	rate DECIMAL(15,2) NOT NULL
);
ALTER TABLE share_rates ADD FOREIGN KEY (share) REFERENCES shares(id)
حصہ 2۔ DBMS ڈھانچہ، میزیں اور ڈیٹا کی اقسام - 4
کسی دوسرے ٹیبل کی قدروں کا لنک اس طرح سیٹ کیا جا سکتا ہے: ALTER TABLEtable_from_which_is_referred ADD FOREIGN KEY(field_which_referred) REFERENCEStable_to_which_is_referenced (field_which_is_referenced) حصص میں بتائیں کہ ہمارے پاس حصص پر ریکارڈ ہیں، مثال کے طور پر، id=50 کے لیے ہم مائیکروسافٹ کے حصص کی ابتدائی قیمت 51 کے ساتھ اسٹور کرتے ہیں۔ ، ڈیلٹا 20 اور 4% کی تبدیلی کا امکان۔ شیئر_ریٹ ٹیبل کے لیے ہمیں تین اہم خصوصیات ملتی ہیں:
  • ہمیں شیئرز ٹیبل سے صرف id کلید کی قدر ذخیرہ کرنے کی ضرورت ہے تاکہ اسے شیئرز ٹیبل سے باقی معلومات (نام وغیرہ) حاصل کرنے کے لیے استعمال کیا جا سکے۔
  • ہم غیر موجود پروموشن کے لیے شرح نہیں بنا سکتے۔ آپ شیئر فیلڈ میں غیر موجود ویلیو داخل نہیں کر سکتے ہیں (جس کے لیے اس آئی ڈی کے ساتھ شیئرز ٹیبل میں کوئی ریکارڈ نہیں ہے)، کیونکہ ٹیبلز کے درمیان کوئی خط و کتابت نہیں ہوگی۔
  • ہم ان حصص کے اندراج کو حذف نہیں کر سکتے جس کے لیے شرحیں share_rates میں مقرر ہیں۔
آخری دو نکات ذخیرہ شدہ ڈیٹا کی سالمیت کو یقینی بنانے کے لیے کام کرتے ہیں۔ آپ مضمون کے آخر میں گیتھب ریپوزٹری کے لنک کا استعمال کرتے ہوئے متعلقہ کلاسوں کے طریقوں کے جاوا نفاذ میں ہمارے ایمولیشن کے ایس کیو ایل ٹیبلز کی تخلیق اور SQL سوالات کی مثالیں دیکھ سکتے ہیں۔ تیسرا حصہ
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION