SQL - RDBMS Concepts
Xin chào các bạn đam mê cơ sở dữ liệu! Tôi rất vui mừng được làm hướng dẫn viên của các bạn trong hành trình thú vị vào thế giới SQL và Hệ thống Quản lý Cơ sở Dữ liệu Hữu quan (RDBMS). Là một ai đó đã dạy khoa học máy tính trong nhiều năm (hãy nói rằng tôi nhớ khi các đĩa mềm thực sự柔软), tôi ở đây để giải thích các khái niệm này một cách dễ hiểu, ngay cả khi bạn chưa từng viết một dòng mã trước đây. Vậy, hãy lấy饮料 yêu thích của bạn, ngồi舒适的, và cùng nhau vào sâu!
What is RDBMS?
RDBMS viết tắt của Relational Database Management System. Bây giờ, tôi biết rằng听起来 phức tạp, nhưng hãy nghĩ về nó như một tủ tài liệu kỹ thuật số cho dữ liệu của bạn. Giống như cách bạn tổ chức tài liệu vật lý của mình trong các文件夹 và tủ, một RDBMS giúp bạn tổ chức và quản lý một lượng lớn thông tin một cách có cấu trúc.
Phần "relational" đến từ thực tế rằng dữ liệu trong một RDBMS được lưu trữ trong các bảng có thể liên quan đến nhau. Hãy tưởng tượng bạn đang lên kế hoạch cho một bữa tiệc lớn (vì ai lại không thích một buổi tiệc vui vẻ?). Bạn có thể có một bảng cho khách, một bảng cho món ăn, và một bảng cho việc sắp xếp chỗ ngồi. Các bảng này đều liên quan đến tiệc của bạn, và một RDBMS giúp bạn quản lý và kết nối thông tin này một cách hiệu quả.
Một số ví dụ phổ biến của RDBMS bao gồm:
- MySQL
- PostgreSQL
- Oracle
- Microsoft SQL Server
Mỗi hệ thống này có những phiên bản và tính năng riêng, nhưng chúng đều tuân theo cùng các nguyên tắc cơ bản mà chúng ta sẽ thảo luận.
What is a Table?
Trong thế giới RDBMS, một bảng là nơi xảy ra phép màu. Nó là khối cơ bản của cơ sở dữ liệu của bạn. Hãy tưởng tượng một bảng như một bảng tính hoặc lưới nơi bạn lưu trữ các loại thông tin cụ thể.
Hãy tạo một bảng đơn giản cho kế hoạch tiệc giả định của chúng ta:
CREATE TABLE Guests (
GuestID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100),
AttendingStatus VARCHAR(20)
);
Mã SQL này tạo một bảng tên là "Guests" với năm cột. Đừng lo lắng về cú pháp hiện tại; chúng ta sẽ đến đó sau. Điều quan trọng là phải hiểu rằng bảng này sẽ lưu trữ thông tin về mỗi khách mời được mời đến tiệc của chúng ta.
What is a Field?
Một trường là một cột trong bảng của bạn chứa một mảnh thông tin cụ thể. Trong bảng Guests, chúng tôi có năm trường:
- GuestID
- FirstName
- LastName
- AttendingStatus
Mỗi trường có một tên và một kiểu dữ liệu. Kiểu dữ liệu cho biết cơ sở dữ liệu loại thông tin nào có thể được lưu trữ trong trường đó. Ví dụ, "GuestID" là INT (整数) vì chúng ta sẽ sử dụng số để xác định khách, trong khi "FirstName" là VARCHAR (chuỗi ký tự có độ dài thay đổi) vì tên được tạo thành từ các chữ cái.
What is a Record or a Row?
Một bản ghi, còn được gọi là một hàng, là một mục nhập duy nhất trong bảng của bạn. Nó chứa tất cả thông tin cho một mục trong tất cả các trường. Trong bảng Guests, một bản ghi duy nhất có thể trông như thế này:
INSERT INTO Guests (GuestID, FirstName, LastName, Email, AttendingStatus)
VALUES (1, 'John', 'Doe', '[email protected]', 'Confirmed');
Lệnh SQL này thêm một bản ghi mới vào bảng Guests. Bây giờ, hãy phân tích nó:
- GuestID: 1
- FirstName: John
- LastName: Doe
- Email: [email protected]
- AttendingStatus: Confirmed
Mỗi bản ghi đại diện cho một khách trong cơ sở dữ liệu kế hoạch tiệc của chúng ta.
What is a Column?
Một cột là một tập hợp verticall các giá trị dữ liệu, tất cả cùng một loại. Nó cơ bản là một cách khác để nhìn các trường. Trong khi một trường xác định cấu trúc của dữ liệu của bạn, một cột là tập hợp thực tế các giá trị dữ liệu cho một trường cụ thể trên tất cả các bản ghi.
Ví dụ, nếu chúng ta có 100 khách trong bảng, cột "FirstName" sẽ chứa tất cả 100 tên đầu tiên, một cho mỗi khách.
What is a NULL Value?
Ah, NULL - kẻ thù của nhiều người mới bắt đầu! NULL không phải là zero, không phải là chuỗi trống, nó... well, nó là không có gì. Nó đại diện cho sự vắng mặt của một giá trị.
Hãy nói rằng chúng ta không chắc John Doe có tham gia tiệc của chúng ta hay không. Chúng ta có thể cập nhật bản ghi như sau:
UPDATE Guests
SET AttendingStatus = NULL
WHERE GuestID = 1;
Lệnh này đặt trạng thái tham gia của John thành NULL, cho thấy chúng ta chưa có thông tin này.
SQL Constraints
Giới hạn là như những người bảo vệ của tiệc cơ sở dữ liệu của bạn. Chúng强制 các quy tắc trên dữ liệu trong bảng của bạn để duy trì độ chính xác và đáng tin cậy. Hãy xem xét một số giới hạn phổ biến:
Giới hạn | Mô tả | Ví dụ |
---|---|---|
NOT NULL | Đảm bảo một cột không thể có giá trị NULL | Email VARCHAR(100) NOT NULL |
UNIQUE | Đảm bảo tất cả các giá trị trong một cột là khác nhau | Email VARCHAR(100) UNIQUE |
PRIMARY KEY | Kết hợp NOT NULL và UNIQUE. Định danh duy nhất mỗi bản ghi trong bảng | GuestID INT PRIMARY KEY |
FOREIGN KEY | Đảm bảo tính toàn vẹn tham chiếu giữa hai bảng | PartyID INT, FOREIGN KEY (PartyID) REFERENCES Parties(PartyID) |
CHECK | Đảm bảo tất cả các giá trị trong một cột thỏa mãn một điều kiện cụ thể | CHECK (AttendingStatus IN ('Confirmed', 'Declined', 'Pending')) |
Hãy điều chỉnh bảng Guests của chúng ta để bao gồm một số giới hạn này:
CREATE TABLE Guests (
GuestID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE NOT NULL,
AttendingStatus VARCHAR(20) CHECK (AttendingStatus IN ('Confirmed', 'Declined', 'Pending'))
);
Bây giờ bảng của chúng ta robust và ít có khả năng lỗi nhập liệu hơn!
Data Integrity
Tính toàn vẹn dữ liệu là về việc duy trì và đảm bảo độ chính xác và nhất quán của dữ liệu trong suốt toàn bộ chu kỳ sống của nó. Nó giống như việc đảm bảo tất cả các nguyên liệu trong công thức của bạn là tươi và được đo lường chính xác trước khi bạn bắt đầu nấu ăn.
Có bốn loại tính toàn vẹn dữ liệu:
- Entity Integrity: Đảm bảo mỗi hàng trong bảng là duy nhất có thể nhận diện. Điều này thường đạt được bằng cách sử dụng khóa chính.
- Referential Integrity: Đảm bảo các mối quan hệ giữa các bảng vẫn nhất quán. Điều này được quản lý bằng khóa ngoại.
- Domain Integrity: Đảm bảo tất cả các giá trị trong một cột thuộc một miền xác định (tập hợp các giá trị chấp nhận).
- User-Defined Integrity: Bất kỳ quy tắc hoặc giới hạn nào khác cụ thể cho doanh nghiệp hoặc ứng dụng của bạn.
Bảng Guests đã được điều chỉnh với các giới hạn là một ví dụ tốt về việc thực hiện tính toàn vẹn dữ liệu.
Database Normalization
Database normalization giống như việc dọn dẹp phòng của bạn - nó là về việc tổ chức dữ liệu của bạn một cách hiệu quả và loại bỏ冗余. Nó là một kỹ thuật được sử dụng để cấu trúc cơ sở dữ liệu quan hệ theo một series của các hình thức chuẩn để giảm thiểu冗余 dữ liệu và cải thiện tính toàn vẹn dữ liệu.
Có nhiều hình thức chuẩn, nhưng những hình thức thường được sử dụng nhất là:
- First Normal Form (1NF): Mỗi ô bảng nên chứa một giá trị duy nhất, và mỗi bản ghi cần phải duy nhất.
- Second Normal Form (2NF): Bảng ở 1NF và tất cả các thuộc tính phi khóa hoàn toàn phụ thuộc vào khóa chính.
- Third Normal Form (3NF): Bảng ở 2NF và tất cả các thuộc tính chỉ phụ thuộc vào khóa chính.
Ví dụ, thay vì có một bảng "Parties" với thông tin khách lặp lại, chúng ta có thể chia nó thành hai bảng: "Parties" và "Guests", với mối quan hệ giữa chúng. Điều này giảm thiểu冗余 và làm cho cơ sở dữ liệu của chúng ta hiệu quả hơn.
Và thế là bạn đã có nó, các bạn! Chúng ta đã bao gồm các khái niệm cơ bản của SQL và RDBMS. Nhớ rằng, học cơ sở dữ liệu là một hành trình, không phải là đích đến. Nó có thể看起来 quá tải ban đầu, nhưng với sự thực hành và kiên nhẫn, bạn sẽ quản lý dữ liệu như một chuyên gia trong thời gian ngắn.
Khi chúng ta kết thúc, tôi nhớ đến một câu trích dẫn của nhà khoa học máy tính vĩ đại Grace Hopper: "Câu nói nguy hiểm nhất trong ngôn ngữ là, 'Chúng ta đã luôn làm như vậy này.'" Vậy, đừng害怕 thử nghiệm, mắc lỗi, và tìm cách hiểu các khái niệm này theo cách riêng bạn. Chúc mừng编码, và hy vọng các truy vấn của bạn luôn trả về kết quả bạn mong đợi!
Credits: Image by storyset