পূর্ববর্তী মডিউলগুলিতে, আমরা ডাটাবেসের ধারণা প্রবর্তন করেছি, তারা যে ধরনের ডেটা সংরক্ষণ করে তা নিয়ে আলোচনা করেছি এবং ডেটা পুনরুদ্ধার করার জন্য REST API অনুরোধ পাঠানোর অনুশীলন করেছি। একই সময়ে, আমরা প্রক্রিয়ার বাইরের অংশগ্রহণকারী রয়েছি এবং শুধুমাত্র বিভিন্ন উত্স থেকে তথ্যের জন্য অনুরোধ করেছি।

এটা আপনার ডাটাবেস তৈরি করার সময়! এই মডিউলে, আমরা ঠিক সেটাই করব, আমরা বুঝব কিভাবে ডাটাবেসে ডেটা সংরক্ষিত হয় এবং কীভাবে সেগুলিকে আন্তঃসংযুক্ত করা যায়। তবে সবার আগে, তত্ত্ব দিয়ে শুরু করা যাক। আসুন আমরা যে ফর্মে ডেটা আমাদের কাছে আসে, সেইসাথে ডেটা স্ট্রাকচার অনুসারে ডেটাবেসগুলিকে কী বিভাগে ভাগ করা হয়েছে তা নিয়ে কাজ করা যাক।

ডেটা বেসিক

তথ্য উপস্থাপনা

REST API-এ ডেটা উপস্থাপনের নিখুঁত নেতা হল JSON ফর্ম্যাট। পূর্ববর্তী মডিউলগুলির সমস্ত উদাহরণে, আমরা এই বিন্যাসে ডেটা পেয়েছি। এটি মনে রাখার মতো যে REST আমাদের জন্য বিন্যাস পছন্দের উপর বিধিনিষেধ আরোপ করে না, ভবিষ্যতে আপনি অবশ্যই অন্যদের সাথে দেখা করবেন (উদাহরণস্বরূপ, XML)। একই সময়ে, এর হালকা ওজন এবং সহজে মানুষের পঠনযোগ্যতার কারণে, বিকাশকারীরা প্রায়শই JSON পছন্দ করে।

JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) হল জাভাস্ক্রিপ্টের উপর ভিত্তি করে একটি পাঠ্য-ভিত্তিক ডেটা বিনিময় বিন্যাস। এবং শিরোনামে জাভাস্ক্রিপ্ট আপনাকে বোকা বানাতে দেবেন না। JSON ফরম্যাট, যদিও এটি এই প্রোগ্রামিং ভাষা থেকে উদ্ভূত হয়েছে, এটি থেকে সম্পূর্ণ স্বাধীন এবং যেকোনো জায়গায় ব্যবহার করা যেতে পারে।

আসুন দেখি একটি JSON অবজেক্ট কি নিয়ে গঠিত এবং এটি কিভাবে লেখা হয়।

আপনার প্রাপ্ত সমস্ত ডেটা কোঁকড়া বন্ধনী "{}" এ আবদ্ধ ছিল। এগুলি সর্বদা JSON অবজেক্টের শুরুতে এবং শেষে স্থাপন করা হয়।

বস্তুটি নিজেই রেকর্ডের একটি সেট নিয়ে গঠিত, যা "কী: মান" জোড়া এবং কমা দ্বারা একে অপরের থেকে পৃথক করা হয়।

কী হল এন্ট্রির নাম, উদ্ধৃতি চিহ্ন "" এ আবদ্ধ। উদাহরণ: "নাম", "মান", "অঞ্চল", "ঠিকানা"। এটি যে কোনও শব্দ হতে পারে, বিকাশ করার সময় প্রধান জিনিসটি নিশ্চিত করা হয় যে এই অর্থটি স্পষ্ট।

মান বিভিন্ন ধরনের হতে পারে। আসুন তাদের সব বিবেচনা করা যাক.

  1. স্ট্রিং টেক্সট তথ্য রয়েছে, ইউনিকোড স্ট্যান্ডার্ডে অক্ষরের একটি সেট। স্ট্রিংগুলি "" উদ্ধৃতিতে আবদ্ধ।
  2. সংখ্যা এটি পূর্ণসংখ্যা বা ভাসমান বিন্দু হতে পারে। এটি যেমন লেখা আছে, উদ্ধৃতিগুলি ঘেরার প্রয়োজন নেই।
  3. বুলিয়ান দুটি মানের একটি। হয় সত্য বা মিথ্যা। একটি সংখ্যার মতো, এটি উদ্ধৃতি ছাড়াই লেখা হয়।
  4. অ্যারে উপাদানগুলির একটি অর্ডারকৃত সেট। প্রতিটি উপাদান যেকোনো ধরনের হতে পারে। একটি অ্যারে বর্গাকার বন্ধনী "[]" এ আবদ্ধ, এবং এর উপাদানগুলি কমা দ্বারা পৃথক করা হয়।
  5. বস্তু JSON মান অন্য JSON অবজেক্ট হতে পারে। মূল বস্তুর ক্ষেত্রেও একই নিয়ম প্রযোজ্য। এটি কোঁকড়া ধনুর্বন্ধনীতে আবদ্ধ এবং এর নিজস্ব রেকর্ড রয়েছে।

এই তথ্যটি মাথায় রেখে আপনি প্রথম মডিউলগুলিতে যে ডেটা পেয়েছেন তা দেখুন। JSON উপাদানগুলি নির্বাচন করুন, প্রাপ্ত মানগুলি কী ধরণের তা নির্ধারণ করুন।

ডেটা সংরক্ষণ করা

আমরা JSON সঙ্গে ডিল করেছি. এখন আমরা মূল জিনিস - ডাটাবেস পাস. তাদের মধ্যে বিভিন্ন উপায়ে ডেটা সংরক্ষণ করা যেতে পারে। একই সময়ে, এটি ঐতিহাসিকভাবে বিকশিত হয়েছে যাতে রিলেশনাল ডাটাবেস মডেলটি সর্বাধিক বিতরণ পেয়েছে।

রিলেশনাল মডেল ব্যবহার করার সময়, ডেটা একটি নির্দিষ্ট সেটের সাথে টেবিলের আকারে সংরক্ষণ করা হয়, যার গঠন ডাটাবেস ডিজাইনের পর্যায়ে কঠোরভাবে নির্দিষ্ট করা হয়। রিলেশনাল ডাটাবেসে ডেটা স্ট্রাকচারের বর্ণনাকে স্কিমা বলা হয়। এটি টেবিলের গঠন, এই টেবিলের ক্ষেত্রের গঠন, সেইসাথে তাদের মধ্যে সম্পর্ক সংজ্ঞায়িত করে।

ডিবিএমএস একটি রিলেশনাল মডেলের সাথে ডেটা পরিচালনা করতে SQL ভাষা ব্যবহার করে।

SQL - স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজ । এটি একটি ঘোষণামূলক ভাষা, যার অর্থ হল এর কমান্ডগুলি শুধুমাত্র প্রয়োজনীয় ক্রিয়া বর্ণনা করে (ডেটা খুঁজুন, সেগুলি মুছে ফেলুন, পরিবর্তন করুন), এবং প্রতিটি ডিবিএমএস নিজেই সিদ্ধান্ত নেয় কিভাবে এটি সম্পাদন করতে হবে।

অনেকগুলি বিভিন্ন রিলেশনাল ডিবিএমএস আছে। সবচেয়ে সাধারণের মধ্যে রয়েছে ওরাকল, মাইএসকিউএল, এমএস এসকিউএল, পোস্টগ্রেএসকিউএল । যাইহোক, AppMaster PostgreSQL ব্যবহার করে, যার অর্থ হল এটি একটি আধুনিক উন্নত DBMS ব্যবহার করে যা বিভিন্ন প্রতিষ্ঠানের একটি বিশাল সংখ্যায় কাজ করে এবং এটি বিনামূল্যের সফ্টওয়্যার (অর্থাৎ, এটি ব্যবহার করার জন্য আপনাকে অতিরিক্ত অর্থ প্রদান করতে হবে না)।

আপনি কি প্রায় প্রতিটি DBMS নামের মধ্যে SQL সংক্ষেপণের উপস্থিতি লক্ষ্য করেছেন? প্রকৃতপক্ষে, একটি রিলেশনাল ডাটাবেসের জন্য একটি বিকল্প নাম হল একটি SQL ডাটাবেস।

যাইহোক, একটি বিকল্প পদ্ধতি আছে। নন-রিলেশনাল ডাটাবেস, বা NoSQL। এটি লক্ষণীয় যে No এই ক্ষেত্রে "না" এর একটি অস্বীকার নয়, তবে কেবল নয় এর সংক্ষিপ্ত রূপ। অর্থাৎ, “শুধু এসকিউএল নয়”।

নন-রিলেশনাল ডিবিএমএস একটি সাধারণ ক্যোয়ারী ফরম্যাট ব্যবহার করে না (যেমন এসকিউএল), তাদের প্রত্যেকেই ডেটা নিয়ে কাজ করার নিজস্ব উপায় প্রয়োগ করে।

তাদের একটি স্বতন্ত্রভাবে সংজ্ঞায়িত ডেটা স্টোরেজ কাঠামোর প্রয়োজন নেই। ডেটা নিজেই তাদের মধ্যে সংরক্ষিত হয় কঠোর টেবিলের আকারে নয়, বরং একটি নির্বিচারে বৈশিষ্ট্যযুক্ত বস্তুর আকারে (অনেকটা JSON এর মতো)। এটি এমন তথ্যের সাথে কাজ করার সময় প্রাসঙ্গিক হতে পারে যার গঠন ঘন ঘন পরিবর্তনের বিষয়।

একই সময়ে, এর মুক্ত কাঠামোর কারণে, যদি আপনাকে একাধিক সার্ভারে বিতরণ করা একটি ডাটাবেস তৈরি করতে হয় তবে NoSQL সমাধানগুলি স্কেল করা সহজ।

NoSQL DBMS-এর উদাহরণের মধ্যে রয়েছে MongoDB এবং Redis।

ডাটাবেস ডিজাইন

এটি আপনার নিজস্ব ডাটাবেস ডিজাইন করার সময়। এটি করার জন্য, বাম প্যানেলে ডেটা ডিজাইন (ডেটা ডিজাইনার) ট্যাবে যান।

ডাটাবেসের ডেটা বিশেষ টেবিল (মডেল) আকারে সংরক্ষণ করা হয়। এবং আপনি লক্ষ্য করতে পারেন যে আমরা ইতিমধ্যে একটি মডেল আছে. এটি অনুমোদন মডিউলের অংশ এবং ডিফল্টরূপে প্রতিটি প্রকল্পে অন্তর্ভুক্ত করা হয়। এটির জন্য ধন্যবাদ, অ্যাপ্লিকেশনটির নতুন ব্যবহারকারী তৈরি করা হয় এবং বিদ্যমানগুলি পরিচালিত হয়। কিন্তু আমরা এখনই এর অধ্যয়নে থাকব না, বরং আমাদের নিজস্ব মডেল তৈরি করব।

কল্পনা করুন যে আমরা একটি মানচিত্র পরিষেবা তৈরি করছি। আসুন একটি মডেল তৈরি করি যাতে দেশগুলির তথ্য রয়েছে। এটি তৈরি করতে, আপনাকে ক্যানভাসের একটি খালি জায়গায় ডান-ক্লিক করতে হবে এবং খালি মডেল তৈরি করুন নির্বাচন করতে হবে।

তৈরি করতে, আমাদের শুধুমাত্র মডেলের নাম উল্লেখ করতে হবে। আমরা কোর্সের আরও মডিউলগুলিতে শেষ পয়েন্ট এবং ব্যবহারকারী ইন্টারফেস উপাদানগুলির স্বয়ংক্রিয়-প্রজন্ম নিয়ে কাজ করব।

অনুগ্রহ করে মনে রাখবেন যে তৈরির পরপরই, মডেলটিতে ইতিমধ্যে 4 টি ক্ষেত্র রয়েছে। এগুলি হল সিস্টেম ক্ষেত্র, যার উপস্থিতি মডেলটির প্রাথমিক সৃষ্টি এবং আরও ব্যবহারকে ব্যাপকভাবে সরল করে।

  1. আইডি (পূর্ণসংখ্যা) - অনন্য শনাক্তকারী, প্রাথমিক কী। এটি টেবিলের প্রতিটি নতুন এন্ট্রির জন্য স্বয়ংক্রিয়ভাবে তৈরি করা হয় এবং কোন সদৃশ নেই তা নিশ্চিত করার উদ্দেশ্যে। এটি আইডি দ্বারা যে আপনি একটি টেবিলে একটি রেকর্ড অনন্যভাবে সনাক্ত করতে পারেন। এর মান 1 থেকে শুরু হয় এবং প্রতিটি নতুন এন্ট্রির জন্য স্বয়ংক্রিয়ভাবে 1 দ্বারা বৃদ্ধি পায়।
  2. CreatedAt (তারিখের সময়) - টেবিলে রেকর্ড তৈরি করার সময়।
  3. UpdatedAt (তারিখের সময়) - যে সময় এন্ট্রিটি শেষবার পরিবর্তন করা হয়েছিল।
  4. মুছে ফেলার সময় (তারিখের সময়) - এন্ট্রিটি মুছে ফেলার সময়। অবশ্যই, শুধুমাত্র যদি নরম-অপসারণ ব্যবহার করা হয়। অর্থাৎ, এই জাতীয় মুছে ফেলা, যখন রেকর্ডটি কেবল মুছে ফেলা হিসাবে চিহ্নিত করা হয় এবং এটিতে অ্যাক্সেসের অনুরোধ দ্বারা ফিল্টার করা হয়, তবে একই সময়ে শারীরিকভাবে টেবিলে থাকে। এটি বাল্ক মুছে ফেলার থেকে আলাদা, যা আসলে ডেটা সম্পূর্ণরূপে মুছে দেয়।

সিস্টেমগুলি ছাড়াও, তৈরি করা মডেলটিতে কাস্টম ক্ষেত্র যুক্ত করা বুদ্ধিমানের কাজ হবে৷ ধরুন আমরা দেশের নাম এবং কিছু বিবরণ দেখতে চাই তার সম্পর্কে তথ্য সহ।

একটি ক্ষেত্রের ধরন নির্বাচন করা একটি সমস্যা হওয়া উচিত নয়। নামের জন্য, স্ট্রিং উপযুক্ত, এবং তথ্যগত বিবরণের জন্য, পাঠ্য।


এছাড়াও, আরও চারটি সুইচ উপলব্ধ:

  1. একাধিক মান (অ্যারে) - একক এন্ট্রির পরিবর্তে অ্যারে ব্যবহার করুন।
  2. শূন্য নয় - নির্দিষ্ট ক্ষেত্রটি খালি হতে পারে না, এতে সর্বদা ডেটা থাকতে হবে।
  3. অনন্য - ক্ষেত্রের মান অবশ্যই অনন্য হতে হবে, এই মডেলটিতে দুটি রেকর্ড থাকতে পারে না যার এই ক্ষেত্রের মান একই।
  4. সূচক - নির্দেশ করে যে অনুসন্ধানের গতি বাড়ানোর জন্য এই ক্ষেত্রের জন্য একটি বিশেষ সূচক তৈরি করা হবে।

সাধারণভাবে, যদি সত্যিই প্রয়োজন হয় তবে চিহ্নগুলি পরীক্ষা করা ঠিক। উদাহরণ স্বরূপ, আমরা দেশের নামের জন্য Not null এবং Unique চিহ্নিত করতে পারি, ধরে নিই যে নাম ছাড়া একটি দেশ বা একই নামের দুটি দেশ থাকতে পারে না। যাইহোক, অ্যাপ্লিকেশনের যুক্তি তৈরির পর্যায়ে এটি নিয়ন্ত্রণ করা একটি ভাল ধারণা, এবং ডাটাবেসের উপর সীমাবদ্ধতা না রাখা।

একইভাবে, শহরগুলির তথ্য সহ একটি টেবিল তৈরি করুন। এটিতে কী ডেটা ক্ষেত্র থাকতে পারে, এই ক্ষেত্রগুলি কী ধরণের তা নিয়ে ভাবুন।

ডাটাবেসের ডেটা বিক্ষিপ্ত টেবিলের আকারে নিজস্বভাবে বিদ্যমান নেই। তারা একটি নির্দিষ্ট উপায়ে একে অপরের সাথে সম্পর্কিত। একটি ডেটা মডেল তৈরির চাবিকাঠি হল এই সম্পর্কগুলিকে সংজ্ঞায়িত করা এবং সম্পর্ক তৈরি করা।

এই ধরনের লিঙ্কগুলি স্থাপন করার জন্য, একটি মডেলের সীমানা থেকে অন্য মডেলে মাউস দিয়ে একটি লাইন আঁকতে হবে। আমাদের উদাহরণে, আমরা নিশ্চিতভাবে জানি যে প্রতিটি শহর কোনো না কোনো দেশে অবস্থিত, তাই আমরা দেশ থেকে শহরে একটি লিঙ্ক তৈরি করতে পারি।


3টি বিভিন্ন ধরণের সংযোগ রয়েছে:

  1. এক থেকে এক (একটি আছে) । টেবিলের প্রতিটি রেকর্ড সংশ্লিষ্ট টেবিল থেকে একটি রেকর্ডে ম্যাপ করা হয় (এটি বিপরীতেও সত্য)। একটি সাধারণ উদাহরণ হল একজন ব্যক্তি এবং তাদের পাসপোর্ট। আমরা সর্বদা নিশ্চিত হতে পারি যে এই সংযোগটি অনন্য। একটি পাসপোর্টে শুধুমাত্র একজন ধারক থাকতে পারে এবং প্রতিটি ব্যক্তির শুধুমাত্র একটি বৈধ পাসপোর্ট থাকতে পারে।
  2. এক থেকে বহু (অনেক আছে) । একটি টেবিলের প্রতিটি রেকর্ড অন্য টেবিলে অনেক রেকর্ড থাকতে পারে। আমাদের ডাটাবেস একটি অনুরূপ উদাহরণ. একটি দেশের বিভিন্ন শহর থাকতে পারে, কিন্তু প্রতিটি শহর শুধুমাত্র একটি দেশের অন্তর্গত হতে পারে। এই সংযোগ আমরা করতে হবে.
  3. অনেক থেকে অনেক . একটি সম্পর্ক যেখানে এক টেবিলের একাধিক রেকর্ড অন্য টেবিলের একাধিক রেকর্ডের সাথে মিলিত হতে পারে। একটি সহজ উদাহরণ হল শিক্ষক এবং ছাত্রদের মধ্যে সম্পর্ক। প্রতিটি শিক্ষক যেমন অনেক শিক্ষার্থীকে শেখাতে পারেন, তেমনি প্রতিটি শিক্ষার্থী বিভিন্ন শিক্ষকের কাছ থেকে শিখতে পারে।

বাড়ির কাজ

কল্পনা করুন যে আপনাকে একটি অনলাইন স্টোরের জন্য একটি অ্যাপ্লিকেশন বিকাশ করতে হবে। এটি কাজ করার জন্য একটি ডাটাবেস মডেল তৈরি করুন।

  • পণ্যের প্রাপ্যতার জন্য তাদের বিবরণের কার্ড, বিভিন্ন শ্রেণীর পণ্য, অর্ডার সম্পর্কে এবং গ্রাহকদের সম্পর্কে তথ্য সরবরাহ করা প্রয়োজন।
  • বিভিন্ন ধরণের ক্ষেত্র সহ টেবিলগুলি পূরণ করুন (অন্তত 5 প্রকার ব্যবহার করুন)।
  • টেবিলের মধ্যে সম্পর্ক স্থাপন করুন। সব 3 ধরনের লিঙ্ক ব্যবহার করুন.