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
Tóm tắt nội dung tài liệu: 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:
- bai_giang_co_so_du_lieu_phan_ii.pdf