BÀI 18: THỰC HÀNH XÁC ĐỊNH CẤU TRÚC BẢNG VÀ CÁC TRƯỜNG KHÓA

 


TIN HỌC 11 – CHỦ ĐỀ 4

Bài 18. Thực Hành Xác Định Cấu Trúc Bảng Và Các Trường Khóa

Xác định đúng cấu trúc bảng và các trường khóa chính là bước đầu tiên để xây dựng một cơ sở dữ liệu khoa học, chính xác và dễ quản lý.

SAU BÀI HỌC NÀY, EM SẼ:

  • Có được những kiến thức về các bảng dữ liệu, cấu trúc của chúng và các trường khóa trước khi bước vào tạo lập CSDL.
  • Biết xác định bảng, trường dữ liệu, khóa chính và khóa ngoài trong một CSDL.

1. XEM XÉT BÀI TOÁN

A female engineer using a laptop while monitoring data servers in a modern server room.

Bài toán quản lí các bản thu âm nhạc.

📋 QUY ƯỚC:

  • Nhạc sĩ sáng tác bản nhạc: tên một nhạc sĩ hay tên một nhóm nhạc sĩ sáng tác bản nhạc đó.
  • Ca sĩ thể hiện bản nhạc: một ca sĩ hay một nhóm ca sĩ biểu diễn tác phẩm.

Bảng 18.1 – Ví dụ về một bản ghi chép các bản thu âm nhạc

STTTên bản nhạcTên nhạc sĩTên ca sĩ
1Du kích Sông ThaoĐỗ NhuậnĐoàn Tân
2Trường ca Sông LôVăn CaoLê Dung
3Tình caHoàng ViệtTrần Khánh
4Xa khơiNguyễn Tài TuệTân Nhàn
5Việt Nam quê hương tôiĐỗ NhuậnQuốc Hương
6Tiến về Hà NộiVăn CaoĐoàn Tân
7Nhạc rừngHoàng ViệtQuốc Hương
8Tiếng hát giữa rừng Pác BóNguyễn Tài TuệLê Dung
9Trường ca Sông LôVăn CaoTrần Khánh
10Tiến về Hà NộiVăn CaoQuốc Hương

⚠️ VẤN ĐỀ:

Một bản nhạc có thể có nhiều bản thu âm khác nhau do những ca sĩ khác nhau thể hiện. Ví dụ: "Trường ca Sông Lô" xuất hiện ở dòng 2 và 9, do Lê Dung và Trần Khánh thể hiện. → Xuất hiện dữ liệu lặp.

2. XÁC ĐỊNH CẤU TRÚC BẢNG

Bảng BAN THU ÂM:

banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)

📐 CẤU TRÚC:

banthuam
├── idBanthuam   ← KHÓA CHÍNH
├── tenBannhac
├── tenNhacsi
└── tenCasi

3. TỔ CHỨC LẠI BẢNG DỮ LIỆU

⚠️ Vấn đề dữ liệu lặp:

Một ca sĩ có thể thể hiện nhiều bản nhạc. Một nhạc sĩ có thể sáng tác nhiều bản nhạc. → Tên ca sĩ, nhạc sĩ bị lặp lại nhiều lần.

✅ CÁCH GIẢI QUYẾT: Tách thành các bảng riêng

  • casi – lưu thông tin ca sĩ
  • nhacsi – lưu thông tin nhạc sĩ
  • bannhac – lưu thông tin bản nhạc
  • banthuam – lưu thông tin bản thu âm

Bảng 18.2 – Bảng casi

idCasitenCasi
1Trần Khánh
2Lê Dung
3Tân Nhàn
4Quốc Hương
5Đoàn Tân

Bảng 18.3 – Bảng banthuam (thay tenCasi bởi idCasi)

idBanthuamtenBannhactenNhacsiidCasi
1Du kích Sông ThaoĐỗ Nhuận5
2Trường ca Sông LôVăn Cao2
3Tình caHoàng Việt1
4Xa khơiNguyễn Tài Tuệ3
5Việt Nam quê hương tôiĐỗ Nhuận4

Bảng 18.4 – Bảng bannhac

idBannhactenBannhactenNhacsi
1Du kích Sông ThaoĐỗ Nhuận
2Trường ca Sông LôVăn Cao
3Tình caHoàng Việt
4Xa khơiNguyễn Tài Tuệ
5Việt Nam quê hương tôiĐỗ Nhuận
6Tiến về Hà NộiVăn Cao
7Nhạc rừngHoàng Việt
8Tiếng hát giữa rừng Pác BóNguyễn Tài Tuệ

Bảng 18.5 – Bảng banthuam (sau khi dùng idBannhac)

idBanthuamidBannhacidCasi
115
222
331
443
554
665
774
882
921
1064

Bảng 18.6 – Bảng nhacsi

idNhacsitenNhacsi
1Đỗ Nhuận
2Văn Cao
3Hoàng Việt
4Nguyễn Tài Tuệ

Bảng 18.7 – Bảng bannhac (sau khi dùng idNhacsi)

idBannhactenBannhacidNhacsi
1Du kích Sông Thao1
2Trường ca Sông Lô2
3Tình ca3
4Xa khơi4
5Việt Nam quê hương tôi1
6Tiến về Hà Nội2
7Nhạc rừng3
8Tiếng hát giữa rừng Pác Bó4

4. CÁC LOẠI KHÓA

🔑 KHÓA CHÍNH (Primary Key)

Mỗi bảng có một khóa chính. Khóa chính là trường dùng để phân biệt duy nhất mỗi bản ghi. Giá trị khóa chính không được trùng nhau.

  • casi → idCasi
  • nhacsi → idNhacsi
  • bannhac → idBannhac
  • banthuam → idBanthuam

🔗 KHÓA NGOÀI (Foreign Key)

Khóa ngoài là trường ở một bảng tham chiếu đến khóa chính của bảng khác.

  • banthuam.idBannhac → bannhac.idBannhac
  • banthuam.idCasi → casi.idCasi
  • bannhac.idNhacsi → nhacsi.idNhacsi

HÌNH 18.2 – CẤU TRÚC CÁC BẢNG

CASI
idCasi (PK) | tenCasi
BANTHUAM
idBanthuam (PK)
idBannhac (FK) | idCasi (FK)
BANNHAC
idBannhac (PK) | tenBannhac
idNhacsi (FK)
NHACSI
idNhacsi (PK) | tenNhacsi

🚫 KHÓA CẤM TRÙNG LẶP (Unique):

  • Cặp (tenBannhac, idNhacsi) trong bảng bannhac không được trùng.
  • Cặp (idBannhac, idCasi) trong bảng banthuam không được trùng.

5. VỀ CÁC KIỂU DỮ LIỆU CỦA CÁC TRƯỜNG

Trường khóa chính:

INT – kiểu số nguyên, phù hợp để lưu các mã số định danh.

AUTO_INCREMENT – tự động tăng giá trị khi thêm bản ghi mới, giúp tạo mã khóa chính duy nhất.

Kết hợp: INT AUTO_INCREMENT. Ví dụ: idCasi, idNhacsi, idBannhac, idBanthuam.

Các trường tên:

VARCHAR(255) – kiểu chuỗi kí tự có độ dài thay đổi, lưu được tối đa 255 kí tự.

Dùng cho dữ liệu dạng văn bản như tên ca sĩ, tên nhạc sĩ và tên bản nhạc; dung lượng phù hợp với độ dài thực tế của chuỗi.

Ví dụ: tenNhacsi, tenCasi, tenBannhac.

❓ CÂU HỎI / HOẠT ĐỘNG TRONG BÀI

❓ Câu 1. Hãy xác định các bảng dữ liệu, cấu trúc của chúng và các trường khóa cho CSDL của website âm nhạc.

✅ TRẢ LỜI

Có thể tổ chức thành 4 bảng:

  1. casi(idCasi, tenCasi) – Khóa chính: idCasi
  2. nhacsi(idNhacsi, tenNhacsi) – Khóa chính: idNhacsi
  3. bannhac(idBannhac, tenBannhac, idNhacsi) – Khóa chính: idBannhac, Khóa ngoài: idNhacsi
  4. banthuam(idBanthuam, idBannhac, idCasi) – Khóa chính: idBanthuam, Khóa ngoài: idBannhac, idCasi

📝 LUYỆN TẬP

❓ Câu 1. Muốn quản lí thêm ngày sinh của nhạc sĩ, ca sĩ. CSDL cần thay đổi như thế nào?

✅ TRẢ LỜI

Bổ sung trường ngaySinh vào bảng nhacsi và casi:

nhacsi(idNhacsi, tenNhacsi, ngaySinh)

casi(idCasi, tenCasi, ngaySinh)

❓ Câu 2. Muốn quản lí thêm nơi sinh (tỉnh/thành phố). CSDL cần thay đổi như thế nào?

✅ TRẢ LỜI

Thêm trường noiSinh:

nhacsi(idNhacsi, tenNhacsi, ngaySinh, noiSinh)

casi(idCasi, tenCasi, ngaySinh, noiSinh)

🔎 VẬN DỤNG

Thực hiện các bước phân tích để thiết lập mô hình dữ liệu cho bài toán quản lí danh sách phường/xã của các tỉnh thành phố.

💡 GỢI Ý:

tinhthanh(idTinh, tenTinh) – KCh: idTinh

phuongxa(idPhuongXa, tenPhuongXa, idTinh) – KCh: idPhuongXa, KN: idTinh

Một tỉnh/thành phố có nhiều phường/xã (quan hệ 1–N).

🧠 BẢNG HỌC NHANH – GHI NHỚ

BảngChức năngKhóa chính
casiLưu thông tin ca sĩidCasi
nhacsiLưu thông tin nhạc sĩidNhacsi
bannhacLưu thông tin bản nhạcidBannhac
banthuamLưu thông tin bản thu âmidBanthuam

🧠 Khóa chính → xác định bản ghi | Khóa ngoài → nối các bảng | Unique → chống trùng | INT → mã số | VARCHAR(255) → tên | AUTO_INCREMENT → tự động tăng

🔑 SƠ ĐỒ NHỚ TOÀN BÀI

Bài 18XÁC ĐỊNH CẤU TRÚC BẢNG & TRƯỜNG KHÓA
BƯỚC 1XEM XÉT BÀI TOÁN
Phát hiện dữ liệu lặp
BƯỚC 2TÁCH BẢNG
casi, nhacsi, bannhac, banthuam
BƯỚC 3XÁC ĐỊNH KHÓA
PK + FK + Unique
BƯỚC 4KIỂU DỮ LIỆU
INT, VARCHAR(255)

Colleagues discussing data and strategy in an office meeting.


"Khóa chính = xác định bản ghi | Khóa ngoài = nối các bảng | Tách bảng = giảm trùng lặp!"

💻🎓

BÀI KIỂM TRA TIN HỌC THPT

Lựa chọn mức độ phù hợp với năng lực của em

📌 HƯỚNG DẪN

Em hãy lựa chọn mức độ phù hợp với yêu cầu của bài học. Sau khi chọn mức độ, bài kiểm tra trực tuyến sẽ được hiển thị ngay bên dưới.

💡 Mẹo: Hãy hoàn thành mức độ trước khi chuyển sang mức độ tiếp theo.

🌟 Mỗi câu hỏi là một cơ hội để em tiến bộ. Hãy tự tin, bình tĩnh và cố gắng hết mình!

Chúc em hoàn thành bài thật tốt!

 


Bài cũ hơn Bài mới hơn
Đọc tiếp:
Lên đầu trang