JavaRush /جاوا بلاگ /Random-SD /حصو 2. DBMS ساخت، جدول ۽ ڊيٽا جا قسم

حصو 2. DBMS ساخت، جدول ۽ ڊيٽا جا قسم

گروپ ۾ شايع ٿيل
پهريون حصو
حصو 2. DBMS ساخت، جدول ۽ ڊيٽا جا قسم - 1
اسان اسان جي سادي اسٽاڪ ايڪسچينج ايموليٽر ٺاهڻ جاري رکون ٿا. هتي آهي جيڪو اسان ڪنداسين:
  • اچو ته ڊيٽابيس آرگنائيزيشن ڊاگرام ٺاهيون.
  • اسان بيان ڪنداسين ته ڇا، ڪيئن ۽ ڪٿي ذخيرو ٿيل آهي.
  • اچو ته معلوم ڪريو ته ڊيٽا ڪيئن هڪ ٻئي سان لاڳاپيل آهي.
  • اچو ته SQL جدول ٺاهڻ واري ڪمانڊ CREATE TABLE , Data Definition Language ( DDL ) SQL ٻولي جو مثال استعمال ڪندي SQL جا بنيادي طريقا سکڻ شروع ڪريون .
  • اچو ته جاوا پروگرام لکڻ جاري رکون. اسان DBMS جي بنيادي ڪمن کي لاڳو ڪريون ٿا java.sql جي لحاظ کان اسان جو ڊيٽابيس پروگرام جي ترتيب سان، JDBC استعمال ڪندي ۽ ٽي-ٽيئر آرڪيٽيڪچر.
اهي ٻه حصا وڌيڪ وسيع ٿي ويا، ڇو ته اسان کي پاڻ کي SQL جي بنياديات ۽ اندر کان هڪ ڊي بي ايم ايس جي تنظيم سان واقف ڪرڻ جي ضرورت آهي، ۽ جاوا سان تشبيه ٺاهي. توهان کي ڪوڊ لسٽنگ سان بور نه ڪرڻ لاءِ، آخر ۾ پروگرام سان لاڳاپيل ڪمٽ گيٿب مخزن جا لنڪ آهن.

DBMS ڊيزائن

ايپليڪيشن جي وضاحت

توهان اڳ ۾ ئي ٻڌو آهي ته ڊيٽا اسٽوريج کي منظم ڪرڻ پروگرامنگ جو هڪ لازمي حصو آهي. مون کي توهان کي ياد ڏيارڻ ڏيو ته اسان جي ايپليڪيشن جو مقصد آسان ترين بدلي ايموليشن آهي:
  • اهڙا حصا آهن جن جي قيمت واپاري ڏينهن دوران ڏنل ضابطن جي مطابق تبديل ٿي سگهي ٿي؛
  • ابتدائي سرمائي سان واپاري آهن؛
  • واپاري پنهنجي الگورتھم مطابق شيئر خريد ۽ وڪرو ڪري سگھن ٿا.
مٽا سٽا ۾ هلندي آهي ٽِڪس - مقرر وقتن تي (اسان جي صورت ۾ - 1 منٽ). هڪ ٽڪ دوران، اسٽاڪ جي قيمت تبديل ٿي سگهي ٿي، ۽ پوء واپار خريد ڪري يا وڪرو ڪري سگهي ٿو.

ايڪسچينج ايموليشن ڊيٽا جي جوڙجڪ

اچو ته انفرادي ايڪسچينج ادارن جا ماڊل سڏين. گولن جي غلطين کان بچڻ لاءِ، اسين ڪلاس ذريعي مالي رقم سان ڪم ڪنداسين BigDecimal(تفصيل مضمون جي آخر ۾ ڏنل لنڪ ۾ ملي سگھن ٿا). اچو ته هر ماڊل جي جوڙجڪ کي وڌيڪ تفصيل سان بيان ڪريون: واڌاري:
وصف قسم وصف
name سارنگ نالو
changeProbability int شرح جي تبديلي جو امڪان هر ٽِڪ تي في سيڪڙو طور
startPrice بگ ڊيسيمل شروعاتي قيمت
delta int وڌ ۾ وڌ رقم في سيڪڙو ۾ جنهن سان موجوده قدر تبديل ٿي سگهي ٿي
حصيداري جي قيمت:
وصف قسم وصف
operDate LocalDateTime قيمت مقرر ڪرڻ لاء وقت (ٽڪ).
share پروموشن واڌاري لاء لنڪ
rate بگ ڊيسيمل حصيداري جي قيمت
واپاري:
وصف قسم وصف
name تار قيمت مقرر ڪرڻ لاء وقت (ٽڪ).
sfreqTick int ٽرانزيڪشن جي تعدد. مدت طرفان بيان ڪيل، ٽڪن ۾، جنهن کان پوء واپار کي عمل ڪري ٿو
cash بگ ڊيسيمل حصص کان سواءِ رقم جي رقم
traidingMethod int واپار طرفان استعمال ٿيل الگورتھم. اچو ته ان کي مستقل نمبر طور مقرر ڪريون، الگورتھم جو نفاذ (هيٺ ڏنل حصن ۾) جاوا ڪوڊ ۾ ٿيندو
changeProbability int آپريشن مڪمل ٿيڻ جو امڪان، سيڪڙو
about تار شرح جي تبديلي جو امڪان، في سيڪڙو ۾، هر ٽِڪ تي
واپاري عمل:
وصف قسم وصف
operation int ٽرانزيڪشن جو قسم (خريد يا وڪرو)
traider واپار ڪندڙ واپاري لنڪ
shareRate حصيداري جي قيمت اسٽاڪ جي قيمت سان ڳنڍيو (ترتيب، اسٽاڪ پاڻ، ان جي شرح ۽ وقت جاري ڪيو ويو)
amount ڊگھو ٽرانزيڪشن ۾ شامل حصن جو تعداد
هر ماڊل جي انفراديت کي يقيني بڻائڻ لاءِ، اسان هڪ وصف شامل ڪنداسين ڊگهيid قسم جي . هي وصف ماڊل مثالن ۾ منفرد هوندو ۽ ان کي منفرد طور سڃاڻيندو. خاصيتون جيڪي ٻين ماڊل جو حوالو ڏين ٿيون (واپار، اسٽاڪ، اسٽاڪ جي قيمت) هن هڪ کي استعمال ڪري سگھن ٿا منفرد طور تي لاڳاپيل ماڊل کي سڃاڻڻ لاء. اهو خيال فوري طور تي ذهن ۾ اچي ٿو ته اسان اهڙي ڊيٽا کي ذخيرو ڪرڻ لاء استعمال ڪري سگهون ٿا، جتي لاڳاپيل ماڊل آهي. بهرحال، هيٺ ڏنل شرطن جي تحت ڪوڊ ۾ هن کي لاڳو ڪرڻ جي ڪوشش ڪريو: idMap<Long, Object>Object
  • ڊيٽا جي سائيز کي خاص طور تي موجود رام جي مقدار کان وڌيڪ آهي؛
  • درجن کان مختلف هنڌن کان ڊيٽا تائين رسائي جي توقع آهي؛
  • هڪ ئي وقت ۾ ڊيٽا کي تبديل ڪرڻ ۽ پڙهڻ جي صلاحيت گهربل آهي؛
  • ڊيٽا جي ٺهڻ ۽ سالميت جي ضابطن کي يقيني بڻائڻ ضروري آهي؛
... ۽ توهان کي انهن ڪمن سان منهن ڏيڻو پوندو جن کي لاڳو ڪرڻ لاءِ مناسب قابليت ۽ وقت جي ضرورت آهي. ”ويل کي ٻيهر ايجاد ڪرڻ“ جي ڪا ضرورت ناهي. اسان لاءِ گهڻو ڪجهه سوچيو ۽ لکيو ويو آهي. تنهن ڪري اسان استعمال ڪنداسين جيڪي اڳ ۾ ئي سالن کان آزمايا ويا آهن.

جاوا ۾ ڊيٽا کي محفوظ ڪرڻ

اچو ته عمل تي غور ڪريو. جاوا ۾، اسان هن ماڊل لاءِ هڪ مخصوص ڪلاس ٺاهيا آهن 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 ۾ ذخيرو ڪنداسين.

DBMS ۾ ڊيٽا اسٽوريج

اچو ته DBMS لاءِ ڊيٽا اسٽوريج قاعدن جو هڪ ابتدائي سيٽ ٺاهيو:
  • ڊي بي ايم ايس ۾ ڊيٽا کي جدولن ۾ منظم ڪيو ويو آهي ( ٽيبل )، جيڪي رڪارڊ جو هڪ سيٽ آهن.
  • سڀني رڪارڊن ۾ فيلڊ جا ساڳيا سيٽ آهن. اهي سيٽ آهن جڏهن ٽيبل ٺاهي رهيا آهن.
  • فيلڊ کي مقرر ڪري سگھجي ٿو ڊفالٽ قدر ( DEFAULT ).
  • ٽيبل لاءِ، توھان مقرر ڪري سگھوٿا رڪاوٽون ( CONSTRAINT ) جيڪي ان جي ڊيٽا جي ضرورتن کي بيان ڪن ٿيون انھن جي سالميت کي يقيني بڻائڻ لاءِ. اهو ٿي سگهي ٿو ٽيبل ٺاهڻ واري مرحلي تي ( CREATE TABLE ) يا بعد ۾ شامل ڪيو وڃي ( ALTER TABLE ... ADD Constraint ).
  • سڀ کان عام پابنديون :
    • پرائمري ڪنجي آهي PRIMARY (Id اسان جي ڪيس ۾).
    • منفرد قدر جو ميدان UNIQUE (گاڏي جي ٽيبل لاءِ VIN).
    • چيڪ ڪريو فيلڊ چيڪ ڪريو (سيڪڙو قيمت 100 کان وڌيڪ نه ٿي سگھي). ھڪڙي خانگي پابندين مان ھڪڙي فيلڊ تي آھي NOT NULL يا NULL ، جيڪا منع ڪري ٿي / NULL کي ٽيبل جي فيلڊ ۾ ذخيرو ڪرڻ جي اجازت ڏئي ٿي.
    • ھڪڙي ٽئين پارٽي جي جدول سان ڳنڍيو FOREIGN KEY (اسٽاڪ جي قيمت واري ٽيبل ۾ ھڪڙي اسٽاڪ سان لنڪ).
    • انڊيڪس INDEX (هڪ فيلڊ کي ترتيب ڏيڻ ان ۾ قدرن جي ڳولا کي تيز ڪرڻ لاءِ).
    • رڪارڊ جي تبديلي ( INSERT , UPDATE ) نه ٿيندي جيڪڏهن ان جي فيلڊ جا قدر پابنديون (CONSTRAINT) جي تضاد ڪن ٿا.
  • هر ٽيبل ۾ هڪ اهم فيلڊ (يا ڪيترائي) ٿي سگهي ٿو جيڪو منفرد طور تي هڪ رڪارڊ جي سڃاڻپ ڪرڻ لاء استعمال ڪري سگهجي ٿو. اهڙي فيلڊ (يا فيلڊس، جيڪڏهن اهي هڪ جامع ڪني ٺاهيندا آهن) ٽيبل جي بنيادي ڪيئي ٺاهيندي آهي - PRIMARY KEY .
    • پرائمري ڪيچ ٽيبل ۾ رڪارڊ جي انفراديت کي يقيني بڻائي ٿي؛ ان تي هڪ انڊيڪس ٺاهيو ويندو آهي، جيڪو اهم قدر جي بنياد تي پوري رڪارڊ تائين تڪڙو رسائي ڏئي ٿو.
    • پرائمري ڪيچ رکڻ سان جدولن جي وچ ۾ ڳنڍڻ کي تمام آسان بڻائي ٿو. اڳيون، اسان هڪ مصنوعي پرائمري ڪيئي استعمال ڪنداسين: پهرين رڪارڊ لاءِ id = 1، هر ايندڙ رڪارڊ کي جدول ۾ داخل ڪيو ويندو جنهن ۾ id جي قيمت هڪ کان وڌي ويندي. هن ڪيئي کي اڪثر سڏيو ويندو آهي AutoIncrement يا AutoIdentity .
دراصل، اسٽاڪ جو هڪ جدول: حصو 2. DBMS ساخت، جدول ۽ ڊيٽا جا قسم - 2 ڇا اهو ممڪن آهي اسٽاڪ جو نالو استعمال ڪرڻ لاءِ هن معاملي ۾ هڪ اهم؟ وڏي ۽ وڏي - ها، پر اهو امڪان آهي ته ڪجهه ڪمپني مختلف شيئرز جاري ڪري ۽ انهن کي صرف پنهنجي نالي سان سڏين. هن معاملي ۾، اتي وڌيڪ انفراديت نه ٿيندو. عملي طور تي، هڪ مصنوعي پرائمري چيڪ ڪافي اڪثر استعمال ڪيو ويندو آهي. اتفاق ڪريو، مڪمل نالو استعمال ڪندي ھڪڙي جدول ۾ ھڪڙي منفرد ڪنجي طور تي ماڻھن جي رڪارڊ تي مشتمل انفراديت کي يقيني بڻائي نه سگھندو. گڏوگڏ مڪمل نالو ۽ ڄمڻ جي تاريخ جو ميلاپ استعمال ڪندي.

DBMS ۾ ڊيٽا جا قسم

ڪنهن ٻئي پروگرامنگ ٻولي وانگر، SQL وٽ ڊيٽا ٽائپنگ آهي. ھتي آھن عام SQL ڊيٽا جا قسم: Integer type
SQL قسم SQL مترادفات جاوا ۾ ملندڙ وصف
INT INT4، INTEGER java.lang.Integer 4-بائيٽ انٽيجر، -2147483648 … 2147483647
بوليان بول، بِٽ java.lang.بولين سچو ، ڪوڙو
TINYINT java.lang.Byte 1-بائيٽ انٽيجر، -128 … 127
SMALLINT INT2 java.lang. مختصر 2-بائيٽ انٽيجر، -32768 … 32767
وڏو INT8 java.lang. Long 8-بائيٽ انٽيجر، -9223372036854775808 … 9223372036854775807
AUTO_INCREMENT واڌارو java.lang. Long ٽيبل لاءِ منفرد هڪ واڌارو ڪائونٽر. جيڪڏهن ڪا نئين قيمت ان ۾ داخل ڪئي وئي آهي، اها هڪ کان وڌي ويندي آهي، ٺاهيل قدر ڪڏهن به ورجائي نه سگهندا آهن.
حقيقي
SQL قسم SQL مترادفات جاوا ۾ ملندڙ وصف
DECIMAL(N,M) ڊي سي، NUMBER java.math.BigDecimal مقرر ٿيل سڌائي واري ڊيسيمل (N integer digits ۽ M fractional digits). بنيادي طور تي مالي ڊيٽا سان ڪم ڪرڻ لاء ٺهيل.
ٻيڻو FLOAT8 java.lang. Double ٻيڻو درست حقيقي نمبر (8 بائيٽ).
حقيقي FLOAT4 java.lang.Real سنگل سڌائي حقيقي نمبر (4 بائيٽ).
تار
SQL قسم SQL مترادفات جاوا ۾ ملندڙ وصف
ورڇ (ن) NVARCHAR java.lang.String يونيڪوڊ اسٽرنگ جي ڊگھائي N. ڊگھائي 2147483647 تائين محدود آهي سٽ جي سموري مواد کي ميموري ۾ لوڊ ڪري ٿو.
تاريخ ۽ وقت
SQL قسم SQL مترادفات جاوا ۾ ملندڙ وصف
ٽائيم java.time.LocalTime, java.sql.Time اسٽوريج جو وقت (نانو سيڪنڊن تائين)، جڏهن DATETIME ۾ تبديل ڪيو وڃي، تاريخ 1 جنوري 1970 تي مقرر ڪئي وئي آهي.
DATE java.time.LocalDate, java.sql.Timestamp yyyy-mm-dd فارميٽ ۾ محفوظ ڪرڻ جون تاريخون، وقت مقرر ڪيو ويو آهي 00:00
DATETIME ٽائيم اسٽيمپ java.time.LocalDateTime, java.sql.Timestamp ذخيرو ڪرڻ جي تاريخ + وقت (اڪاؤنٽ ٽائم زونز ۾ وٺڻ کان سواءِ).
ڊيٽا جي وڏي مقدار جو ذخيرو
SQL قسم جاوا ۾ ملندڙ وصف
BLOB java.io.InputStream، java.sql.Blob ذخيرو بائنري ڊيٽا (تصويرون، فائلون ...).
ڪلوب java.io.Reader, java.sql.Clob VARCHAR جي برعڪس وڏي ٽيڪسٽ ڊيٽا (ڪتاب، آرٽيڪل...) کي محفوظ ڪرڻ، ڊيٽا کي ميموري ۾ حصن ۾ لوڊ ڪري ٿو.

SQL لکڻ جو انداز

ڪيترن ئي ٻولين لاءِ، ڪوڊ فارميٽنگ جي ھدايتون آھن. عام طور تي، اهڙين دستاويزن ۾ متغير، مستقل، طريقن ۽ ٻين ٻولين جي جوڙجڪ لاءِ قاعدا شامل آهن. تنهن ڪري، Python لاءِ PEP8 آهي، جاوا لاءِ - Oracle Code Conventions for Java . SQL لاءِ ڪيترائي مختلف سيٽ ٺاھيا ويا آھن، جيڪي ھڪ ٻئي کان ڪجھ مختلف آھن. قطع نظر، توهان کي پنهنجي ڪوڊ کي فارميٽ ڪرڻ وقت قاعدن تي عمل ڪرڻ جي عادت پيدا ڪرڻ گهرجي، خاص طور تي جيڪڏهن توهان ٽيم ۾ ڪم ڪريو ٿا. ضابطا ٿي سگهن ٿا، مثال طور، هيٺيون (يقيناً، توهان پنهنجي لاءِ مختلف قاعدن جو مجموعو ٺاهي سگهو ٿا، بنيادي ڳالهه اها آهي ته مستقبل ۾ انهن تي قائم رهڻ):
  • ڪي لفظ ۽ محفوظ ڪيل لفظ، بشمول ڪمانڊز ۽ آپريٽرز، لازمي طور تي وڏن اکرن ۾ لکيل ھجن: CREATE TABLE، Constraint...
  • جدولن، شعبن ۽ ٻين شين جا نالا SQL ٻوليءَ جي لفظن سان ٺهڪندڙ نه هجن (مضمون جي آخر ۾ ڏنل لنڪ ڏسو)، پر انهن تي مشتمل ٿي سگھي ٿو.
  • ٽيبل جا نالا انهن جي مقصد کي ظاهر ڪرڻ گهرجي. اهي ننڍن اکرن ۾ لکيل آهن. نالي ۾ لفظ هڪ ٻئي کان انڊر اسڪور ذريعي الڳ ٿيل آهن. لفظ جي آخر ۾ جمع ۾ هجڻ گهرجي : واپارين (واپارين)، شيئر_ريٽ (حصص جي شرح).
  • ٽيبل فيلڊ جا نالا انهن جي مقصد کي ظاهر ڪرڻ گهرجي. اهي لازمي طور تي ننڍن اکرن ۾ لکيل هجن، نالا ۾ لفظن کي ڪيمل ڪيس جي انداز ۾ فارميٽ ڪيو وڃي ، ۽ لفظ جي آخر ۾ استعمال ٿيڻ گهرجي واحد ۾ : نالو (نالو)، شيئر_ريٽ (شيئر جي شرح).
  • مصنوعي اهم شعبن ۾ لفظ id شامل هجڻ ضروري آهي.
  • CONSTRAINT نالا لازمي طور تي ٽيبل جي نالي جي ڪنوينشن جي پيروي ڪندا. انهن کي لازمي طور تي فيلڊ ۽ ٽيبل شامل ڪرڻ گهرجي انهن ۾ شامل آهن، هڪ لفظي اڳڪٿي سان شروع ڪريو: check_ (فيلڊ جي قيمت کي جانچڻ)، pk_ (پرائمري ڪيئي)، fk_ (پرڏيهي ڪيئي)، uniq_ (فيلڊ انفراديت)، idx_ (انڊيڪس). مثال: pk_traider_share_actions_id (پرائمري ڪيئي id فيلڊ تي trader_share_actions ٽيبل).
  • ۽ ائين ئي، جيئن توهان SQL جو مطالعو ڪندا، ضابطن جي فهرست ٻيهر ڀري/تبديل ڪئي ويندي.

DBMS ڊيزائن

فوري طور تي هڪ DBMS ٺاهڻ کان اڳ، ان کي ڊزائين ڪرڻ جي ضرورت آهي. فائنل اسڪيما ۾ جدولن، فيلڊز جو ھڪ سيٽ، ڪنسٽرڪٽ، ڪيز، فيلڊز لاءِ ڊفالٽ حالتون، جدولن ۽ ٻين ڊيٽابيس جي ادارن جي وچ ۾ لاڳاپا شامل آھن. انٽرنيٽ تي توهان ڳولي سگهو ٿا ڪيترائي مفت آن لائن/آف لائن ڊزائينر ننڍيون ڊي بي ايم ايس ڊزائين ڪرڻ لاءِ. ڪوشش ڪريو ڪجھ ٽائپ ڪرڻ جھڙوڪ ”ڊيٽابيس ڊيزائنر مفت“ سرچ انجڻ ۾. اهڙيون ايپليڪيشنون مفيد اضافي خاصيتون آهن:
  • ڊي بي ايم ايس ٺاهڻ لاءِ SQL حڪم ٺاهي سگھي ٿو.
  • بصري طور تي سيٽنگون ڏيکاريو ڊاگرام تي.
  • توهان کي اجازت ڏئي ٿي ته توهان کي بهتر نموني لاء جدولن کي منتقل ڪرڻ لاء.
  • ڏيکاريو چابيون، انڊيڪس، رشتا، ڊفالٽ قدر، ۽ جھڙوڪ ڊاگرام تي.
  • اهي remotely محفوظ ڪري سگهن ٿا DBMS اسڪيما.
مثال طور، dbdiffo.com ڪيچ کي نمايان ڪري ٿو، غير خالي شعبن کي ڏيکاري ٿو ۽ اين اين ليبل سان AI (AutoIncrement) ڳڻپيندڙ:
حصو 2. DBMS ساخت، جدول ۽ ڊيٽا جا قسم - 3

ڊي بي ايم ايس ۾ ٽيبل ٺاهڻ

تنهنڪري اسان وٽ هڪ خاڪو آهي. ھاڻي اچو ته جدول ٺاھڻ (CREATE TABLE) ڏانھن وڃو. هن کي ڪرڻ لاء، اهو مشورو ڏنو ويو آهي ته اسان وٽ ابتدائي ڊيٽا هجي:
  • ٽيبل جو نالو
  • فيلڊ جا نالا ۽ قسم
  • شعبن تي پابنديون (CONSTRAINTS).
  • فيلڊز لاءِ ڊفالٽ قدر (جيڪڏهن موجود هجي)
  • پرائمري ڪي (PRIMARY KEY) جيڪڏهن موجود هجي
  • جدولن جي وچ ۾ ڪنيڪشن (فارين ڪيئي)
اسان 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 فيلڊ هڪ پرائمري ڪيچي ۽ هڪ واڌارو ڪائونٽر آهي (آءِ ڊي فيلڊ لاءِ هر نئين رڪارڊ لاءِ، هڪ قدر پيدا ڪئي ويندي جيڪا هن ٽيبل لاءِ اڳ ۾ ٺاهيل هڪ کان وڌيڪ آهي).
  • 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))- tradeMethod فيلڊ صرف 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 لاءِ اسان Microsoft شيئرز جي شروعاتي قيمت 571 سان گڏ رکون ٿا. ، ڊيلٽا 20 ۽ 4٪ جي تبديلي جو هڪ موقعو. شيئر_ريٽ ٽيبل لاءِ اسان ٽي مکيه ملڪيت حاصل ڪريون ٿا:
  • اسان کي صرف شيئرز ٽيبل مان id چيڪ جي قيمت کي ذخيرو ڪرڻ جي ضرورت آهي شيئر فيلڊ ۾ باقي معلومات حاصل ڪرڻ لاءِ استعمال ڪرڻ لاءِ (نالو، وغيره) شيئر ٽيبل مان.
  • اسان غير موجود پروموشن لاءِ شرح ٺاهي نٿا سگھون. توهان شيئر فيلڊ ۾ غير موجود قدر داخل نه ٿا ڪري سگهو (جنهن لاءِ هن id سان شيئر ٽيبل ۾ ڪو به رڪارڊ نه آهي)، ڇو ته ٽيبل جي وچ ۾ ڪوبه خطوط نه هوندو.
  • اسان شيئرز ۾ شيئر انٽري کي ختم نٿا ڪري سگھون جن لاءِ قيمتون شيئر_ريٽ ۾ مقرر ڪيون ويون آهن.
آخري ٻه نقطا محفوظ ڪيل ڊيٽا جي سالميت کي يقيني بڻائڻ جي خدمت ڪن ٿا. توهان ڏسي سگهو ٿا SQL جدولن جي تخليق اسان جي ايموليشن ۽ SQL سوالن جا مثال جاوا لاڳو ڪرڻ ۾ لاڳاپيل طبقن جي طريقن جي لنڪ کي استعمال ڪندي آرٽيڪل جي آخر ۾ گٿب مخزن جي. ٽيون حصو
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION