Foreign Key

From binaryoption
Jump to navigation Jump to search
Баннер1

Foreign Key

Foreign Key (বিদেশী কী) হল রিলেশনাল ডেটাবেস-এর একটি গুরুত্বপূর্ণ ধারণা। এটি দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়। এই কী একটি টেবিলের একটি বা একাধিক কলামের সমন্বয়ে গঠিত হয়, যা অন্য টেবিলের primary key (প্রাথমিক কী)-কে নির্দেশ করে। Foreign Key ব্যবহারের মাধ্যমে ডেটাবেসের ডেটা ইন্টিগ্রিটি (ডেটা অখণ্ডতা) বজায় রাখা যায় এবং ডেটার মধ্যে সম্পর্ক স্থাপন করা সহজ হয়।

Foreign Key এর মূল ধারণা

একটি টেবিলের Foreign Key অন্য টেবিলের Primary Key-এর সাথে সম্পর্কিত। এর মানে হল, Foreign Key কলামে এমন মান থাকতে হবে যা অন্য টেবিলের Primary Key কলামে বিদ্যমান। যদি Foreign Key কলামে এমন কোনো মান থাকে যা Primary Key টেবিলে নেই, তাহলে ডেটাবেস একটি error (ত্রুটি) দেখাবে।

উদাহরণস্বরূপ, ধরা যাক আমাদের দুটি টেবিল আছে: "Customers" (গ্রাহক) এবং "Orders" (অর্ডার)।

  • **Customers টেবিল:**
   *   CustomerID (Primary Key)
   *   Name
   *   Address
  • **Orders টেবিল:**
   *   OrderID (Primary Key)
   *   CustomerID (Foreign Key - Customers টেবিলের CustomerID-কে নির্দেশ করে)
   *   OrderDate
   *   TotalAmount

এখানে, Orders টেবিলের CustomerID কলামটি Customers টেবিলের CustomerID কলামের Foreign Key। এর মাধ্যমে বোঝা যায় কোন গ্রাহক কোন অর্ডারটি করেছেন।

Foreign Key এর প্রকারভেদ

Foreign Key বিভিন্ন ধরনের হতে পারে, যা ডেটাবেসের সম্পর্কের জটিলতা এবং ডেটা মডেলের প্রয়োজনীয়তার উপর নির্ভর করে। নিচে কয়েকটি প্রধান প্রকার আলোচনা করা হলো:

  • Simple Foreign Key (সরল বিদেশী কী): যখন একটি টেবিলের একটি মাত্র কলাম অন্য টেবিলের Primary Key-কে নির্দেশ করে, তখন তাকে Simple Foreign Key বলা হয়। উপরের উদাহরণে Orders টেবিলের CustomerID কলামটি একটি Simple Foreign Key।
  • Composite Foreign Key (যৌগিক বিদেশী কী): যখন একাধিক কলাম মিলে অন্য টেবিলের Primary Key-কে নির্দেশ করে, তখন তাকে Composite Foreign Key বলা হয়।
  • Self-Referencing Foreign Key (স্ব-রেফারেন্সিং বিদেশী কী): যখন একটি টেবিলের একটি কলাম সেই টেবিলের Primary Key-কে নির্দেশ করে, তখন তাকে Self-Referencing Foreign Key বলা হয়। এটি সাধারণত hierarchical data (শ্রেণীক্রমিক ডেটা)-র ক্ষেত্রে ব্যবহৃত হয়, যেমন একজন কর্মচারী অন্য কর্মীর অধীনে কাজ করলে।

Foreign Key ব্যবহারের সুবিধা

Foreign Key ব্যবহারের অনেক সুবিধা রয়েছে। নিচে কয়েকটি উল্লেখযোগ্য সুবিধা আলোচনা করা হলো:

  • ডেটা ইন্টিগ্রিটি (Data Integrity): Foreign Key নিশ্চিত করে যে ডেটাবেসে ভুল বা অসংলগ্ন ডেটা প্রবেশ করতে না পারে। এটি ডেটার নির্ভরযোগ্যতা বাড়ায়।
  • সম্পর্ক স্থাপন (Relationship Establishment): Foreign Key দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে, যা ডেটাবেসকে আরও অর্থবহ করে তোলে।
  • ডেটা পুনরুদ্ধার (Data Retrieval): Foreign Key ব্যবহার করে সহজেই দুটি টেবিলের মধ্যে ডেটা পুনরুদ্ধার করা যায়। যেমন, কোনো নির্দিষ্ট গ্রাহকের সমস্ত অর্ডার খুঁজে বের করা।
  • ডেটাবেস ডিজাইন (Database Design): Foreign Key ডেটাবেস ডিজাইনকে আরও সহজ ও স্বাভাবিক করে তোলে।
  • ক্যাস্কেডিং আপডেট ও ডিলিট (Cascading Update & Delete): Foreign Key এর মাধ্যমে ক্যাস্কেডিং আপডেট ও ডিলিট অপারেশন করা যায়। এর ফলে একটি টেবিলের Primary Key পরিবর্তন বা ডিলিট করলে, সংশ্লিষ্ট Foreign Key টেবিলের ডেটাও স্বয়ংক্রিয়ভাবে আপডেট বা ডিলিট হয়ে যায়।

Foreign Key তৈরির নিয়মাবলী

Foreign Key তৈরি করার সময় কিছু নিয়মাবলী অনুসরণ করতে হয়। নিচে কয়েকটি গুরুত্বপূর্ণ নিয়ম উল্লেখ করা হলো:

  • Foreign Key কলামের ডেটা টাইপ Primary Key কলামের ডেটা টাইপের সাথে মিলতে হবে।
  • Foreign Key কলামে NULL মান থাকতে পারে, যদি না কলামটি NOT NULL হিসাবে সংজ্ঞায়িত করা হয়।
  • Foreign Key কলামে এমন মান থাকতে হবে যা Primary Key টেবিলে বিদ্যমান।
  • একটি টেবিলে একাধিক Foreign Key থাকতে পারে।

Foreign Key এবং অন্যান্য Key-এর মধ্যে পার্থক্য

বিভিন্ন ধরনের Key ডেটাবেসে ব্যবহৃত হয়, যেমন Primary Key, Unique Key, Candidate Key ইত্যাদি। Foreign Key-এর সাথে এদের কিছু পার্থক্য রয়েছে:

  • Primary Key (প্রাথমিক কী): Primary Key একটি টেবিলের প্রতিটি সারিকে স্বতন্ত্রভাবে সনাক্ত করে। একটি টেবিলে শুধুমাত্র একটি Primary Key থাকতে পারে। Foreign Key অন্য টেবিলের Primary Key-কে নির্দেশ করে।
  • Unique Key (ইউনিক কী): Unique Key একটি কলামে অনন্য মান নিশ্চিত করে। একটি টেবিলে একাধিক Unique Key থাকতে পারে, কিন্তু Primary Key-এর মতো এটি সারিকে স্বতন্ত্রভাবে সনাক্ত করতে পারে না।
  • Candidate Key (ক্যান্ডিডেট কী): Candidate Key হল এমন একটি কলাম বা কলামের সেট যা Primary Key হিসেবে বিবেচিত হতে পারে।
Description | Usage | Uniquely identifies each row in a table. | Ensures each record is unique. | Links two tables together. | Enforces referential integrity. | Ensures that all values in a column are unique. | Prevents duplicate values. | A potential primary key. | Can be chosen as the primary key. |

Foreign Key এর ব্যবহারিক উদাহরণ

একটি অনলাইন শপিং ওয়েবসাইটের ডেটাবেস ডিজাইন বিবেচনা করা যাক। এখানে কয়েকটি টেবিল এবং তাদের মধ্যে Foreign Key সম্পর্ক দেখানো হলো:

  • Products টেবিল: ProductID (Primary Key), ProductName, Price, CategoryID (Foreign Key - Categories টেবিলের CategoryID-কে নির্দেশ করে)।
  • Categories টেবিল: CategoryID (Primary Key), CategoryName।
  • Customers টেবিল: CustomerID (Primary Key), Name, Email, Address।
  • Orders টেবিল: OrderID (Primary Key), CustomerID (Foreign Key - Customers টেবিলের CustomerID-কে নির্দেশ করে), OrderDate, TotalAmount।
  • OrderItems টেবিল: OrderItemID (Primary Key), OrderID (Foreign Key - Orders টেবিলের OrderID-কে নির্দেশ করে), ProductID (Foreign Key - Products টেবিলের ProductID-কে নির্দেশ করে), Quantity, Price।

এই উদাহরণে, Products টেবিলের CategoryID কলামটি Categories টেবিলের CategoryID কলামের Foreign Key। Orders টেবিলের CustomerID কলামটি Customers টেবিলের CustomerID কলামের Foreign Key। OrderItems টেবিলের OrderID কলামটি Orders টেবিলের OrderID কলামের Foreign Key এবং ProductID কলামটি Products টেবিলের ProductID কলামের Foreign Key।

Foreign Key এর সুবিধা এবং অসুবিধা

Foreign Key ব্যবহারের কিছু সুবিধা এবং অসুবিধা রয়েছে যা বিবেচনা করা উচিত:

সুবিধা:

  • ডেটা ইন্টিগ্রিটি নিশ্চিত করে।
  • টেবিলের মধ্যে সম্পর্ক স্থাপন করে।
  • ডেটা পুনরুদ্ধার সহজ করে।
  • ডেটাবেস ডিজাইনকে সহজ করে।

অসুবিধা:

  • Foreign Key তৈরি এবং রক্ষণাবেক্ষণ করা জটিল হতে পারে।
  • ডেটাবেসের পারফরম্যান্সের উপর প্রভাব ফেলতে পারে, বিশেষ করে বড় ডেটাবেসের ক্ষেত্রে।
  • ক্যাস্কেডিং আপডেট এবং ডিলিট অপারেশনগুলি ভুলভাবে কনফিগার করা হলে ডেটা হারানোর কারণ হতে পারে।

Foreign Key এবং SQL

SQL (Structured Query Language) ব্যবহার করে Foreign Key তৈরি করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:

```sql CREATE TABLE Customers (

   CustomerID INT PRIMARY KEY,
   Name VARCHAR(255),
   Address VARCHAR(255)

);

CREATE TABLE Orders (

   OrderID INT PRIMARY KEY,
   CustomerID INT,
   OrderDate DATE,
   TotalAmount DECIMAL(10, 2),
   FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)

); ```

এই কোডে, Orders টেবিলের CustomerID কলামটিকে Customers টেবিলের CustomerID কলামের Foreign Key হিসেবে সংজ্ঞায়িত করা হয়েছে। `FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)` এই অংশটি Foreign Key সম্পর্ক তৈরি করে।

Foreign Key এর উন্নত ব্যবহার

Foreign Key-এর আরও কিছু উন্নত ব্যবহার রয়েছে যা ডেটাবেস ব্যবস্থাপনাকে আরও শক্তিশালী করে:

  • ON DELETE CASCADE: এই অপশনটি ব্যবহার করলে, যখন Parent টেবিলের কোনো সারি ডিলিট করা হয়, তখন Child টেবিলের সংশ্লিষ্ট সারিগুলো স্বয়ংক্রিয়ভাবে ডিলিট হয়ে যায়।
  • ON UPDATE CASCADE: এই অপশনটি ব্যবহার করলে, যখন Parent টেবিলের কোনো Primary Key আপডেট করা হয়, তখন Child টেবিলের সংশ্লিষ্ট Foreign Key মানগুলো স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।
  • ON DELETE SET NULL: এই অপশনটি ব্যবহার করলে, যখন Parent টেবিলের কোনো সারি ডিলিট করা হয়, তখন Child টেবিলের সংশ্লিষ্ট Foreign Key কলামের মান NULL হয়ে যায়।
  • ON UPDATE SET NULL: এই অপশনটি ব্যবহার করলে, যখন Parent টেবিলের কোনো Primary Key আপডেট করা হয়, তখন Child টেবিলের সংশ্লিষ্ট Foreign Key কলামের মান NULL হয়ে যায়।

Foreign Key এর বিকল্প

যদিও Foreign Key ডেটাবেস সম্পর্কের জন্য একটি শক্তিশালী এবং বহুল ব্যবহৃত পদ্ধতি, কিছু ক্ষেত্রে এর বিকল্প ব্যবহার করা যেতে পারে:

  • Application-Level Enforcement: ডেটাবেসের পরিবর্তে অ্যাপ্লিকেশন স্তরে ডেটা ইন্টিগ্রিটি প্রয়োগ করা যেতে পারে। তবে, এটি জটিল এবং ত্রুটিপূর্ণ হতে পারে।
  • Triggers: ট্রিগার ব্যবহার করে ডেটাবেসে স্বয়ংক্রিয়ভাবে কিছু নির্দিষ্ট কাজ করা যায়, যা Foreign Key-এর কিছু কার্যকারিতা প্রতিস্থাপন করতে পারে।
  • Stored Procedures: স্টোড প্রসিডিউর ব্যবহার করে ডেটাবেসের ডেটা ম্যানিপুলেশন এবং ভ্যালিডেশন করা যায়।

উপসংহার

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

আরও জানতে:

এখনই ট্রেডিং শুরু করুন

IQ Option-এ নিবন্ধন করুন (সর্বনিম্ন ডিপোজিট $10) Pocket Option-এ অ্যাকাউন্ট খুলুন (সর্বনিম্ন ডিপোজিট $5)

আমাদের সম্প্রদায়ে যোগ দিন

আমাদের টেলিগ্রাম চ্যানেলে যোগ দিন @strategybin এবং পান: ✓ দৈনিক ট্রেডিং সংকেত ✓ একচেটিয়া কৌশলগত বিশ্লেষণ ✓ বাজারের প্রবণতা সম্পর্কে বিজ্ঞপ্তি ✓ নতুনদের জন্য শিক্ষামূলক উপকরণ

Баннер