Bài tập thực hành cơ sở dữ liệu:
1
BÀI TẬP THỰC HÀNH CƠ SỞ DỮ LIỆU
Buổi 1:
Khởi động SQL server 2005
Start\Programs File\MicroSoft SQL Server 2005\SQL Server Management Studio
Xuất hiện hộp thoại sau - Khai báo thông tin kết nối:
Server type: <chọn loại Server cần kết nối>
Server name: <chọn tên Server cần kết nối>
Bài tập thực hành cơ sở dữ liệu:
2
Authentication: Chọn chế độ xác thực là Windows authentication hoặc SQL
Server authentication. Nếu chọn chế độ là SQL Server authentication thì phải cho
biết Login name (mặc định là sa) và Password.
- Chọn Connect. Nếu kết nối thành công thì cửa sổ Microsoft SQL Server Management
Studio xuất hiện
Bài tập thực hành cơ sở dữ liệu:
3
- Nhấn nút New Query
Khi cài SQL Server xong, hệ thống sẽ tự động tạo một vài CSDL mặc định:
Master
Model
Tempdb
tập tin lên 5 MB khi dữ liệu bị đầy, kích thước tăng trưởng tập tin không giới hạn.
Cách 1: Tạo trong Query Analyzer (bằng câu lệnh)
CREATE DATABASE QLSV
ON PRIMARY (NAME = QLSV,
FILENAME= ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\ QLSV.mdf’,
SIZE=50MB, MAXSIZE = 200MB,
FILEGROWTH = 10%, Đường dẫn có thể thay đổi tùy theo từng máy
LOG ON(NAME = QLSV_Log,
FILENAME= ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\ QLSV_Log.ldf',
SIZE=10MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB) Đường dẫn có thể
thay đổi tùy theo từng máy
Cách 2: Tạo trong Enterprise Manager (công cụ)
Right_Click vào Database/New Database
Bài tập thực hành cơ sở dữ liệu:
5
Nhập tên CSDL vào
Sử dụng CSDL trên:
USE QLSV
Tạo một bảng đơn giản trong CSDL QLSV
Tên CSDL
Click
Bài tập thực hành cơ sở dữ liệu:
6
CREATE TABLE LOP
( Malop char(6) NOT NULL,
TenLop varchar(20) NOT NULL,
Đặt tên bảng
Thay đổi cấu trúc bảng
Thêm cột vào bảng
Ví dụ
: Thêm cột Nien_khoa có kiểu dữ liệu int vào bảng LOP
ALTER TABLE LOP
ADD Nien_khoa int
Sửa đổi kiểu dữ liệu của cột
Ví dụ:
Sửa kiểu dữ liệu của cột Nien_khoa thành kiểu char gồm 9 kí tự.
Nhập tên thuộc tính
Kiểu dữ liệu
Bài tập thực hành cơ sở dữ liệu:
8
ALTER TABLE LOP
ALTER COLUMN Nien_khoa char(9)
Thay đổi tên cột
Ví dụ:
Thay đổi tên cột Nien_khoa thành khoa_hoc trong bảng LOP
EXEC sp_rename ‘LOP.nien_khoa’, ‘khoa_hoc’, ‘COLUMN’
Hủy bỏ cột hiện có bên trong bảng
Ví dụ:
Tennv VARCHAR(15),
ngsinh DATETIME,
dchi VARCHAR(30),
phai CHAR(4),
ma_nql CHAR(9),
luong int ,
phg INT
);
go
Bài tập thực hành cơ sở dữ liệu:
10
Create table DA DE AN
( Mada int not null,
Tenda varchar(15) not null,
Diadiem_da varchar(15),
phong int
);
go
Create table PC PHAN CONG
( Ma_nvien char(9) not null,
Mada int not null,
Thoigian decimal(3,1)
);
go
Create table TN - - THAN NHAN
( Ma_nvien char(9) not null,
Tentn char(10) not null,
Phai char(3),
THANNHAN(MA_NVIEN, TENTN, PHAI, NGSINH, QUANHE)
Để quan tâm nhiều hơn đến các nhân viên, công ty sẽ ghi nhận một số thông tin về các thân
nhân của các nhân viên. Tên, ngày tháng năm sinh và mối quan hệ của các thân nhân sẽ được
ghi lại.
PHONGBAN (TENPHG, MAPHG, TRPHG, NG_NHANCHUC)
Mỗi phòng ban đều có mã duy nhất, có tên phòng, do một nhân viên nào đó phụ trách, và ghi
nhận cả ngày trưởng phòng đó bắt đầu phụ trách phòng.
DIADIEM_PHG (MAPHG, DD_P)
Mỗi phòng ban có thể có một hay nhiều địa điểm.
DEAN (TENDA, MADA, DD_DA, PHONG)
Công ty sẽ thực hiện các đề án khác nhau. Do đó mỗi đề án đều ghi lại mã và tên đề án. Địa
điểm thực hiện đề án cũng như phòng ban chủ trì đề án đều được ghi nhận.
Bài tập thực hành cơ sở dữ liệu:
12
PHANCONG (MA_NVIEN, SODA, THOIGIAN)
Mỗi nhân viên có thể tham gia vào nhiều đề án khác nhau, và mỗi đề án có thể được nhiều nhân
viên tham gia. Khi nhân viên tham gia đề án, thì mã nhân viên đó, mã đề án đó cũng như thời
gian làm việc của nhân viên cho đồ án trong một tuần sẽ được ghi lại.
B. Mô tả chi tiết:
PHONGBAN(MAPHG, TENPHG, TRPHG, NGNC)
STT Thuộc tính Kiểu dữliệu Diễn giải
1 MAPHG Số nguyên Mã phòng ban
2 TENPHG Chuỗi (100) Tên phòng ban
3 TRPHG chuỗi (9) Mã nhân viên trưởng phòng
4 NG_NHANCHUC Ngày (mm/dd/yyyy) Ngày nhận chức
NHANVIEN (HONV, TENLOT, TENNV, MANV, NGSINH, DIACHI, PHAI, LUONG, MA_NQL,
PHG)
STT Thuộc tính Kiểu dữ liệu Diễn giải
2 DD_P Chuỗi (30) Địa điểm của phòng ban
THANNHAN(MA_NVIEN, TENTN, PHAI, NGSINH, QUANHE)
STT Thuộc tính Kiểu dữliệu Diễn giải
1 MA_NVIEN Chuỗi (9) Mã nhân viên
2 TENTN Chuỗi (30) Tên thân nhân
3 PHAI Chuỗi (4) Phái: Nam, Nữ
4 NGSINH Ngày (mm/dd/yyyy) Ngày sinh
5 QUANHE Chuỗi (10) Mối quan hệ của thân nhân với nhân viên
Bài tập thực hành cơ sở dữ liệu:
14
C. Sơ đồ quan hệ của lược đồ Bài tập thực hành cơ sở dữ liệu:
15
D. Thể hiện của lược đồ quan hệ
NHANVIEN
HONV TENLOT TENNV MANV NGSINH DCHI PHAI LUONG MA_NQL PHG
Nguyen Bao Hung 123456789 09/01/1965 73 Phan Dang Luu,
Phu Nhuan, TpHCM
Nam 30000 333445555 5
Phan Van Nghia 333445555 08/12/1955 63 Tran Huy Lieu,
Phu Nhuan, TpHCM
Nam 40000 888665555 5
5 Thu Duc
THANNHAN DEAN
MA_NVIEN TENTN PHAI NGSINH QUANHE TENDA MADA DDIEM_DA PHONG
333445555
Anh
Nu
05/04/1986 Con gai San pham X
1
Tan Binh 5
333445555 The
Nam
25/10/1983 Con trai San pham Y 2 Thu Duc 5
333445555 Loi
Nu
03/05/1958 Vo San pham Z 3 Phu Nhuan 5
987654321 An
Nam
28/02/1942 Chong Tin hoc hoa 10 Go Vap 4
123456789 Minh
Nam
04/01/1988 Con trai Tai to chuc 20 Phu Nhuan 1
123456789 Anh
Nu
30/12/1988 Con gai Phuc loi 30 Go Vap 4
123456789 Yen
Nu
05/05/1967 Vo
Bài tập thực hành cơ sở dữ liệu:
16
ma_nql CHAR(9),
ng_nhanchuc DATETIME default (getdate())
);
go
CREATE TABLE NV
( Manv CHAR(9) constraint NV_MaNV_PK
primary key,
Honv VARCHAR(15) NOT NULL,
Tenlot CHAR(15),
Tennv VARCHAR(15) NOT NULL,
Ngsinh DATETIME,
Dchi VARCHAR(30),
Phai CHAR(4) constraint NV_Phai_CK CHECK (phai IN ('Nam', 'Nu')),
ma_nql CHAR(9) constraint NV_Ma_nql_Fk foreign key (ma_nql)
references NV(Manv),
Luong int ,
Phg INT constraint NV_phg_Fk foreign key (phg) references PB(Maphg)
);
go
Bài tập thực hành cơ sở dữ liệu:
18
Bài tập thực hành cơ sở dữ liệu:
19
Create table DA
( Mada int constraint DA_MaNV_PK primary key,
Tenda varchar(15) not null,
Diadiem_da varchar(15),
Phong int constraint DA_phong_Fk foreign key (phong) references PB(Maphg)
constraint DD_P_Maphg_Fk FOREIGN KEY (maphg) REFERENCES PB(maphg)
);
Mở bảng PB ra thêm ràng buộc khóa ngoại cho thuộc tính ma_nql.
alter table PB
add constraint PB_ma_nql_Fk foreign key (ma_nql) references NV(manv)
Cho cơ sở dữ liệu QLSV như sau:
A. Các quan hệ
• Khoa(Makh, TenKH) Khoa
Mỗi Khoa có một mã số
duy nhất (MAKH) để phân biệt với các khoa khác. Xác định
một tên Khoa (TenKh) duy nhất
• SV(MASV,TEN,NAM,KHOA) – Sinh viên
Mỗi sinh viên có một mã số sinh viên (MASV) để phân biệt với các sinh viên khác. Mỗi
sinh viên có tên sinh viên (TEN), đăng ký học một khoa và năm học hiện tại (NAM) là
một trong các năm từ 1 đến 4.
• MH( MAMH,TENMH, TINCHI, KHOA) –Môn học
Mỗi mônhọc có một mã số (MAMH) để phân biệt với các môn học khác, tên mônhọc
(TENMH) không trùng lắp nhau. Mỗi môn học do một khoa (KHOA) phụ trách và có số
tín chỉ quy định (TINCHI).
• DK (MAMH, MAMH_TRUOC) – Điều ki
ện
Mỗi mônhọc (MAMH) có thể không có, có một hay nhiều môn học bắt buộc phải học
trước (MAMH_TRUOC)
Bài tập thực hành cơ sở dữ liệu:
21
• LOP_MH (MA_LopMH, MAMH, HOCKY, NAM, GV) – Lớp môn học
Mỗi lớp môn học có một mã (MA_LopMH) duy nhất để phân biệt với các lớp môn học
khác. Mỗi lớp môn học sẽ mở cho một môn học (MAMH) thuộc học kỳ (HOCKY) trong
2 MAMH_TRUOC Chuỗi (8) Mã môn học
Lop_MH (MAKH, MAMH, HOCKY, NAM, GV)
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MAKH Số nguyên Mã khóa học
2 MAMH Chuỗi (8) Mã môn học
3 HOCKY Số nguyên Học kỳ
4 NAM Số nguyên Năm học mở khóa học
Bài tập thực hành cơ sở dữ liệu:
22
5 GV Chuỗi(10) Tên giáo viên phụ trách
KQ(MASV, MAKH, DIEM)
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MASV Số nguyên Mã sinh viên
2 MAKH Số nguyên Mã khóa học
3 DIEM Số nguyên Điểm
C. Sơ đồ quan hệ của lược đồ D. Thể hiện của lược đồ quan hệ
Khoa MaKh TenKH
CNTT KhoaCôngnghệthôngtin
TOAN KhoaToán
SV TEN MASV NAM KHOA
Son 17 1 CNTT
Bài tập thực hành cơ sở dữ liệu:
8 92 10
8 102 8
8 135 10 Tạo CSQL QLSV và tạo các bảng bao gồm tất cả các ràng buộc toàn vẹn (khóa chính,
khóa ngoại, check, default, unique,…), mỗi ràng buộc đều có đặt tên cho nó.
create database QLSV
go
use QLSV
go
create table Khoa Khoa
( MaKH char(5) constraint Khoa_MaKH_Pk primary key,
TenKH varchar(20) constraint Khoa_TenKH_UQ unique
);
Bài tập thực hành cơ sở dữ liệu:
24
go
Bài tập thực hành cơ sở dữ liệu:
25
create table SV Sinh viên
( MaSV char(10) constraint SV_MaSV_Pk primary key,
TenSV varchar(30) not null,
Nam int not null,
MaKH char(5) constraint SV_MaKH_FK foreign key (MaKh)
references Khoa(Makh)
);