Tải bản đầy đủ (.doc) (46 trang)

DE TAI TIN CO SO

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 (932.02 KB, 46 trang )

Đề tài thực tập tin cơ sở
MC LC
Li núi u:...........................................................................................................
M : 011...........................................................................................................
Phn I: bài toán dùng thuật toán sinh..................................................
1.1 bi..........................................................................................................
1.2 nêu thut toỏn.............................................................................................
1.3 ví dụ minh hoạ.......................................................................................
1.4 Chng trỡnh...............................................................................................
Phân II:Tìm hiểu về Trigger trong SQL Server ..........................
2.1 Trình bày khái niện và ý nghĩa của Tigger trong SQL
Server..............................................................................................................
2.2 In thủ tục dà cài đặt..........................................................................
Phần III : Tìm hiểu và sử dụng Outlook Express
Kt lun.................................................................................................................

Ti liu tham kho................................................................................................

GVHD: Trần Xuân Trêng

-1-


Đề tài thực tập tin cơ sở
LI NểI U
S phỏt triển nhảy vọt của Công nghệ Thông tin hiện nay đã tác động sâu
sắc đến mọi lĩnh vực của xã hội. Ở nước ta, việc định hướng và điều phối các
hoạt động triển khai Cơng nghệ Thơng tin khơng cịn ở mức độ thử nghiệm nữa
mà đã thành nhu cầu bức thiết của q trình phát triển. Mỗi năm, có hàng trăm dự
án tin học nằm dưới sự điều phối của ban chỉ đạo chương trình quốc gia về Cơng
nghệ Thông tin và rất nhiều dự án của các bộ, nghành được triển khai. Phạm vi


ứng dụng của Công nghệ Thông tin ngày càng được mở rộng trên nhiều lĩnh vực:
truyền thơng, đo lường, điều khiển tự động, quản lí các hoạt động của con người
và xã hội... Đặc biệt, hiện nay việc ứng dụng tin học trong quản lí chiếm phần lớn
về sản phẩm phần mềm. Những thành tựu về tin học hố cơng tác quản lí đã
mang lại nhiều lợi ích thiết thực, tạo ra phương pháp quản lí mới hiệu quả, nhanh
chóng và chính xác. Giúp các nhà quản lí có tầm nhìn bao qt, nắm bắt kịp thời
các địi hỏi về thơng tin và các u cầu cần xử lí.
Đề tài “Thực tập cơ sở” xuất phát từ nhu cầu thực tế trên, nhằm nâng cao
kiến thức cho sinh viên trước khi ra trường. Mặc dù đã có nhiều cố gắng trong
việc tìm hiểu kĩ các kiến thức đã học, kết hợp với tra cứu tài liệu chuyên ngành
để hoàn thành được các yêu cầu đặt ra của đề tài thực tập cơ sở. Nhưng vì thời
gian hạn hẹp, do đó đề tài có nhiều thiếu sót, rất mong đón nhận sự đánh giá, bổ
sung của giáo viên, các thầy cô giáo và các sinh viên u thích mơn tin học.
Nhóm chúng em xin chân thành cm n s tn tỡnh giỳp ca thầy
Trần Xuân Trêng và các thầy cô giáo khoa Công nghệ Thông tin - Trường
Đại Học Vinh, cùng các bạn đã động viên giúp đỡ chúng em trong q trình hồn
thành đề

GVHD: Trần Xuân Trờng

-2-


Đề tài thực tập tin cơ sở
MÃ Đề 011 :
CâuI : Bài toán dùng thuật toán sinh hoặc thuật toán quay lui :
1. Sinh hoán vị
2. Sinh xâu nhị phân
3. Sinh xâu tổ hợp
Yêu cầu :- Nêu bài toán

- Nêu thuật toán
- Ví dụ minh họa
- Cài đặt thuật toán trên 1 ngôn ngữ nào
đó(Pascal, C, C++)
CâuII : Tìm hiểu về Trigger trong SQL Server
- Nêu khái niệm và ý nghÜa cđa Trigger trong
SQL Server.
- Gi¶ sư ta cã b¶ng sau
- Diem(MaSV,MaMon,Diem)
KIEMTRA(MaSV,MaMon,DiemCu,DiemMoi,NgaySua)
Trong đó :
+ Bảng Diem để lu trữ điểm của sinh
viên,gồm các trờng :mà sinh viên,ma mon và
điểm ;
+ Bảng KIEMTRA để lu vết những lần
điểm sữa(sử dụng lệnh Update), gồm :
máinh viên, mà môn, điểm cũ, điểm mới,
ngày sửa.
HÃy cài đặt một trigger để thực hiện
việc lu vết trên.
Yêu cầu báo cáo :
GVHD: Trần Xuân Trờng

-3-


Đề tài thực tập tin cơ sở
- Trình bày khái niƯm vµ ý nghÜa cđa
Trigger trong SQL Server
- In ra thủ tục dà cài đặt.

CâuIII : Tìm hiểu và sử dơng Outlook Express

C©u I :
Kỹ thuật sinh: Generating
(1) Xác định trạng thái đầu của bài toán.
(2) Xác định trạng thái kết thúc.
(3) Xác định một thứ tự cho các trạng thái.
(4) Tìm giải thuật đi từ trạng thái này sang trạng thái khác.
1.1 - Bài toán sinh xâu nhị phân: (Bài toán liệt kê tập con của 1tập gồm n
phần tử)
1.1.1 - u cầu bài tốn:
Cho tập nhị phân có độ dài là n.Với n được nhập vào từ bàn phím.
Liệt kê các chuỗi nhị phân có thể có bằng phương pháp sinh.
1.1.2 - Giải thuật:
Khởi tạo số phần tử mảng: n (là số bit cần liệt kê)
Tập các biến trị bao gồm 0 và 1
Trạng thái ban đầu của tập con là : n số 0 ví dụ 0000
Trạng thái kết thúc của tập con là n số 1 ví dụ là 1111
Cấu hình sinh: Cộng thêm 1 theo cách tính nhị phân
Liệt kê theo tứ tự từ điển với mỗi cấu hình sau lớn hơn cấu hình trước 1 đơn vị
theo cách tính nhị phân
00000001001000110100010101100111100010011010
1011……
Cách cộng thêm 1 vào chuỗi nhị phân:
-

Gọi i là vị trí bit 0 đầu tiên từ bên phải
Cho các bit 1 bên phải v trớ i

GVHD: Trần Xuân Trờng


-4-


Đề tài thực tập tin cơ sở
Cho bit i mang trị là 1
Độ phức tạp: 2n
Như vậy ta đã sinh ra cấu hình kế tiếp bằng cách: duyệt từ cuối mảng về đầu
mảng config
( chứa dãy các bit 0-1 ) và tìm chỉ số đầu tiên == 0. Khi nào tìm thấy thì tăng nó
lên 1 và trong q trình "đi ngang qua" bit nào bằng 1 thì bật nó về 0. Nó chính
là phép cộng nhị phân cấu hình nhn c vi 1

GVHD: Trần Xuân Trờng

-5-


Đề tài thực tập tin cơ sở
1.1.3 Chng trỡnh :
#include<conio.h>
#include <stdio.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
void InitConfigure (char vars[],int n)
{
for (int i=0;i}
void Output(char vars[],int n,int count)

{
printf("\nTap con thu %d:\t",count);
for (int i=0;i}
void NextConfigure(char vars[],int n)
{
int i = n-1;
while(i>=0 && vars[i]=='1') //cho cac bit o ben phai ve 0
{ vars[i]='0';
i--;
}
vars[i]='1';//i la vi tri bit 0 dau tien tu ben phai
}
int LastConfigure(char vars[],int n)
{
for (int i=0;i<=n;i++)
if (vars[i] =='0') return 0;
return 1;
}
void Generate(char vars[],int n)
{ int Stop = FALSE;
InitConfigure(vars,n);
int count =1;
Output(vars,n,count);
Stop = LastConfigure(vars,n);
while(!Stop)
{ NextConfigure(vars,n);
count++;
Output(vars,n,count);
GVHD: Trần Xuân Trờng


-6-


Đề tài thực tập tin cơ sở
Stop = LastConfigure(vars,n);
}
}
void main()
{ clrscr();
int n; //So phan tu
puts("Chuong trinh liet ke cac tap con");
printf("Nhap so phan tu cua tap:");
scanf("%d",&n);
char* vars = new char[n];
Generate(vars,n);
delete[] vars;
getch();
}

1.2 - Bài toán sinh hoán vị:
1.2.1 -Yêu cầu bài toán:
Cho tập X = { 1,2,3,..., n}.Với thứ tự tăng dần gồm n phần tử.
Hãy liệt kê tất cả các hoán vị của tập này.Với n được nhập vào từ bàn phím
1.2.2– Phân tích giải thuật:
Trạng thái ban đầu X1 ={1,2,3,…,n}
Trạng thái kết thúc Xn ={n,n-1,n-2,...,1}
Cấu hình tiếp theo:
• Tìm chỉ số lớn nhất j mà ajhốn vị.

 j=n-1; while (a[j]>a[j+1]) j--;
• Tìm vị trí đầu tiên k đi ngược từ cuối tập trị với a[k] > a[j]
 k=n; while (a[j]>a[k]) k--;


Hốn vị a[j] với a[k]



Lật ngược đoạn aj+1 ... an
trng thỏi k tip

phc tp n!
GVHD: Trần Xuân Trêng

-7-


Đề tài thực tập tin cơ sở
1.2.3 Chng trỡnh:
#include<conio.h>
#include<stdio.h>
void InitConfigure(int vars[],int n)
{
for(int i =1;i<=n;i++) vars[i]=i;
}
int LastConfigure(int vars[],int n)
{
for(int i=1;iif(vars[i]

return 1;
}
void Output(int vars[],int n,int count)
{
printf("\nHoan vi thu %d:\t",count);
for(int i = 1;i<=n;i++) printf("%d, ",vars[i]);
}
void NextConfigure(int vars[],int n)
{
int j=n-1;
while(j>0&&vars[j]>vars[j+1]) j--;//Day la vi tri se hoan vi
int k =n;
while(vars[j]>vars[k]) k--;
int t = vars[j];
vars[j]=vars[k];
vars[k] = t;
//dao nguo nhom tri vars[aj+1] ,.....vars[n]
int left=j+1,right = n;
while(left{
t=vars[left];
vars[left]=vars[right];
vars[right]= t;
left++;right--;
}
}
void Generate(int vars[],int n)
{
InitConfigure(vars,n);
int count =1;

GVHD: Trần Xuân Trêng

-8-


Đề tài thực tập tin cơ sở
Output(vars,n,count);
int Stop = LastConfigure(vars,n);
while(!Stop)
{
NextConfigure(vars,n);
count++;
Output(vars,n,count);
Stop = LastConfigure(vars,n);
}
}
void main()
{
clrscr();
int n; //so phan tu
puts("Chuong trinh hoan vi n phan tu");
printf("Nhao so phan tu cua tap: ");
scanf("%d",&n);
int * vars = new int [n+1];
Generate(vars,n);
getch();
}

1.3 - Bài Toán Sinh Tổ Hợp
1.3.1 – Yêu cầu bài toán:

Cho tập X = { 1,2,3,..., n}.Với thứ tự tăng dần gồm n phần tử.
Liệt kê các tập con của bài toán tổ hợp n chập k.Với n,k được nhập vào từ bàn
phím
1.3.2– Phân tích Giải thuật:
Một tập con k phần tử của X là một bộ có thứ tự a1 a2 a3 ..... ak với
1≤ a1< a2 < a3 <..... < ak ≤ n
Cấu hình ban đầu: XFirst = { 1,2,3,...,k }
Ví dụ { 1,2,3 } với k=3, n=5
Cấu hình kết thúc : XLast = { (n-k+1), (n-k+2) , ..., n }
Ví dụ: { 3,4,5 } vi k=3, n=5
GVHD: Trần Xuân Trờng

-9-


Đề tài thực tập tin cơ sở
Cu hỡnh tip theo:
(1) Tìm vị trí đầu tiên từ bên phải 1 vị trí i sao cho a[i] ≠ n-k+i
i=k;
while (a[i]==n-k+i) i-- ;
(2) Thay a[i] bằng a[i] +1
a[i]= a[i] + 1;
(3) Thay các trị sau i (a[j]) bằng các trị a[i]+j-i ,...
for (j=i+1;j<=k;j++)
a[j]= a[i]+ j -i;
Độ phức tạp là:

n!/k!*(n-k)!

Ví dụ với n =8 k =6

Và tập con {1,2,5,6,7,8}
Tập con sinh ra kết tiếp theo giải thuật trên sẽ là
(1) Tìm vị trí đầu tiên từ bên phải 1 vị trí i sao cho a[i] ≠ n-k+i
i=k; //i=k=6
while (a[i]==n-k+i) i-- ; //ta có kết quả là i=2
(2) Thay a[i] bằng a[i] +1 //thay a[i]=a[i]+1 tức là a[2] =3
a[i]= a[i] + 1;
(3) Thay các trị sau i (a[j]) bằng các trị a[i]+j-i ,...
for (j=i+1;j<=k;j++)
a[j]= a[i]+ j -i;
// tập con kế được sinh ra sẽ là {1,3,4,5,6,7}
1.3.3 Chương trình:
#include<conio.h>
#include<stdio.h>
void InitConfigure(int * result,int k)
{
for(int i =1;i<=k;i++)
result[i]=i;
}
void Output(int * result,int k)
{
printf("\n");
for(int i = 1;i<=k;i++)
GVHD: Trần Xuân Trờng

- 10 -


Đề tài thực tập tin cơ sở
printf(" %d",result[i]);

}
void NextConfigure(int* result,int n,int k,int & Stop)
{
int i = k;
while(i>0 && result[i]==n-k+i) i--;
if(i>0)
{
result[i]++;
for(int j=i+1;j<=k;j++)
result[j]=result[i]+j-i;
}
else Stop =1;
}
void Generate(int * result,int n,int k)
{
int Stop =0;
InitConfigure(result,k);
Output(result,k);
while(!Stop)
{
NextConfigure(result,n,k,Stop);
if(!Stop)
Output(result,k);
}
}
void main()
{
int n,k;
printf("Nhap so phan tu cua tap n: ");scanf("%d",&n);
printf("Nhap so phan tu cua tap con k: ");scanf("%d",&k);

int * result = new int [k+1];
Generate(result,n,k);
delete[] result;
getch();
}
C©u II:
TÌM HIỂU VỀ TRIGGER TRONG SQL SERVER
GVHD: Trần Xuân Trờng

- 11 -


Đề tài thực tập tin cơ sở
A: Gii thiu v SQL
SQL là sản phẩm của công ty IBM. Ngôn ngữ SQL được phát triển từ
ngôn ngữ SEQUEL (Strructured English Query Language), giới thiệu năm 1976.
Ngày sau khi ra đời SQL đã được ứng dụng rộng rãi trong lĩnh vực khai thác
CSDL quan hệ. Hiện nay hầu hết các hệ quản trị CSDL đều có phần ngơn ngữ
nay.
SQL là ngơn ngữ phi thủ tục điển hình.Các phép tốn cơ bản trong SQL là
các ánh xạ được mô tả dưới dạng khối: Select – From – Where: Các thuật ngữ
trong CSDL quan hệ như: Quan hệ, thuộc tính, bộ được thay thế bằng các thuật
ngữ như: Bảng (Table), cột (Colum), bản ghi hay hng (Record)

ã Tạo bảng:
Cú pháp:
CREATE

TABLE


Tên_ bảng(Tên _ cột

kiểu_

dl[(kích thớc)][Not lull],...
Primary key(khoá_ chính)
[Unique(khoá),...]
[Foreign key (khoá_ ngoại) Reference Tên _
bảng,...]
[check Điêu_ kiện_ ràng_ buộc,...]
Trong đó:
-

Tên_ bảng: Là xâu ký tự bất kỳ,không trùng từ khoá, không

GVHD: Trần Xuân Trờng

- 12 -


Đề tài thực tập tin cơ sở
chứa dấu cách trống
-

Tên_ cột: La xâu ký tự, không chứa dấu cách trống. Trong
một bảng tên cột là duy nhât. Thứ tự các cột không quan
trọng.

-


Kiểu_DL: Kiểu dữ liệu của cột. Kiểu dữ liệu có thể chon
một trong các loại sau:
ã integer
ã smallinteger:
ã decimal
• floal
• char
• varchar
• datetime...
Khả năng của SQL gồm:
* Định nghĩa dữ liệu tạo csdl và cấu trúc bảng của nú
ã Truy vn d liu (Select)

-

cấu trúc đơn giản nhất trong SQL là khối SELECT, nó có
dạng
SELECT ...FROM ...WHERE

Trong đó:
SELECT: Dùng để xác định nội dung của các cột cần
GVHD: Trần Xuân Trờng
- 13 -


Đề tài thực tập tin cơ sở
đa ra kết quả
FROM: Để xác định các bảng cần lấy thông tin ra
WHERE: Để xác định các bản ghi thoả yêu cầu chọn
lọc để đa ra kết quả

Tuy nhiên để mở rộng khả năng của lệnh,SQL còn đợc bổ
sung thêm một số thành phần khác. Dạng tổng quát của khối
SELECT nh sau:
SELECT[DISTINCT] *| DS_cột_ cần_ lấy_ kết_ quả
|DS_ các_biểu_ thức
FROM Danh sách_các_bảng
[WHERE Biểu_ thức_điều_ kiện]
[GROUP BY Danh_ sách_ các_ cột]
[HAVING Biểu_ thức_điều_ kiện]
[ORDER BY{Tên_ cột | biểu_ thức}[ASC |
DESC]]
Trong đó:
- dấu * chỉ toàn bô(ALL) các cột của
bảng
- biểu_ thức: Bao gồm các toán tở tác
động lên các

toán

hạng
ã Sa i d liu(Insert), xoỏ (Delete) v cp nht (Update).
GVHD: Trần Xuân Trờng

- 14 -


Đề tài thực tập tin cơ sở
1.1: Sữa đổi dữ liệu(Insert)
Cú pháp:
INSERT INTO Tên_ bảng VALUES(bộ_

giá_ trị)
1.2: Xoá(delete)
Cú pháp:
DELETE FROM Tên_bảng
[where điều_kiện]
1.3: cập nhật(update)
Cú pháp:
UPDATE TABLE Tên_bảng
SET Tên_cột=Biểu_thức...
[WHERE Điều_kiện]

ó cú rất nhiều phiên bản của SQL đã được ra đời sau sự kiện này từ 4.2
sau đó được nâng cấp thành 4.21; 6.0; 6.5; 7.0 va hiện giờ là SQL server 2000.
Trong bài làm này chung tôi ứng dụng SQL server 2000 vào bài làm của mình.
Đã có rất nhiều công cụ trợ giúp cho SQL server để xác định một CSDL
ngồi việc thiết kế sao cho thơng tin lưu trữ đầy đủ và hợp lý (hợp lý ở đây được
hiểu theo nghĩa về không gian lưu trữ và xuất thơng tin) chung ta cịn cần phải
làm sao để đảm bảo rằng thơng tin lưu trữ trong CSDL chính xác và nhất quán ở
mức cao nhất có thể và điều này chính là yếu tố quan trọng quyết định sự thnh
GVHD: Trần Xuân Trờng

- 15 -


Đề tài thực tập tin cơ sở
bi ca mt ng dụng tin học. Và TRIGGER cơng cụ chính yếu để chúng ta thực
hiện cơng việc này!

Vậy Trigger là gì?
I. Khái niệm và ý nghĩa

1.1. Khái niệm về Trigger trong SQL Server
Trigger có thể được xem là một dạng đặc biệt của thủ tục nội tại bởi vì bên
trong nội dung của Trigger lưu trữ các câu lệnh dùng để thực hiện một số hành
động nào đó mà người lập trình sẽ chỉ ra. Tuy nhiên khác với thủ tục nội tại,
Trigger hồn tồn khơng có tham số. Ngồi ra chúng không thể gọi trực tiếp
trigger bằng lệnh EXEXCUTE như thủ tục nội tại hoặc bất kỳ một lệnh nào
khác, thay vào đó Trigger sẽ được thực hiện một cách tự động khi dữ liệu của
bảng có liên quan đến Trigger bị cập nhập.
(Hay Trigger là một kiểu thủ tục được lưu trữ đặc biệt chúng được tự động
gọi khi bạn sửa đổi dữ liệu mà Trigger được thiết kế để bảo vệ.Các Trigger giúp
đảm bảo sự toàn vẹn cho dữ liệu của bạn bằng cách không cho những sự thay đổi
không nhất quán thực hiện.)
1.2. Ý nghĩa của trigger trong SQL server
Chính nhờ vào tính năng tự động mà ta có các ý nghĩa sau:
- Kiểm tra các ràng buộc toàn vẹn dữ liệu phức tạp
- Thực hiện các xử lý được thiết kế thi hành tại Server. Các xử lớ m ta mun
GVHD: Trần Xuân Trờng

- 16 -


Đề tài thực tập tin cơ sở
chỳng t ng thc hiện khi có thao tác INSERT, UPDATE, hoặc DELETE xảy
ra.
- Trigger cũng được dùng thay thế các Contstrait trong trường hợp ta muốn kiểm
tra ràng buộc dữ liệu kèm theo các câu thông báo theo ý muốn người dùng.
1.2.1. Mở rộng ràng buộc tồn vẹn dữ liệu với các Trigger
Có 3 thao tác cơ bản làm thay đổi dữ liệu trên các bảng của cơ sở dữ liệu đó là
INSERT, UPDATE, DELETE. Như vậy để đảm bảo tính nhất quán và đúng đắn
ta cần kiểm tra việc thực hiện của 3 thao tác này.

Có 2 cách kiểm tra:
- Kiểm tra mức giao diện: Lập trình các màn hình giao diện
- Kiểm tra mức cơ sở dữ liệu: Thực hiện bởi các đơis tượng Constraint hoặc
Trigger.
đối với các ràng buộc tồn vẹn dữ liệu đơn giản như kiêm tra các ràng buộc miền
giá trị, các thuộc tính trên cùng một bảng dữ liệu,... ta nên sử dụng Constraint.
Đối với các ràng buộc toàn vẹn phức tạp khác: Là những quy tắc được định
nghĩa để kiểm tra tính tồn vẹn của dữ liệu trên nhiều cột hoặc nhiều dòng của
các bảng khác nhau, khi đó bắt buộc chúng ta phải sử dụng Trigger .
1.2.2. Các dạng ràng buộc toàn vẹn dữ liệu nên dùng trigger
Trên SQL server có 2 cách thực hiện ràng buộc toàn vẹn dữ liệu:
- Ràng buộc toàn vẹn dữ liệu bằng phương pháp mô tả (Declarative Data
Integrity):
Theo phương pháp này chính là các cơng việc xác định ràng buộc khố chính,
ngoại khố, kiểm tra miền giá trị,... và mơ tả chúng tại thời điểm tạo Table. Đặc
GVHD: TrÇn Xu©n Trêng

- 17 -


Đề tài thực tập tin cơ sở
im l vic kim tra sẻ được thực hiện trước khi cho phép ghi vào Table.
- Bằng phương pháp theo thủ tục:
Việc ràng buộc toàn vẹn dữ liệu được xác định bởi các câu lệnh của SQL, các
câu lệnh chứa bên trong đối tượng Trigger, chúng sẻ được gọi thi hành khi có
thao tác thêm, xoá, hoặc sửa dữ liệu xảy ra trên Table tương ứng. Việc kiểm tra
được thực hiện sau khi dữ liệu được ghi vào Table.
1.2.3. Khi nào thì sử dụng Trigger?
Ta xét ví dụ sau:
Cho một cơ sở dữ liệu có cấu trúc sau:

• KHACH_HANG(ID KHG, TEN_NCC)
• PHIEU_XUAT(ID PX, SO_PX, NGAY_PN, #ID_KHG)
• CT_PHIE_XUAT(#ID PX, #ID HH, SOLUONG, DONGIA,
THANHTIEN)
• DM_HANG_HOA(ID HH, TEN_HH, DONGIAHIENHANH)
Để đảm bảo tính nhất quán và chính xác dữ liệu, cần thực hiện các yêu cầu ràng
buộc toàn vẹn dữ liệu:
KHACH_HANG: Một khách hàng có một mã duy nhất dùng phân biệt khách
hàng này với khách hàng khác, có một tên khách hàng duy nhất.
DM_HANG_HOA: Một hàng hố có một mã hàng hố duy nhất dùng phân biệt
với các hàng hố khác, có một tên hàng hóa và một đơn giá hiện tại duy nhất .
PHIEU_XUAT: Một phiếu xuất có một mã duy nhất dùng để phân biệt với phiếu
xuất khác, có một số phiếu xuất, một ngày xuất xác định.
Một phiếu xuất liên quan đến duy nhất 1 khỏch hng.
GVHD: Trần Xuân Trờng

- 18 -


Đề tài thực tập tin cơ sở
Mt phiu xut cú ít nhất 1 chi tiết xuất.
CT_PHIEU_XUAT: Một chi tiết xuất có mã phiếu xuất và mã hàng hố dùng để
xác định khoá của quan hệ .khoá này dùng phân biệt với các chi tiết xuất khác,
có một giá trị số lượng xác định, một đơn giá tương ứng với một đơn giá hiện
hành của hàng hố lấy từthuộc tính DONGIAHIENHANH của Table
DM_HANG_HOA.

Giá

trị


của

thành

tiền

được

tinh

công

thức

THANHTIEN=soluong*dongia.
Câu hỏi đặt ra : Với các yêu cầu rang buộc toàn vẹn dữ liệu ở trên, yêu cầu nào
cần phải sử dụng Trigger để cài đặt.
Câu trả lời : Chỉ có ràng buộc 1 đơn giá tương ứng với đơn giá hiện hành của
hàng hoá lấy từ thuộc tính DONGIAHIENHANH của table DM_HANG_HOA
là thật sự cần phải sử dụng Trigger để giải quyết vấn đề. Các ràng buộc cịn lại
có thể sử dụng theo phương pháp mơ tả.
Các trường hợp sử dụng Trigger
+ Quan điểm cơ bản cần nghỉ đến trước tiên là chỉ những ràng buộc dữ liệu nào
khơng thể dùng phương pháp mơ tả thì mơi dùng Trigger giải quyết. Tuy nhiên ta
không nhất thiết phải tuân thủ quan điểm này, trên thực tế ta có thể sử dụng
Trigger để thay thế cho Constraint trong trường hợp ta muốn tự mình kiểm sốt
và cho ra các câu thơng báo thích hợp người dùng.
+ Khi có sự thay đổi dữ liệu trên 1 Table và chúng ta muốn dữ liệu trên 1 hay
nhiều Table khác cũng tự động thay đổi theo cho phù hợp.

+ Trên thực tế đơi khi người lập trình muốn thay đổi cấu trúc lưu trữ của dữ liệu
với mục tiêu tăng tốc độ xử lý hoặc việc xử lý tính tốn dể dàng hơn.
+ Nếu bạn muốn cơ sở dữ liệu có những thơng báo lổi thích hợp theo ý muốn khi
GVHD: TrÇn Xu©n Trêng

- 19 -


Đề tài thực tập tin cơ sở
thao tỏc thay i dữ liệu vi phạm ràng buộc toàn vẹn,bạn nên dùng Trigger.
+ Tất cả các xử lý mà bạn muốn chúng tự động thực hiện tại phía Server khi có
thao tác dữ liệu Insert, Update hay Delete xảy ra.

1.2.4. Các đặc trưng và hạn chế
+ Từ một Trigger có thể xây dựng bên trong nó các câu lệnh tác động lên cột của
Table.
+ Có thể áp dụng Trigger cho đối tượng View.
+ Một Trigger có thể thực hiện nhiều hành động và nó có thể được kích hoạt bởi
nhiều hơn một biến cố (các biến cố là Insert, Delete, Update)
+ Trigger không thể tạo trên một Trigger tạm (la Table được tạo với tên table có
ký tự # hoặc ## phía trước ) hoặc Table hệ thống. Tuy nhiên các cau lệnh bên
trong Trigger hồn tồn có thể tham chiếu đến nội dung bên trong các Table tạm
và Table hệ thống
+ Hạn chế quan trọng mà bạn cần quan tâm là các Trigger loại INSTEAD OF
DELETE và INSTEAD OF UPDATA không thể được định nghĩa trên các Table
có chứa khóa ngoại và trên dây quan hệ nối từ Table chứa nó thơng qua khố
ngoại đến Table khác đả có thiết đặt tương ứng trên các dây quan hệ.
1.3. Cài đặt một Trigger để lưu vết
//--- tao database
Create database testtriger

//-- tao table DIEM
create table DIEM
GVHD: Trần Xuân Trờng

- 20 -


Đề tài thực tập tin cơ sở
(
Masv int ,
Mamon char (5),
Diem tinyint ,
primary key (Masv),
constraint ct_d1 check (Diem >= 0 and Diem <= 10)
)
//-- tao Table Kiem tra. chu y Foreign key de update du lieu tu table DIEM sang
table KIEMTRA
Create table KIEM_TRA
(
Masv int ,
Mamon char(5),
Diemcu tinyint,
Diemmoi tinyint,
Ngay_sua datetime ,
primary key (Masv,Mamon),
constraint ct_K1 foreign key (Masv) references DIEM(Masv)
)
//-- bat dau tao trigger
Create trigger chinh_sua //-- ten trigger
on DIEM //-- trigger dung cho table DIEM

for update //-- chi thuc hien khi su kien Update xay ra
as
GVHD: Trần Xuân Trờng

- 21 -


Đề tài thực tập tin cơ sở
//-- thuat toan : Khi update 1 truong du lieu trong table DIEM thi trigger thuc
hien cong viec insert vao table KIEMTRA cac gia tri
//-- giong voi gia tri trong table DIEM , kem theo 2 cot moi la Diem moi va
ngaysua de kiem tra su thay doi
insert into KIEM_TRA
select inserted.Masv,inserted.Mamon,deleted.Diem,inserted.Diem,getdate()
//-- ham lay ngay thang hien tai
from inserted,deleted //-- mac dinh , khi update(xoa, them , sua ) du lieu trong 1
table thi du lieu do se duoc luu vao table Deleted, Inserted , khi can kiem tra thi
chung ta lay
//-- du lieu trong cac table nay ra
//-- bat dau insert du lieu. phan nay trigger ko kiem tra vi chung ta viet trigger
cho su kien update
insert into DIEM values (01,'m1',6)
insert into DIEM values (02,'m2',7)
insert into DIEM values (03,'m3',8)
insert into DIEM values (04,'m4',9)
insert into DIEM values (06,'m5',3)
//-- test
select * from DIEM
select * from KIEM_TRA


//-- update du lieu
update DIEM
set Mamon='m5',Diem=4
where Masv=06
GVHD: Trần Xuân Trờng

- 22 -


Đề tài thực tập tin cơ sở

Câu III:
I.Tỡm hiu v sử dung Outlook Express
1. Giới thiệu chung
Outlook Epress là chương trìng tích hợp sẵn trong Windows dùng để gửi và
nhận Email. Outlook Express thực hiện trao đổi thư nhanh, hiệu quả, đặc biệt
cho phép duyệt, đọc thư offline. Toàn bộ thư gửi đến trước khi ra khỏi mạng sẽ
được lưu trữ trong hộp thư do vậy ta có thể xem bất cứ lúc nào
Outlook Express còn cho phép người dùng gửi kèm những file tài liệu đính kèm
với bức thư
2. Thiết lâp tài khoản
Các bước thiết lập tài khoản để sử dụng Outlook Express
Bươc1. Mở Outlook Express
Vào menu “Start” chọn “program” chọn “Outlook Express”
Bước 2. Cửa sổ Outlook Express xuất hin. Ti õy chn tools sau ú chn
Account

GVHD: Trần Xuân Trêng

- 23 -



Đề tài thực tập tin cơ sở
Hinh 1:Ca s Outlook Express
Bươc 3. Xuất hiện cửa sổ “Internet Account” nhấn “Add” chọn “Mail…”

Hình 2: Tạo địa chỉ mới
Bước 4. Trên cửa sổ Internet Connection Wizard
Điền tên hiển thị vào mục “Display name” là tên được sử dụng để hiển thị như
tên người gửi trong các thư đi. Ví dụ như “Sisomphon” sau ú nhn Next

GVHD: Trần Xuân Trờng

- 24 -


Đề tài thực tập tin cơ sở

Hỡnh 3: Mn hỡnh điền tên hiển thị
Bước 5. Tại cửa sổ tiếp theo, gõ địa chỉ thư điện tử vào mục “E-mail Address”
sau đó nhấn “Next”
Địa chỉ thư điện tử phải đầy đủ. Vớ d:

GVHD: Trần Xuân Trờng

- 25 -


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×