কম্পিউটার টিউটোরিয়াল

MySQL-এ তারিখ কলামসহ কম্পোজিট ইউনিক কি তৈরি করা

MySQL-এ একাধিক কলাম (যাতে DATE টাইপও থাকতে পারে) মিলিয়ে কম্পোজিট UNIQUE KEY তৈরি করা যায়। এটি ডুপ্লিকেট এন্ট্রি প্রতিরোধ করে।

সিনট্যাক্স

CREATE TABLE table_name (
    id INT,
    date_col DATE,
    -- অন্যান্য কলাম
    UNIQUE KEY unique_key_name (id, date_col)
);

উদাহরণ

CREATE TABLE key_referring_date_demo (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    client_id INT,
    client_project_deadline DATE,
    client_name VARCHAR(100),
    client_age INT,
    client_country VARCHAR(20),
    UNIQUE KEY uniq_client_deadline (client_id, client_project_deadline)
);

টেবিল কাঠামো যাচাই

SHOW CREATE TABLE key_referring_date_demo;

আউটপুট (আংশিক)

CREATE TABLE `key_referring_date_demo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `client_id` int(11) DEFAULT NULL,
  `client_project_deadline` date DEFAULT NULL,
  `client_name` varchar(100) DEFAULT NULL,
  `client_age` int(11) DEFAULT NULL,
  `client_country` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_client_deadline` (`client_id`,`client_project_deadline`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

ডুপ্লিকেট প্রতিরোধ যাচাই

INSERT INTO key_referring_date_demo (client_id, client_project_deadline, client_name) 
VALUES (100, '2024-03-15', 'Project Alpha');

-- আবার একই ক্লায়েন্ট ও ডেডলাইন দিয়ে ইনসার্ট করলে এরর
INSERT INTO key_referring_date_demo (client_id, client_project_deadline, client_name) 
VALUES (100, '2024-03-15', 'Project Beta');
-- ERROR 1062 (23000): Duplicate entry '100-2024-03-15' for key 'uniq_client_deadline'

ALERT TABLE দিয়ে পরে যোগ করা

ALTER TABLE existing_table 
ADD UNIQUE KEY uniq_name_date (name_col, date_col);

দ্রষ্টব্য

  • DATE, DATETIME, TIMESTAMP সবই ইউনিক কিয়ে অংশ হতে পারে
  • NULL মান একাধিকবার থাকতে পারে (ইউনিক কি NULL = NULL ধরে না)
  • ইনডেক্স অর্ডার মাঃন রাখে: (client_id, deadline) ≠ (deadline, client_id) ক্যোয়ারি অপ্টিমাইজেশনের জন্য
  1. MySQL-এ CREATE TABLE স্টেটমেন্টে KEY কীওয়ার্ড ব্যবহার করা

  2. MySQL-এ CREATE TEMPORARY TABLE ব্যবহার করে তারিখ সহ অস্থায়ী টেবিল তৈরি

  3. MySQL-ে ইনডেক্সসহ টেবিল তৈরি করা (CREATE INDEX)

  4. MySQL-এ টেবিল তৈরি করে ডিফল্ট হিসেবে বর্তমান তারিখ সেট করা