Tạo bảng trong PostgreSQL - Phần 2¶
Tóm lược nội dung
Bài này trình bày cách tạo thêm bảng, đồng thời kết nối hai bảng với nhau, bằng công cụ pgAdmin 4 của PostgreSQL.
Khái quát cơ sở dữ liệu¶
Cơ sở dữ liệu cần tạo là school_db, dùng để quản lý điểm số của học sinh, gồm một số bảng như sau:
| Tên bảng | Dữ liệu được lưu trữ |
|---|---|
classrooms |
Dữ liệu về lớp học |
students |
Dữ liệu về học sinh |
subjects |
Dữ liệu về môn học |
scores |
Dữ liệu về điểm số của học sinh |
Bài trước đã hướng dẫn cách tạo một bảng, là students.
Bài này trình bày cách tạo thêm bảng classrooms và kết nối với bảng students.
Mở tập tin sql¶
1. Trong cửa sổ Query Tool của pgAdmin 4, nhấn nút Open File.
2. Chọn tập tin school_db.sql đã lưu trong bài trước.
Bảng classrooms¶
Tạo bảng¶
Mô tả của bảng classrooms như sau:
| Thuộc tính | Ý nghĩa | Kiểu dữ liệu |
|---|---|---|
classroom_id |
mã định danh của mỗi lớp | chuỗi gồm 5 ký tự và là khóa chính |
classroom_name |
tên đầy đủ của mỗi lớp | chuỗi gồm 50 ký tự |
room |
phòng học của mỗi lớp | chuỗi gồm 50 ký tự |
head_teacher |
họ tên giáo viên chủ nhiệm | chuỗi gồm 50 ký tự |
Để tạo bảng classrooms ứng với mô tả trên, ta thực hiện như sau:
1. Trong tab Query, nhập câu lệnh sau để tạo bảng classrooms:
2. Quét khối câu lệnh SQL vừa viết, rồi nhấn F5 để chạy. (Hoặc chỉ cần đặt con trỏ vào vị trí bất kỳ trong câu lệnh, rồi nhấn Alt + F5).
Thêm dữ liệu¶
Mã lệnh SQL thêm mới ba mẫu tin (1) vào bảng classrooms:
- Mỗi mẫu tin là một hàng trong bảng, chứa dữ liệu của một thực thể hoặc một sự kiện, cụ thể ở đây, mỗi mẫu tin là dữ liệu của một lớp.
- Do thêm dữ liệu vào tất cả thuộc tính trong bảng, ta không cần liệt kê tên từng thuộc tính.
Kết nối hai bảng¶
Ta cần kết nối hai bảng students và classrooms với nhau nhằm lưu trữ và quản lý thông tin "một học sinh học ở lớp nào" hoặc "một lớp có những học sinh nào". (1)
- Kết nối còn được gọi là tạo mối quan hệ giữa hai bảng.
Để kết nối hai bảng, ta cần thực hiện như sau:
1. Xác định một thuộc tính chung giữa hai bảng. Cụ thể ở đây là thuộc tính classroom_id.
2. Tạo tham chiếu từ bảng này đến bảng kia. Cụ thể, tạo tham chiếu từ thuộc tính classroom_id của bảng students đến thuộc tính classroom_id của bảng classrooms.
Hiện nay, bảng students chưa có thuộc tính classroom_id. Cho nên, ta cần thêm thuộc tính classroom_id trước.
Thêm thuộc tính cho bảng¶
Để thêm thuộc tính (cột) cho bảng, ta dùng câu lệnh SQL ALTER TABLE.
Cú pháp lệnh ALTER TABLE để thêm thuộc tính (cột)
Ví dụ:
Mã lệnh SQL thêm thuộc tính classroom_id vào bảng students:
Kết nối bảng¶
Để kết nối (nói cách khác là tạo mối quan hệ) giữa hai bảng, ta cần dựa vào khoá ngoại (1) và khoá chính của chúng.
- Khóa ngoại là một hoặc nhiều thuộc tính (cột) tham chiếu đến khoá chính của bảng khác, nhằm bảo đảm tính toàn vẹn dữ liệu và duy trì mối quan hệ giữa các bảng.
Theo đó, ta cần tạo ra ràng buộc khoá ngoại cho thuộc tính classroom_id trong bảng students. Ràng buộc này bảo đảm rằng giá trị của khoá ngoại classroom_id trong bảng students phải tham chiếu đến khoá chính classroom_id của bảng classrooms.
Nói cách khác, giá trị classroom_id của mỗi học sinh trong bảng students phải khớp với một giá trị classroom_id có sẵn trong bảng classrooms.
Chẳng hạn, nếu ta muốn cập nhật classroom_id của một học sinh thành 10A17, mà giá trị 10A17 lại không tồn tại trong bảng classrooms, thì cơ sở dữ liệu sẽ không cho cập nhật. Ràng buộc khoá ngoại ngăn chặn cập nhật là nhằm bảo đảm tính nhất quán của cơ sở dữ liệu.
Để bổ sung ràng buộc khoá ngoại cho một bảng, ta cũng dùng câu lệnh SQL ALTER TABLE.
Cú pháp lệnh ALTER TABLE để thêm ràng buộc khoá ngoại
Ví dụ:
Mã lệnh SQL thêm ràng buộc khoá ngoại từ bảng students đến bảng classrooms:
-
fk_classroom_idlà tên của ràng buộc.classroom_idlà thuộc tính sẽ làm khoá ngoại của của bảngstudents. -
Dòng này có nghĩa là: tham chiếu đến
classroom_idcủa bảngclassrooms.
Sau câu lệnh trên, mối quan hệ giữa hai bảng students và classrooms được thể hiện qua sơ đồ dưới đây:
Trong đó:
- Bảng
classroomsđược gọi là bảng cha. - Bảng
studentsđược gọi là bảng con.
Cập nhật giá trị của thuộc tính¶
Để cập nhật giá trị của thuộc tính trong bảng, ta dùng câu lệnh SQL UPDATE.
Cú pháp lệnh UPDATE
Ví dụ:
Mã lệnh SQL cập nhật giá trị của thuộc tính classroom_id trong bảng students:
-
where: dùng để lọc ra các mẫu tin thoả điều kiện.student_id = '221001': mẫu tin nào có thuộc tínhstudent_idbằng với chuỗi'221001'sẽ được cập nhật.
Xem toàn bộ dữ liệu của bảng students vừa cập nhật bằng cách: click phải lên bảng students > chọn View/Edit Data > chọn All Rows.
Sơ đồ tóm tắt¶
Mã nguồn¶
Các đoạn mã trong bài được đặt tại GitHub.