MySQL - Khóa duy nhất

Xin chào các bạn đang học lập trình cơ sở dữ liệu! Hôm nay, chúng ta sẽ cùng khám phá thế giới của MySQL Unique Keys. Là một giáo viên khoa học máy tính gần gũi, tôi rất vui mừng được hướng dẫn các bạn qua khái niệm quan trọng này. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những điều cơ bản và dần dần nâng cao. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và cùng bắt đầu nhé!

MySQL - Unique Key

Khóa duy nhất là gì?

Trước khi chúng ta đi vào chi tiết, hãy hiểu xem Khóa duy nhất là gì. Hãy tưởng tượng bạn đang tổ chức một buổi tiệc và bạn muốn đảm bảo rằng mỗi khách mời đều có một số vé duy nhất. Đó chính là điều mà Khóa duy nhất trong cơ sở dữ liệu làm - nó đảm bảo rằng một cột cụ thể (hoặc sự kết hợp của các cột) chỉ chứa các giá trị duy nhất trên tất cả các hàng trong bảng.

Tạo Khóa duy nhất trong MySQL

Hãy bắt đầu với những điều cơ bản của việc tạo một Khóa duy nhất trong MySQL. Chúng ta sẽ sử dụng một ví dụ đơn giản là bảng students để minh họa.

CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(50) UNIQUE,
name VARCHAR(100)
);

Trong ví dụ này, chúng ta đang tạo một bảng叫做 students với ba cột:

  1. student_id: Một khóa chính tự động tăng
  2. email: Một khóa duy nhất
  3. name: Một cột thông thường

Từ khóa UNIQUE sau email VARCHAR(50) cho biết MySQL rằng cột email chỉ nên chứa các giá trị duy nhất. Điều này có nghĩa là không có hai sinh viên nào có thể có cùng địa chỉ email trong cơ sở dữ liệu của chúng ta. Thật tuyệt vời phải không?

Bây giờ, hãy thử chèn một số dữ liệu:

INSERT INTO students (email, name) VALUES ('[email protected]', 'John Doe');
INSERT INTO students (email, name) VALUES ('[email protected]', 'Jane Smith');
INSERT INTO students (email, name) VALUES ('[email protected]', 'Johnny Doe');

Hai插入操作将会成功,但第三次插入将会失败, vì chúng ta đang cố chèn một địa chỉ email trùng lặp. MySQL sẽ thân thiện thông báo rằng chúng ta đang vi phạm ràng buộc duy nhất.

Tạo nhiều Khóa duy nhất

Đôi khi, bạn có thể muốn có nhiều khóa duy nhất trong một bảng. Hãy mở rộng bảng students của chúng ta để bao gồm một số số sinh viên duy nhất.

CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(50) UNIQUE,
student_number VARCHAR(10) UNIQUE,
name VARCHAR(100)
);

Bây giờ, cả emailstudent_number đều là các khóa duy nhất. Điều này có nghĩa là mỗi sinh viên phải có một địa chỉ email duy nhất VÀ một số sinh viên duy nhất.

Thêm Khóa duy nhất vào các cột hiện có

Vậy nếu bạn đã có một bảng và muốn thêm một khóa duy nhất vào một cột hiện có thì sao? Đừng lo lắng! MySQL đã có bạn covered. Giả sử chúng ta có một bảng courses hiện có:

CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_code VARCHAR(10),
course_name VARCHAR(100)
);

Bây giờ, chúng ta nhận ra rằng course_code nên là duy nhất. Chúng ta có thể thêm một khóa duy nhất như sau:

ALTER TABLE courses
ADD UNIQUE KEY (course_code);

Lệnh này thêm một ràng buộc duy nhất vào cột course_code. Nhưng hãy cẩn thận! Nếu bạn đã có các giá trị trùng lặp trong cột này, lệnh sẽ không thành công. Bạn sẽ cần phải làm sạch dữ liệu trước.

Xóa Khóa duy nhất trong MySQL

Đôi khi, bạn có thể cần xóa một khóa duy nhất. Có lẽ yêu cầu kinh doanh đã thay đổi, hoặc bạn đã mắc lỗi trong thiết kế. Dù lý do gì, đây là cách bạn có thể xóa một khóa duy nhất:

ALTER TABLE students
DROP INDEX email;

Lệnh này xóa ràng buộc duy nhất khỏi cột email trong bảng students. Lưu ý, tên chỉ mục thường giống với tên cột unless bạn đã chỉ định một tên khác khi tạo khóa.

Tạo Khóa duy nhất bằng Chương trình Client

Trong khi chúng ta đã sử dụng các lệnh SQL trực tiếp, nhiều công cụ quản lý cơ sở dữ liệu cung cấp một giao diện đồ họa để tạo khóa duy nhất. Ví dụ, trong MySQL Workbench, bạn có thể:

  1. Nhấp phải vào bảng của bạn trong người xem schema
  2. Chọn "Alter Table"
  3. Đi tới tab "Indexes"
  4. Nhấp vào "Add Index" và chọn "Unique" làm loại chỉ mục
  5. Chọn các cột bạn muốn làm duy nhất

Điều này có thể là một cách quản lý cấu trúc cơ sở dữ liệu của bạn, đặc biệt là khi bạn mới bắt đầu.

Các phương pháp làm việc với Khóa duy nhất

Dưới đây là bảng tóm tắt các phương pháp chính mà chúng ta đã thảo luận cho việc làm việc với khóa duy nhất:

Phương pháp Mô tả Cú pháp
Tạo Khóa duy nhất (khi tạo bảng) Thêm một ràng buộc duy nhất vào cột khi tạo bảng mới CREATE TABLE table_name (column_name datatype UNIQUE);
Thêm Khóa duy nhất (vào bảng hiện có) Thêm một ràng buộc duy nhất vào cột hiện có trong bảng ALTER TABLE table_name ADD UNIQUE KEY (column_name);
Xóa Khóa duy nhất Xóa ràng buộc duy nhất khỏi cột ALTER TABLE table_name DROP INDEX index_name;

Nhớ rằng, những điều này chỉ là cơ bản. Khi bạn đi sâu hơn vào thiết kế cơ sở dữ liệu, bạn sẽ gặp phải nhiều tình huống phức tạp hơn và các kỹ thuật tiên tiến hơn để quản lý khóa duy nhất.

Cuối cùng, khóa duy nhất là một công cụ mạnh mẽ trong thiết kế cơ sở dữ liệu. Chúng giúp duy trì tính toàn vẹn dữ liệu bằng cách ngăn chặn các mục nhập trùng lặp trong các trường quan trọng. Dù bạn đang xây dựng một hệ thống quản lý sinh viên, một nền tảng thương mại điện tử hay bất kỳ ứng dụng dữ liệu nào khác, việc hiểu và triển khai đúng khóa duy nhất sẽ rất quan trọng cho thành công của bạn.

Vậy, hãy tiếp tục luyện tập, thử nghiệm và quan trọng nhất là tận hưởng niềm vui từ việc thiết kế cơ sở dữ liệu! Đến gặp lại lần sau, chúc các bạn lập trình vui vẻ!

Credits: Image by storyset