Tải bản đầy đủ (.docx) (33 trang)

Tài liệu đặc tả thiết kế hệ thống Quản lí thư viện

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (748.11 KB, 33 trang )

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CƠ SỞ DỮ LIỆU
Đề tài: Quản lí thư viện


Mục lục
CHƯƠNG I: ĐẶC TẢ HỆ THỐNG..............................................................................................3
1.

Mục đích, yêu cầu..........................................................................................................3
1.1.

Mục đích...............................................................................................................................3

1.2.

u cầu.................................................................................................................................3

2.

Mơ tả hệ thống..............................................................................................................4
2.1.

Quy trình nghiệp vụ..............................................................................................................4

2.2.

Quy tắc nghiệp vụ.................................................................................................................4


3.

Đặc tả các chức năng cần xây dựng................................................................................5
3.1.

Quản lí thơng tin độc giả.......................................................................................................5

3.2.

Quản lí thơng tin nhân viên.................................................................................................5

3.3.

Quản lí sách..........................................................................................................................5

3.4.

Quản lí mượn - trả................................................................................................................5

3.5.

Chức năng thống kê – báo cáo..............................................................................................6

3.6.

Bảo mật hệ thống.................................................................................................................6

CHƯƠNG II: PHÂN TÍCH DỮ LIỆU HỆ THỐNG.........................................................................7
1.


Mơ tả hệ thống dưới dạng mối quan hệ dữ liệu.............................................................7

2.

Xây dựng mơ hình liên kết thực thể................................................................................8

3.

Cách chuyển đổi từ ER sang mơ hình quan hệ................................................................9

4.

Vẽ mơ hình quan hệ.....................................................................................................12

5.

Đặc tả các bảng............................................................................................................13

CHƯƠNG III: CÀI ĐẶT HỆ THỐNG.........................................................................................16
1.

Lựa chọn công cụ cài đặt..............................................................................................16

2.

Các câu lệnh trong cơ sở dữ liệu..................................................................................16
2.1.

Câu lệnh tạo bảng...............................................................................................................16


2.2.

Các câu lệnh tạo trigger......................................................................................................20

2.3.

Các câu lệnh tạo hàm, thủ tục.............................................................................................22

3.

Kiến trúc menu hệ thống..............................................................................................24

4.

Giao diện các chức năng...............................................................................................25
1.

Giao diện mượn trả................................................................................................................25

2.

Giao diện quản lí sách.............................................................................................................28

3.

Giao diện quản lí độc giả........................................................................................................29

4.

Giao diện thống kê.................................................................................................................30



CHƯƠNG I: ĐẶC TẢ HỆ THỐNG
1. Mục đích, yêu cầu
1.1. Mục đích
- Nhằm nâng cao chất lượng quản lí thư viện một cách nhanh
chóng và tiện lợi đáp ứng việc quản lí sách cùng với việc quản lí
mượn trả sách đạt hiệu quả nhanh nhất.
- Tin học hóa hệ thống thông tin của thư viện nhằm tạo nên một
hệ thống thơng tin tự động hóa.
- Hỗ trợ tối đa tài liệu nhằm mục đích nâng cao khả năng tự học
và trau dồi kiến thức xã hộ cho sinh viên trong trường.
1.2. Yêu cầu
- Chương trình cần thực hiện những yêu cầu sau:
o Quản lí các cuốn sách
o Quản lí các tác giả
o Quản lí các đầu sách
o Quản lí các nhà xuất bản
o Quản lí các độc giả
o Quản lí thẻ thư viện
o Quản lí nhân viên
o Thơng báo tình hình mượn trả
o Trạng thái và các mức phạt với độc giả vi phạm nội quy


2. Mơ tả hệ thống
2.1. Quy trình nghiệp vụ
- Quy trình Bổ sung tài liệu
- Quy trình Số hóa tài liệu
- Quy trình Tổ chức, bảo quản kho tài liệu

- Quy trình Kiểm kê tài liệu
- Quy trình Thanh lọc tài liệu
- Quy trình Làm thẻ thư viện
- Quy trình mượn trả tài liệu
- Quy trình thu thập tài liệu
- Quy trình bổ sung và chỉnh sửa phạt
- Quy trình bổ sung và chỉnh sửa độc giả
2.2. Quy tắc nghiệp vụ
- Việc quản lí sách và mượn trả sách chỉ gồm hai nội dung dùng
khi nhu cầu thư viện phát triển thêm có thể bổ sung dùng thay
đổi một số nội dung dùng.
- Phần mềm được tạo ra nhằm phục vụ cho u cầu quản lí thư
viện nhanh chóng việc yêu cầu khách hàng hết sức quan trọng,
với giao diện khá đơn giản việc truy xuất dữ liệu nhanh chóng
làm cho việc, các dữ liệu liên kết với nhau thật chặt chẽ,phải
đáp ứng việc truy cập của tất cả các đọc giả khi mượn sách mọi
lúc không giới hạn tức là 24/24.
- Việc sử dụng các chương trình để tạo ra các phần mềm các
chương trình quản lí hiện hành là một điều hết sức quan trọng.
Phần mềm quản lí thư viện cũng khơng tránh khỏi khi đã hồn
thành chương trình điều đầu tiên là phải kiểm tra xem phần
mềm có tương thích với tất cả các hệ điều hành hay khơng?
Phần mềm quản lí thư viện được chạy nếu có đủ các thơng số


3. Đặc tả các chức năng cần xây dựng
3.1. Quản lí thơng tin độc giả
- Thêm độc giả
- Loại bỏ độc giả
- Thay đổi thơng tin độc giả

3.2. Quản lí thông tin nhân viên
- Thêm nhân viên
- Loại bỏ nhân viên
- Thay đổi thông tin nhân viên
- Cho phép nhân viên đăng nhập hệ thống
3.3. Quản lí sách
- Nhập sách:
o Thêm sách
o Loại bỏ, xóa sách
o Sửa thơng tin sách
- Tìm kiếm sách:
o Tìm kiếm theo thơng tin sách
o Tìm kiếm theo tác giả
o Tìm kiếm theo thứ tự từ điển
3.4. Quản lí mượn - trả
- Mượn sách:
o Cập nhật thông tin độc giả vào hệ thống
o Thêm thông tin sách mượn vào thơng tin độc giả
o Cập nhật tình hình sách trên hệ thống kho thư viện
- Trả sách:
o Cập nhật cuốn sách độc giả đang mượn
o Cập nhật tình hình sách trên hệ thống kho thư viện
- Vi phạm:
o Cập nhật lí do vi phạm
o Cập nhật số tiền phạt và các biện pháp theo thông tin mã
mượn trả đã vi phạm


3.5. Chức năng thống kê – báo cáo
- Cập nhật số liệu vào thống kê – báo cáo mỗi khi có một mã

mượn trả mới được cập nhật theo các mục:
o Thống kê số cuốn sách mượn trong 1 năm
o Thống kê những cuốn sách được mượn nhiều trong năm
o Thống kê những cuốn sách ít được mượn trong năm
o Thống kê những độc giả hay mượn sách
3.6. Bảo mật hệ thống
- Sử dụng hệ thống đăng kí, đăng nhập dành cho độc giả và nhân
viên thư viện để dễ dàng phân quyền truy cập cho các đối tượng
trong hệ thống thư viện:
o Người sử dụng chỉ tìm kiếm thơng tin về sách chỉ tiếp xúc
với máy tính qua giao diện riêng
o Người sử dụng có thể truy nhập vào hệ thống sẽ chỉ thêm
được các danh mục sách, hệ thống sẽ khóa một số chức
năng để người sử dụng không thể xâm nhập vào
o Người sử dụng không thể thay đổi các đoạn code lệnh
o


CHƯƠNG II: PHÂN TÍCH DỮ LIỆU HỆ THỐNG
1. Mơ tả hệ thống dưới dạng mối quan hệ dữ liệu
Một thư viện có nhu cầu tin học hóa nhằm giúp cho q trình mượn – trả
sách, quản lí sách nhanh, tiện lợi, khoa học hơn:
- Mỗi đầu sách thuộc về nhiều tác giả, 1 thể loại, 1 NXB, thông tin
của đầu sách: mã đầu sách, tên đầu sách, số trang, năm xuất bản,
giá trị, bìa sách, mơ tả
- Mỗi tác giả có nhiều đầu sách, thơng tin tác giả: mã tác giả, tên tác
giả, website
- Mỗi thể loại có nhiều đầu sách, thông tin thể loại: Mã thể loại, tên
thể loại
- Mỗi nhà xuất bản có nhiều đầu sách, thơng tin NXB: Mã NXB, tên

NXB, website
- Mỗi độc giả có một thẻ thư viện, thông tin độc giả: Mã độc giả, tên
độc giả, địa chỉ, sđt
- Mỗi thẻ thư viện thuộc về một độc giả, thông tin thẻ thư viện: Số
thẻ, ngày bắt đầu, ngày hết hạn
- Mỗi nhân viên phụ trách nhiều phiếu mượn trả, thông tin nhân
viên: Mã nhân viên, họ tên, ngày sinh, số điện thoại
- Mỗi phiếu mượn trả thuộc về một nhân viên và một thẻ thư viện,
thông tin 1 phiếu mượn trả: mã mượn trả, ngày mượn
- Mỗi phiếu mượn trả có nhiều sách, mỗi sách thuộc về nhiều phiếu
mượn trả
- Mỗi phiếu phạt thuộc về 1 độc giả, trong mỗi phiếu phạt có thể có
nhiều sách, thơng tin phiếu phạt gồm: Mã phiếu phạt, tổng tiền
phạt và ngày tạo phạt


2. Xây dựng mơ hình liên kết thực thể


3. Cách chuyển đổi từ ER sang mơ hình quan hệ

* Các quy tắc chuyển đổi:

- Quy tắc 1: Với kiểu liên kết 1:n
Chuyển khóa chính của LĐQH bên 1 (cha) sang làm khóa ngoại của
LĐQH bên nhiều (con).
- Quy tắc 2: Với kiểu liên kết n:n
Chuyển mối liên kết thành một LĐQH có thuộc tính là thuộc tính của
mối liên kết, thêm các thuộc tính khóa chính của các LĐQH có liên
quan, khóa chính của LĐQH mới này là các thuộc tính mới thêm vào.

- Quy tắc 3: Với kiểu liên kết 1:1
+ Cách 1: Chuyển khóa chính của LĐQH này sang làm khóa ngoại của
LĐQH kia hoặc ngược lại.
+ Cách 2: Nhập 2 kiểu thực thể và mối liên kết thành 1 LĐQH, chọn
khóa chính cho phù hợp.
- Đầu sách có quan hệ (n – n) với Tác giả
- Đầu sách có quan hệ (1 – n) với Nhà xuất bản
- Đầu sách có quan hệ (1 – n) với Thể loại
- Đầu sách có quan hệ (1 – n) với Sách
- Phiếu mượn trả có quan hệ (1 - n) với Thẻ thư viện
- Phiếu mượn trả có quan hệ (1 - n) với Nhân viên


- Phiếu mượn trả có quan hệ (n – n) với Sách
- Độc giả có quan hệ (1 – 1) với Thẻ thư viện
- Độc giả có quan hệ (1 – n) với Phiếu phạt
- Phiếu phạt có quan hệ (n – n) với Sách
* Từ các quy tắc trên, ta xây dựng được lược đồ quan hệ theo các
bước như sau:
o DAU_SACH(ma_dau_sach, ten_dau_sach, nam_xuat_ban,
tong_so_luong, so_trang, gia_tri, ma_the_loai,
ma_nha_xuat_ban, key_search, bia_sach, mo_ta_sach,
so_luong_con_lai)
o TACGIA(ma_tac_gia, ten_tac_gia, website, key_search)
o TAC_GIA_DAU_SACH(ma_dau_sach, ma_tac_gia)
o SACH(ma_sach, tinh_trang_sach, ngay_nhap, ma_dau_sach)
o THELOAI(ma_the_loai, ten_the_loai, key_search)
o NHAXUATBAN(ma_nha_xuat_ban, ten_nha_xuat_ban,
website)
o DOCGIA(ma_doc_gia, ten_doc_gia, dia_chi, so_dien_thoai,

ma_the_thu_vien, key_search)
o THETHUVIEN(ma_the_thu_vien, ngay_bat_dau,
ngay_ket_thuc)
o PHIEU_MUON_TRA(ma_phieu_muon_tra, ngay_muon,
ma_the_thu_vien, ma_nhan_vien, ngay_han_tra)


o NHAN_VIEN(ma_nhan_vien, ho_ten, ngay_sinh, sdt,
key_search)
o CHI_TIET_MUON_TRA(ma_phieu_muon_tra, ma_sach,
ngay_doc_gia_tra_sach, ghi_chu)
o PHIEU_PHAT(ma_phieu_phat, ma_doc_gia, tong_tien_phat,
ngay_tao_phat)
o CHI_TIET_DONG_PHAT(ma_phieu_phat, ma_sach, ly_do,
so_trang_rach, so_ngay_qua_han, tien_phat, dong_tien)


4. Vẽ mơ hình quan hệ


5. Đặc tả các bảng
DAU_SACH
Tên trường

Kiểu dữ liệu

Mô tả

Mã đầu sách
Tên đầu sách

Năm xuất bản
Tổng số lượng
Số trang
Giá trị
Mã thể loại
Mã nhà xuất bản
Key search
Bìa sách
Mơ tả sách
Số lượng cịn lại

Int
Nvarchar(50)
Int
Int
Int
Int
Int
Int
Varchar(50)
Nvarchar(256)
Nvarchar(400)
Int

Primary Key

Tên trường

Kiểu dữ liệu


Mô tả

Mã tác gia
Tên tác giả
Website
Key search

Int
Nvarchar(50)
Nvarchar(256)
Varchar(50)

Primary Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã đầu sách
Mã tác giả

Int
Int

Foreign Key
Foreign Key

Tên trường


Kiểu dữ liệu

Mô tả

Mã thể loại
Tên thể loại

Int
Nvarchar(50)

Primary Key

Foreign Key
Foreign Key

TAC_GIA

TAC_GIA_DAU_SACH

THE_LOAI


Key search

Varchar(50)

NHA_XUAT_BAN
Tên trường


Kiểu dữ liệu

Mô tả

Mã NXB
Tên NXB
Website

Int
Nvarchar(50)
Varchar(50)

Primary Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã độc giả
Tên độc giả
Địa chỉ
Số điện thoại
Mã thẻ thư viện
Key search

Int
Nvarchar(50)
Nvarchar (10)

Varchar(20)
Int
Varchar(50)

Primary Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã thẻ thư viện
Ngày bắt đầu
Ngày kết thúc

Char (10)
Date
Date

Primary Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã phiếu mượn trả
Ngày mượn

Mã thẻ thư viện
Mã nhân viên
Ngày hạn trả

Int
Date
Int
Int
Date

Primary Key

DOC_GIA

Foreign Key

THE_THU_VIEN

PHIEU_MUON_TRA

Foreign Key
Foreign Key


NHAN_VIEN
Tên trường

Kiểu dữ liệu

Mô tả


Mã nhân viên
Họ tên
Ngày sinh
Số điện thoại
Key search

Int
Nvarchar(50)
Date
Varchar(20)
Varchar(50)

Primary Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã phiếu mượn trả
Mã sách
Ngày độc giả trả sách
Ghi chú

Int
Int
Date
Nvarchar(50)


Foreign Key
Foreign Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã phiếu phạt
Mã độc giả
Tổng tiền phạt
Ngày tạo phạt

Int
Int
Int
Date

Primary Key
Foreign Key

Tên trường

Kiểu dữ liệu

Mô tả

Mã phiếu phạt

Mã sách
Lý do
Số trang rách
Số ngày quá hạn
Tiền phạt
Đóng tiền

Int
Int
Nvarchar (50)
Int
Int
Int
Int

Foreign Key
Foreign Key

CHI_TIET_MUON_TRA

PHIEU_PHAT

CHI_TIET_DONG_PHAT


CHƯƠNG III: CÀI ĐẶT HỆ THỐNG
1. Lựa chọn công cụ cài đặt
- Cơ sở dữ liệu: Microsoft SQL Server
- Ngôn ngữ lập trình: C#, Python, MSSQL


2. Các câu lệnh trong cơ sở dữ liệu
2.1. Câu lệnh tạo bảng
create table NHAN_VIEN
(
MA_NHAN_VIEN int identity
constraint NHAN_VIEN_pk
primary key nonclustered,
HO_TEN
nvarchar(50) not null,
NGAY_SINH
date
not null,
SO_DIEN_THOAI varchar(20),
KEY_SEARCH varchar(50)
)
go
create unique index NHAN_VIEN_MA_NHAN_VIEN_uindex
on NHAN_VIEN (MA_NHAN_VIEN)
go
create table NHA_XUAT_BAN
(
MA_NHA_XUAT_BAN int identity
constraint NHA_XUAT_BAN_pk
primary key nonclustered,
TEN_NHA_XUAT_BAN nvarchar(50),
WEBSITE
nvarchar(256)
)
go
create unique index NHA_XUAT_BAN_MA_NHA_XUAT_BAN_uindex

on NHA_XUAT_BAN (MA_NHA_XUAT_BAN)
go
create unique index NHA_XUAT_BAN_TEN_NHA_XUAT_BAN_uindex
on NHA_XUAT_BAN (TEN_NHA_XUAT_BAN)
go
create table TAC_GIA
(


)
go

MA_TAC_GIA int identity
constraint TAC_GIA_pk
primary key nonclustered,
TEN_TAC_GIA nvarchar(50) not null,
WEBSITE
nvarchar(256),
KEY_SEARCH varchar(50)

create unique index TAC_GIA_MA_TAC_GIA_uindex
on TAC_GIA (MA_TAC_GIA)
go
create table THE_LOAI
(
MA_THE_LOAI int identity
constraint THE_LOAI_pk
primary key nonclustered,
TEN_THE_LOAI nvarchar(50),
KEY_SEARCH varchar(50)

)
go
create table DAU_SACH
(
MA_DAU_SACH
int identity
constraint DAU_SACH_pk
primary key nonclustered,
TEN_DAU_SACH
nvarchar(50),
NAM_XUAT_BAN
int,
TONG_SO_LUONG int,
SO_TRANG
int,
GIA_TRI
int,
MA_THE_LOAI
int not null
constraint DAU_SACH_THE_LOAI_MA_THE_LOAI_fk
references THE_LOAI,
MA_NHA_XUAT_BAN int not null
constraint DAU_SACH_NHA_XUAT_BAN_MA_NHA_XUAT_BAN_fk
references NHA_XUAT_BAN,
KEY_SEARCH
varchar(50),
BIA_SACH
nvarchar(256),
MO_TA_SACH
nvarchar(4000),

SO_LUONG_CON_LAI int
)
go
create unique index DAU_SACH_MA_DAU_SACH_uindex
on DAU_SACH (MA_DAU_SACH)
go
create table SACH
(
MA_SACH
int identity
constraint SACH_pk


)
go

primary key nonclustered,
TINH_TRANG_SACH nvarchar(50),
NGAY_NHAP
date default getdate(),
MA_DAU_SACH
int not null
constraint SACH_DAU_SACH_MA_DAU_SACH_fk
references DAU_SACH

create unique index SACH_MA_SACH_uindex
on SACH (MA_SACH)
go
create table TAC_GIA_DAU_SACH
(

MA_DAU_SACH int not null
constraint TAC_GIA_DAU_SACH_DAU_SACH_MA_DAU_SACH_fk
references DAU_SACH,
MA_TAC_GIA int not null
constraint TAC_GIA_DAU_SACH_TAC_GIA_MA_TAC_GIA_fk
references TAC_GIA
)
go
create unique index THE_LOAI_MA_THE_LOAI_uindex
on THE_LOAI (MA_THE_LOAI)
go
create unique index THE_LOAI_TEN_THE_LOAI_uindex
on THE_LOAI (TEN_THE_LOAI)
go
create table THE_THU_VIEN
(
MA_THE_THU_VIEN int identity
constraint THE_THU_VIEN_pk
primary key nonclustered,
NGAY_BAT_DAU date not null,
NGAY_KET_THUC date
)
go
create table DOC_GIA
(
MA_DOC_GIA
int identity
constraint DOC_GIA_pk
primary key nonclustered,
TEN_DOC_GIA

nvarchar(50) not null,
DIA_CHI
nvarchar(50),
SO_DIEN_THOAI varchar(20),
MA_THE_THU_VIEN int
constraint DOC_GIA_THE_THU_VIEN_MA_THE_THU_VIEN_fk
references THE_THU_VIEN,
KEY_SEARCH
varchar(50)
)


go
create unique index DOC_GIA_MA_DOC_GIA_uindex
on DOC_GIA (MA_DOC_GIA)
go
create table PHIEU_MUON_TRA
(
MA_PHIEU_MUON_TRA int identity
constraint PHIEU_MUON_TRA_pk
primary key nonclustered,
NGAY_MUON
date not null,
MA_THE_THU_VIEN int not null
constraint PHIEU_MUON_TRA_THE_THU_VIEN_MA_THE_THU_VIEN_fk
references THE_THU_VIEN,
MA_NHAN_VIEN
int not null
constraint PHIEU_MUON_TRA_NHAN_VIEN_MA_NHAN_VIEN_fk
references NHAN_VIEN,

NGAY_HAN_TRA
date
)
go
create table CHI_TIET_MUON_TRA
(
MA_PHIEU_MUON_TRA
int not null
constraint CHUONG_TRINH_MUON_TRA_PHIEU_MUON_TRA_MA_PHIEU_MUON_TRA_fk
references PHIEU_MUON_TRA,
MA_SACH
int not null
constraint CHUONG_TRINH_MUON_TRA_SACH_MA_SACH_fk
references SACH,
NGAY_DOC_GIA_TRA_SACH date,
GHI_CHU
nvarchar(50)
)
go
create unique index PHIEU_MUON_TRA_MA_PHIEU_MUON_TRA_uindex
on PHIEU_MUON_TRA (MA_PHIEU_MUON_TRA)
go
create table PHIEU_PHAT
(
MA_PHIEU_PHAT int identity
constraint PHAT_pk
primary key nonclustered,
MA_DOC_GIA
int not null
constraint PHAT_DOC_GIA_MA_DOC_GIA_fk

references DOC_GIA,
TONG_TIEN_PHAT int,
NGAY_TAO_PHAT date default getdate()
)
go
create table CHI_TIET_DONG_PHAT
(
MA_PHIEU_PHAT int not null
constraint CHI_TIET_DONG_PHAT_PHAT_MA_PHAT_fk


references PHIEU_PHAT,
MA_SACH
int not null
constraint CHI_TIET_DONG_PHAT_SACH_MA_SACH_fk
references SACH,
LY_DO
nvarchar(50),
SO_TRANG_RACH int,
SO_NGAY_QUA_HAN int,
TIEN_PHAT
int,
DONG_TIEN
int
)
go
create unique index PHAT_MA_PHAT_uindex
on PHIEU_PHAT (MA_PHIEU_PHAT)
go
create unique index THE_THU_VIEN_MA_THE_THU_VIEN_uindex

on THE_THU_VIEN (MA_THE_THU_VIEN)
go


2.2. Các câu lệnh tạo trigger
create trigger dbo.addKeySearchNhanVien
on dbo.NHAN_VIEN
after insert, update
as
declare
@khongDau varchar(50)
declare @coDau nvarchar(50)
declare @id int
begin
select @coDau = HO_TEN, @id = MA_NHAN_VIEN from inserted
set @khongDau = dbo.boDau(@coDau)
update NHAN_VIEN
set KEY_SEARCH = @khongDau
where MA_NHAN_VIEN = @id
end
go
create trigger dbo.addKeySearchTacGia
on dbo.TAC_GIA
after insert, update
as
declare
@khongDau varchar(50)
declare @coDau nvarchar(50)
declare @id int
begin

select @coDau = TEN_TAC_GIA, @id = MA_TAC_GIA from inserted
set @khongDau = dbo.boDau(@coDau)
update TAC_GIA
set KEY_SEARCH = @khongDau
where MA_TAC_GIA = @id
end
go
create trigger dbo.addKeySearchDocGia
on dbo.DOC_GIA
after insert, update
as
declare
@khongDau varchar(50)
declare @coDau nvarchar(50)
declare @id int
begin
select @coDau = TEN_DOC_GIA, @id = MA_DOC_GIA from inserted


set @khongDau = dbo.boDau(@coDau)
update DOC_GIA
set KEY_SEARCH = @khongDau
where MA_DOC_GIA = @id
end
go
create trigger dbo.addKeySearchDauSach
on dbo.DAU_SACH
after insert, update
as
declare

@khongDau varchar(50)
declare @coDau nvarchar(50)
declare @id int
begin
select @coDau = TEN_DAU_SACH, @id = MA_DAU_SACH from inserted
set @khongDau = dbo.boDau(@coDau)
update DAU_SACH
set KEY_SEARCH = @khongDau
where MA_DAU_SACH = @id
end
go
create trigger dbo.updateSoLuongConLai
on SACH
for update
as
declare
@MA_DAU_SACH int
begin
select @MA_DAU_SACH = i.MA_DAU_SACH from inserted i

if update(TINH_TRANG_SACH)
execute dbo.procUpdateSoLuongConLai @MA_DAU_SACH
end
go
create trigger dbo.addKeySearchTheLoai
on dbo.THE_LOAI
after insert, update
as
declare
@khongDau varchar(50)

declare @coDau nvarchar(50)
declare @id int
begin
select @coDau = TEN_THE_LOAI, @id = MA_THE_LOAI from inserted
set @khongDau = dbo.boDau(@coDau)


update THE_LOAI
set KEY_SEARCH = @khongDau
where MA_THE_LOAI = @id
end
go
create trigger dbo.setTienPhatCT
on dbo.CHI_TIET_DONG_PHAT
for update, insert
as
declare
@TONG_TIEN int
declare @MA_PHIEU_PHAT int
declare @MA_SACH int
declare @SO_TRANG_RACH int
declare @SO_NGAY_QUA_HAN int
begin
select @MA_PHIEU_PHAT = MA_PHIEU_PHAT,
@MA_SACH = MA_SACH,
@SO_NGAY_QUA_HAN = SO_NGAY_QUA_HAN,
@SO_TRANG_RACH = SO_TRANG_RACH
from inserted
set @TONG_TIEN = @SO_NGAY_QUA_HAN * 1500 + @SO_TRANG_RACH * 500
update CHI_TIET_DONG_PHAT

set TIEN_PHAT = @TONG_TIEN
where MA_PHIEU_PHAT = @MA_PHIEU_PHAT
and MA_SACH = @MA_SACH
end
go
create trigger triggerUpdateTongTienPhatPhieuPhat
on CHI_TIET_DONG_PHAT
after update, insert
as
declare
@MA_PHIEU_PHAT int
begin
select @MA_PHIEU_PHAT = MA_PHIEU_PHAT from inserted
if update(TIEN_PHAT)
execute procUpdateTongTienPhatPhieuPhat @MA_PHIEU_PHAT
end
go

2.3. Các câu lệnh tạo hàm, thủ tục
CREATE FUNCTION boDau (@inputVar NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS


BEGIN
IF (@inputVar IS NULL OR @inputVar = '') RETURN ''
DECLARE @RT NVARCHAR(MAX)
DECLARE @SIGN_CHARS NCHAR(256)
DECLARE @UNSIGN_CHARS NCHAR (256)
SET @SIGN_CHARS =

N'ăâđêơơưàảãạáằẳẵặắầẩẫậấèẻẽẹéềểễệếìỉĩịíịỏõọóồổỗộốờởỡợớùủũụúừửữựứỳỷỹỵýĂÂĐÊƠƠƯÀ
ẢÃẠÁẰẲẴẶẮẦẨẪẬẤÈẺẼẸÉỀỂỄỆẾÌỈĨỊÍỊỎÕỌĨỒỔỖỘỐỜỞỠỢỚÙỦŨỤÚỪỬỮỰỨỲỶỸỴÝ' +
NCHAR(272) + NCHAR(208)
SET @UNSIGN_CHARS =
N'aadeoouaaaaaaaaaaaaaaaeeeeeeeeeeiiiiiooooooooooooooouuuuuuuuuuyyyyyAADEOOUA
AAAAAAAAAAAAAAEEEEEEEEEEIIIIIOOOOOOOOOOOOOOOUUUUUUUUUUYYYYYDD'
DECLARE @COUNTER int
DECLARE @COUNTER1 int
SET @COUNTER = 1
WHILE (@COUNTER <= LEN(@inputVar))
BEGIN
SET @COUNTER1 = 1
WHILE (@COUNTER1 <= LEN(@SIGN_CHARS) + 1)
BEGIN
IF UNICODE(SUBSTRING(@SIGN_CHARS, @COUNTER1,1)) =
UNICODE(SUBSTRING(@inputVar,@COUNTER ,1))
BEGIN
IF @COUNTER = 1
SET @inputVar = SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1) +
SUBSTRING(@inputVar, @COUNTER+1,LEN(@inputVar)-1)
ELSE
SET @inputVar = SUBSTRING(@inputVar, 1, @COUNTER-1)
+SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1) + SUBSTRING(@inputVar,
@COUNTER+1,LEN(@inputVar)- @COUNTER)
BREAK
END
SET @COUNTER1 = @COUNTER1 +1
END
SET @COUNTER = @COUNTER +1
END

-- SET @inputVar = replace(@inputVar,' ','-')
RETURN @inputVar
END
go
create procedure dbo.procUpdateSoLuongConLai(@MA_DAU_SACH int) as
declare @slSach int
begin
select @slSach = count(S.MA_SACH)
from DAU_SACH
full join SACH S on DAU_SACH.MA_DAU_SACH = S.MA_DAU_SACH
where DAU_SACH.MA_DAU_SACH = @MA_DAU_SACH
and S.TINH_TRANG_SACH = N'Chưa mượn'
group by DAU_SACH.MA_DAU_SACH


go

update DAU_SACH
set SO_LUONG_CON_LAI = @slSach
where MA_DAU_SACH = @MA_DAU_SACH
end

create proc dbo.procUpdateTongTienPhatPhieuPhat (@MA_PHIEU_PHAT int) as
declare @TONG_TIEN_PHAT int
begin
select @TONG_TIEN_PHAT = sum(TIEN_PHAT)
from PHIEU_PHAT, CHI_TIET_DONG_PHAT
where PHIEU_PHAT.MA_PHIEU_PHAT = CHI_TIET_DONG_PHAT.MA_PHIEU_PHAT
and PHIEU_PHAT.MA_PHIEU_PHAT = @MA_PHIEU_PHAT
group by PHIEU_PHAT.MA_PHIEU_PHAT


go

update PHIEU_PHAT
set TONG_TIEN_PHAT = @TONG_TIEN_PHAT
where MA_PHIEU_PHAT = @MA_PHIEU_PHAT
end

3. Kiến trúc menu hệ thống


×