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

xây dựng Website thi chuẩn đầu ra toeic

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 (1.56 MB, 51 trang )

LỜI CAM ĐOAN

Em xin cam đoan toàn bộ nội dung của đồ án do em tự học tập, nghiên cứu
trên Internet, sách báo, các tài liệu trong và ngoài nước có liên quan. Không sao
chép hay sử dụng bài làm của bất kỳ ai khác, mọi tài liệu đều được trích dẫn cụ thể.
Em xin chịu hoàn toàn trách nhiệm về lời cam đoan của mình trước Quý
Thầy Cô, Khoa và Nhà trường.
Hà Nội, tháng 9 năm 2016
Người cam đoan

Nguyễn Đăng Tấn


LỜI CẢM ƠN
Qua một thời gian nghiên cứu và tiến hành thực hiện đến nay, đề tài “xây
dựng Website thi chuẩn đầu ra toeic” đã hoàn thành. Em xin chân thành cảm các
thầy cô đã trang bị kiến thức quý báu cho chúng em trong suốt quá trình học. Đặc
biệt là các thầy các cô trong khoa Công nghệ thông tin đã tận tình giảng dạy, chỉ
bảo, trang bị cho chúng em những kiến thức cần thiết nhất trong suốt quá trình học
tập, đã tạo mọi điều kiện thuận lợi giúp chúng em thực hiện đồ án này.
Em cũng xin chân thành cảm ơn cô Trịnh Thị Lý đã tận tình giảng dạy và
hướng dẫn chúng em hoàn thành tốt đề tài này.
Trong quá trình thực hiện đề tài, em đã cố gắng rất nhiều nhưng vẫn không
tránh khỏi những thiếu xót cũng như những hạn chế nhất định. Em mong nhận được
sự đóng góp ý kiến, chỉ bảo tận tình của các thầy cô và các bạn để đề tài của em
hoàn thiện hơn và thiết thực hơn.
Em xin chân thành cảm ơn!


MỤC LỤC
LỜI CẢM ƠN


LỜI MỞ ĐẦU
MỤC LỤC.................................................................................................................................................3
DANH MỤC BẢNG..................................................................................................................................6
LỜI MỞ ĐẦU...........................................................................................................................................1
CHƯƠNG 1: TÔNG QUAN VÊ NGÔN NGƯ LÂP TRINH PHP...................................................................4
CHƯƠNG 2: PHÂN TICH THIÊT KÊ HÊ THÔNG.....................................................................................23


DANH MỤC HÌNH


MỤC LỤC.................................................................................................................................................3
DANH MỤC BẢNG..................................................................................................................................6
LỜI MỞ ĐẦU...........................................................................................................................................1
CHƯƠNG 1: TÔNG QUAN VÊ NGÔN NGƯ LÂP TRINH PHP...................................................................4
CHƯƠNG 2: PHÂN TICH THIÊT KÊ HÊ THÔNG.....................................................................................23


DANH MỤC BẢNG
MỤC LỤC.................................................................................................................................................3
DANH MỤC BẢNG..................................................................................................................................6
LỜI MỞ ĐẦU...........................................................................................................................................1
CHƯƠNG 1: TÔNG QUAN VÊ NGÔN NGƯ LÂP TRINH PHP...................................................................4
CHƯƠNG 2: PHÂN TICH THIÊT KÊ HÊ THÔNG.....................................................................................23


1

LỜI MỞ ĐẦU
Lý do chọn đề tài

Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay, Internet ngày
càng giữ vai trò quan trọng trong các lĩnh vực khoa học kĩ thuật và đời sống. Dĩ
nhiên các bạn đã được nghe nói nhiều về Internet, nói một cách đơn giản, Internet là
một tập hợp quần áo nối kết với nhau, là một mạng quần áo toàn cầu mà bất kì ai
cũng có thể kết nối bằng máy PC của họ. Với mạng Internet, tin học thật sự tạo nên
một cuộc cách mạng trao đổi thông tin trong mọi lĩnh vực văn hóa, xã hội, chính trị,
kinh tế...
Trong thời đại ngày nay, thời đại mà “người người làm Web, nhà nhà làm
Web” thì việc có một chóng và hiệu quả.
Với công nghệ Word Wide Web, hay còn gọi là Web sẽ giúp bạn đưa những
thông tin mong muốn của mình lên mạng Internet cho mọi người cùng xem một
cách dễ dàng với các công cụ và những ngôn ngữ lập trình Website để quảng bá
công ty hay một Website cá nhân không còn là điều gì xa xỉ nữa. Thông qua
Website người dùng có thể lựa chọn những gì mà mình cần một cách nhanh khác
nhau. Sự ra đời của các ngôn ngữ lập trình cho phép chúng ta xây dựng các trang
Web đáp ứng được các yêu cầu của người sử dụng.
Với lí do đó, được sự hướng dẫn và giúp đỡ của Cô Trịnh Thị Lý em đã
chọn đề tài “Xây dựng Website Thi Chuẩn đầu ra toeic” làm đề tài cho đồ án của
mình.
Trong quá trình thực hiện đồ án này em đã nhận được sự giúp đỡ chỉ bảo tận
tình của các thầy, cô giáo, Em xin chân thành cảm ơn cô Trịnh Thị Lýđã hưỡng dẫn
trong quá trình làm đồ án.
Tuy nhiên, do thời gian hạn hẹp, mặc dù đã nỗ lực hết sức mình nhưng chắc
rằng đồ án khó tránh khỏi thiếu sót. Em rất mong nhận được sự thông cảm, những
lời góp ý và chỉ bảo tận tình của quý Thầy Cô và các bạn.


2

Đặt vấn đề

Trong thời đại Công nghệ thông tin hiện nay, sự trao đổi thông tin trở thành
nhu cầu thiết yếu không thể thiếu đối với mỗi quốc gia nói riêng và toàn thế giới nói
chung. CNTT là một trong những mũi nhọn được ưu tiên hàng đầu với các nước
trong khu vực. Sự phát triển Công nghệ thông tin luôn gắn chặt với sự phát triển
kinh tế cũng như sự phát triển của các ứng dụng khoa học kỹ thuật. Ngày nay phát
triển Công nghệ thông tin là xây dựng cơ sở hạ tầng làm nền tảng vững chắc để xây
dựng và phát triển một nền kinh tế vững mạnh. Ứng dụng của CNTT rất rộng lớn,
trong nhiều lĩnh vực như : truyền thông, điều khiển tự động, quản lý các hoạt động
của con người và hoạt động xã hội CNTT đã thâm nhập vào mọi lĩnh vực trong xã
hội với mọi phương thức hoạt động hoàn toàn mới mẻ, sáng tạo mà không mất đi
tính chính xác. Đặc biệt nó đã đánh dấu một bước ngoặt trong việc áp dụng tin học
vào các hoạt động quản lý. Ở nước ta hiện nay ứng dụng tin học trong quản lý
chiếm phần lớn trong sản phẩm phần mềm. Hiện nay, một số phần mềm về quản lý
như: quản lý vật tư, quản lý thư viện, quản lý tài chính, quản lý nhân sự, quản lý
doanh nghiệp đang được sử dụng rộng rãi và rất có hiệu quả. Tuy nhiên các phần
mềm hỗ trợ cho công tác giáo dục, học tập vẫn còn chưa nhiều nhất là ở trong nước.
Một trong những phần mềm trợ giúp cho công tác học tập và thi cử đang được quan
tâm hiện nay đó là phần mềm “trắc nghiệm”.
Mục tiêu của đề tài
Để xây dựng một Website trắc nghiệm, đề tài cần phải đạt được các mục tiêu
sau:
- Cập nhật một hệ thống ngân hang các câu hỏi, các tùy chọn, các đáp án
- Phương thức làm đề thi phải khoa học
- Các bài thi có thời gian xác định
- Đưa ra kết quả thi cho thí sinh ngay sau kết thúc bài thi


3

Phạm vi nghiên cứu

- Hệ thống phải được xây dựng trên cơ sở trắc nghiệm truyền thống
- Khảo sát các hệ thống đã có và tìm lỗi đi có hiệu quả cho hệ thống mới
- Xây dựng hệ thống một cách nhanh gọn, dễ hiểu và dễ sử dụng.
- Triển khai đại trà
- Có tùy biến tương thích với sự thay đổi của công nghệ
Nội dung thực hiện
- Tìm hiểu và phân tích hệ thống
- Lập trình hệ thống
- Thử nghiệm và triển khai
Phương pháp tiếp cận
- Dựa vào thực tiễn trắc nghiệm ở một số trường, trung tâm, cũng như các
phần mềm trắc nghiệm hiện có mà đồ án tập trung vào một số vấn đề sau:
•Tìm hiểu phương thức thi trắc nghiệm Tiếng Anh Toeic, cho điểm và giới
hạn thời gian cho từng phần thi trong bài thi
•Mô hình hóa hoạt động của hệ thống máy tính dựa vào chức năng chương trình.
•Xây dựng biểu đồ luồng dữ liệu, thiết kế các tệp cơ sở dữ liệu cơ bản và thể
hiện mối quan hệ giữa chúng.
•Cài đặt chương trình dựa vào ngôn ngữ : PHP và công cụ như Dreamwave,
MySQL, PHPMyAdmin, XAMPP.
Bảo Mật
•Nâng cao khả năng bảo mật của ứng dụng bằng việc tăng cường tính bảo
mật và khả năng đăng nhập của người sử dụng. Ngoài sự bảo mật của ngôn ngữPHP
và làm trên chương trình tạo máy chủ xampp, website còn có chức năng phân quyền
cho người sử dụng.
•Khi khởi động website, muốn sử dụng thì phải đăng nhập bằng Username
(tên đăng nhập) và Password (mật khẩu).


4


•Nhân viên quản trị có khả năng cập nhật, thêm mới các câu hỏi và bài
giảng…được phân theo thư mục và thống kê, xem các các bài viết và bài thi online.
CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH PHP
1.1. Giới thiệu ngôn ngữ lập trình PHP
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập
trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng
viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với
web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng
dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây
dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh
chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf sau đó được phát triển bởi
nhiều người trải qua nhiều phiên bản. Phiên bản hiện tại là PHP 5.4 đã được công
bố 21/02/2013

Hình 1.1: Hình ảnh về ngôn ngữ lập trình PHP
Ưu điểm.
- PHP là mã nguồn mở


5

- Hoàn toàn miễn phí
- Dễ học và dễ viết
- Mã nguồn không phải sửa lại nhiều khi chạy cho các hệ điều hành khác nhau
- Làm việc tốt với nhiều hệ quản trị cơ sở dữ liệu
1.2. Các thành phần cần cài đặt
Để chạy một website với mã nguồn PHP & hệ quản trị cơ sở dữ liệu MySQL
làm việc Offline trên máy tính cá nhân chúng ta cần phải cài đặt tối thiểu các góicài
đặtsau:

• Web Server: Hỗ trợ giao thức HTTP, dùng để truy cập dữ liệu như bạn truy
cập vào website. Chúng ta dùng Server Apache
• Database Server: Là Server quản lý quy xuất cơ sở dữ liệu
• PHP: Hỗ trợ ngôn ngữ lập trình PHP
1.3. Chương trình php đầu tiên
1.3.1. Tạo cấu trúc thư mục để làm việc với PHP
• Cấu trúc để chứa các File làm việc với PHP được đặt trong một Folder
(Folder này có tên do chúng ta đặt) VD:hocphp. Các File làm việc với PHP được đặt
trong Folder này theo đường dẫn sau: C:\xampp\ htdocs\hocphp\
• Các File làm việc với PHP sẽ có phần mở rộng .php
1.3.2. Khai báo một vùng làm việc đối với PHP
Một File làm việc với PHP sẽ được đặt tên như sau: file_name.php. Một File
PHP cơ bản có nội dung bên trong để trống hoặc tuân theo cấu trúc của một văn bản
HTML cơ bản đều được. Để khai báo một vùng làm việc trong PHP, chúng ta sẽ sử
dụng cách thức chuẩn sau đây
<?php Vùng làm việc với PHP ?>
Chú ý: Để chú thích 1 đoạn dữ liệu nào đó trong PHP ta sử dụng dấu "//" cho
từng dòng. Hoặc dùng cặp thẻ "/* …*/" cho từng cụm mã lệnh.
1.3.3. Xuất (Hiển thị) giá trị ra trình duyệt
Để xuất dữ liệu ra trình duyệt chúng ta có các cú pháp sau:
• Sử dụng lệnh (Hàm) echo: Cú pháp: echo “Thông tin cần hiển thị”;


6

• Sử dụng lệnh (Hàm) print: Cú pháp: print “Thông tin cần hiển thị”;
Chú ý:
• Trong PHP để kết thúc 1 dòng lệnh chúng ta sử dụng dấu ";"
• Thông tin bên trong dấu “” có thể là một chuỗi, một biến hoặc các thẻ
HTML (Các khái niệm về chuỗi, biến trong PHP sẽ được đề cập trong các bài tiếp

theo)
• Nếu muốn sử dụng nhiều cặp dấu “” lồng nhau thì các cặp dấu “” bên trong
phải được khóa bởi các lý tự \.
VD: echo “

Hello Word

”;
1.3.4. Truy cập trang PHP thông qua trình duyệt
Để thực thi trang PHP chúng ta vừa tạo thì trướ tiên các bạn lưu File PHP
vừa tạo với tên bai_1.php (index chỉ là tên đặt, còn phần mở rộng bắt buộc là .php).
Sau đó mở bất kỳ một trình duyệt web nào lên và đánh vào địa chỉ truy cập như sau:
http://localhost/hocphp/bai_1.php
• http://localhost/ là địa chỉ của localhost tương tự như
• hocphp/bai_1.php lần lượt là các thư mục và File được đặt trong localhost
Giới thiệu về hệ quản trị cơ sở dữ liệu SQL Server 2008
Hệ quản trị cơ sở dữ liệu là website hay hệ thống được thiết kế để quản trị
một cơ sở dữ liệu.Cụ thể, các chương trình thuộc loại này hỗ trợ khả năng lưu trữ,
sửa chữa, xóa và tìm kiếm thông tin trong một cơ sở dữ liệu (CSDL). Có rất nhiều
loại hệ quản trị CSDL khác nhau: từ website nhỏ chạy trên internet cá nhân cho đến
những hệ quản trị phức tạp chạy trên một hoặc nhiều siêu internet, tùy từng yêu cầu
cụ thể, ta sẽ sử dụng các công cụ khác nhau. Dưới đây là một số hệ quản trị cơ sở
dữ liệu thông dụng hiện nay.
-

MS Access

-

SQL Server (của hãng Microsoft)

-

Oracle (của hãng Oracle)



7

Sau khi nghiên cứu và đánh giá thực trạng của công ty em quyết định chọn
hệ quản trị cơ sở dữ liệu SQL Server 2008 (của hãng Microsoft) để thực hiện xây
dựng cơ sở dữ liệu cho hệ thống của mình.
SQL (Structured Query Language - ngôn ngữ truy vấn mang tính cấu trúc) là
một loại ngôn ngữ internet phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản trị cơ
sở dữ liệu quan hệ. Ngôn ngữ này phát triển vượt xa so với mục đích ban đầu là để
phục vụ các hệ quản trị cơ sở dữ liệu đối tượng-quan hệ. Nó là một tiêu chuẩn
ANSI/ISO.Đồng thời SQL Server còn là hệ thống quản trị cơ sở dữ liệu quan hệ
(Relational DataBase Management System- RDBMS) sử dụng các lệnh chuyển
Transaction-SQL để trao đổi dữ liệu giữa Client Computer và Server Computer.
SQL Server có một số đặc tính sau:
-

Cho phép quản trị một hệ CSDL lớn (lên đến vài tega byte), có tốc độ xử

lý dữ liệu nhanh, đáp ứng yêu cầu về thời gian;
-

Cho phép nhiều người cùng khai thác trong một thời điểm đối với một

CSDL và toàn bộ quản trị CSDL (lên đến vài chục ngàn user);
-

Có hệ thống phân quyền bảo mật tương thích với hệ thống bảo mật của

công nghệ NT (Network Technology), tích hợp với hệ thống bảo mật của Windows

NT hoặc sử dụng hệ thống bảo vệ độc lập của SQL Server;
-

Hỗ trợ trong việc triển khai CSDL phân tán và phát triển ứng dụng trên

Internet;
-

Cho phép lập trình kết nối với nhiều ngôn ngữ lập trình khác dùng xây

dựng các ứng dụng đặc thù (Visual Basic, C, C++, ASP, ASP.NET, XML ...);
-

Sử dụng câu lệnh truy vấn dữ liệu Transaction-SQL (Access là SQL,

Oracle là PL/SQL).
Hơn nữa, công cụ SQL server cũng có tính tương thích và hỗ trợ cao với
công cụ lập trình mà em sử dụng là C#.
Với công cụ SQL Server, ta dùng website SQL Server 2008 của Microsoft
với các tính năng khá đầy đủ, tương thích với hệ điều hành tốt.
1.3.5. Một số bước xây dựng cơ sở dữ liệu


8

Các câu lệnh thao tác dữ liệu trong SQL không những chỉ sử dụng để truy
vấn dữ liệu mà còn để thay đổi và cập nhật dữ liệu trong cơ sở dữ liệu.
 Thêm dữ liệu: Dữ liệu trong các bảng được thể hiện dưới dạng các dòng
(bản ghi). Để bổ sung thêm các dòng dữ liệu vào một bảng, ta sử dụng câu lệnh
INSERT. Hầu hết các hệ quản trị CSDL dựa trên SQL cung cấp các cách dưới đây

để thực hiện thao tác thêm dữ liệu cho bảng: Thêm từng dòng dữ liệu với mỗi câu
lệnh INSERT. Đây là các sử dụng thường gặp nhất trong giao tác SQL. Thêm nhiều
dòng dữ liệu bằng cách truy xuất dữ liệu từ các bảng dữ liệu khác.
- Thêm từng dòng dữ liệu: Để bổ sung một dòng dữ liệu mới vào bảng, ta sử
dụng câu lệnh INSERT với cú pháp như sau:
INSERT INTO tên_bảng [(danh_sách_cột)] VALUES(danh_sách_trị)
Trong câu lệnh INSERT, danh sách cột ngay sau tên bảng không cần thiết
phải chỉ định nếu giá trị các trường của bản ghi mới được chỉ định đầy đủ trong
danh sách trị. Trong trường hợp này, thứ tự các giá trị trong danh sách trị phải bằng
với số lượng các trường của bảng cần bổ sung dữ liệu cũng như phải tuân theo đúng
thứ tự của các trường như khi bảng được định nghĩa. Trong trường hợp chỉ nhập giá
trị cho một số cột trong bảng, ta phải chỉ định danh sách các cột cần nhập dữ liệu
ngay sau tên bảng.Khi đó, các cột không được nhập dữ liệu sẽ nhận giá trị mặc định
(nếu có) hoặc nhận giá trị NULL (nếu cột cho phép chấp nhận giá trị NULL).Nếu
một cột không có giá trị mặc định và không chấp nhận giá trị NULL mà không đuợc
nhập dữ liệu, câu lệnh sẽ bị lỗi.
- Thêm một tập các dòng dữ liệu vào bảng: Một cách sử dụng khác của câu
lệnh INSERT được sử dụng để bổ sung nhiều dòng dữ liệu vào một bảng, các dòng
DL này được lấy từ một bảng khác thông qua câu lệnh SELECT cách này, các giá
trị dữ liệu được bổ sung vào bảng không được chỉ định tường minh mà thay vào đó
là một câu lệnh SELECT truy vấn dữ liệu từ bảng khác.
Cú pháp câu lệnh INSERT có dạng như sau:
INSERT INTO tên_bảng [(danh_sách_cột)] câu_lệnh_SELECT
 Cập nhật dữ liệu


9

Câu lệnh UPDATE trong SQL được sử dụngđể cập nhật dữ liệu trong các
bảng. Câu lệnh này có cú pháp như sau:

UPDATE tên_bảng
SET tên_cột = biểu_thức
[, ..., tên_cột_k = biểu_thức_k]
[FROM danh_sách_bảng]
[WHERE điều_kiện]
Sau UPDATE là tên của bảng cần cập nhật dữ liệu. Một câu lệnh UPDATE
có thể cập nhật dữ liệu cho nhiều cột bằng cách chỉ định các danh sách tên cột và
biểu thức tương ứng sau từ khoá SET. Mệnh đề WHERE trong câu lệnh UPDATE
được sử dụng để chỉ định các dòng dữ liệu chịu tác động của câu lệnh (nếu không
chỉ định, phạm vi tác động của câu lệnh được hiểu là toàn bộ các dòng trong bảng).
 Xóa dữ liệu
Để xoá dữ liệu trong một bảng, ta sử dụng câu lệnh DELETE. Cú pháp của
câu lệnh này như sau:
DELETE FROM tên_bảng
[FROM danh_sách_bảng]
[WHERE điều_kiện]
Trong câu lệnh này, tên của bảng cần xoá dữ liệu được chỉ định sau DELETE
FROM. Mệnh đề WHERE trong câu lệnh được sử dụng để chỉ định điều kiện đối
với các dòng dữ liệu cần xoá.Nếu câu lệnh DELETE không có mệnh đề WHERE thì
toàn bộ các dòng dữ liệu trong bảng đều bị xoá.
- Xoá dữ liệu khi điều kiện liên quan đến nhiều bảng: Nếu điều kiện trong
câu lệnh DELETE liên quan đến các bảng không phải là bảng cần xóa dữ liệu, ta
phải sử dụng thêm mệnh đề FROM và sau đó là danh sách tên các bảng đó. Trong
trường hợp này, trong mệnh đề WHERE ta chỉ định thêm điều kiện nối
- Sử dụng truy vấn con trong câu lệnh DELETE
1.3.5 Các thành phần
Mỗi CSDL có các đối tượng sau:


10


Table: là đối tượng chính của cơ sở dữ liệu lưu trữ dữ liệu cần quản lý.
Mỗi table có một hay nhiều Field. Mỗi Field ứng với một loại dữ liệu cần lưu
trữ.
Table còn có các thành phần liên quan như:
Constraint (Ràng buộc): là các chỉ định rành buộc dữ liệu trong bảng hoặc
các bảng khác nhau theo một quy tắc nào đó.
Triggers (Bẫy lỗi): thường chứa các mã lệnh kiểm tra dữ liệu, có tính năng tự
động thực hiện khi có hành động nào đó xảy ra đối với dữ liệu trong Table như
Insert, Update, Delete.
Indexs (Chỉ mục): Hỗ trợ việc sắp xếp và tìm kiếm nhanh các thông tin trên
Table.
Diagram(Sơ đồ quan hệ): Thể hiện mối quan hệ dữ liệu giữa các Table với
nhau.
Views (Khung nhìn hay table ảo):Là đối tượng dùng hiển thị dữ liệu được rút
trích, tính toán từ các Table theo nhu cầu của người dùng.
Stored Procedure (Thủ tục nội): Chứa các lệnh T-SQL dùng thực hiện một
số tác vụ nào đó. Stored Procedure có thể nhận và truyền tham số, được biên
dịch trước, do đó thời gian thực hiện nhanh khi được gọi. Có nhiều Stored
Procedure hệ thống được định nghĩa với tiền tố “sp_” có nhiệm vụ thu nhập
thông tin từ các bảng hệ thống và rất có ích cho việc quản trị cơ sở dữ liệu.
Users: Chứa danh sách User sử dụng cơ sở dữ liệu. Người quản trị hệ thống
cao nhất có User Name là bdo, tên đăng nhập (Login Name) hệ thống mặc định là
sa. Tài khoản sa luôn tồn tại và không thể bỏ đi.
Roles: Các quy định vai trò và chức năng của User trong hệ thống SQL
Server.
Rules: Các qui tắc ràng buộc dữ liệu được lưu trữ trên Table.
Defaults: Các khai báo giá trị mặc định.
User Defined Data Table: Kiểu dữ liệu do người dùng tự định nghĩa.
1.3.6. Các hàm thông dụng trong SQL Server



11

Trong SQL server có 2 loại hàm: một loại là được xây dựng sẵn trong SQL
Server (built-in) và một loại do người dùng tự định nghĩa (user-defined).
Các hàm Built-In được chia làm 3 nhóm:
Rowset Functions : Loại này thường trả về một object và được đối xử như
một table. Ví Dụ : Thực hiện các lệnh UPDATE, INSERT, DELETE thông qua truy
vấn:
“UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'”
“INSERT INTO Persons
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')”
“DELETE FROM Person WHERE LastName = 'Rasmussen'”
Aggregate Functions : Loại này làm việc trên một số giá trị và trả về một
giá trị đơn hay là các giá trị tổng. Ví dụ:các hàm tính toán:
AVG(<column>)
- Hàm AVG trả về giá trị trung bình tính theo cột được chỉ định của các dòng
được chọn. Các giá trị NULL sẽ không được xét đến khi tính giá trị trung bình.
- Ví dụ: Tính số tuổi trung bình của những người có tuổi trên 20
SELECT AVG(Age) FROM Persons WHERE Age > 20
COUNT() :Trả về số lượng các mục trong một nhóm
MAX(<column>)
- Hàm MAX trả về giá trị lớn nhất trong cột. Các giá trị NULL sẽ không
được xét đến.
- Ví dụ: SELECT MAX(Age) FROM Persons
- Kết quả trả về: 45
MIN(<column>)
- Hàm MAX trả về giá trị nhỏ nhất trong cột. Các giá trị NULL sẽ không

được xét đến.
- Ví dụ: SELECT MIN(Age) FROM Persons


12

- Kết quả trả về: 19
SUM(<column>)
- Hàm SUM trả về tổng giá trị của cột. Các giá trị NULL sẽ không được xét
đến.
- Ví dụ:Tìm tổng số tuổi của tất cả những người có trong bảng:
SELECT SUM(Age) FROM Persons
- Kết quả trả về: 98
- Ví dụ:Tìm tổng số tuổi của tất cả những người có tuổi lớn hơn 20:
SELECT SUM(Age) FROM Persons WHERE Age > 20
- Kết quả trả về: 79
Scalar Functions : Loại này làm việc trên một giá trị đơn và trả về một giá
trị đơn. Trong loại này lại chia làm nhiều loại nhỏ như các hàm về toán học, về thời
gian, xử lý kiểu dữ liệu String,…Ví dụ:
MONTH('2002-09-30'): Trả về tháng 9
DAYOFMONTH(date): Trả về số ngày trong tháng.
Ascii(str): Trả về giá trị ASCII của ký tự đầu tiên trong chuỗi str.
Char(int): Chuyển đổi một giá trị Ascii sang ký tự.
LEFT(str,n): Trả về n ký tự, bắt đầu từ vị trí đầu tiên của chuỗi str.
LEN(str): Trả về số ký tự của, trừ khoảng trắng cuỗi chuỗi str.
Các hàm User-Defined (được tạo ra bởi câu lệnh CREATE FUNCTION và
phần body thường được gói trong cặp lệnh BEGIN...END) cũng được chia làm các
nhóm như sau:
Scalar Functions: Loại này cũng trả về một giá trị đơn bằng câu lệnh
RETURNS. Ví dụ : chuyển số hệ thập phân sang nhị phân:

CREATE FUNCTION [dbo].[udf_bin_me] (@decNumber int)
RETURNS varchar(200)
as
BEGIN
DECLARE @BinNumber VARCHAR(200)


13

SET @BinNumber = '' ''
WHILE @decNumber <> 0
BEGIN
SET @BinNumber = SUBSTRING('0123456789', (@decNumber % 2) + 1,1) +
@BinNumber
SET @decNumber = @decNumber / 2
END
RETURN @BinNumber
END
Table Functions : Loại này trả về một table
1.3.7. Các kiểu dữ liệu trong SQL Server
1.4. Tổng quan về hệ quản trị cơ sở dữ liệu MySQL
• Tốc

độ: MySQL rất nhanh. Những nhà phát triển cho rằng MySQL là cơ sở

dữ liệu nhanh nhất mà bạn có thể có.
• Dễ

sử dụng: MySQL tuy có tính năng cao nhưng thực sự là một hệ thống cơ


sở dữ liệu rất đơn giản và ít phức tạp khi cài đặt và quản trị hơn các hệ thống lớn .
• Giá

thành: MySQL là miễn phí cho hầu hết các việc sử dụng trong một tổ

• Hỗ

trợ ngôn ngữ truy vấn: MySQL hiểu SQL, là ngôn ngữ của sự chọn lựa

chức.
cho tất cả các hệ thống cơ sở dữ liệu hiện đại. Bạn cũng có thể truy cập MySQL
bằng cách sử dụng các ứng dụng mà hỗ trợ ODBC (Open Database Connectivity
-một giao thức giao tiếp cơ sở dữ liệu được phát triển bởi Microsoft).
• Năng

lực: Nhiều client có thể truy cập đến server trong cùng một thời gian.

Các client có thể sử dụng nhiều cơ sở dữ liệu một cách đồng thời. Bạn có thể truy
cập MySQL tương tác với sử dụng một vài giao diện để bạn có thể đưa vào các truy
vấn và xem các kết quả: các dòng yêu cầu của khách hàng, các trình duyệt Web…
• Kết

nối và bảo mật: MySQL được nối mạng một cách đầy đủ, các cơ sở dữ

liệu có thể được truy cập từ bất kỳ nơi nào trên Internet do đó bạn có thể chia sẽ dữ


14

liệu của bạn với bất kỳ ai, bất kỳ nơi nào. Nhưng MySQL kiểm soát quyền truy cập

cho nên người mà không nên nhìn thấy dữ liệu của bạn thì không thể nhìn được.
• Tính

linh động: MySQL chạy trên nhiều hệ thống UNIX cũng như không

phải UNIX chẳng hạn như Windows hay OS/2. MySQL chạy được các với mọi
phần cứng từ các máy PC ở nhà cho đến các máy server.
• Sự

phân phối rộng: MySQL rất dễ dàng đạt được, chỉ cần sử dụng trình

duyệt web của bạn. Nếu bạn không hiểu làm thế nào mà nó làm việc hay tò mò về
thuật toán, bạn có thể lấy mã nguồn và tìm tòi nó. Nếu bạn không thích một vài cái,
bạn có thể thay đổi nó.
• Sự

hỗ trợ: Bạn có thể tìm thấy các tài nguyên có sẵn mà MySQL hỗ trợ.

Cộng đồng MySQL rất có trách nhiệm. Họ trả lời các câu hỏi trên mailing list
thường chỉ trong vài phút. Khi lỗi được phát hiện, các nhà phát triển sẽ đưa ra cách
khắc phục trong vài ngày, thậm chí có khi trong vài giờ và cách khắc phục đó sẽ
ngay lập tức có sẵn trên Internet.
1.4.1. Tạo cơ sở dữ liệu và người dùng:
Cơ sở dữ liệu MySQL có thể hỗ trợ cho nhiều cơ sở dữ liệu khác.Thông
thường bạn sẽ có một cơ sở dữ liệu cho mỗi ứng dụng.
Tạo cơ sở dữ liệu
mysql> create database dbname;
dbname: chính là tên của cơ sở dữ liệu bạn muốn tạo.
Khi bạn thấy một phản hồi giống như sau: Query OK,1 row affected (0.06
sec). Điều này chứng tỏ bạn đã thành công trong việc tạo cơ sở dữ liệu, nếu không

có phản hồi thì bạn xem lại đã đánh ; ở cuối dòng chưa. Dấu ; bảo MySQL rằng bạn
đã hoàn thành và yêu cầu nó hãy thực hiện chính xác câu lệnh.
Các người dùng và các quyền: Một hệ thống MySQL có nhiều người dùng,
vì lí do bảo mật cho nên với mỗi người dùng của hệ thống cần phải có một account
và password. Điều này không có nghĩa là bạn phải bắt buộc phải tạo ra password
cho người dùng, nhưng điều nên làm là cung cấp các password cho tất cả những
người dùng mà bạn đã tạo ra.


15

Tạo bảng cơ sở dữ liệu: sử dụng lệnh CREATE TABLE: CREATE TABLE
tablename(columns)
Ví dụ, tạo một bảng customers như sau:
create table customers(customerid int unsigned not null auto_increment
primary key,name char(30) not null,address char(40) not null,city char(20) not null);
Xem dữ liệu với lệnh SHOW và DESCRIBE: Sau khi đăng nhập vào màn
hình MySQL, bạn có thể xem các bảng trong cơ sở dữ liệu bằng cách đánh vào như
sau: mysql> show tables;
Thì MySQL sẽ hiển thị tất cả các bảng trong cơ sở dữ liệu.
Bạn cũng có thể sử dụng show để xem danh sách các cơ sở dữ liệu bằng cách đánh
vào như sau: mysql>show databases;
Để xem thêm các chi tiết về một bảng cụ thể bạn sử dụng lệnh DESCRIBE:
mysql> describe tablename;
1.4.2. Làm việc với cơ sở dữ liệu MySQL
SQL (Structured Query Language): Đây là ngôn ngữ chuẩn nhất cho việc
truy cập hệ thống quản lý cơ sở dữ liệu quan hệ. SQL dùng để chứa và truy xuất dữ
liệu từ một cơ sở dữ liệu. Nó thường được dùng trong các hệ thống cơ sỡ dữ liệu
như MySQL, Oracle, Sybase, PostgreSQL và Microsoft SQL Server…
1.4.3. Các hàm PHP sử dụng để truy cập cơ sở dữ liệu MySQL

int mysql_affected_rows( [resource link_identifier]): trả về số lượng các
hàng bị tác động bởi các câu truy vấn cuối cùng INSERT, UPDATE hay DELETE
kết hợp với định danh liên kết (link_identifier). Nếu nhận dạng liên kết không cụ
thể thì liên kết cuối cùng được mở ra bởi mysql_connect( ). Chú ý khi bạn đang sử
dụng các giao dịch, bạn phải gọi mysql_affected_rows( ) sau truy vấn INSERT,
UPDATE hay DELETE.
int mysql_character_set_name ( [resource link_identifier]):trả về ký tự mặc
định gán tên cho kết nối hiện hành.
bool mysql_close ( [resource link_identifier]): trả về TRUE nếu thành công,
FALSE nếu thất bại. Hàm này đóng kết nối đến MySQL server mà kết hợp với nhận


16

dạng liên kết định rõ, nếu link_identifier không định rõ thì liên kết mở cuối cùng sẽ
được sử dụng. Việc sử dụng hàm này không phải lúc nào cũng cần thiết, như đối với
các liên kết mở không liên tục thì nó sẽ tự động đóng khi kết thúc sự thực thi của
script. Chú ý hàm này không đóng kết nối liên tục được tạo bởi hàm
mysql_pconnect( ).
resource mysql_connect ( [string server [, string username [, string password
[, bool new_link]]]]): trả về một định danh liên kết MySQL khi thành công, còn
không trả về giá trị FALSE. Hàm này thiết lập một kết nối đến MySQL server.
Những giá trị mặc định sau được dùng cho các tham số tùy chọn không khai báo:
server=’localhost:3306′, username=tên của người sử dụng là chủ của server và
password= bỏ trống. Nếu lời gọi lần thứ hai được tạo bởi mysql_connect( ) với cùng
các tham số mà không có liên kết mới nào được thiết lập,nhưng thay vào đó một
liên kết định danh của cổng đang được mở sẽ được trả về. Tham số new_link mô tả
hành vi này và làm cho hàm mysql_connect( ) luôn mở một liên kết mới, ngay cả
khi nếu hàm mysql_connect( ) bị gọi trước với cùng các tham số. Liên kết đến
server sẽ bị đóng ngay khi việc thực thi của script kết thúc,trừ khi nó bị đóng sớm

hơn bởi hàm gọi mysql_close( ).
bool mysql_create_db ( string database name [, resource link_identifier]): tạo
một cơ sở dữ liệu mới trên server kết hợp với liên kết định danh được chỉ định. Trả
về giá trị TRUE nếu thành công, ngược lại trả về FALSE.
string mysql_db_name ( resource result, int row [, mixed field]): lấy tham số
đầu tiên là con trỏ kết quả từ việc gọi hàm mysql_list_dbs( ). Tham số hàng là chỉ
mục đến kết quả gán. Nếu xảy ra lỗi, thì trả về FALSE.Sử dụng hàm
mysql_errono( ) và mysql_error( ) để xem bản chất lỗi.
resource mysql_db_query ( string database, string query [, resource
link_identifier]): chọn một cơ sở dữ liệu và thực thi một truy vấn trên nó. Nếu liên
kết định danh tùy chọn không được chỉ định hàm sẽ cố tìm ra một liên kết mở đến
MySQL server và nếu không có liên kết nào được tìm thấy thì nó sẽ tạo ra một liên


17

kết như nếu hàm mysql_connect( ) đã được gọi không có tham số nào. Hàm sẽ trả
về một kết quả MySQL dương, hay là FALSE nếu bị lỗi.
array mysql_fetch_array ( resource result [, int result_type]): trả về một
mảng tương đương với hàng tìm nạp, hay là FALSE nếu không có hàng nào.
array mysql_fetch_assoc ( resource result): trả về một mảng kết hợp tương
đương với hàng tìm nạp, hay là FALSE nếu không có hàng nào.
object mysql_fetch_field ( resource result [, int field_offset]): trả về một đối
tương chứa thông tin các trường. Nó thường được dùng để lấy thông tin về các
trường trong một kết quả truy vấn.
array mysql_fetch_lengths ( resource result): trả về một mảng tương đương
với chiều dài của mỗi trường trong hàng cuối cùng được tìm nạp bởi
mysql_fetch_row() hay trả về FALSE nếu lỗi.
object mysql_fetch_object ( resource result): trả về một đối tượng với các
thuộc tính tương đương với hàng tìm nạp hay FALSE nếu không có hàng nào.

array mysql_fetch_row ( resource result): trả về một mảng tương đương với
hàng tìm nạp, nếu không có hàng nào thì trả về FALSE.
string mysql_field_flags ( resource result, int field_offset): trả về trường các
cờ của trường được chỉ định.
int mysql_field_len ( resource result, int field_offset): trả về chiều dài của
trường được chỉ định.
string mysql_field_name ( resource result, int field_index): trả về tên của
trường chỉ mục được chỉ định.
int mysql_field_seek ( resource result, int field_offset): tìm kiếm offset của
trường được chỉ định.
string mysql_field_table ( resource result, int field_offset): trả về tên của
bảng mà trường được chỉ định ở trong đó.
string mysql_field_type ( resource result, int field_offset): trả về loại của
trường được chỉ định .


18

bool mysql_free_result ( resource result): giải phóng tất cả bộ nhớ kết hợp
với định danh kết quả result. Hàm này chỉ được gọi khi bạn quan tâm đến bao nhiêu
bộ nhớ đang được sử dụng cho các câu truy vấn mà trả về các tập hợp lớn các kết
quả. Tất cả kết quả bộ nhớ kết hợp sẽ tự động được giải phóng khi script kết thúc
thực hiện. Trả về TRUE nếu thành công, FALSE nếu thất bại.
string mysql_get_client_info ( void): trả về chuỗi biểu thị phiên bản thư viện
của client.
string mysql_get_host_info ( [resource link_identifier]): trả về chuỗi mô tả
loại kết nối được dùng cho kết nối link_indentifier,bao gồm cả tên của server host.
Nếu link_indentifier bị bỏ qua, thì kết nối được mở cuối cùng sẽ được sử dụng.
int mysql_insert_id ( [resource link_identifier]): trả về ID được tạo cho bởi
cột AUTO_INCREMENT bởi câu lệnh truy vấn INSERT trước đó sử dụng

link_identifier được cho. Nếu link_identifier không được chỉ định, liên kết mở cuối
cùng sẽ được thừa nhận.
resource mysql_list_dbs ( [resource link_identifier]): trả về con trỏ kết quả
chứa các cơ sở dữ liệu có sẵn từ daemon mysql hiện hành.
resource mysql_list_fields ( string database_name, string table_name [,
resource link_identifier]): truy xuất thông tin về tên các bảng cho trước. Các tham
số là tên các cơ sở dữ liệu hay tên các bảng.
resource mysql_list_tables ( string database [, resource link_identifier]): lấy
tên cơ sở dữ liệu và trả về con trỏ kết quả.
int mysql_num_fields ( resource result): trả về số lượng các trường trong tập
hợp kết quả.
int mysql_num_rows ( resource result): trả về số lượng các hàng trong tập
hợp kết quả. Hàm này chỉ đúng cho các câu lệnh SELECT.
resource mysql_pconnect ( [string server [, string username [, string
password]]]): thiết lập kết nối đến MySQL server.
resource mysql_query ( string query [, resource link_identifier [, int
result_mode]]): gởi một truy vấn đến cơ sở dữ liệu hiện hành đang hoạt động trên


19

server mà kết hợp với định danh liên kết được chỉ định. Nếu link_identifier không
được chỉ định, liên kết mở cuối cùng sẽ được thừa nhận. Nếu không có liên kết nào
được mở, hàm sẽ cố thiết lập một liên kết nếu mysql_connect( ) đã được gọi không
có tham số nào và dùng nó.
bool mysql_select_db ( string database_name [, resource link_identifier]):
gán cơ sở dữ liệu hiện hành hoạt động trên server mà kết hợp với định danh liên kết
chỉ định. Nếu không có định danh liên kết nào được chỉ định thí liên kết mở cuối
cùng được thừa nhận. Nếu không có liên kết nào được mở thì hàm sẽ cố thiết lập
mộ liên kết như khi hàm mysql_connect( ) đã được gọi không có tham số và sử

dụng nó
string mysql_tablename ( resource result, int i): trả về tên bảng của trường,
lấy con trỏ kết quả trả về bởi hàm mysql_list_table( ) cũng như chỉ mục integer.
1.5. Kiến trúc của một ứng dụng Web Database
Các phần cơ bản của ứng dụng Web Database là:
Client: trình duyệt web của người dùng, một java applet, một ứng dụng java,
thậm chí là một platform phụ thuộc vào chương trình của client.
Ứng dụng logic: mã hoá các thuật toán sử dụng trong các scripts CGI, các
modul đặc biệt của web server, thậm chí một ứng dụng phụ thuộc vào server.
Kết nối database: the database API, hay là các giao thức kết nối thông thường
như ODBC hay JDBC.
Database server: RDBMS, ODBMS…
Việc thực hiện các ứng dụng đó có thể được thực hiện bởi sử dụng mô hình
nhiều lớp, bởi một hay nhiều lớp có thể kết hợp với nhau. Cách thực hiện thông
thường nhất là hệ thống ba lớp.
•Lớp thứ 1: web client( ví dụ như trình duyệt web của người dùng).
•Lớp thứ 2: web server, các scripts của CGI, kết nối API đến database.
•Lớp thứ 3: database server (ví dụ MySQL server).
Một giao dịch chính của Web database bao gồm các giai đoạn sau:


×