Các em dùng tài khoản gmail cá nhân riêng, không dùng tài khoản đuôi .edu để truy cập vào.
Table docgia {
idDocgia INT [pk, increment, note: 'Primary Key']
tenDocgia VARCHAR(255)
}
Table muontra {
idMT INT [pk, increment, note: 'Primary Key']
idDocgia INT [ref: > docgia.idDocgia , note: 'Foreign Key']
idMathang INT [ref: > sach .idSach , note: 'Foreign Key']
}
Table sach {
idSach INT [pk, increment, note: 'Primary Key']
tensach VARCHAR(255)
}
Câu 1: Vẽ sơ đồ
Câu 2: Thực hành tạo CSDL bằng Hedisql
-- Bật chế độ ràng buộc khóa ngoại
PRAGMA foreign_keys = ON;
-- Tạo bảng 'tinh'
CREATE TABLE tinh (
idTinh INTEGER PRIMARY KEY AUTOINCREMENT,
tenTinh TEXT NOT NULL
);
-- Tạo bảng 'huyen'
CREATE TABLE huyen (
idHuyen INTEGER PRIMARY KEY AUTOINCREMENT,
tenHuyen TEXT NOT NULL
);
-- Tạo bảng 'danhsach'
CREATE TABLE danhsach (
idDS INTEGER PRIMARY KEY AUTOINCREMENT,
idHuyen INTEGER NOT NULL,
idTinh INTEGER NOT NULL,
FOREIGN KEY (idHuyen) REFERENCES huyen (idHuyen),
FOREIGN KEY (idTinh) REFERENCES tinh (idTinh)
);
Bước 1: Đưa dữ liệu vào bảng tinh
INSERT INTO tinh (idTinh, tenTinh) VALUES
(1, 'An Giang'),
(2, 'Bến Tre'),
(3, 'Bình Định'),
(4, 'Đồng Tháp'),
(5, 'Hà Nội'),
(6, 'Hải Phòng'),
(7, 'Quảng Trị');
Bước 2: Đưa dữ liệu vào bảng huyen
INSERT INTO huyen (idHuyen, tenHuyen) VALUES
(1, 'An Lão'),
(2, 'Châu Thành'),
(3, 'Gia Lâm'),
(4, 'Hải An'),
(5, 'Hải Lăng'),
(6, 'Hà Đông'),
(7, 'Hai Bà Trưng');
Bước 3: Đưa dữ liệu vào bảng danhsach
INSERT INTO danhsach (idDS, idHuyen, idTinh) VALUES
(1, 1, 3),
(2, 1, 6),
(3, 2, 1),
(4, 2, 2),
(5, 2, 4),
(6, 3, 5),
(7, 6, 5),
(8, 7, 5),
(9, 4, 6),
(10, 5, 7);
SELECT h.tenHuyen
FROM huyen h
JOIN danhsach ds ON h.idHuyen = ds.idHuyen
JOIN tinh t ON ds.idTinh = t.idTinh
WHERE t.tenTinh = 'Hà Nội';
SELECT t.tenTinh
FROM tinh t
JOIN danhsach ds ON t.idTinh = ds.idTinh
JOIN huyen h ON ds.idHuyen = h.idHuyen
WHERE h.tenHuyen = 'Châu Thành';
SELECT t.tenTinh, COUNT(ds.idHuyen) AS SoLuongHuyen
FROM tinh t
LEFT JOIN danhsach ds ON t.idTinh = ds.idTinh
GROUP BY t.tenTinh
ORDER BY SoLuongHuyen DESC;
SELECT h.tenHuyen, COUNT(ds.idTinh) AS SoLuongTinh
FROM huyen h
JOIN danhsach ds ON h.idHuyen = ds.idHuyen
GROUP BY h.tenHuyen
ORDER BY SoLuongTinh DESC
LIMIT 1;