BÀI 18: THỰC HÀNH XÁC ĐỊNH CẤU TRÚC BẢNG VÀ CÁC TRƯỜNG KHÓA
I. XEM XÉT BÀI TOÁN
Trong bài toán này, ta quy ước khi nhắc đến nhạc sĩ sáng tác bản nhạc là đề cập đến một nhạc sĩ hoặc nhóm nhạc sĩ sáng tác bản nhạc đó. Tương tự, tên ca sĩ cũng có thể là một ca sĩ hoặc một nhóm ca sĩ biểu diễn tác phẩm.
II. XÁC ĐỊNH CẤU TRÚC BẢNG
Thông tin quản lý bao gồm:
- Số hiệu bản thu âm (STT)
- Tên bản nhạc
- Tên nhạc sĩ sáng tác
- Tên ca sĩ thể hiện
Dựa trên thông tin trên, có thể hình dung một bảng dữ liệu tên banthuam, với các trường như sau:
banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)
Trong đó, idBanthuam là khóa chính của bảng.
III. TỔ CHỨC LẠI BẢNG DỮ LIỆU
Để tối ưu hóa việc lưu trữ dữ liệu và hạn chế tình trạng trùng lặp, ta thực hiện tổ chức lại bảng dữ liệu như sau:
Bước 1: Tách bảng ca sĩ
Do một ca sĩ có thể thể hiện nhiều bản nhạc khác nhau, tên ca sĩ có thể bị lặp lại nhiều lần. Điều này gây lãng phí bộ nhớ và có thể dẫn đến sai sót khi chỉnh sửa dữ liệu. Để giải quyết vấn đề này, tạo bảng casi:
casi(idCasi, tenCasi)
Sau đó, thay thế tenCasi trong bảng banthuam bằng idCasi:
banthuam(idBanthuam, tenBannhac, tenNhacsi, idCasi)
Bước 2: Tách bảng bản nhạc
Tương tự, một bản nhạc có thể có nhiều bản thu âm khác nhau. Do đó, tạo bảng bannhac:
bannhac(idBannhac, tenBannhac, idNhacsi)
Sau đó, thay thế tenBannhac và tenNhacsi trong bảng banthuam bằng idBannhac:
banthuam(idBanthuam, idBannhac, idCasi)
Bước 3: Tách bảng nhạc sĩ
Một nhạc sĩ có thể sáng tác nhiều bản nhạc khác nhau, vì vậy tạo bảng nhacsi:
nhacsi(idNhacsi, tenNhacsi)
Sau đó, thay thế tenNhacsi trong bảng bannhac bằng idNhacsi:
bannhac(idBannhac, tenBannhac, idNhacsi)
Cấu trúc cơ sở dữ liệu sau khi tối ưu hóa:
- casi(idCasi, tenCasi)
- nhacsi(idNhacsi, tenNhacsi)
- bannhac(idBannhac, tenBannhac, idNhacsi)
- banthuam(idBanthuam, idBannhac, idCasi)
IV. CÁC LOẠI KHÓA
1. Khóa chính
- Mỗi bảng đã có một khóa chính để xác định duy nhất từng bản ghi.
2. Khóa ngoài
- idNhacsi trong bảng bannhac tham chiếu đến idNhacsi trong bảng nhacsi.
- idBannhac trong bảng banthuam tham chiếu đến idBannhac trong bảng bannhac.
- idCasi trong bảng banthuam tham chiếu đến idCasi trong bảng casi.
3. Khóa cấm trùng lặp (Unique Key)
- Cặp (tenBannhac, idNhacsi) trong bảng bannhac không được trùng lặp.
- Cặp (idBannhac, idCasi) trong bảng banthuam không được trùng lặp.
Việc tối ưu hóa bảng dữ liệu giúp đảm bảo tính toàn vẹn dữ liệu, giảm thiểu trùng lặp, tiết kiệm dung lượng và dễ dàng quản lý hơn.
V. KẾT LUẬN
Việc xác định cấu trúc bảng và tổ chức dữ liệu hợp lý giúp tối ưu hóa hệ thống quản lý cơ sở dữ liệu. Nhờ vào việc chuẩn hóa, dữ liệu trở nên rõ ràng, dễ quản lý và tránh trùng lặp không cần thiết. Đây là một bước quan trọng trong thiết kế cơ sở dữ liệu hiệu quả, giúp tiết kiệm không gian lưu trữ và cải thiện hiệu suất truy vấn.
Thẻ tag:
#CSDL #QuanTriCoSoDuLieu #ThietKeDatabase #ToiUuHoaDatabase #KhoaNgoai #KhoaChinh #SQL