Tạo 1 cơ sở dữ liệu có ít nhất 4 bảng, 4 câu truy vấn có liên kết với nhau. Cho dữ liệu bảng cụ thể. Thêm khóa chính khóa ngoại cho từng bảng

Tạo 1 cơ sở dữ liệu có ít nhất 4 bảng, 4 câu truy vấn có liên kết với nhau. Cho dữ liệu bảng cụ thể. Thêm khóa chính khóa ngoại cho từng bảng
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
1. Tạo cơ sở dữ liệu: Giả sử chúng ta tạo một cơ sở dữ liệu quản lý thư viện với các bảng: Sách, Tác giả, Thể loại và Độc giả.

2. Các bảng và dữ liệu cụ thể:

- Bảng `Sách`:
```
| id_sach (PK) | ten_sach | id_tac_gia (FK) | id_the_loai (FK) |
|--------------|-------------------|------------------|-------------------|
| 1 | Đắc Nhân Tâm | 1 | 1 |
| 2 | Nghĩ Như Một Nhà Vô Địch | 2 | 1 |
| 3 | Tư Duy Nhanh Và Chậm | 3 | 2 |
| 4 | Như Một Con Người | 1 | 3 |
```

- Bảng `Tác giả`:
```
| id_tac_gia (PK) | ten_tac_gia |
|------------------|-----------------|
| 1 | Dale Carnegie |
| 2 | Tim Grover |
| 3 | Daniel Kahneman |
```

- Bảng `Thể loại`:
```
| id_the_loai (PK) | ten_the_loai |
|-------------------|-----------------|
| 1 | Kỹ Năng Sống |
| 2 | Tâm Lý Học |
| 3 | Triết Học |
```

- Bảng `Độc giả`:
```
| id_doc_gia (PK) | ten_doc_gia | email |
|------------------|------------------|-----------------|
| 1 | Nguyễn Văn A | [email protected] |
| 2 | Trần Thị B | [email protected] |
| 3 | Lê Văn C | [email protected] |
```

3. Câu truy vấn:

- Câu truy vấn 1: Tìm tất cả sách cùng với tên tác giả:
```sql
SELECT S.ten_sach, T.ten_tac_gia
FROM Sách S
JOIN Tác giả T ON S.id_tac_gia = T.id_tac_gia;
```

- Câu truy vấn 2: Tìm tất cả sách theo thể loại:
```sql
SELECT S.ten_sach, TL.ten_the_loai
FROM Sách S
JOIN Thể loại TL ON S.id_the_loai = TL.id_the_loai;
```

- Câu truy vấn 3: Tìm tất cả độc giả đã mượn sách và tên sách họ đã mượn:
```sql
SELECT DG.ten_doc_gia, S.ten_sach
FROM Độc giả DG
JOIN Mượn_Sách MS ON DG.id_doc_gia = MS.id_doc_gia
JOIN Sách S ON MS.id_sach = S.id_sach;
```

- Câu truy vấn 4: Thống kê số lượng sách theo thể loại:
```sql
SELECT TL.ten_the_loai, COUNT(S.id_sach) as so_luong_sach
FROM Sách S
JOIN Thể loại TL ON S.id_the_loai = TL.id_the_loai
GROUP BY TL.ten_the_loai;
```

Tiến hành tạo các khóa chính (PK) và khóa ngoại (FK) trong các bảng để đảm bảo tính toàn vẹn dữ liệu. Khóa chính trong từng bảng là các trường id tương ứng, khóa ngoại trong bảng `Sách` là id_tac_gia và id_the_loai liên kết tới bảng `Tác giả` và `Thể loại`. Để thực hiện điều này, bạn có thể sử dụng các câu lệnh SQL như sau:

```sql
ALTER TABLE Sách
ADD CONSTRAINT FK_Tac_Gia FOREIGN KEY (id_tac_gia) REFERENCES Tác giả(id_tac_gia);

ALTER TABLE Sách
ADD CONSTRAINT FK_The_Loai FOREIGN KEY (id_the_loai) REFERENCES Thể loại(id_the_loai);
```

Đối với bảng mượn sách, bạn có thể tạo bảng thêm để quản lý việc mượn sách với khóa chính và khóa ngoại:

- Bảng `Mượn_Sách`:
```
| id_muon_sach (PK) | id_doc_gia (FK) | id_sach (FK) |
|--------------------|------------------|-----------------|
| 1 | 1 | 1 |
| 2 | 2 | 3 |
| 3 | 1 | 2 |
```

Rồi thêm khóa ngoại cho bảng `Mượn_Sách`:
```sql
ALTER TABLE Mượn_Sách
ADD CONSTRAINT FK_Doc_Gia FOREIGN KEY (id_doc_gia) REFERENCES Độc giả(id_doc_gia);

ALTER TABLE Mượn_Sách
ADD CONSTRAINT FK_Sach FOREIGN KEY (id_sach) REFERENCES Sách(id_sach);
```

Việc tạo các bảng và câu truy vấn này giúp bạn truy vấn dữ liệu một cách liên kết, dễ dàng hơn trong việc quản lý thông tin liên quan đến sách, tác giả, thể loại và độc giả.
Đăng phản hồi