Bài giảng Cơ sở dữ liệu (Phần II)

2.5. View

2.5.1 Khái niệm

Khung nhìn là một bảng tạm thời, có cấu trúc như một bảng, khung nhìn

không lưu trữ dữ liệu mà nó được tạo ra khi sử dụng, khung nhìn là đối tượng thuộc

CSDL.

Khung nhìn được tạo ra từ câu lệnh truy vấn dữ liệu (lệnh SELECT), truy vấn

từ một hoặc nhiều bảng dữ liệu.

Khung nhìn được sử dụng khai thác dữ liệu như một bảng dữ liệu, chia sẻ

nhiều người dùng, an toàn trong khai thác, không ảnh hưởng dữ liệu gốc.

Có thể thực hiện truy vấn dữ liệu trên cấu trúc của khung nhìn.

Như vậy, một khung nhìn trông giống như một bảng với một tên khung nhìn

và là một tập bao gồm các dòng và các cột. Điểm khác biệt giữa khung nhìn và bảng

là khung nhìn không được xem là một cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở dữ

liệu. Thực chất dữ liệu quan sát được trong khung nhìn được lấy từ các bảng thông

qua câu lệnh truy vấn dữ liệu.

Câu lệnh CREATE VIEW được sử dụng để tạo ra khung nhìn và có cú pháp

như sau:

CREATE VIEW tên_khung_nhìn[(danh_sách_tên_cột)] AS

câu_lệnh_SELECT88

Ví dụ:

create view thongtinkhachhang

as

select tenk, (year(getdate()) - year(ngaysinh)) as tuoi, dc

from khachhang

Thực hiện câu truy vấn trên khung nhìn vừa tạo ra:

select * from thongtinkhachhang

pdf 54 trang yennguyen 6120
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu (Phần II)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu (Phần II)

Bài giảng Cơ sở dữ liệu (Phần II)
 87
from DMHang i inner join CTHD od 
on i.MaH = od.MaH 
WHERE TenH = 'LAPTOP') 
Xoá toàn bộ dữ liệu trong bảng 
Câu lệnh DELETE không chỉ định điều kiện đối với các dòng dữ liệu cần xoá 
trong mệnh đề WHERE sẽ xoá toàn bộ dữ liệu trong bảng. Thay vì sử dụng câu lệnh 
DELETE trong trường hợp này, ta có thể sử dụng câu lệnh TRUNCATE có cú pháp 
như sau: 
TRUNCATE TABLE tên_bảng 
Ví dụ: 
truncate table tmp1 
2.5. View 
2.5.1 Khái niệm 
Khung nhìn là một bảng tạm thời, có cấu trúc như một bảng, khung nhìn 
không lưu trữ dữ liệu mà nó được tạo ra khi sử dụng, khung nhìn là đối tượng thuộc 
CSDL. 
Khung nhìn được tạo ra từ câu lệnh truy vấn dữ liệu (lệnh SELECT), truy vấn 
từ một hoặc nhiều bảng dữ liệu. 
Khung nhìn được sử dụng khai thác dữ liệu như một bảng dữ liệu, chia sẻ 
nhiều người dùng, an toàn trong khai thác, không ảnh hưởng dữ liệu gốc. 
Có thể thực hiện truy vấn dữ liệu trên cấu trúc của khung nhìn. 
Như vậy, một khung nhìn trông giống như một bảng với một tên khung nhìn 
và là một tập bao gồm các dòng và các cột. Điểm khác biệt giữa khung nhìn và bảng 
là khung nhìn không được xem là một cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở dữ 
liệu. Thực chất dữ liệu quan sát được trong khung nhìn được lấy từ các bảng thông 
qua câu lệnh truy vấn dữ liệu. 
Câu lệnh CREATE VIEW được sử dụng để tạo ra khung nhìn và có cú pháp 
như sau: 
CREATE VIEW tên_khung_nhìn[(danh_sách_tên_cột)] AS 
câu_lệnh_SELECT 
 88
Ví dụ: 
create view thongtinkhachhang 
as 
select tenk, (year(getdate()) - year(ngaysinh)) as tuoi, dc 
from khachhang 
Thực hiện câu truy vấn trên khung nhìn vừa tạo ra: 
select * from thongtinkhachhang 
Nếu trong câu lệnh CREATE VIEW, ta không chỉ định danh sách các tên cột 
cho khung nhìn, tên các cột trong khung nhìn sẽ chính là tiêu đề các cột 
trong kết quả của câu lệnh SELECT. Trong trường hợp tên các cột của khung 
nhìn đươc chỉ định, chúng phải có cùng số lượng với số lượng cột trong kết quả của 
câu truy vấn. 
Ví dụ: 
create view thongtinkhachhang (tenk, tuoi, dc) 
as 
select tenk, year(getdate()) - year(ngaysinh), dc 
from khachhang 
Lưu ý: 
Phải đặt tên cho các cột của khung nhìn trong các trường hợp sau đây: 
Trong kết quả của câu lệnh SELECT có ít nhất một cột được sinh ra bởi một 
biểu thức (tức là không phải là một tên cột trong bảng cơ sở) và cột đó không được 
đặt tiêu đề. 
 89
Tồn tại hai cột trong kết quả của câu lệnh SELECT có cùng tiêu đề cột. 
2.5.2. Thêm, cập nhật, xóa dữ liệu trong VIEW 
Đối với một số khung nhìn, ta có thể tiến hành thực hiện các thao tác cập nhập, 
thêm và xoá dữ liệu. Thực chất, những thao tác này sẽ được chuyển thành những 
thao tác trên các bảng cơ sở và có tác động đến những bảng cơ sở. 
Về mặt lý thuyết, để có thể thực hiện thao tác bổ sung, cập nhật và xoá, một 
khung nhìn trước tiên phải thoả mãn các điều kiện sau đây: 
Các thành phần xuất hiện trong danh sách chọn của câu lệnh SELECT phải 
là các cột trong các bảng cơ sở. Trong danh sách chọn không được chứa các biểu 
thức tính toán, các hàm gộp. 
Ngoài những điều kiện trên, các thao tác thay đổi đến dữ liệu thông qua khung 
nhìn còn phải đảm bảo thoả mãn các ràng buộc trên các bảng cơ sở, tức là vẫn đảm 
bảo tính toàn vẹn dữ liệu. 
Mặc dù thông qua khung nhìn có thể thực hiện được thao tác bổ sung và cập 
nhật dữ liệu cho bảng cơ sở nhưng chỉ hạn chế đối với những khung nhìn đơn giản. 
Đối với những khung nhìn phức tạp thì thường không thực hiện được; hay nói cách 
khác là dữ liệu trong khung nhìn là chỉ đọc. 
2.5.3. Thay đổi định nghĩa khung nhìn 
Câu lệnh ALTER VIEW dùng để định nghĩa lại khung nhìn có cấu trúc như 
sau: 
ALTER VIEW tên_khung_nhìn [(danh_sách_tên_cột)] AS 
Câu_lệnh_SELECT 
Ví dụ: Ví dụ dưới đây định nghĩa lại khung nhìn thongtinkhachhang 
alter view thongtinkhachhang 
as 
select tenk, (year(getdate()) - year(ngaysinh)) as tuoi,dc,gioitinh 
 from khachhang 
Lưu ý: lệnh CREATE VIEW không làm thay đổi các quyền đã được cấp phát 
cho người sử dụng trước đó. 
2.5.4. Xóa khung nhìn 
 90
Câu lệnh DROP VIEW dùng để xóa khung nhìn có cấu trúc như sau: 
DROP VIEW tên_khung_nhìn 
Ví dụ: 
drop view thongtinkhachhang 
Lưu ý: Nếu một khung nhìn bị xoá, toàn bộ những quyền đã cấp phát cho 
người sử dụng trên khung nhìn cũng đồng thời bị xoá. Do đó, nếu ta tạo lại khung 
nhìn thì phải tiến hành cấp phát lại quyền cho người sử dụng. 
2.6. Thủ tục lưu trữ (Stored procedure) 
Thủ tục lưu trữ là một đối tượng trong CSDL, bao gồm nhiều câu lệnh T-SQL 
được tập hợp lại với nhau thành một nhóm, và tất cả các lệnh này sẽ được thực thi 
khi thủ tục lưu trữ được thực thi. 
Với thủ tục lưu trữ, một phần nào đó khả năng của ngôn ngữ lập trình được 
đưa vào trong ngôn ngữ SQL. Thủ tục lưu trữ có thể có các thành phần sau: 
Các cấu trúc điều khiển (IF, WHILE, FOR) có thể được sử dụng trong thủ tục. 
Bên trong thủ tục lưu trữ có thể sử dụng các biến như trong ngôn ngữ lập trình 
nhằm lưu giữ các giá trị tính toán được, các giá trị được truy xuất được từ cơ sở dữ 
liệu. Một tập các câu lệnh SQL được kết hợp lại với nhau thành một khối lệnh bên 
trong một thủ tục. Một thủ tục có thể nhận các tham số truyền vào cũng như có thể 
trả về các giá trị thông qua các tham số (như trong các ngôn ngữ lập trình). 
Khi một thủ tục lưu trữ đã được định nghĩa, nó có thể được gọi thông qua tên 
thủ tục, nhận các tham số truyền vào, thực thi các câu lệnh SQL bên trong 
thủ tục và có thể trả về các giá trị sau khi thực hiện xong. 
Lợi ích của việc sử dụng thủ tục lưu trữ: 
SQL Server chỉ biên dịch các thủ tục lưu trữ một lần và sử dụng lại kết quả 
biên dịch này trong các lần tiếp theo trừ khi người dùng có những thiết lập khác. 
Việc sử dụng lại kết quả biên dịch không làm ảnh hưởng đến hiệu suất hệ thống khi 
thủ tục lưu trữ được gọi liên tục nhiều lần. 
Thủ tục lưu trữ được phân tích, tối ưu khi tạo ra nên việc thực thi chúng nhanh 
hơn nhiều so với việc phải thực hiện một tập rời rạc các câu lệnh SQL 
tương đương theo cách thông thường. 
Thủ tục lưu trữ cho phép chúng ta thực hiện cùng một yêu cầu bằng một câu 
lệnh đơn giản thay vì phải sử dụng nhiều dòng lệnh SQL. Điều này sẽ làm giảm 
 91
thiểu sự lưu thông trên mạng. 
Thay vì cấp phát quyền trực tiếp cho người sử dụng trên các câu lệnh SQL và 
trên các đối tượng cơ sở dữ liệu, ta có thể cấp phát quyền cho người sử dụng thông 
qua các thủ tục lưu trữ, nhờ đó tăng khả năng bảo mật đối với hệ thống. 
Các thủ tục lưu trữ trả về kết quả theo 4 cách: 
Sử dụng các tham số output 
Sử dụng các lệnh trả về giá trị, các lệnh này luôn trả về giá trị số nguyên. 
Tập các giá trị trả vể của mỗi câu lệnh SELECT có trong thủ tục lưu trữ hoặc 
của quá trình gọi một thủ tục lưu trữ khác trong một thủ tục lưu trữ. 
Một biến con trỏ toàn cục có thể tham chiếu từ bên ngoài thủ tục. 
2.6.1. Tạo thủ tục lưu trữ 
Thủ tục lưu trữ được tạo thông qua câ.u lệnh CREATE PROCEDURE. 
CREATE PROCEDURE tên_thủ_tục [(danh_sách_tham_số)] 
[WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] 
AS 
Các_câu_lệnh_của_thủ_tục 
Trong đó: 
WITH RECOMPILE: yêu cầu SQL Server biên dịch lại thủ tục lưu trữ mỗi khi 
được gọi. WITH ENCRYPTION: yêu cầu SQL Server mã hóa thủ tục lưu trữ. 
Các_câu_lệnh_của_thủ_tục: Các lệnh T-SQL. Các lệnh này có thể 
nằm trong cặp BEGINEND hoặc không. 
Ví dụ: Giả sử cần thực hiện các công việc theo thứ tự như sau: 
Nhập một đơn đặt hàng mới của khách hàng có mã khách hàng là 3 
Nhập các chi tiết đơn đặt hàng cho đơn đặt hàng trên. 
Để thực hiện các công việc trên chúng ta cần các câu lệnh như sau: 
Trước tiên nhập đơn đặt hàng cho khách hàng có mã khách hàng là 3 
insert into orders 
values(3, '7/22/2008') 
Tiếp theo thêm các chi tiết đơn đặt hàng cho hóa đơn này. Giả sử rằng đơn đặt 
 92
hàng có mã là 4 và khách hàng đặt một mặt hàng có mã là 1. 
insert into orderdetail 
values(4, 1, 10) 
Cách viết như trên có hạn chế là: trong quá trình làm việc sẽ có rất nhiều đơn 
đặt hàng mới, do đó người dùng sẽ phải viết đi viết lại những câu lệnh tương tự 
nhau cho các khách hàng khác nhau. Một cách giải quyết vấn đề này là dùng thủ 
tục lưu trữ và dùng tham số để nhận các thông tin thay đổi. 
create procedure sp_InsertOrderAndOrderDetail 
@customerid int, 
@orderdate datetime, 
@orderid int, 
@itemid int, 
@quantity decimal, 
as 
begin 
insert into orders 
values(@customerid, @orderdate) 
insert into orderdetail 
values(@orderid, @itemid, @quantity) 
end 
Thực hiện thủ tực lưu trữ này như sau: 
sp_InsertOrderAndOrderDetail ‘3’, ‘22/7/2008’, ‘4’, ‘1’, ‘10’) 
2.6.2. Lời gọi thủ tục 
Thủ tục lưu trữ được gọi theo cấu trúc 
Tên_thủ_tục_lưu _trữ [danh_sách_tham_số] 
Cần lưu ý là danh sách tham số truyền vào trong lời gọi phải theo đúng thứ tự 
khai báo các tham số trong thủ tục lưu trữ. 
 93
Nếu thủ tục được gọi từ một thủ tục khác, thực hiện bên trong một trigger hay 
phối hợp với câu lệnh SELECT, cấu trúc như sau; 
Exec Tên_thủ_tục_lưu _trữ [danh_sách_tham_số] 
2.6.3. Biến trong thủ tục lưu trữ 
Trong thủ tục lưu trũ có thể có các biến nhằm lưu các kết quả tính toán hay 
truy xuất từ CSDL. Các biến trong thủ tục được khai báo bằng từ khóa DECLARE 
theo cấu trúc như sau: 
DECLARE @tên_biến kiểu_dữ_liệu 
Ví dụ: 
create procedure sp_SelectCustomerWithMaxAge 
as 
begin 
declare @maxAge int 
select @maxAge = max(year(getdate())-year(BIRTHDAY)) 
from customers 
select CUSTOMERNAME, BIRTHDAY 
from customers 
where year(getdate())-year(BIRTHDAY)=@maxAge 
end 
2.6.4. Giá trị trả về trong thủ tục lưu trữ 
Trong các ví dụ trước, nếu đối số truyền cho thủ tục khi có lời gọi đến thủ 
tục là biến, những thay đổi giá trị của biền trong thủ tục sẽ không được giữ lại khi 
kết thúc quá trình thực hiện thủ tục. 
Ví dụ: Có thủ tục lưu trữ như sau 
create procedure sp_TestOutput 
@a int, 
@b int, 
@c int 
as 
 94
select @c = @a + @b 
Thực thi thủ tục: 
Declare @tong int 
set @tong = 0 
sp_TestOutput 100, 200, @tong 
select @tong 
Kết quả là 0. 
Sử dụng tham số OUTPUT 
Trong trường hợp cần phải giữ lại giá trị của đối số sau khi kết thúc thủ tục, ta 
phải khai báo tham số của thủ tục theo cú pháp như sau: 
@tên_tham_số kiểu_dữ_liệu OUTPUT 
Ví dụ trên được viết lại như sau: 
create procedure sp_TestOutput 
@a int, 
@b int, 
@c int output 
as 
select @c = @a + @b 
Thực thi thủ tục: 
Declare @tong int 
set @tong = 0 
sp_TestOutput 100, 100, @tong output 
select @tong 
Kết quả là 200. 
Sử dụng lệnh RETURN 
Tương nhự như việc sử dụng tham số OUTPUT, câu lệnh RETURN trả về giá 
trị cho đối 
 95
tượng thực thi stored procedure. 
Ví dụ: 
create procedure sp_TestReturn 
as 
begin 
declare @out int 
select @out = count(*) 
from customers 
return @out 
end 
Thực thi thủ tục lưu trữ 
declare @a int 
exec @a = sp_TestReturn 
select @a 
2.6.5. Tham số với giá trị mặc định 
Các tham số được khai báo trong thủ tục có thể nhận các giá trị mặc định. Giá 
trị mặc định sẽ được gán cho tham số trong trường hợp không truyền đối số cho 
tham số khi có lời gọi đến thủ tục. 
Tham số với giá trị mặc định được khai báo theo cú pháp như sau: 
@tên_tham_sốkiểu_dữ_liệu = giá_trị_mặc_định 
Ví dụ: 
create procedure sp_TestDefault 
@customerid int = 3 
as 
begin 
select * from customers 
where customerid = @customerid 
end 
 96
Thực thi thủ tục lưu trữ theo giá trị mặc định của tham số. 
sp_TestDefault 
2.6.6. Sửa đổi thủ tục 
Khi một thủ tục đã được tạo ra, ta có thể tiến hành định nghĩa lại thủ tục đó 
bằng câu lệnh 
ALTER PROCEDURE có cú pháp như sau: 
ALTER PROCEDURE tên_thủ_tục [(danh_sách_tham_số)] 
[WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] 
AS 
Các_câu_lệnh_của_thủ_tục 
Câu lệnh này sử dụng tương tự như câu lệnh CREATE PROCEDURE. Việc 
sửa đổi lại một thủ tục đã có không làm thay đổi đến các quyền đã cấp phát trên thủ 
tục cũng như không tác động đến các thủ tục khác hay trigger phụ thuộc vào thủ tục 
này. 
2.6.7. Xóa thủ tục 
Để xoá một thủ tục đã có, ta sử dụng câu lệnh DROP PROCEDURE 
với cú pháp như sau: 
DROP PROCEDURE tên_thủ_tục 
Khi xoá một thủ tục, tất cả các quyền đã cấp cho người sử dụng trên thủ tục đó 
cũng đồng thời bị xoá bỏ. Do đó, nếu tạo lại thủ tục, ta phải tiến hành cấp phát lại 
các quyền trên thủ tục đó. 
2.7. Hàm (Function) 
2.7.1. Khái niệm 
Hàm do người dùng định nghĩa được chia làm 3 loại: (1) scalar (hàm vô 
 97
hướng), (2) inline table-valued (hàm nội tuyến, giá trị trả về dạng bảng), (3) multi-
statement table-valued (hàm bao gồm nhiều câu lệnh SQL bên trong, trả về giá trị 
dạng bảng) 
Scalar UDF: được sử dụng để trả về một duy nhất một giá trị dựa trên một các 
tham số truyền vào. Ví dụ: ta có thể tạo ra một UDF vô hướng nhận Customerid là 
tham số và trả về CustomerName. 
Inline table-valued: trả về một bảng dựa trên một câu lệnh SQL duy nhất định 
nghĩa các dòng và các cột trả về. 
Multi-statement table-value: cũng trả về kết quả là một tập hợp nhưng có thể 
dựa trên nhiều câu lệnh SQL. 
2.7.2. Hàm vô hướng 
Scarlar UDF được tạo ra bằng câu lệnh CREATE FUNCTION có cấu trúc như 
sau: 
CREATE FUNCTION tên_hàm 
([danh_sách_tham_số]) RETURNS (kiểu_trả_về_của_hàm) 
AS BEGIN 
các_câu_lệnh_của_hàm 
END 
Ví dụ: 
Câu lệnh dưới đây định nghĩa hàm tính ngày trong tuần (thứ trong tuần) của 
một giá trị kiểu ngày 
create function f_ thu(@ngay datetime) 
returns nvarchar(10) 
as 
begin 
declare @st nvarchar(10) 
select @st=case datepart(dw,@ngay) 
when 1 then N'chủ nhật' 
when 2 then N'thứ hai' 
 98
when 3 then N 'thứ ba' 
when 4 then N 'thứ tư' 
when 5 then N 'thứ năm' 
when 6 then N 'thứ sáu' 
 else N 'thứ bảy' 
end 
return (@st) /* trị trả về của hàm */ 
end 
Sau khi chạy thành công, hàm trở thành một đối tượng trong CSDL và có 
thể được truy xuất như các hàm được xây dựng sẵn trong SQL Server 2005 Express 
Edition. 
Ví dụ: 
select CUSTOMERNAME, dbo.f_thu(BIRTHDAY) 
from customers 
2.7.3. Hàm nội tuyến 
Hàm nội tuyến được định nghĩa bằng lệnh CREATE FUNCTION. 
 99
CREATE FUNCTION tên_hàm ([danh_sách_tham_số]) 
 RETURNS TABLE 
AS 
RETURN (câu_lệnh_select) 
Cú pháp của hàm nội tuyến phải tuân theo các qui tắc sau: 
Kiểu trả về của hàm phải được chỉ định bởi mệnh đề RETURNS TABLE. 
Trong phần thân của hàm chỉ có duy nhất một câu lệnh RETURN xác định giá 
trị trả về của hàm thông qua duy nhất một câu lệnh SELECT. Ngoài ra, không sử 
dụng bất kỳ câu lệnh nào khác trong phần thân của hàm. 
Ví dụ: Ví dụ dưới đây lấy ra các khách hàng tùy thuộc vào giá trị mã khách 
hàng truyền vào cho tham số. 
create function f_SelectCustomer 
(@customerid int) 
returns table 
as 
return (select * from customers 
where customerid > @customerid) 
Việc gọi các hàm nội tuyến cũng tương tự như việc gọi các hàm vô hướng. 
Ví dụ: 
select tmp.CUSTOMERNAME, o.ORDERDATE 
from orders o inner join dbo.f_SelectCustomer(3) as tmp 
on o.customerid = tmp.customerid 
2.7.4. Hàm bao gồm nhiều câu lệnh bên trong 
Hàm này cũng được định nghĩa bằng lệnh CREATE FUNCTION 
CREATE FUNCTION tên_hàm 
([danh_sách_tham_số]) 
RETURNS @biến_bảng TABLE định_nghĩa_bảng 
 100 
AS 
BEGIN các_câu_lệnh_trong_thân_hàm 
 RET ... thuộc vào thư mục cài đặt của SQL 
Server 2005. 
MSSQL.1 là nơi lưu trữ cho instanceID chúng ta thu được trong bước trên. 
Lặp lại các bước trên cho mỗi thể hiện của SQL Server 2005 cần thiết lập 
ngoại lệ. Tạo ngoại lệ cho dịch vụ SQL Server Browser trong Windows Firewall 
Trong Windows Firewall, click tab Exceptions, và click Add Program. 
Trong cửa sổ Add a Program, click Browse. 
C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe, click 
Open, và click OK. 
Lưu ý: Đường dẫn có thể thay đổi tùy thuộc vào thư mục cài đặt của SQL 
Server 2005. 
2.11.2. Kết nối vào SQL Server trong các ngôn ngữ lập trình 
a. C# và VB.NET 
Tùy thuộc vào việc sử dụng .NET Data Provider (tập các đối tượng phục vụ 
việc trao đổi dữ liệu) nào trong .NET Framework và việc sử dụng hình thức 
Authentication nào để truy xuất dữ liệu trong SQL Server 2005, chúng ta sẽ có các 
cách khác nhau để kết nối đến SQL Server 2005. Trong phần trình bày này sẽ sử 
dụng System.Data.SqlClient là một Data Provider phổ biến để kết nối với SQL 
Server 2005. 
Trong C#: 
public void ConnectToSql () 
 126 
{ 
 System.Data.SqlClient.SqlConnection conn = 
 new System.Data.SqlClient.SqlConnection (); 
 // TODO Xây dựng chuỗi kết nối 
 conn.ConnectionString = 
 "integrated security=true;data source=tên_SQLSERVER;" + 
 "persist security info=False;initial catalog=tên_CSDL"; 
 try 
 { 
 conn.Open(); 
 // Xây dựng code để tương tác với CSDL ở đây 
 } 
 catch (Exception ex) 
 { 
 MessageBox.Show("Failed to connect to data source"); 
 } 
 finally 
 { 
 conn.Close(); 
 }} 
Trong VB.NET 
Public Sub ConnectToSql() 
 Dim conn As New SqlClient.SqlConnection 
 ' TODO Xây dựng chuỗi kết nối 
 conn.ConnectionString = & _ 
 "integrated security=true;data source=tên_SQL Server;" & _ 
 "persist security info=False;initial catalog=tên_CSDL" 
 127 
 Try 
 conn.Open() 
 ' Xây dựng code để tương tác với CSDL ở đây 
 Catch ex As Exception 
MessageBox.Show("Failed to connect to data source") 
 Finally 
 conn.Close() 
 End Try 
End Sub 
Trong hai ví dụ trên chúng ta xây dựng hàm kết nối vào SQL Server 2005 mà 
thành phần quan trọng nhất là chuỗi kết nối vào CSDL: 
Trong C#: 
"integrated security=true;data source=tên_SQLSERVER;" + 
 "persist security info=False;initial catalog=tên_CSDL"; 
Trong VB.NET: 
"integrated security=true;data source=tên_SQL Server;" & _ 
 "persist security info=False;initial catalog=tên_CSDL" 
Trong đó: 
Intergrated security = true: sử dụng Windows Authentication 
data source: chỉ định tên thể hiện của SQL Server 2005 mà chúng ta muốn kết 
nối. 
persist security info: Thiết lập mặc định cho từ khóa persist security info là 
false. Thiết lập sang giá trị true sẽ cho phép các dữ liệu nhạy cảm bao gồm UserID 
và password có thể được truy xuất khi kết nối được mở initial catalog: Tên CSDL 
mà chúng ta muốn tương tác. 
Ví dụ chuỗi kết nối sử dụng Windows Authentication: 
"integrated security=true;data source=.\\SQLExpress" + 
 "persist security info=False;initial catalog=myDB"; 
Ví dụ chuỗi kết nối sử dung SQL Server Authentication: 
 128 
"persist security info=False;User ID = *****; password = ***** “ + 
“initial catalog=myDB; data source=.\\SQLExpress "; 
b. VB 6 
Ví dụ dưới đây minh họa việc xây dựng ứng dụng CSDL bằng VB6. Giả sử 
chúng ta có CSDL tên là Test, SQL Server là .\\SQLExpress, User là sa, Password 
là 1234. 
Private Sub Command1_Click() 
 Dim connectionString As String 
 Dim commandString As String 
 Dim sqlConnection As ADODB.Connection 
 Dim rs As Recordset 
connectionString="PROVIDER=SQLOLEDB; 
DATA SOURCE=.\SQLEXPRESS;” 
connectionString = “UID=sa; PWD=1234;DATABASE=Test" 
 commandString = "select count(*) as count from Users where UserName = '" 
 commandString = commandString & Text1.Text & "' and Password = '" 
 commandString = commandString & Text2.Text & "'" 
 Set sqlConnection = New ADODB.Connection 
 sqlConnection.Open (connectionString) 
 Set rs = New Recordset 
 rs.Open commandString, sqlConnection 
 If (rs("count") = 1) Then 
 MsgBox "Login successfully" 
 End If 
End Sub 
 129 
 130 
Chương 3 
ỨNG DỤNG QUẢN TRỊ CƠ SỞ DỮ LIỆU CHO DOANH 
NGHIỆP 
3.1. Nhiệm vụ quản trị CSDL của doanh nghiệp 
Trong quá trình hoạt động kinh doanh, các dữ liệu của doanh nghiệp phát sinh 
ngày càng nhiều. Người ta muốn tận dụng nguồn dữ liệu này để sử dụng cho những 
mục đích hỗ trợ cho công việc kinh doanh ví dụ như cho mục đích thống kê hay 
phân tích. Từ đó vạch ra các phương án chiến lược kinh doanh cho doanh nghiệp. 
Chính vì vậy mà CSDL là một trong những phần quan trọng nhất của doanh 
nghiệp. Doanh nghiệp phải đảm bảo sự vận hành an toàn của kho dữ liệu trong máy 
tính, nếu dữ liệu này bị rò rỉ ra ngoài thì sẽ gây tổn thất khôn lường cho doanh 
nghiệp. Vì thế, phải tăng cường công tác quản lý sự an toàn, xây dựng cơ chế bảo 
vệ và người quản lý chuyên nghiệp kho dữ liệu. 
3.2. Quản trị sản xuất và tác nghiệp trong doanh nghiệp 
1. Thiết kế nhà máy 
- Lựa chọn địa điểm 
a)Vị trí 
b) Hạn chế của vùng 
c) Đảm báo các yếu tố đầu vào 
- Xác định quy mô 
2- Sắp xếp nhà máy một cách tổng thể 
– Sắp xếp nhà máy 
– Tính linh hoạt trong thiết kế 
– Lựa chọn máy móc và công nghệ 
3- Tổ chức sản xuất 
- Lập lịch trình sản xuất 
– Kiểm soát chi phí sản xuất 
– Kiểm soát phế liệu và chất thải 
 131 
– Kiểm soát chất lượng 
4- Mua sắm vật tư và bố trí kho 
- Xác định nhu cầu nguyên vật liệu 
- Lựa chọn nhà cung ứng 
- Bố trí kho của doanh nghiệp vừa và nhỏ 
– Vận chuyển 
Ví dụ: Một số dữ liệu quản lý kho vật tư 
Hình 3.1: Cơ sở dữ liệu quản lý kho vật tư 
3.3. Quản trị hoạt động dịch vụ 
- Đặc điểm dịch vụ và kinh doanh dịch vụ 
a) Dịch vụ là vô hình 
b) Người mua và người bán dịch vụ là hoàn toàn độc lập vớii nhau 
c) Người mua và người bán là không thể tách rời 
d) Dịch vụ không thể lưu trữ 
e) Khó chuẩn hoá chất lượng dịch vụ 
 132 
Hành vi người mua 
- Tại sao khách hàng lại mua dịch vụ 
- Tại sao khách hàng không mua dịch vụ 
 Phân tích thị trường và chiến lược Marketing cho các hãng kinh doanh dịch 
vụ 
Định giá dịch vụ 
Ước tính giá dịch vụ 
Quảng cáo khuyến mại kinh doanh dịch vụ 
– Quảng cáo 
- Bán hàng trực tiếp 
- Phương tiện quảng cáo thông tin đại chúng 
- Khuyến mại 
 Phân phối dịch vụ 
Quản trị quá trình cung ứng dịch vụ 
- Bố trí địa điểm cung ứng dịch vụ 
- Tổ chức việc cung ứng dịch vụ 
- Mua sắm các công cụ phục vụ cung ứng dịch vụ 
Ví dụ: dữ liệu về việc cung cấp các mặt hàng 
Hình 3.2: Cơ sở dữ liệu về việc cung cấp các mặt hàng 
3.4. Quản trị hoạt động marketing 
 Hệ thống marketing của doanh nghiệp vừa và nhỏ 
 Phân tích thị trường và hành vi người tiêu dùng 
- Mục tiêu 
 133 
- Các vấn đề liên quan đến khách hàng 
+ Ai là người mua hàng? 
+ Tại sao họ lại tiêu dùng? 
+ Họ mua cái gì? 
- Phân đoạn thị trường 
 Tiếp cận khách hàng 
- Thiết lập mục tiêu marketing 
- Chiến lược marketing 
- Những yếu tố của giao dịch bán hàng 
- Kế hoạch marketing 
Ví dụ: dữ liệu về khách hàng 
Hình 3.3: Cơ sở dữ liệu về khách hàng 
3.5. Quản trị nhân lực 
 Xây dựng chiến lược về nhân lực 
- Xác định mục tiêu chiến lược của doanh nghiệp về nhân lực 
- Phân tích nhân lực của doanh nghiệp hiện tại. 
- Phân tích nguồn cung lao động 
- Xây dựng các phương án chiến lược nhân lực 
 Tuyển dụng nhân viên 
- Sự cần thiết của việc tuyển dụng nhân viên và yêu cầu tuyển chọn nhân 
viên 
- Các bước công việc tuyển dụng 
 134 
+ Phân tích công việc 
+ Xác định nhu cầu nhân lực 
+ Lựa chọn ứng viên 
+ Tiến hành phỏng vấn 
+ Tuyển dụng 
 Bố trí công việc 
- Sắp xếp công việc cho nhân viên 
 Theo dõi đánh giá chất lượng công việc 
 Đào tạo và bồi dưỡng nhân viên 
 Thôi việc và buộc thôi việc 
Ví dụ: Các dữ liệu về hồ sơ nhân viên của 1 doanh nghiệp 
Hình 3.4: Dữ liệu về hồ sơ nhân viên của 1 doanh nghiệp 
3.6. Quản trị CSDL tài chính 
 Vốn và nguồn vốn cho doanh nghiệp 
- Vốn và vai trò của nguồn vốn đối với hoạt động kinh doanh của doanh 
nghiệp vừa và nhỏ 
- Các nguồn vốn có thể huy động trong các giai đoạn phát triển của doanh 
nghiệp 
+ Giai đoạn hình thành 
a) Nguồn cá nhân 
 135 
b) Nguồn huy động từ bạn bè và người thân 
c) Huy động vốn từ các ngân hàng thương mại và tổ chức tín dụng 
+ Trong giai đoạn phát triển 
 Kế hoạch hoạt động tài chính trong doanh nghiệp 
- Vai trò của kế hoạch tài chính đối với doanh nghiệp vừa và nhỏ 
- Phương pháp lập kế hoạch tài chính 
 Các giải pháp tạo vốn cho doanh nghiệp vừa và nhỏ 
- Vay từ nguồn tín dụng 
- Huy động vốn tự có 
- Huy động vốn từ người thân 
- Chiếm dụng vốn của người khác 
Chúng ta cần tiền hành xây dựng CSDL lưu trữ và quản lý tất cả các thông tin 
về các khoản chi phí hàng tháng: Lương của người quản lý, các khoản lương và 
tiền công khác, tiền nhà, đất(thuê), quảng cáo, phí vận chuyển, điện, điện thoại, các 
dịch vụ công cộng khác, bảo hiểm, thuế, BHXH,lãi, các khoản khác, mua TSCĐ và 
lắp đặt, sửa chữa xây dựng, hàng hoá vật tư dự trù để, tiền đặt cọc, lệ phí và phí 
dịch vụ ... 
Ví dụ: dữ liệu về quản lý lương nhân viên 
Hình 3.5: Dữ liệu về quản lý lương nhân viên 
3.7. Quản trị hoạt động tiêu thụ 
Lựa chọn hệ thống kênh phân phối 
- Lựa chọn tiêu thụ trực tiếp 
 136 
- Lựa chọn tiêu thụ qua trung gian 
 Lựa chọn địa điểm tiêu thụ 
- Yêu cầu đối với địa điểm tiêu thụ 
- Cách chọn lựa các cửa hàng 
+ Đối với vùng địa phương 
+ Đối với thành phố 
a) Đối với vùng trung tâm 
b) Vùng kinh doanh thứ cấp 
c) Vùng ngoại ô 
d) Trung tâm mua sắm 
+ Lựa chọn trung tâm 
 Xác định khách hàng 
 Mua hàng và kiểm soát kho hàng 
- Mua hàng 
- Xác định lượng hàng cần mua 
- Chỉ dẫn công tác mua hàng 
- Kế hoạch mua hàng 
2. Bố trí hàng hoá tại nơi tiêu thụ 
3. Hệ thống thông tin phản hồi và phân tích khách hàng. 
4. Tổ chức các hoạt động marketing hỗ trợ tiêu thụ 
Ví dụ: dữ liệu về quản lý hóa đơn bán hàng, phiếu nhập bán hàng, thanh 
toán... 
 137 
Hình 3.6: Dữ liệu về quản lý bán hàng 
3.8. Bảo vệ và quản lý csdl dữ liệu thông tin khách hàng 
Csdl dữ liệu thông tin khách hàng là một bộ phận quan trọng của thông tin hoá 
doanh nghiệp, sự an toàn của dữ liệu liên quan trực tiếp đến hoạt động kinh doanh 
của doanh nghiệp, vì thế, các doanh nghiệp đều coi việc bảo vệ và quản lý kho dữ 
liệu thông tin khách hàng là nhiệm vụ quan trọng, hàng đầu. Bạn có thể tham khảo 
giải pháp mô tả chi tiết dưới đây để biết cách thức tiến hành bảo vệ và quản lý kho 
dữ liệu thông tin khách hàng. 
Miêu tả chi tiết 
Quản lý hàng ngày 
Để đảm bảo tính hiệu quả và độ tin cậy của kho dữ liệu thông tin khách hàng, 
hàng ngày, doanh nghiệp phải tiến hành quản lý kho dữ liệu một cách khoa học, ví 
dụ như nhập và loại bỏ dữ liệu, phân loại dữ liệu, phục hồi dữ liệu, kiểm tra tính ổn 
định của kho dữ liệu v..v...Doanh nghiệp phải đề ra kế hoạch quản lý thông tin hàng 
ngày một cách khoa học và hoàn chỉnh, đồng thời, ghi chép chúng một cách đầy đủ. 
Quản lý sự an toàn 
Biện pháp quản lý sự an toàn thường thấy là: hệ thống cấp, quyền hạn sử dụng, 
 138 
thay đổi quyền hạn của nhân viên quản lý, xây dựng quyền hạn của nv quản lý, xây 
dựng quyền hạn của tổ dự án, quyền hạn phân chia, lưu trữ, bảo tồn giá trị kho dữ 
liệu. Hiện nay, hầu hết các doanh nghiệp áp dụng phương pháp thiết kế 3 tầng C/S 
để xây dựng kho dữ liệu thông tin khách hàng, nếu là trên mạng thì áp dụng kỹ 
thuật "tường lữa", phương pháp này có thể nâng cao tính an toàn cho kho dữ liệu t 
khách hàng. 
Sử dụng kho dữ liệu 
Mục đích xây dựng kho dữ liệu thông tin khách hàng là để doanh nghiệp sử 
dụng nó kinh doanh nhằm nâng cao vị thế của mình trên thị trưiờng, cải thiện tình 
hình phục vụ khách hàng để thu được thành quả rõ rệt trong kinh doanh. Kho dữ 
liệu thông tin khách hàng có thể dùng trong toàn bộ quá trình hoạt động kinh doanh 
của doanh nghiệp, nó bao gồm: Điều tra nghiên cứu thị trường, phát triển thị trường, 
tạo cơ hội bán hàng, hoạt động kinh doanh, duy trì mối quan hệ khách hàng và phục 
vụ khách hàng. 
Đảm bảo tính kịp thời 
Dữ liệu trong kho dữ liệu là yếu tố tĩnh, chỉ có động thái của khách hàng là 
hoạt động, doanh nghiệp phải nghĩ cách để sử dụng tối đa lợi ích mà kho dữ liệu 
mang lại, như vậy sẽ không bị lãng phí tiền bạc và công sức của doanh nghiệp. 
Doanh nghiệp phải cố gắng hoàn thiện, kịp thời đổi mới thông tin khách hàng, ghi 
chép thông tin mới nhất vào kho dữ liệu. 
Biện pháp quản lí an toàn kho dữ liệu thường thấy là gì? 
Biện pháp quản lí an toàn thường thấy là: hệ thống cấp truyền hạn sử dụng, 
thay đổi quyền hạn của nhân viên quản lí, xây dựng quyền hạn của tổ dự án, quyền 
hạn phân chia, lưu giữ, bảo tồn kho dữ liệu. Hiện nay, hầu hết các doanh nghiệp áp 
dụng phương pháp thiết kế 3 tầng C/S để xây dựng kho dữ liệu thông tin khách 
hàng, nếu là trên mạng thì áp dụng kĩ thuật " tường lửa ". Phương pháp này có thể 
nâng cao tính an toàn cho kho dữ liệu thông tin khách hàng 
3.9. Đánh giá hiệu quả sản xuất kinh doanh của doanh nghiệp 
Hiệu quả là một chỉ tiêu tổng hợp phản ánh tổng hợp kết quả sản xuất kinh 
doanh của doanh nghiệp và được tính bằng cách lấy kết quả theo đơn vị giá trị chia 
cho chi phí kinh doanh. Từ các kết quả trên có thể thấy hiệu quả là một phạm trù 
phản ánh trình độ lợi dụng các nguồn lực(nhân tài, vật lực, tiền vốn) để đạt đuợc 
mục tiêu xác định. Trình độ lợi dụng các nguồn lực chỉ có thể được đánh giá trong 
 139 
mối quan hệ với kết quả tạo ra. 
Hiệu quả kinh doanh phản ánh mặt chất lượng của hoạt động kinh doanh, thể 
hiện trình độ lợi dụng các nguồn lực sản xuất trong quá trình kinh doanh của doanh 
nghiệp. 
Do các nguồn lực sản xuất xã hội là khan hiếm trong khi càng ngày người ta 
càng sử dụng các nguồn lực vào phục vụ những nhu cầu khác nhau của con người. 
Chính vì vậy, mỗi doanh nghiệp kinh doanh trên thị trường đều phải cân nhắc tới 
vấn đề về kết quả đạt được, chi phí bỏ ra. Việc nghiên cứu phân tích hiệu quả kinh 
doanh sẽ là công cụ quan trọng giúp doanh nghiệp sử dụng hợp lý hơn nguồn lực. 
Tăng cao hiệu hiệu quả kinh doanh cũng có nghĩa là tăng lợi nhuận và các giá trị tạo 
ra của doanh nghiệp. 
Các doanh nghiệp vừa và nhỏ hầu hết là các doanh nghiệp kinh doanh, vì vậy 
mục tiêu mà loại doanh nghiệp này hướng tới là không ngừng nâng cao hiệu quả 
kinh tế qua mỗi chu kỳ sản xuất kinh doanh. Mặt khác, việc định lượng hiệu quả về 
mặt xã hội là hết sức khó khăn nhất là đối với doanh nghiệp vừa và nhỏ, bởi vì 
trong quan hệ với môi trường kinh doanh thì doanh nghiệp lớn có tác động lớn hơn 
và dễ nhận thấy hơn so với doanh nghiệp vừa và nhỏ. 
 140 
TÀI LIỆU THAM KHẢO 
[1] Đỗ Trung Tuấn, (1998), Giáo trình cơ sơ dữ liệu, Nhà xuất bản Đại học 
 Quốc gia. 
[2] Lê Tiến Vương, (1994), Nhập môn Cơ sở dữ liệu quan hệ, Nhà xuất bản 
 Khoa học và kỹ thuật. 
[3] Trần Trường Giang, (2010) , Bài giảng Quản trị doanh nghiệp vừa và nhỏ, 
 Trường Đại học kỹ thuật công nghiệp Thái Nguyên. 
[4] Trần Nguyên Phong, (2004), Giáo trình SQL, Khoa CNTT – Trường Đại 
 học khoa học Huế 
[5] Vũ Đức Thi,( 1997), Cơ sở dữ liệu - Kiến thức và thực hành, Nhà xuất bản 
 Khoa học thống kê. 

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_phan_ii.pdf