Hỗ trợ: xuất hoá đơn GTGT 8%.
Móc khóa mica Tại Xưởng
2.100+ Đã đặt hàng

Móc Khóa Mica & Standee

In Anime, Logo Trường, Lớp Học
MUA 1 TẶNG 1 HÔM NAY
Free Thiết Kế Freeship từ 10c

Cho CSDL quản lý Thư viện gồm các bảng: SACH (Masach , Tensach, Loaisach , Dongi…

Cho CSDL quản lý Thư viện gồm các bảng:
SACH (Masach , Tensach, Loaisach , Dongi…

Cho CSDL quản lý Thư viện gồm các bảng:
SACH (Masach , Tensach, Loaisach , Dongia),
NGUOIDOC (Sothe, Hoten , Ngaysinh , Lop),
MUONSACH( Masach, Sothe , Ngaymuon , Soluong).
a) Viết truy vấn tạo CSDL QUANLYTHUVIEN
b) Hãy viết truy vấn tạo bảng SÁCH, NGUOIDOC
c)Viết truy vấn thêm khóa chính cho bảng SACH
d) Viết truy vấn ra tất cả các dòng trong liên kết bảng MUON SACH với bảng NGUOIDOC và bảng SACH , mỗi dòng lấy các cột Masach , Sothe của bảng MUONSACH , Tensach của bảng SÁCH và cột Hoten của bảng NGUOIDOC
(MAI EM THI RỒI NÊN EM MONG MỌI NGƯỜI SẼ GIÚP EM Ạ)
Hỏi bởi: maingoc
1 câu trả lời
▲ 7✔
Chào em, thầy hiểu em đang rất lo lắng vì sắp tới ngày thi. Đừng quá căng thẳng, chúng ta hãy cùng nhau ôn lại kiến thức và làm bài tập này một cách chi tiết nhé. Với kinh nghiệm dạy học môn Tin học, thầy sẽ hướng dẫn em từng bước để em có thể nắm vững bài tập này.

Chúng ta sẽ giải bài tập về CSDL quản lý Thư viện. Em hãy tập trung theo dõi từng bước thầy trình bày nhé.

—

Phần a) Viết truy vấn tạo CSDL QUANLYTHUVIEN

Để tạo một cơ sở dữ liệu (CSDL) mới trong SQL, chúng ta sử dụng câu lệnh \(CREATE DATABASE\).

Bước 1: Mở công cụ quản lý CSDL mà em đang sử dụng (ví dụ: MySQL Workbench, SQL Server Management Studio, hoặc giao diện dòng lệnh).

Bước 2: Gõ câu lệnh sau vào cửa sổ truy vấn:

sql
CREATE DATABASE QUANLYTHUVIEN;

Giải thích:
* \(CREATE DATABASE\): Là từ khóa chỉ định chúng ta muốn tạo một cơ sở dữ liệu mới.
* \(QUANLYTHUVIEN\): Là tên mà chúng ta đặt cho cơ sở dữ liệu này.

Sau khi chạy câu lệnh này, một CSDL mới có tên là QUANLYTHUVIEN sẽ được tạo ra.

—

Phần b) Hãy viết truy vấn tạo bảng SÁCH, NGUOIDOC

Sau khi đã tạo CSDL, chúng ta cần tạo các bảng bên trong CSDL đó. Em cần lưu ý các kiểu dữ liệu cho từng cột để đảm bảo tính chính xác.

Bước 1: Chọn CSDL QUANLYTHUVIEN để làm việc. Thường thì em sẽ có một tùy chọn để “Use database” hoặc câu lệnh tương đương. Nếu đang dùng dòng lệnh, em có thể gõ:

sql
USE QUANLYTHUVIEN;

Bước 2: Viết truy vấn tạo bảng SÁCH

Bảng SACH có các cột: Masach, Tensach, Loaisach, Dongia.

sql
CREATE TABLE SACH (
Masach VARCHAR(10) PRIMARY KEY,
Tensach VARCHAR(50),
Loaisach VARCHAR(30),
Dongia DECIMAL(10, 2)
);

Giải thích:
* \(CREATE TABLE SACH\): Yêu cầu tạo một bảng mới có tên là \(SACH\).
* \(Masach VARCHAR(10) PRIMARY KEY\):
* \(Masach\): Tên cột.
* \(VARCHAR(10)\): Kiểu dữ liệu chuỗi ký tự, có độ dài tối đa là 10 ký tự. Thường mã sách sẽ ngắn gọn.
* \(PRIMARY KEY\): Chỉ định cột \(Masach\) là khóa chính của bảng. Khóa chính đảm bảo mỗi dòng trong bảng là duy nhất và không được để trống.
* \(Tensach VARCHAR(50)\): Cột tên sách, kiểu chuỗi, tối đa 50 ký tự.
* \(Loaisach VARCHAR(30)\): Cột loại sách, kiểu chuỗi, tối đa 30 ký tự.
* \(Dongia DECIMAL(10, 2)\):
* \(Dongia\): Tên cột.
* \(DECIMAL(10, 2)\): Kiểu dữ liệu số thập phân. Số 10 là tổng số chữ số có thể lưu trữ, và số 2 là số chữ số sau dấu thập phân. Ví dụ: 12345678.90.

Bước 3: Viết truy vấn tạo bảng NGUOIDOC

Bảng NGUOIDOC có các cột: Sothe, Hoten, Ngaysinh, Lop.

sql
CREATE TABLE NGUOIDOC (
Sothe VARCHAR(10) PRIMARY KEY,
Hoten VARCHAR(50),
Ngaysinh DATE,
Lop VARCHAR(20)
);

Giải thích:
* \(CREATE TABLE NGUOIDOC\): Yêu cầu tạo một bảng mới có tên là \(NGUOIDOC\).
* \(Sothe VARCHAR(10) PRIMARY KEY\): Cột số thẻ, kiểu chuỗi, tối đa 10 ký tự và là khóa chính.
* \(Hoten VARCHAR(50)\): Cột họ tên, kiểu chuỗi, tối đa 50 ký tự.
* \(Ngaysinh DATE\): Cột ngày sinh, kiểu dữ liệu \(DATE\) dùng để lưu trữ ngày tháng năm.
* \(Lop VARCHAR(20)\): Cột lớp, kiểu chuỗi, tối đa 20 ký tự.

—

Phần c) Viết truy vấn thêm khóa chính cho bảng SACH

Trong phần b, em đã khai báo khóa chính \(Masach\) ngay khi tạo bảng \(SACH\). Tuy nhiên, nếu vì lý do nào đó mà em tạo bảng mà quên mất khóa chính, em hoàn toàn có thể thêm nó sau.

Giả sử bảng \(SACH\) đã được tạo mà KHÔNG có khóa chính. Chúng ta sẽ thêm khóa chính cho cột \(Masach\).

Bước 1: Đảm bảo em đang làm việc trong CSDL \(QUANLYTHUVIEN\).

Bước 2: Viết câu lệnh \(ALTER TABLE\) để thêm ràng buộc khóa chính.

sql
ALTER TABLE SACH
ADD CONSTRAINT PK_SACH PRIMARY KEY (Masach);

Giải thích:
* \(ALTER TABLE SACH\): Câu lệnh này cho phép chúng ta thay đổi cấu trúc của bảng \(SACH\).
* \(ADD CONSTRAINT PK_SACH\): Chúng ta đang thêm một ràng buộc mới. \(PK_SACH\) là tên mà chúng ta đặt cho ràng buộc khóa chính này (tên này không bắt buộc phải giống tên cột, nhưng nên có ý nghĩa).
* \(PRIMARY KEY (Masach)\): Chỉ định rằng cột \(Masach\) sẽ là khóa chính của bảng.

Lưu ý quan trọng:
Để thêm khóa chính cho một cột, cột đó phải đảm bảo các điều kiện sau:
1. Không chứa giá trị \(NULL\).
2. Các giá trị trong cột phải là duy nhất.
Nếu bảng \(SACH\) của em đã có dữ liệu, em cần kiểm tra và xử lý các trường hợp vi phạm trước khi thêm khóa chính. Ví dụ, nếu có giá trị \(NULL\) hoặc trùng lặp \(Masach\).

—

Phần d) Viết truy vấn ra tất cả các dòng trong liên kết bảng MUON SACH với bảng NGUOIDOC và bảng SACH, mỗi dòng lấy các cột Masach, Sothe của bảng MUONSACH, Tensach của bảng SÁCH và cột Hoten của bảng NGUOIDOC

Đây là phần yêu cầu kết hợp dữ liệu từ nhiều bảng (JOIN). Chúng ta cần nối bảng \(MUONSACH\) với \(SACH\) và \(NGUOIDOC\).

Bước 1: Xác định các bảng cần kết hợp: \(MUONSACH\), \(SACH\), \(NGUOIDOC\).

Bước 2: Xác định các cột cần lấy:
* Từ \(MUONSACH\): \(Masach\), \(Sothe\).
* Từ \(SACH\): \(Tensach\).
* Từ \(NGUOIDOC\): \(Hoten\).

Bước 3: Xác định điều kiện kết hợp (khóa ngoại).
* Bảng \(MUONSACH\) liên kết với \(SACH\) thông qua cột \(Masach\).
* Bảng \(MUONSACH\) liên kết với \(NGUOIDOC\) thông qua cột \(Sothe\).

Bước 4: Viết câu lệnh truy vấn sử dụng \(JOIN\).

sql
SELECT
MS.Masach,
MS.Sothe,
S.Tensach,
ND.Hoten
FROM
MUONSACH MS
INNER JOIN
SACH S ON MS.Masach = S.Masach
INNER JOIN
NGUOIDOC ND ON MS.Sothe = ND.Sothe;

Giải thích chi tiết:
* \(SELECT MS.Masach, MS.Sothe, S.Tensach, ND.Hoten\): Lệnh này chỉ định các cột chúng ta muốn hiển thị trong kết quả.
* \(MS.Masach\): Lấy cột \(Masach\) từ bảng mà chúng ta đặt alias là \(MS\) (tức là bảng \(MUONSACH\)).
* \(MS.Sothe\): Lấy cột \(Sothe\) từ bảng \(MUONSACH\).
* \(S.Tensach\): Lấy cột \(Tensach\) từ bảng mà chúng ta đặt alias là \(S\) (tức là bảng \(SACH\)).
* \(ND.Hoten\): Lấy cột \(Hoten\) từ bảng mà chúng ta đặt alias là \(ND\) (tức là bảng \(NGUOIDOC\)).
* Việc đặt alias (MS, S, ND) giúp cho câu truy vấn ngắn gọn và dễ đọc hơn khi làm việc với nhiều bảng.
* \(FROM MUONSACH MS\): Bắt đầu truy vấn từ bảng \(MUONSACH\) và đặt cho nó bí danh là \(MS\).
* \(INNER JOIN SACH S ON MS.Masach = S.Masach\):
* \(INNER JOIN SACH S\): Chúng ta nối bảng \(MUONSACH\) với bảng \(SACH\) (đặt bí danh là \(S\)). \(INNER JOIN\) sẽ chỉ trả về các dòng mà có sự khớp nhau ở cả hai bảng dựa trên điều kiện nối.
* \(ON MS.Masach = S.Masach\): Đây là điều kiện để nối hai bảng. Chúng ta nối các dòng mà có giá trị cột \(Masach\) ở bảng \(MUONSACH\) (MS) bằng với giá trị cột \(Masach\) ở bảng \(SACH\) (S). Điều này có nghĩa là chúng ta đang tìm kiếm thông tin sách mượn ứng với sách có trong thư viện.
* \(INNER JOIN NGUOIDOC ND ON MS.Sothe = ND.Sothe\):
* \(INNER JOIN NGUOIDOC ND\): Tiếp tục nối kết quả trên với bảng \(NGUOIDOC\) (đặt bí danh là \(ND\)).
* \(ON MS.Sothe = ND.Sothe\): Điều kiện nối là giá trị cột \(Sothe\) ở bảng \(MUONSACH\) (MS) phải bằng với giá trị cột \(Sothe\) ở bảng \(NGUOIDOC\) (ND). Điều này giúp chúng ta tìm thông tin người mượn tương ứng với phiếu mượn.

Kết quả của truy vấn này sẽ là một bảng tổng hợp, mỗi dòng chứa thông tin về một lượt mượn sách, bao gồm mã sách, số thẻ người mượn, tên sách và họ tên của người mượn.

—

Em thân mến, thầy đã trình bày chi tiết từng bước cho em rồi. Em hãy đọc kỹ lại, cố gắng hiểu từng câu lệnh và giải thích. Quan trọng nhất là em phải thực hành gõ lại các câu lệnh này trên máy tính của mình.

Nếu em có bất kỳ câu hỏi nào hoặc gặp khó khăn ở bước nào, đừng ngần ngại hỏi lại nhé. Thầy tin là em sẽ làm được bài thi thật tốt! Cố lên em!

Trả lời bởi: Giáo viên Chuyên Môn

Viết một bình luận

Cam kết từ xưởng
Cam kết giải quyết 100% sự cố và có test màu, test mẫu
Test màu Test mẫu
Đơn hàng gặp vấn đề (tracking, hàng lỗi, in sai, thiếu sót)? Chúng tôi sẵn sàng hỗ trợ bạn!
Hỗ trợ qua Zalo ngay
Test màu
Kiểm tra màu trước khi in hàng loạt, tránh lệch so với thiết kế.
Test mẫu
Duyệt mẫu thực tế trước khi sản xuất số lượng lớn.
Đổi trả & hoàn tiền
Hàng lỗi hoặc in sai được xử lý theo chính sách rõ ràng.
Hỗ trợ tracking
Đơn chậm hoặc thiếu mã vận đơn, nhắn Zalo để được kiểm tra ngay.
WhatsApp
Facebook
Chat Zalo
Zalo
097.538.4646
Zalo
Giới Thiệu Xưởng In