Mở SQL Server, tạo Database (JavaData với 1 bảng sv) như hình vẽ:
2. Kết nối Cơ sở dữ liệu SQL Server trong Java sử dụng ODBC với chuỗi kết nối
Ở đây việc kết nối đến SQL Server cũng thông qua ODBC nhưng chúng ta không cần phải khai báo DSN, ta có thể dùng chuỗi kết nối trực tiếp thông qua ODBC để nối đến SQL Server.
Với thuộc tính Server: "." hoặc IP address nếu chỉ có một Server trên máy Local . Nếu trên máy có nhiều SQL Server thì phải chỉ định rõ tên Server. UserName và Password tương ứng với SQL Server của bạn.
Ví dụ: Tên Server SQLEXPRESS thì Server phải là: Server=<Tên máy>/SQLEXPRESS
----------
[Code ví dụ]
/**
* Kết nối DataBase có tên là JavaData (đã tạo ở phần trên)
* Đọc và in ra màn hình danh sách sinh viên trong bảng sv
* */
package databasetest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class Data {
private Connection connect;
// khoi tao, tao ket noi
public Data() throws ClassNotFoundException, SQLException{
Lỗi không đăng nhập được account “sa” khi mới cài SqlServer 2005 & 2008
Lỗi:
Sau khi cài Sqlserver 2005 & 2008 xong, không thể login bằng account “sa” được mặc dù lúc cài đã set password cho nó.
Nguyên nhân: do user “sa” tự động bị disable khi cài Sqlserver 2005 & 2008 (chắc mấy chú hacker mò password của tài khoản này ghê quá nên MS disable cho nó chắc, ai biết thì mở ra xài – bị tấn công ráng chị).
Cách giải quyết:
Bước 1: Login Sqlserver bằng quyền admin của Windows (chọn chế độ Authentication là “Windows Authentication”).
Bước 2: Chọn Security (hình cái folder bên dưới mục Database) => Logins, double – click lên sa sẽ hiện lên hộp thoại “Login Properties – sa”, chọn mục Status, ta sẽ thấy nó bị Disable, ta phải chọn lại là “Enabled” =>OK
Bước 3: right-click vào “[Tên máy tính của bạn] \ SQLExpress”, chọn Properties, tìm đến mục Security, chọn “SQL Server and Windows Authentication Mode” => OK
Hướng dẫn cách cơ bản hay sử dụng khi chuyển Database SQL Server đã được tạo từ máy mình sang một máy khác.
Lưu ý: các cách đều sử dụng SQL Server Management Studio
Cách 1: đơn giản nhất là Backup từ máy mình rồi Restore lại khi sang máy khác.
Click chuột phải vào Database rồi chọn Tasks >> Backup
Ở máy kia, tạo một Database mới sau đó click chuột phải vào Database mới đó chọn Tasks >> Restore >> Database..
Nhấn vào From device và Add đường dẫn đến file backup
Click chọn tên file vừa Add và nhấn OK
Cách 2: Generate Script Database
Click chuột phải vào Database chọn Tasks >> Generate Scripts..
Nhấn Next cho đến bước Set Scripting Options, Nếu bạn chỉ muốn sao chép cấu trúc Database (gồm các Table, SP, Function, ..) mà không gồm dữ liệu trong các Table thì tiếp tục nhấn Next, nếu muốn sao chép cả dữ liệu thì Click vào Advanced
Trong Option Types of data to script chọn Schema and data
Sau đó bạn sẽ được 1 file dạng .sql, mang file này sang máy khác chỉ cần kéo file vào SSMS và nhấn Execute để tạo Database.
Cách 3: Copy file Database .mdf rồi Attach lại ở máy khác
Trong 3 cách trên, tôi thường dùng cách 2 nhất, do nếu bạn dùng các phiên bản SQL Server không đồng nhất ở các máy thì cũng không bị lỗi, cách 1 và 3 nếu SQL Server ở máy tạo Database có phiên bản cao hơn máy khác thì khi add vào sẽ không được. Cách 1 thường được dùng nếu bạn lập trình Web do trên Hosting bạn chỉ có thể chọn Restore.
Trước khi đi vào các bài học, chúng ta cũng giành vài phút đi ngược lại lịch sử để hiểu rỏ hơn về Oraclẹ
1977 Thành lập Relational Software Inc.
1978 Phiên bản Oracle v1 đầu tiên, chạy trên hệ điều hành PDP-11 của máy RSX (dòng của hãng DEC), khả năng sử dụng bộ nhớ tối đa là 128 KB.
Viết bằng ngôn ngữ Assemblỵ
Oracle V1 chỉ được sử dụng trong nội bộ công ty, khjông được phát hành ra bên ngòaị
1980 Phát hành phiên bản Oracle v2 - Đây cũng là hệ cơ sở dữ liệu thương mại đầu tiên sử dụng ngôn ngữ SQL.
Phiên bản này vẫn được viết bằng Assembly cho PDP-11, tuy nhiên, nó còn chạy được trên Vax/VMS.
1982 Phát hành Oracle v3 released, Oracle trở thành DBMS đầu tiên chạy trên các máy mainframes, minicomputers, và PC's (portable codebase). Phiên bản Oracle đầu tiên thể làm việc theo "transactional".
Oracle v3 được viết bằng C.
1983 Relational Software Inc. đỗi tên thành Oracle Corporation.
1984 Phát hành Oracle v4, giới thiệu tính năng "read consistency", có thể chạy trên nhiều Hệ Điều Hành, và cũng là phiên bản đầu tiên chạy theo mô hình PC - Server.
1986 Phát hành Oracle v5. Thực sự là CSDL client/server, hổ trợ cluster trên VAX.
CSDL đầu tiên sử dụng truy vấn dữ liệu phân tán (distributed queries).
1988 Phát hành Oracle v6
Giới thiệu ngôn ngữ PL/SQL
Oracle cũng giới thiệu sản phẩm ứng dụng sử dụng CSDL Oracle - Oracle Financial Applications.
1989 Phát hành Oracle v6.2 với tính năng chạy song song - Oracle Parallel Server
1992 Phát hành Oracle v7 chạy trên UNIX
1993 Phát hành bộ công cụ phát triển ứng dụng - Oraclés Cooperative Development Environment (CDE).
Giới thiệu "Oracle Industries" và "Oracle Media Server"
1994 Phát hành Oracle v7.1 và Oracle v7 trên máy PC.
1997 Phát hành Oracle8 , giới thiệu Cơ sở Dữ liệu Hướng Đối Tượng - object-relational
1998 Phát hành phiên bản trên Intel Linux
1999 Phát hành Oracl8i (i = internet), tích hợp với máy ảo Java - JVM
2000 Phát hành Oracl8i Release 2
Ngòai Oracle Database, Oracle còn phát triển bộ sản phẩm ứng dụng cho doanh nghiệp - ERP
Phát hành Oracl9i Application Server, đây là một sản phẩm thuộc lớp giữa (midle tier)
2001 Phát hành Oracl9i Release 1 với tính năng Cluster (RAC) và Advanced Analytic Service
2002 Phát hành Oracl9i Release 2
2004 Phát hành Oracle10g Release 1 (g = grid)
2005 Phát hành Oracle10g Release 2
2. Ưu điểm của Oracle:
Nhiều người cho rằng Oracle chỉ sử dụng cho những Doanh Nghiệp (DN) lớn nên không thích hợp ở Việt Nam.
Điều này, theo tôi, là hoàn toàn sai lầm. Oracle không chỉ nhắm tới những DN lớn mà còn nhắm tới những DN trung bình và cho cả những DN nhỏ.
Cụ thể là Oracle Server có đủ các phiên bản thương mại từ Personal, Standard đến Enterprise (ngoài ra còn có Oracle lite nữa).
- Về phía các DN: Oracle tỏ ra rất có ưu điểm như tính bảo mật cao, tính an toàn dữ liệu cao, dễ dàng bảo trì-nâng cấp, cơ chế quyền hạn rỏ ràng, ổn định,...
Oracle cũng không quá đắc như các bạn nghĩ, nếu DN đã từng mua lisence của MSSQLServer thì sẽ thấy giá của Oracle cũng không chênh lệch là bao thậm chí còn rẻ hơn (xem phần so sánh giá), nhưng lợi ích có được lại rất lớn.
- Về phía những nhà phát triển: Oracle cũng tỏ ra rất có ưu điểm như dễ cài đặt, dễ triển khai và dễ nâng cấp lên phiên bản mớị
Hơn nữa Oracle còn tích hợp thêm PL/SQL, là một ngôn ngữ lập trình có cấu trúc - Structure Language. Tạo thuận lợi cho các lập trình viện viết các Trigger, StoreProcedure, Package. Đây là điểm rất mạnh so với các CSDL hiện có trên thị trường.
Oracle, ngoài các kiểu dữ liệu thông thường còn có các kiểu dữ liệu đặc biệt khác góp phần mang lại sức mạnh cho Oracle như Blob, clob, Bfile, ...
Nếu bạn chỉ chạy thử, bạn cũng không cần lo đến vấn đề lisence vì có thể download từ trang của Oracle (technet.oracle.com).
- Ngoài ra, bạn có thể triển khai Oracle trên nhiều OS khác nhau (Windows, Solaris, Linux,...) mà không cần phải viết lại PL/SQL codẹ
Có thể import một dumpFile (backupFile) từ một máy chạy OS này sang OS khác hoặc từ một version thấp lên một version cao hơn mà không gặp bất cứ trở ngại nào ! (việc ngược lại cũng có thể thực hiện được nếu như bạn không xài các tính năng mới so với version trước đó).
SQL là một công cụ quản lý dữ liệu được sử dụng phổ biến ở nhiều lĩnh vực. Nếu bạn không có nhiều thời gian để nghiên cứu sâu về tin học mà lại có nhiều dữ liệu cần phải được phân tích, xử lý, thì hãy dùng SQL vì SQL đơn giản nhưng rất hiệu quả. Hầu hết tất cả các ngôn ngữ lập trình cấp cao đều có hỗ trợ SQL. Có thể kể ra như MS Visual Basic, MS Access, MS Visual Foxpro, DBase, DB2, Paradox, Oracle.... Đầu tiên SQL được sử dụng trong các ngôn ngữ quản lý CSDL và chạy trên máy đơn lẻ. Do sự phát triển nhanh chóng của nhu cầu xây dựng những CSDL lớn theo mô hình khách/chủ (Client/Server), nhiều phần mềm sử dụng ngôn ngữ SQL đã ra đời mà điển hình là MS SQL Server, Oracle, Sybase... Trong mô hình khách/chủ, toàn bộ CSDL được tập trung lưu trữ trên máy chủ (Server), mọi thao tác xử lý dữ liệu được thực hiện trên máy chủ bằng các lệnh SQL. Máy trạm (Client) chỉ dùng để cập nhật dữ liệu cho máy chủ hoặc lấy thông tin từ máy chủ. Trên lĩnh vực đang phát triển hiện nay là Internet, ngôn ngữ SQL lại càng đóng vai trò quan trọng hơn. Nó được sử dụng để nhanh chóng tạo ra các trang Web động (Dynamic Web Page). Trang Web động thường có nội dung được lấy ra từ CSDL. SQL có thể được sử dụng như một chất keo kết dính giữa CSDLvà trang Web. Khi người dùng yêu cầu, SQL sẽ thực hiện việc truy cập thông tin trong CSDL trên máy chủ và hiển thị kết quả trên trang Web. Và SQL cũng là công cụ để cập nhật thông tin cho CSDLđó. Vậy SQL là gì mà lại có vai trò quan trọng đến như vậy? Trước hết SQL là viết tắt của cụm từ Structure Query Language, tạm dịch là ngôn ngữ truy vấn có cấu trúc. Có nghĩa là SQL chỉ làm việc với những dữ liệu có cấu trúc dạng bảng (table) như của Foxpro, DBase, Access ... Nếu bạn chỉ làm việc với các tệp dữ liệu dạng văn bản như của Winword, hay các ảnh, âm thanh ... thì bạn không thể ứng dụng SQL được. Đối tượng của SQL là các bảng dữ liệu và các bảng này bao gồm nhiều cột và hàng. Cột được gọi là trường và hàng là bản ghi của bảng. Cột với tên gọi và kiểu dữ liệu xác định tạo nên cấu trúc của bảng. Khi bảng được tổ chức có hệ thống cho một mục đích, công việc nào đó ta có một CSDL. Trong công việc hàng ngày thường gặp rất nhiều loại bảng khác nhau như bảng danh sách nhân viên, danh sách phòng ban, bảng lương, bảng quyết toán... Khi bảng này được lưu thành CSDL thì có thể dùng SQL để phân tích, xử lý thông tin trong đó. Kết quả thực hiện của SQL thường là một bảng mới. Ví dụ ta yêu cầu SQL lấy ra từ bảng Danh sách nhân viên những nhân viên có nhà ở Hà Nội thì SQL sẽ trả về một bảng mới chỉ chứa các nhân viên có nhà ở Hà Nội. SQL còn được dùng để cập nhật thông tin cho các CSDL đã có. Ví dụ như cần phải xoá tất cả các phiếu xuất kho hai năm trước đây chẳng hạn. Bạn có thể mở bảng dữ liệu Phiếu xuất kho ra và tìm kiếm rồi xoá từng phiếu một cách thủ công, vừa mất thì giờ vừa có khả năng nhầm lẫn hoặc bỏ sót. Khi đó bạn nên dùng SQL với thời gian thực hiện chỉ tính bằng giây và đảm bảo không có sự nhầm lẫn hay bỏ sót nào cả. Trong những trường hợp như vậy kết quả câu lệnh SQL không phải là bảng mới mà chính là bảng đã được bổ sung cập nhật dữ liệu theo yêu cầu. SQL luôn luôn thao tác trên các bảng. SQL dùng để phân tích, tổng hợp số liệu từ các bảng đã có sẵn, tạo nên các dạng bảng mới, sửa đổi cấu trúc, dữ liệu của các bảng đã có. Sau khi thực hiện một hay một chuỗi các lệnh SQL là có thể có đủ số liệu để tạo ra báo cáo theo yêu cầu công việc. Vì mục tiêu của các chương trình quản lý CSDL là quản lý dữ liệu được lưu trữ trong các bảng nên SQL được dùng rất thường xuyên trong mọi công việc. Một trong những lý do khiến SQL ngày càng phổ biến hơn là SQL rất dễ sử dụng. Bạn không nhất thiết phải là chuyên gia tin học, cũng không cần phải biết lập trình mà vẫn có thể ứng dụng SQL để xử lý công việc của mình. Thực hiện được điều đó là nhờ có các công cụ trực quan giúp tạo ra các câu lệnh SQL một cách dễ dàng, hiệu quả, đó là các Query (câu hỏi truy vấn) trong các phần mềm có sử dụng SQL. Mỗi Query là một câu lệnh SQL được xây dựng hoàn chỉnh và ghi lại để có thể mang ra sử dụng bất cứ lúc nào. Sản phẩm của một Query là một bảng mới thì bảng này lại có thể được sử dụng trong các Query khác. Cứ như vậy ta có thể có một chuỗi các Query trước khi đi đến kết quả cuối cùng. Các Query này được thiết kế đặc biệt để thể hiện các câu hỏi của bạn về dữ liệu đã lưu trữ và khi chạy nó sẽ trả về kết quả theo yêu cầu của bạn. Sử dụng Query rất dễ dàng và ít có khả năng mắc lỗi, thậm chí bạn chỉ cần dùng chuột để tạo ra một câu lệnh SQL hoàn chỉnh. Yêu cầu duy nhất để sử dụng Query là bạn phải nắm vững cấu trúc CSDL của mình. Khi thiết kế Query bạn chỉ cần dùng chuột chọn các bảng dữ liệu cần thiết đưa vào Query rồi chọn các trường sẽ đưa ra, sau đó ghi Query lại với một tên nào đó. Và thế là bạn có thể sử dụng nó ngay lập tức hoặc dùng nó để xây dựng các Query khác. Chúng ta sẽ cùng xây dựng một lệnh SQL bằng Query để có thể hiểu rõ hơn công dụng của nó. Giả sử bạn đã có hai bảng dữ liệu là Nhân viên và Hoá đơn trong MS Access. Bảng Nhân viên chứa danh sách các nhân viên trong công ty còn bảng Hoá đơn lưu lại tất cả các hoá đơn đã sử dụng khi bán hàng. Trường Mã nhân viên dùng để kết nối giữa hai bảng. Yêu cầu là đưa ra báo cáo số tiền bán hàng của từng nhân viên. Ta sẽ xây dựng một Query để thực hiện yêu cầu trên. Tạo Query gồm [/b]bảng Hoá đơn và bảng Nhân viên[/B] kết hợp lại để có được tổng số tiền bán hàng theo từng tên nhân viên. Sau khi chọn New Query, hộp thoại chọn bảng sẽ hiện ra và ta chọn hai bảng cần thiết bằng cách nháy đúp lên tên từng bảng hoặc nhấn phím Add sau khi đã chọn bảng. Chọn bảng xong ta chọn các trường cần thiết đưa ra kết quả bằng cách nháy đúp chuột lên tên trường đó. Các trường được chọn sẽ xuất hiện trong bảng lưới phía dưới. Cụ thể ở đây ta nháy đúp lên trường Tên nhân viên và Thành tiền. Do cần có tổng số tiền bán hàng của từng nhân viên nên ta phải đánh dấu Totals từ menu View rồi chọn Group by cho Tên nhân viên và Sum cho Thành tiền và kết quả như trên hình. Như vậy là bạn đã hoàn thành việc thiết kế một Query và có thể xem câu lệnh SQL đã được tự động tạo ra bằng cách chọn SQL trong menu View rồi đặt tên Query với một tên tuỳ ý. Sau đó, khi muốn xem kết quả câu lệnh SQL đã có, bạn chỉ cần cho chạy Query vừa tạo ra bằng cách nháy đúp lên nó hoặc bấm lên nút Open. Kết quả hiển thị ra màn hình là tổng hợp những dữ liệu mới nhất trong hai bảng dữ liệu nguồn tại thời điểm chạy Query. Sau khi sử dụng thành thạo SQL bạn đã có trong tay một công cụ mạnh để xây dựng chương trình. Khi phải học sử dụng một ngôn ngữ mới nào đó thì bạn không phải học lại từ đầu cách sử dụng SQL trong ngôn ngữ đó. Phần cốt lõi của SQL là giống nhau trong mọi ngôn ngữ. Bạn chỉ cần học cách áp dụng SQL trong từng trường hợp cụ thể của ngôn ngữ đó cùng những điểm cải tiến bổ sung mà thôi. SQL có khả năng đáp ứng hầu hết các yêu cầu đối với việc cập nhật, phân tích dữ liệu từ các bảng. Sau đây chúng ta sẽ điểm qua một số công dụng chính của SQL. - Chọn lọc một số cột nhất định trong bảng dữ liệu: Thường ta không sử dụng tất cả các thông tin của bảng cùng một lúc. Có thể dùng SQL để tách ra chỉ những cột cần thiết mà thôi. - Lọc các bản ghi theo những tiêu chuẩn khác nhau: như tách riêng các hoá đơn của một khách hàng nào đó, hay in danh sách nhân viên chỉ của một vài phòng ban... - Sắp xếp các bản ghi theo những tiêu chuẩn khác nhau: Mỗi loại báo cáo thường có yêu cầu sắp xếp các bản ghi theo những cột khác nhau để tiện cho việc theo dõi. Có báo cáo thống kê sắp xếp theo khách hàng, báo cáo khác lại sắp xếp theo mặt hàng được bán, mặc dù tất cả thông tin nằm trong cùng một bảng Bán hàng. Ta có thể thực hiện sắp xếp theo một hoặc nhiều cột khác nhau bằng SQL. Cập nhật, xoá các bản ghi trên toàn bảng theo những điều kiện khác nhau: ví dụ như khi cần xoá toàn bộ các hoá đơn đã phát hành cách đây 5 năm... - Kết hợp hai hay nhiều bảng theo chiều ngang: Trong CSDL, mỗi bảng lưu trữ thông tin về một đối tượng và các bảng liên hệ với nhau qua các trường khoá. Dùng SQL để thực hiện việc kết hợp các bảng này với nhau thông qua các trường khoá như ở ví dụ trên để có được bảng kết quả theo yêu cầu. - Nối hai hay nhiều bảng theo chiều dọc: khi dữ liệu rất lớn hoặc phân tán ở nhiều nơi ta có thể phải quản lý nhiều bảng theo cùng một mẫu, như mỗi bảng cho một quý, tháng hoặc một công ty. Khi cần tổng hợp dữ liệu của cả năm hoặc của cả tổng công ty ta có thể dùng SQL để nối các bảng lại với nhau. - Tạo bảng mới, thay đổi cấu trúc bảng đã có: phục vụ cho việc lập trình. - Thực hiện các phép tính toán thống kê theo từng nhóm: tổng, trung bình, max, min... Đây là chức năng thường xuyên được sử dụng để tổng hợp thông tin trước khi in báo cáo như tính tổng số lượng của từng mặt hàng, số hàng đã bán cho từng khách hàng... - Kết nối với dữ liệu trên máy chủ (Server): Khi kho dữ liệu được tập trung trên máy chủ trong MS SQL Server hay Oracle ... ta phải dùng lệnh SQL để trực tiếp thâm nhập vào cơ sở dữ liệu. - Kết hợp các trang Web với CSDL bằng lệnh SQL. Có thể phân ra hai loại câu lệnh SQL, một loại tổng hợp dữ liệu sang bảng mới (bảng mới có thể chỉ tồn tại trong bộ nhớ hoặc được ghi ra đĩa) và một loại chỉ cập nhật dữ liệu, cấu trúc của các bảng đã có. Bảng mới được tạo ra từ câu lệnh SQL có thể được sử dụng ở mọi nơi trong chương trình có yêu cầu dữ liệu dạng bảng, đặc biệt dùng cho báo cáo (report), danh sách (list), đối tượng lưới (grid) ... Tất cả các chức năng của SQL đều có thể được thực hiện bằng các công cụ khác của các phần mềm có sử dụng SQL. Tuy nhiên dùng SQL có nhiều ưu điểm lớn so với các cách khác như là: - Câu lệnh đơn giản, dễ nhớ, dễ sử dụng và rất ngắn gọn. - Tốc độ rất cao do được tối ưu hoá với những công nghệ mới. - Khả năng thực hiện những yêu cầu phức tạp của công việc... Nếu đã thành thạo lập trình xử lý các công việc, bạn nên tiết kiệm thời gian và sức lực bằng cách sử dụng SQL. Câu lệnh SQL ngắn gọn và đơn giản hơn thì khả năng mắc lỗi ít hơn và tốc độ vận hành nhanh hơn. Trong các ngôn ngữ như Visual Foxpro hay Access bạn được cung cấp công cụ trực quan để tạo ra Query - câu lệnh SQL được ghi lại độc lập. Sử dụng các công cụ tạo Query bạn có thể không cần phải nắm vững cú pháp câu lệnh SQL mà vẫn tạo được các Query phức tạp. Sau khi tạo xong câu lệnh, SQL sẽ được tự động sinh ra và bạn có thể sao chép dùng vào nhiều việc khác. Có thể bạn đang tự hỏi nếu SQL đúng là vạn năng như vậy sao không dùng một mình SQL để xử lý dữ liệu mà vẫn còn phải dùng các công cụ lập trình khác. Tuy SQL có nhiều khả năng nhưng trong một số trường hợp cụ thể vẫn phải dùng kết hợp với những công cụ lập trình khác để có được hiệu quả tối đa. Ví dụ như khi bạn cần phải làm việc với từng bản ghi chứ không phải trên phạm vi toàn bảng, khi bạn đang làm việc với một bản ghi nào đó và muốn chuyển sang làm việc với một bản ghi ở sau nó, hoặc bạn muốn có được các thông tin về cấu trúc một bảng (tên cột, kiểu dữ liệu, có khả năng cập nhật không...). Khả năng của SQL là rất lớn nên nó có phạm vi ứng dụng rộng trong việc quản lý CSDL bằng máy tính.
Nhìn chung mọi ứng dụng cơ sở dữ liệu đều bao gồm các phần: - Thành phần xử lý ứng dụng (Application processing components) - Thành phần phần mềm cơ sở dữ liệu (Database software componets) - Bản thân cơ sở dữ liệu (The database itself) Các mô hình về xử lý cơ sở dữ liệu khác nhau là bởi các trường hợp của 3 loại thành phần nói trên định vị ở đâu. Bài viết này này xin giới thiệu 5 mô hình kiến trúc dựa trên cấu hình phân tán về truy nhập dữ liệu của hệ thống máy tính Client/Server. - Mô hình cơ sở dữ liệu tập trung (Centralized database model) - Mô hình cơ sở dữ liệu theo kiểu file - server (File - server database model) - Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model) - Mô hình cơ sở dữ liệu Client/Server (Client/Server database model) - Mô hình cơ sở dữ liệu phân tán (Distributed database model) 1. Mô hình cơ sở dữ liệu tập trung (Centralized database model) Trong mô hình này, các thành phần xử lý ứng dụng, phần mềm cơ sở dữ liệu và bản thân cơ sở dữ liệu đều ở trên một bộ xử lý. Ví dụ người dùng máy tính cá nhân có thể chạy các chương trình ứng dụng có sử dụng phần mềm cơ sở dữ liệu Oracle để truy nhập tới cơ sở dữ liệu nằm trên đĩa cứng của máy tính cá nhân đó. Từ khi các thành phần ứng dụng, phần mềm cơ sở dữ liệu và bản thân cơ sở dữ liệu cùng nằm trên một máy tính thì ứng dụng đã thích hợp với mô hình tập trung. Hầu hết công việc xử lý luồng thông tin chính được thực hiện bởi nhiều tổ chức mà vẫn phù hợp với mô hình tập trung. Ví dụ một bộ xử lý mainframe chạy phần mềm cơ sở dữ liệu IMS hoặc DB2 của IBM có thể cung cấp cho các trạm làm việc ở các vị trí phân tán sự truy nhập nhanh chóng tới cơ sở dữ liệu trung tâm. Tuy nhiên trong rất nhiều hệ thống như vậy, cả 3 thành phần của ứng dụng cơ sở dữ liệu đều thực hiện trên cùng một máy mainframe do vậy cấu hình này cũng thích hợp với mô hình tập trung. 2. Mô hình cơ sở dữ liệu theo kiểu file - server (File - server database model) Trong mô hình cơ sở dữ liệu theo kiểu file - server các thành phần ứng dụng và phần mềm cơ sở dữ liệu ở trên một hệ thống máy tính và các file vật lý tạo nên cơ sở dữ liệu nằm trên hệ thống máy tính khác. Một cấu hình như vậy thường được dùng trong môi trường cục bộ, trong đó một hoặc nhiều hệ thống máy tính đóng vai trò của server, lưu trữ các file dữ liệu cho hệ thống máy tính khác thâm nhập tới. Trong môi trường file - server, phần mềm mạng được thi hành và làm cho các phần mềm ứng dụng cũng như phần mềm cơ sở dữ liệu chạy trên hệ thống của người dùng cuối coi các file hoặc cơ sở dữ liệu trên file server thực sự như là trên máy tính của người chính họ. Mô hình file server rất giống với mô hình tập trung. Các file cơ sở dữ liệu nằm trên máy khác với các thành phần ứng dụng và phần mềm cơ sở dữ liệu; tuy nhiên các thành phần ứng dụng và phần mềm cơ sở dữ liệu có thể có cùng thiết kế để vận hành một môi trường tập trung. Thực chất phần mềm mạng đã làm cho phần mềm ứng dụng và phần mềm cơ sở dữ liệu tưởng rằng chúng đang truy nhập cơ sở dữ liệu trong môi trường cục bộ. Một môi trường như vậy có thể phức tạp hơn mô hình tập trung bởi vì phần mềm mạng có thể phải thực hiện cơ chế đồng thời cho phép nhiều người dùng cuối có thể truy nhập vào cùng cơ sở dữ liệu. 3. Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model) Một mô hình khác trong đó một cơ sở dữ liệu ở xa có thể được truy nhập bởi phần mềm cơ sở dữ liệu, được gọi là xử lý dữ liệu từng phần Với mô hình này, người sử dụng có thể tại một máy tính cá nhân kết nối với hệ thống máy tính ở xa nơi có dữ liệu mong muốn. Người sử dụng sau đó có thể tác động trực tiếp đến phần mềm chạy trên máy ở xa và tạo yêu cầu để lấy dữ liệu từ cơ sở dữ liệu đó. Người sử dụng cũng có thể chuyển dữ liệu từ máy tính ở xa về chính máy tính của mình và vào đĩa cứng và có thể thực hiện việc sao chép bằng phần mềm cơ sở dữ liệu trên máy cá nhân. Với cách tiếp cận này, người sử dụng phải biết chắc chắn là dữ liệu nằm ở đâu và làm như thế nào để truy nhập và lấy dữ liệu từ một máy tính ở xa. Phần mềm ứng dụng đi kèm cần phải có trên cả hai hệ thống máy tính để kiểm soát sự truy nhập dữ liệu và chuyển dữ liệu giữa hai hệ thống. Tuy nhiên, phần mềm cơ sở dữ liệu chạy trên hai máy không cần biết rằng việc xử lý cơ sở dữ liệu từ xa đang diễn ra vì người sử dụng tác động tới chúng một cách độc lập. 4. Mô hình cơ sở dữ liệu Client/Server (Client/Server database model) Trong mô hình cơ sở dữ liệu Client/Server, cơ sở dữ liệu nằm trên một máy khác với các máy có thành phần xử lý ứng dụng. Nhưng phần mềm cơ sở dữ liệu được tách ra giữa hệ thống Client chạy các chương trình ứng dụng và hệ thống Server lưu trữ cơ sở dữ liệu. Trong mô hình này, các thành phần xử lý ứng dụng trên hệ thống Client đưa ra yêu cầu cho phần mềm cơ sở dữ liệu trên máy client, phần mềm này sẽ kết nối với phần mềm cơ sở dữ liệu chạy trên Server. Phần mềm cơ sở dữ liệu trên Server sẽ truy nhập vào cơ sở dữ liệu và gửi trả kết quả cho máy Client. Mới nhìn, mô hình cơ sở dữ liệu Client/Server có vẻ giống như mô hình file - server, tuy nhiên mô hình Client/Server có rất nhiều thuận lợi hơn mô hình file - server. Với mô hình file - server, thông tin gắn với sự truy nhập cơ sở dữ liệu vật lý phải chạy trên toàn mạng. Một giao tác yêu cầu nhiều sự truy nhập dữ liệu có thể gây ra tắc nghẽn lưu lượng truyền trên mạng. Giả sử một người dùng cuối tạo ra một vấn tin để lấy dữ liệu tổng số, yêu cầu đòi hỏi lấy dữ liệu từ 1000 bản ghi, với cách tiếp cận file - server nội dung của tất cả 1000 bản ghi phải đưa lên mạng, vì phần mềm cơ sở dữ liệu chạy trên máy của người sử dụng phải truy nhập từng bản ghi để thoả mãn yêu cầu của người sử dụng. Với cách tiếp cận cơ sở dữ liệu Client/Server, chỉ có lời vấn tin khởi động ban đầu và kết quả cuối cùng cần đưa lên mạng, phần mềm cơ sở dữ liệu chạy trên máy lưu giữ cơ sở dữ liệu sẽ truy nhập các bản ghi cần thiết, xử lý chúng và gọi các thủ tục cần thiết để đưa ra kết quả cuối cùng. Front-end software Trong mô hình cơ sở dữ liệu Client/Server, thường nói đến các phần mềm front-end software và back-end software. Front-end software được chạy trên một máy tính cá nhân hoặc một workstation và đáp ứng các yêu cầu đơn lẻ riêng biệt, phần mềm này đóng vai trò của Client trong ứng dụng cơ sở dữ liệu Client/Server và thực hiện các chức năng hướng tới nhu cầu của người dùng cuối cùng, phần mềm Front-end software thường được chia thành các loại sau: - End user database software: Phần mềm cơ sở dữ liệu này có thể được thực hiện bởi người sử dụng cuối trên chính hệ thống của họ để truy nhập các cơ sở dữ liệu cục bộ nhỏ cũng như kết nối với các cơ sở dữ liệu lớn hơn trên cơ sở dữ liệu Server. - Simple query and reporting software: Phần mềm này được thiết kế để cung cấp các công cụ dễ dùng hơn trong việc lấy dữ liệu từ cơ sở dữ liệu và tạo các báo cáo đơn giản từ dữ liệu đã có. - Data analysis software: Phần mềm này cung cấp các hàm về tìm kiếm, khôi phục, chúng có thể cung cấp các phân tích phức tạp cho người dùng. - Application development tools: Các công cụ này cung cấp các khả năng về ngôn ngữ mà các nhân viên hệ thống thông tin chuyên nghiệp sử dụng để xây dựng các ứng dụng cơ sở dữ liệu của họ. Các công cụ ở đây bao gồm các công cụ về thông dịch, biên dịch đơn đến các công cụ CASE (Computer Aided Software Engineering), chúng tự động tất cả các bước trong quá trình phát triển ứng dụng và sinh ra chương trình cho các ứng dụng cơ sở dữ liệu. - Database administration Tools: Các công cụ này cho phép người quản trị cơ sở dữ liệu sử dụng máy tính cá nhân hoặc trạm làm việc để thực hiện việc quản trị cơ sở dữ liệu như định nghĩa các cơ sở dữ liệu, thực hiện lưu trữ hay phục hồi. Back-end software Phần mềm này bao gồm phần mềm cơ sở dữ liệu Client/Server và phần mềm mạng chạy trên máy đóng vai trò là Server cơ sở dữ liệu. 5. Distributed database model (Mô hình cơ sở dữ liệu phân tán) Cả hai mô hình File - Server và Client/Server đều giả định là dữ liệu nằm trên một bộ xử lý và chương trình ứng dụng truy nhập dữ liệu nằm trên một bộ xử lý khác, còn mô hình cơ sở dữ liệu phân tán lại giả định bản thân cơ sở dữ liệu có ở trên nhiều máy khác nhau.
CSDL là gì? CSDL trong máy tính được tổ chức như thế nào? CSDL bao gồm những khái niệm gì?
Máy tính đã trở nên thông dụng trong mỗi cơ quan, gia đình. Máy tính chỉ thật sự có ý nghĩa khi mà nó thay con người quản lý, lưu trữ và xử lý một lượng thông tin lớn mà con người không thể kiểm soát nổi. Bạn là người có nhiều bạn bè và quen biết rộng, và bạn không muốn quên ngày sinh của những người thân cũng như số điện thoại của những người quen. Bạn sử dụng một cuốn sổ nhỏ để ghi lại họ tên, địa chỉ, số điện thoại và ngày sinh của từng người. Cuốn sổ này rất tiện lợi vì bạn có thể tra bất cứ thứ gì mà bạn ghi lại trong sổ. Như vậy, bạn đã có một cơ sở dữ liệu đơn giản chứa đựng các thông tin cần thiết về mọi người. Tuy nhiên, khi số người lên đến hàng trăm hoặc hơn, bạn sẽ thấy ghi sổ cũng còn bất tiện: bạn không thể tìm nhanh chóng số điện thoại của một người nếu bạn ghi chép tuần tự người này tiếp sau người kia mà không sắp xếp theo một trật tự nhất định nào đó. Còn nếu có sắp xếp, ví dụ theo thứ tự ABC của tên ở mỗi trang, bạn sẽ thấy một số trang có rất nhiều và lấn sang trang của chữ khác, còn một số lại rất ít. Hơn nữa, bạn lại cần ghi cả địa chỉ cơ quan của những người đó. Trong số đó có vài người làm cùng một nơi và bạn không muốn ghi lại. Đây có lẽ là thời điểm thích hợp để máy tính cho thấy tác dụng của nó. Bạn sẽ cần phải sử dụng một chương trình máy tính (ứng dụng) chuyên biệt có sẵn để nhập tất cả dữ liệu này vào máy tính và nó sẽ quản lý thông tin giúp bạn. Bạn có thể chia các thông tin ra thành hai phần, các thông tin về cá nhân và các thông tin về cơ quan công tác. Nó sẽ tương tự như hai bảng 1và 2. Như vậy, bạn đã có một cơ sở dữ liệu (database) chứa thông tin về những người quen. Cơ sở dữ liệu này gồm hai bảng (table): người quen và cơ quan công tác. Cơ sở dữ liệu (database): kho thông tin về một chủ đề, được tổ chức hợp lý để dễ dàng quản lý và truy tìm. Bất kỳ kho thông tin nào đáp ứng được yêu cầu này đều có thể coi là một cơ sở dữ liệu (CSDL). Như trên đây, bạn có hai cơ sở dữ liệu: CSDL người quen ghi trong sổ và CSDL trên máy tính. Thông thường, những thông tin trong CSDL được chia thành nhiều mẫu tin có cấu trúc tương đối giống nhau, ví dụ như đây là một mẫu tin: - Họ tên: Nguyễn Thanh Hà - Ngày sinh: 28/5/1970 - Điện thoại: 8242948 - Địa chỉ: 1B Chương Dương, Hà Nội - Tên cơ quan: Ngân Hàng Đầu Tư và Phát Triển Việt Nam Table (Bảng): Là một thành phần cơ bản trong chương trình quản trị cơ sở dữ liệu quan hệ. Bảng được hình thành khi sắp xếp các thông tin có liên quan với nhau theo hàng và cột. Các hàng tương ứng với các bản ghi (record) dữ liệu và các cột tương ứng với trường dữ liệu. Các bạn hãy xem bảng Người quen. Các hàng là người, mỗi hàng tương ứng với một người. Các cột là trường (hay lĩnh vực) của thông tin. Ta có các cột Họ tên, Ngày sinh, Điện thoại, Địa chỉ, Tên cơ quan. Record (bản ghi): trong chương trình quản trị cơ sở dữ liệu, đây là một đơn vị hoàn chỉnh nhỏ nhất của dữ liệu, được lưu trữ trong những trường hợp dữ liệu đã được đặt tên. Trong một cơ sở dữ liệu dạng bảng, bản ghi dữ liệu đồng nghĩa với hàng (row). Bản ghi chứa tất cả các thông tin có liên quan với mẫu tin mà cơ sở dữ liệu đang theo dõi. Ví dụ, trong cơ sở dữ liệu về Người quen, bản ghi sẽ liệt kê tên người quen, số điện thoại, ngày sinh, địa chỉ và tên cơ quan. Hầu hết các chương trình đều hiển thị các bản ghi dữ liệu theo hai cách: theo các mẫu nhập dữ liệu và theo các bảng dữ liệu. Các bản ghi dữ liệu được hiển thị dưới dạng các hàng ngang và mỗi trường dữ liệu là một cột. Field (Trường dữ liệu): trong chương trình quản trị cơ sở dữ liệu, đây là không gian dành cho một mẫu thông tin trong bản ghi dữ liệu. Trong chương trình quản trị CSDL dạng bảng với dữ liệu được tổ chức theo hàng và cột, thì trường dữ liệu tương ứng với các cột. Như ở bảng Cơ quan, ta có các trường Tên cơ quan, Địa chỉ, Thành phố, Số điện thoại, Lĩnh vực hoạt động. RDBM - Relation Database Management (Quản lý cơ sở dữ liệu quan hệ): là một cách quản lý cơ sở dữ liệu, trong đó dữ liệu được lưu trữ trong các bảng dữ liệu hai chiều gồm các cột và các hàng, có thể liên quan với nhau nếu các bảng đó có một cột hoặc một trường chung nhau. Chương trình quản trị cơ sở dữ liệu: một chương trình ứng dụng trên máy tính cung cấp các công cụ để truy tìm, sửa chữa, xóa và chèn thêm dữ liệu. Các chương trình này cũng có thể dùng để thành lập một cơ sở dữ liệu và tạo ra các báo cáo, thống kê. Các chương trình quản trị cơ sở dữ liệu liên quan khá thông dụng hiện nay tại Việt Nam là Foxpro, Access cho ứng dụng nhỏ, DB 2, MS SQL và Oracle cho ứng dụng vừa và lớn. Bạn sử dụng tên cơ quan để liên kết giữa hai bảng Người Quen và Cơ Quan. Đôi lúc, bạn nhận thấy rằng tên cơ quan không phải là duy nhất. Rất có thể hai công ty FPT, một công ty hoạt động trong lĩnh vực xử lý thực phẩm và một công ty hoạt động trong lĩnh vực tin học. ở đây ta có khái niệm khóa (key). Primary key (khóa chính ) là một giá trị dùng để phân biệt bản ghi này với bản ghi khác. Giá trị của khóa chính trong mỗi bản ghi là duy nhất trong cả bảng (table). Có thể xem số chứng minh nhân dân như một khóa chính và không người nào giống người nào. Ngoài khóa chính ra còn có khóa ngoài (foreign key). Khóa ngoài là giá trị dùng để liên kết giữa các bảng và thiết lập mối quan hệ giữa các bản ghi trong các bảng khác nhau. Giả sử trong ví dụ, ta đặt ra mã số cơ quan và mã số cơ quan này duy nhất đối với mỗi cơ quan, bảng của ta sẽ như bảng 3. Trong bảng Cơ quan, Mã số cơ quan là khóa chính. Còn trong bảng Người quen, Mã số cơ quan là khóa ngoài và dùng để xác định cơ quan người đó làm việc. Thông thường, để xử lý dữ liệu trong CSDL quan hệ, người ta thường sử dụng một công cụ là Ngôn ngữ truy vấn có cấu trúc (Structured Query Language - SQL) để thực hiện các công việc như tìm kiếm thông tin, cập nhật thông tin mới, xóa bỏ thông tin cũ... Ví dụ: để chọn ra từ bảng Người quen những người làm việc tại cơ quan có mã số 001 (tức Bộ Giao Thông Vận Tải) ta sử dụng câu lệnh như sau: SELECT*FROM Nguoi_quen WHERE Ma_so_co_quan = 001 Kết quả trả về như bảng 5. Ngôn ngữ SQL là một bộ phận không thể thiếu của các chương trình quản trị cơ sở dữ liệu quan hệ. Đến đây có lẽ bạn đã mệt với nhiều khái niệm về cơ sở dữ liệu. Tuy nhiên chúng rất có ích. Nếu đi sâu nghiên cứu và thực hành hơn nữa, bạn sẽ còn tìm thấy nhiều điều lý thú và hữu dụng. Cơ sở dữ liệu là một lĩnh vực rất quan trọng của công nghệ thông tin mà nếu thiếu nó, nhiều vấn đề đặt ra sẽ khó mà giải quyết được.