Bài tập thực hành cơ sở dữ liệu: Sinh viên khảo sát một số thông tin trong các cơ sở dữ liệu có sẵn ở trên.. Bài tập thực hành cơ sở dữ liệu: Tạo các cột cho bảng Đặt tên bảng Thay đổi
Trang 1Bài tập thực hành cơ sở dữ liệu:
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:
Trang 2Bài tập thực hành cơ sở dữ liệu:
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
Trang 3Bài tập thực hành cơ sở dữ liệu:
Sinh viên khảo sát một số thông tin trong các cơ sở dữ liệu có sẵn ở trên
Xem các CSDL bằng câu lệnh: SP_helpdb
Hai tập tin vật lý để lưu trữ dữ liệu:
o Lưu trữ dữ liệu (data file)
o Lưu trữ các giao tác mà người dùng đã thực hiện (transaction log file)
Các tập tin CSDL trong SQL Server được chia thành 3 loại tập tin
Tập tin dữ liệu chính (Primary Data File) Phần mở rộng của tập tin này là *.mdf
Tập tin thứ yếu (Secondary Data Files) (không bắt buộc phải có khi tạo mới
Trang 4Bài tập thực hành cơ sở dữ liệu:
Tập tin lưu trữ (Log Files) Phần mở rộng là *.ldf
Các thuộc tính CSDL trong SQL Server
Tên CSDL (Database name): dài tối đa 128 ký tự, duy nhất trong SQL Server
Vị trí tập tin (File location): Thông thường tập tin này sẽ được lưu tại
C:\Program Files\Microsoft SQL Server\MSSQL\ Data
Tên tập tin (File name): là tên luận lý của mỗi loại tập tin dữ liệu tương ứng mà
hệ thống SQL Server dùng để quản lý bên trong
Kích thước ban đầu (Initial size): là kích thước khởi tạo của tập tin dữ liệu khi
CSDL mới được tạo lập
Tăng kích thước tập tin dữ liệu (File growth)
Kích thước tối đa tập tin dữ liệu (Maximun file size)
Ví dụ: Tạo CSDL có tên QLSV với kích thước ban đầu là 50 MB, tự động tăng kích
thước lên 10% khi dữ liệu đầy, kích thước tăng trưởng tập tin tối đa không quá 200MB
Và tập tin lưu vết với kích thước ban đầu lúc khởi tạo là 10MB, tự động tăng kích thước 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ể
Trang 5Bài tập thực hành cơ sở dữ liệu:
Trang 6Bài tập thực hành cơ sở dữ liệu:
CREATE TABLE LOP
( Malop char(6) NOT NULL,
TenLop varchar(20) NOT NULL,
)
Tạo cấu trúc bảng có giá trị mặc định
CREATE TABLE LOP
)
Tạo cấu trúc bảng có giá trị định danh
CREATE TABLE LOP
Trang 7Bài tập thực hành cơ sở dữ liệu:
Tạo các cột cho bảng
Đặ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
Nhập tên thuộc tính
Kiểu dữ liệu
Trang 8Bài tập thực hành cơ sở dữ liệu:
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ụ: Xóa cột Nien_Khoa trong bảng LOP
ALTER TABLE LOP
DROP COLUMN Nien_khoa
Thay đổi tên bảng
Ví dụ: Thay đổi tên bảng LOP thành LOPHOC
EXEC sp_rename ‘LOP’, ‘LOPHOC’
Sinh viên có thể tạo một cơ sở dữ liệu khác để thực tập
Trang 9Bài tập thực hành cơ sở dữ liệu:
Buổi 2:
Tạo CSDL QLDACT (Quản lý đề án công ty)
Create database QLDACT
CREATE TABLE NV - - NHANVIEN
Trang 10Bài tập thực hành cơ sở dữ liệu:
Create table DA DE AN
Diadiem_da varchar(15),
);
go
Create table PC PHAN CONG
( Ma_nvien char(9) not null,
Thoigian decimal(3,1)
);
go
Create table TN - - THAN NHAN
( Ma_nvien char(9) not null,
Tentn char(10) not null,
create table DD_P DIA DIEM PHONG
Diadiem varchar(10) notnull,
Trang 11Bài tập thực hành cơ sở dữ liệu:
Mở bảng PB thêm ràng buộc khóa chính, khóa ngoại vào
alter table PB
add constraint pb_Maphg_pk primary key (Maphg),
constraint ma_nql_fk foreign key (ma_nql) references Nv(manv)
Xóa các bảng đã tạo
drop table NV
drop table PB
Xóa luôn cơ sở dữ liệu vừa tạo
drop database QLDACT
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
Trang 12Bài tập thực hành cơ sở dữ liệu:
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
3 TENLOT Chuỗi (15) Năm học hiện tại
5 NGSINH Ngày (mm/dd/yyyy) Ngày sinh
7 DCHI Chuỗi (50) Địa chỉ của nhân viên
8 MA_NQL Chuỗi (9) Mã người quản lý
Trang 13Bài tập thực hành cơ sở dữ liệu:
DEAN(MADA, TENDA, DDIEM_DA, PHONG)
STT Thuộc tính Kiểu dữ liệu Diễn giải
3 DD_DA chuỗi (50) Địa điểm diễn ra đề án
4 PHONG Số nguyên Mã phòng quản lý đề án
PHANCONG(MA_NVIEN, SODA, THOIGIAN)
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 SODA Số nguyên Mã đề án
3 THOIGIAN Số thực Thời gian làm việc trong 1 đề án của nhân viên
DIADIEM_PHG(MAPHG, DIADIEM)
STT Thuộc tính Kiểu dữliệu Diễn giải
1 MAPHG Số nguyên Mã phòng ban
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
Trang 14Bài tập thực hành cơ sở dữ liệu:
C Sơ đồ quan hệ của lược đồ
Trang 15Bài tập thực hành cơ sở dữ liệu:
D Thể hiện của lược đồ quan hệ
Nguyen Bao Hung 123456789 09/01/1965 73 Phan Dang Luu,
PHONGBAN TENPHG MAPHG TRPHG NG_NHANCHUC DIADIEM_PHG MAPHG DIADIEM
5 Phu Nhuan
5 Thu Duc
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
Trang 16Bài tập thực hành cơ sở dữ liệu:
Trang 17Bài tập thực hành cơ sở dữ liệu:
Tạo lại CSQL QLDACT 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ó GVHD thực hành chỉ cho sinh viên cách tạo khóa chính, khóa ngoại bằng Enterprise Manager
create database QLDACT
go
use QLDACT
go
CREATE TABLE PB
Trang 18Bài tập thực hành cơ sở dữ liệu:
Trang 19Bài tập thực hành cơ sở dữ liệu:
Create table DA
Tenda varchar(15)notnull,
( Ma_nv char(9)notnull,
Thoigian decimal(3,1),
constraint PC_MaNV_Mada_PK PRIMARY KEY (Ma_nv, Mada),
constraint PC_Ma_nv_Fk FOREIGN KEY (ma_nv) REFERENCES NV (manv), constraint PC_Mada_Fk FOREIGN KEY (mada) REFERENCES DA (mada) );
go
Create table TN
Phai char(3) constraint TN_Phai_CK CHECK (phai IN('Nam','Nu')),
constraint TN_Ma_nv_Tentn_Fk PRIMARY KEY (Ma_nv, TENTN),
constraint TN_Ma_nv_Fk FOREIGN KEY (ma_nv) REFERENCES NV (manv) );
go
Trang 20Bài tập thực hành cơ sở dữ liệu:
create table DD_P
Diadiem varchar(10) notnull,
constraint DD_P_Maphg_Diadiem_pk primary key (maphg, diadiem),
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
Trang 21Bài tập thực hành cơ sở dữ liệu:
• 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 năm học (NAM) và do một giáo viên phụ trách (GV)
• KQ(MASV, MAKH, DIEM) – Kết quả
Mỗi sinh viên (MASV) theo học một lớp môn học (MA_LopMH) sẽ có một điểm số(DIEM) Sinh viên chỉ theo học các lớp môn học mở ra cho môn học thuộc về khoa
mà sinh viên đang theo học Ứng với một lớp môn học mà sinh viên theo học, sinh viên
có một điểm số duy nhất (DIEM) từ 0 đến 10 điểm
B Mô tả chi tiết:
Khoa (MaKh, TenKh)
Stt Thuộc tính Kiểu dữ liệu Diễn giải
SV (MASV, TEN, NAM, KHOA)
STT Thuộc tính Kiểu dữ liệu Diễn giải
MH ( MAMH, TENMH, TINCHI, KHOA)
STT Thuộc tính Kiểu dữ liệu Diễn giải
DK (MAMH, MAMH_TRUOC)
STT Thuộc tính Kiểu dữ liệu Diễn giải
Lop_MH (MAKH, MAMH, HOCKY, NAM, GV)
STT Thuộc tính Kiểu dữ liệu Diễn giải
Trang 22Bài tập thực hành cơ sở dữ liệu:
KQ(MASV, MAKH, DIEM)
STT Thuộc tính Kiểu dữ liệu Diễn giải
C Sơ đồ quan hệ của lược đồ
D Thể hiện của lược đồ quan hệ
Trang 23Bài tập thực hành cơ sở dữ liệu:
Nhap mon tin hoc COSC1310 4 CNTT Cau truc du lieu COSC3330 4 CNTT Toan roi rac MATH2410 3 TOAN
Co so du lieu COSC3320 3 CNTT
DK MAMH MAMH_TRUOC
COSC3380 COSC3320 COSC3380 MATH2410 COSC3320 COSC1310
Lop_MH MAKH MAMH HOCKY NAM GV
create table Khoa Khoa
Trang 24Bài tập thực hành cơ sở dữ liệu:
go
Trang 25Bài tập thực hành cơ sở dữ liệu:
create table SV Sinh viên
references Khoa(Makh)
);
go
create table MH môn học
references Khoa(Makh)
);
go
create table DK Điều kiện
MaMH_Tr char(8)notnull,
constraint DK_MAMH_MaMH_TR_PK primary key(MaMH, MaMH_Tr), constraint DK_MaMH_FK foreign key (MaMH) references MH(MaMH),
constraint DK_MaMH_Tr_FK foreign key (MaMH_Tr)references MH(MaMH) );
go
create table Lop_MH Lớp môn học
MaMH char(8) constraint Lop_MH_MaMH_FK foreign key (MaMH)references MH(MaMH),
HocKi int constraint Lop_MH_Hoc_Ki_Ck check (HocKi in (1,2,3)),
Trang 26Bài tập thực hành cơ sở dữ liệu:
go
create table KQ Kết quả
Diem float constraint KQ_Diem_CK check (Diem between 0 and 10),
constraint KQ_MaSV_MaLopMH_pk primary key (MASV, malopMH), constraint KQ_MaSV_fk foreign key (MASV) references SV(MaSV), constraint KQ_MaLopMH_fk foreign key (MALopMH) references
Trang 27Bài tập thực hành cơ sở dữ liệu:
Click vào Files để xem tên đường dẫn của hai file cần sao lưu
Đóng cửa sổ Properties Right_click vào tên CSDL\Tasks\Detach
Stop SQL Server, theo đường dẫn ở trên cut 2 file (QLSV và QLSV_LOG) lưu vào vị trí cần lưu
Trang 28Bài tập thực hành cơ sở dữ liệu:
Cách tạo lại database từ 2 file đã có:
Mở SQL server lên Right_lick vào Database/Attach
Xuất hiện hộp thoại
Trang 29Bài tập thực hành cơ sở dữ liệu:
Nhấn nút Add, chọn đường dẫn đến vị trí đã lưu, chọn tên CSDL cần sao lưu
Nhấn OK
Trang 30Bài tập thực hành cơ sở dữ liệu:
Buổi 3:
Nhập dữ liệu cho 2 cơ sở dữ liệu trong buổi 2
Nhập liệu cho cơ sở dữ liệu QLSV
Bảng Khoa
insert into Khoa (MaKH, TenKH) values('CNTT','Khoa Công nghệ thông tin')
insert into Khoa (MaKH, TenKH) values('TOAN','Khoa Toán')
Bảng Sinh viên
insert into SV(MaSV,TenSV,MaKH,Nam) values('SV017','Sơn','CNTT',1)
insert into SV(MaSV,TenSV,MaKH,Nam) values('SV008','Bao','CNTT',2)
insert into SV(MaSV,TenSV,MaKH,Nam) values('SV025','Nam','TOAN',2)
insert into SV(MaSV,TenSV,MaKH,Nam) values('SV020','Hạnh','TOAN',1)
Trang 31Bài tập thực hành cơ sở dữ liệu:
Bảng Lớp môn học
insert into Lop_MH(Ma_LopMH,MaMH,HocKi,NamHoc,GV)
values(85,'MATH2410',1,86,'Kim')
insert into Lop_MH(Ma_LopMH,MaMH,HocKi,NamHoc,GV)
values(92,'COSC1310',1,86,'An')
insert into Lop_MH(Ma_LopMH,MaMH,HocKi,NamHoc,GV)
values(102,'COSC3320',2,87,'Niên')
insert into Lop_MH(Ma_LopMH,MaMH,HocKi,NamHoc,GV)
values(112,'MATH2410',1,87,N'Châu')
insert into Lop_MH(Ma_LopMH,MaMH,HocKi,NamHoc,GV)
values(119,'COSC1310',1,87,'An')
insert into Lop_MH(Ma_LopMH,MaMH,HocKi,NamHoc,GV)
values(135,'COSC3330',1,88,'Sơn')
delete from KQ
Bảng kết quả
insert into KQ(MaSV,MaLopMH,Diem) values ('SV017',112,8)
insert into KQ(MaSV,MaLopMH,Diem) values ('SV017',119,6)
insert into KQ(MaSV,MaLopMH,Diem) values ('SV008',85,10)
insert into KQ(MaSV,MaLopMH,Diem) values ('SV008',92,10)
insert into KQ(MaSV,MaLopMH,Diem) values ('SV025',135,7)
insert into KQ(MaSV,MaLopMH,Diem) values ('SV020',102,8)
insert into KQ(MaSV,MaLopMH,Diem) values ('SV008',102,7)
Trang 32Bài tập thực hành cơ sở dữ liệu:
Bảng NHÂN VIÊN
insert into NV(Tennv,Tenlot,Honv,Manv,Ngsinh,Dchi,Phai,Luong,ma_nql,Phg) values ('Le','Van','Bo','888665555','1937-11-10','450 Trung Vuong, Ha
Noi','Nam',55000,null,1);
insert into NV(Tennv,Tenlot,Honv,Manv,Ngsinh,Dchi,Phai,Luong,ma_nql,Phg) values ('Phan','Van','Nghia','333445555','1955-12-08','638 Nguyen Van Cu, Q5,
Trang 33Bài tập thực hành cơ sở dữ liệu:
Chỉnh sửa dữ liệu bảng PHÒNG BAN
insert into DD_P(Maphg,Diadiem) values (1,'Phu Nhuan');
insert into DD_P(Maphg,Diadiem) values (4,'Go Vap');
insert into DD_P(Maphg,Diadiem) values (5,'Tan Binh');
insert into DD_P(Maphg,Diadiem) values (5,'Phu Nhuan');
insert into DD_P(Maphg,Diadiem) values (5,'Thu Duc');
Bảng DỰ ÁN
insert into DA(Tenda,Mada,Diadiem_da,Phong) values ('San pham X',1,'Tan Binh',5); insert into DA(Tenda,Mada,Diadiem_da,Phong) values ('San pham Y',2,'Thu Duc',5); insert into DA(Tenda,Mada,Diadiem_da,Phong) values ('San pham Z',3,'Phu Nhuan',5); insert into DA(Tenda,Mada,Diadiem_da,Phong) values ('Tin hoc hoa',10,'Go Vap',4); insert into DA(Tenda,Mada,Diadiem_da,Phong) values ('Tai to chuc',20,'Phu Nhuan',1); insert into DA(Tenda,Mada,Diadiem_da,Phong) values ('Phuc loi',30,'Go Vap',4);
Bảng PHÂN CÔNG
insert into PC(Ma_nv,Mada,Thoigian) values ('123456789',1,32.5);