CodeGym/Java Course/All lectures for BN purposes/ডাটাবেস ডিজাইনের মৌলিক কাজ

ডাটাবেস ডিজাইনের মৌলিক কাজ

বিদ্যমান

1.1 ভূমিকা

একটি ডাটাবেস ডিজাইন করা কিছুটা জাভা প্রকল্পের আর্কিটেকচার ডিজাইন করার মতো। আপনি কয়েকটি টেবিলে সমস্ত ডেটা রাখতে পারেন, অথবা আপনি স্কিমা এবং কয়েক ডজন টেবিল থেকে একটি সুন্দর ডেটা কাঠামো তৈরি করতে পারেন।

একটি ডাটাবেস ডিজাইন করার সময় একজন ডেভেলপার সাধারণত যে কাজগুলির মুখোমুখি হন তা এখানে রয়েছে:

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

মনে রাখবেন যে আপনি একটি আদর্শ ডাটাবেস গঠন করতে পারবেন না, কারণ. এটা, আপনার কোড মত, ক্রমাগত পরিবর্তন হবে. আপনার ডাটাবেস গঠন ডিজাইন করার সময় আপনাকে তিনটি জিনিস মনে রাখা উচিত:

  1. গঠন যথেষ্ট ভাল হতে হবে.
  2. সবকিছুর মধ্যে একটি যুক্তি থাকতে হবে যা অন্য লোকেরা বুঝতে পারে।
  3. অকাল অপ্টিমাইজেশান সমস্ত মন্দের মূল।

আপনাকে বিশ্বের সেরা ডাটাবেস কাঠামো তৈরি করতে হবে না । তিনি এখনও পরিবর্তন হবে. আপনার কাজ হল নিশ্চিত করা যে আপনার ডাটাবেসের গঠনে 20টি পরিবর্তনের পরে, এটি বের করা যথেষ্ট সহজ।

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

এটি প্রয়োজনীয় না হওয়া পর্যন্ত ডাটাবেস অপ্টিমাইজ করবেন না । যদি টেবিলে মাত্র কয়েকশ সারি থাকে, তাহলে সম্ভবত DBMS এটিকে মেমরিতে রাখবে এবং এটিতে ক্যাশে কোয়েরি করবে।

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

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

1.2 লাইব্রেরি ডিজাইন

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

যে কোনো লাইব্রেরির প্রধান কাজ হলো বই তহবিলের প্রক্রিয়াকরণ। সিস্টেম ব্যবহারকারীদের তিনটি প্রধান গ্রুপকে আলাদা করা সহজ: পাঠক, গ্রন্থাগারিক, প্রশাসক । প্রতিটির কার্যকলাপ একটি ব্যবহারের ক্ষেত্রে চিত্রে দেখানো হয়েছে।

ইতিমধ্যেই, ভবিষ্যতের ডাটাবেসের কিছু সত্তা এবং সম্পর্ক আলাদা করা যেতে পারে:

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

সমাধানটি একটি অতিরিক্ত সত্তার প্রবর্তন হতে পারে - একটি বই ইস্যু করার জন্য একটি কার্ড। যখন বইটি পাঠককে ইস্যু করা হয়, একটি কার্ড তৈরি করা হয় এবং যখন বইটি হস্তান্তর করা হয়, তখন এটিতে একটি অনুরূপ চিহ্ন দেওয়া হয়। এই কার্ডগুলির সাহায্যে, প্রতিটি ব্যবহারকারীর ঋণ নির্ধারণ করা হয় এবং বই ব্যবহারের পরিসংখ্যান গণনা করা হয়। পাঠক দ্বারা সাহিত্য বুকিং করার সময়, একটি কার্ডও চালু করা হয়; যদি বুক করা সাহিত্য পাঠক নির্দিষ্ট সময়ের মধ্যে গ্রহণ না করে তবে কার্ডটি নষ্ট হয়ে যায়। একজন পাঠক কয়টি বই বই করতে পারবেন তার একটি সীমা রয়েছে।

সাহিত্য নির্বাচন করার সময়, ব্যবহারকারী লেখক, শিরোনাম, প্রকাশনার বছর দ্বারা অনুসন্ধান ফলাফল ফিল্টার করার ক্ষমতা সহ সাহিত্য ক্যাটালগ দেখেন।

লাইব্রেরির সমস্ত বইয়ের পরিসংখ্যান গণনা করা সম্ভব, যখন একটি নির্দিষ্ট সময়ের জন্য বইটির জারি করা কপির সংখ্যা। আপনি বইয়ের নূন্যতম সংখ্যা সেট করতে পারেন যার জন্য গণনা করা হয়। এই পরিসংখ্যানের ভিত্তিতে, অব্যবহৃত বইগুলি লাইব্রেরি থেকে বন্ধ করে দেওয়া হয়।

বিষয় এলাকার নিম্নলিখিত প্রধান সত্তাগুলিকে আলাদা করা যেতে পারে:

  • ব্যবহারকারী (গ্রন্থাগারিক এবং প্রশাসক);
  • পাঠক
  • পাঠকক্ষ;
  • বই
  • বই প্রদান কার্ড;
  • বুক বুকিং কার্ড।

ডাটাবেসের পরিবর্তিত ইআর-ডায়াগ্রাম চিত্রটিতে দেখানো হয়েছে।

চিত্র 1-এ দেখানো ব্যবহারের ক্ষেত্রে, ডাটাবেসকে নিম্নলিখিত প্রশ্নগুলি বাস্তবায়ন করা উচিত (একটি সম্পূর্ণ তালিকা নয়):

  • নির্দিষ্ট শর্তের সাথে মেলে এমন বই প্রদর্শন করুন;
  • সময়মতো বন্ধ হয়নি এমন বই দেওয়ার জন্য কার্ড আছে এমন ব্যবহারকারীদের প্রদর্শন করুন (গ্রন্থাগারিক দেনাদার খুঁজছেন);
  • প্রদত্ত ব্যবহারকারীর বই ঋণদান কার্ডের সাথে সামঞ্জস্যপূর্ণ সমস্ত বই প্রদর্শন করুন যা সময়মতো বন্ধ হয়নি (ব্যবহারকারী নতুন বইয়ের জন্য লাইব্রেরিতে এসেছেন - আপনাকে দেখতে হবে যে সে একজন দেনাদার কিনা এবং তাকে এটি সম্পর্কে অবহিত করতে হবে);
  • N সেকেন্ডের বেশি আগে তৈরি করা সমস্ত বুকিং কার্ড মুছুন;
  • নির্দিষ্ট ব্যবহারকারীর অপ্রকাশিত বুক রিজার্ভেশন কার্ডের সাথে সম্পর্কিত সমস্ত বই প্রদর্শন করুন (পাঠক বই অর্ডার করেছেন এবং তাদের জন্য লাইব্রেরিতে এসেছেন - এটি দেওয়ার জন্য গ্রন্থাগারিককে এই তালিকাটি পেতে হবে)।

1.3 স্কিমা গঠন

একটি ডেটা স্কিমা তৈরি করতে, আপনাকে প্রথমে সত্তার বিবরণ সহ ER ডায়াগ্রামের পরিপূরক করতে হবে (এটি পরিমার্জন করুন)। কখনও কখনও, একই সময়ে, একটি ER ডায়াগ্রাম তৈরিতে ত্রুটিগুলি খুঁজে পাওয়া সম্ভব - এই কাজটিতে, এটি পাওয়া গেছে যে বইটিকে লাইব্রেরি হলের সাথে "কোনভাবে" সংযুক্ত করা দরকার।

বইটিতে প্রয়োজনীয় "হল নম্বর" রেখে এটি করা যেতে পারে, তবে, এই পদ্ধতির সাথে, একই বইটি ডাটাবেসে বেশ কয়েকবার বর্ণনা করতে হবে (যদি এটি বিভিন্ন হলে ঘটে থাকে)। একটি আরও সঠিক পদ্ধতি হল একটি অতিরিক্ত সত্তা "বই প্লেসমেন্ট" প্রবর্তন করা। চিত্রটি একটি যুক্ত সত্তা এবং প্রপস সহ একটি ER ডায়াগ্রাম দেখায়৷

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

এই ক্ষেত্রে, নিম্নলিখিত চিত্রে:

  • লিঙ্কগুলির জন্য, মার্টিনের স্বরলিপি ("কাকের ফুট" ব্যবহার করা হয়);
  • টেবিলগুলিকে 3টি বিভাগে বিভক্ত আয়তক্ষেত্র হিসাবে দেখানো হয়েছে:
    • টেবিলের নাম;
    • অভ্যন্তরীণ কী (মার্কার দিয়ে চিহ্নিত);
    • অবশিষ্ট ক্ষেত্রগুলি, যখন বাধ্যতামূলকগুলি একটি মার্কার দিয়ে চিহ্নিত করা হয়েছে৷

এই মডেলটি বিকাশ করার সময়, লাইব্রেরিয়ান টেবিলের সাথে অ্যাডমিনিস্ট্রেটর টেবিলে যোগ দেওয়ার ইচ্ছা ছিল - তবে ব্যবহারকারীদের টেবিল যোগ করুন:

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

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

ডাটাবেস ডিজাইন করার সময়, আপনি অন্তত উপরের উদাহরণের মত যুক্তি দিতে সক্ষম হবেন। আপনি যদি মনে করেন যে আপনি সফল হয়েছেন, আসুন আরও এগিয়ে যাই: আরও তত্ত্ব।

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই