Giáo trình môn học Cơ sở dữ liệu

pdf 76 trang Gia Huy 17/05/2022 2781
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình môn học Cơ sở dữ liệu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_mon_hoc_co_so_du_lieu.pdf

Nội dung text: Giáo trình môn học Cơ sở dữ liệu

  1. BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ Dự án giáo dục kỹ thuật và dạy nghề (VTEP) GIÁO TRÌNH Môn học: CƠ SỞ DỮ LIỆU Mã số: ITPGR14 NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ :Lành nghề Đà Lạt - 2007
  2. Tuyên bố bản quyền : Tài liệu này thuộc loại sách giáo trình Cho nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo . Mọi mục đích khác có ý đồ lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. Tổng Cục Dạy nghề sẽ làm mọi cách để bảo vệ bản quyền của mình. Tổng Cục Dạy Nghề cám ơn và hoan nghênh các thông tin giúp cho việc tu sửa và hoàn thiện tốt hơn tàI liệu này. Địa chỉ liên hệ: Dự án giáo dục kỹ thuật và nghề nghiệp Tiểu Ban Phát triển Chương trình Học liệu 2
  3. LỜI TỰA Đây là tài liệu được xây dựng theo chương trình của dự án giáo dục kỹ thuật và dạy nghề, để có đươc giáo trình này dự án đã tiến hành theo hai giai đoạn. Giai đoạn 1 : Xây dựng chương trình theo phương pháp DACUM, kết quả của gian đoạn này là bộ khung chương trình gồm 230 trang cấp độ 2 và 170 trang cấp độ 3. Giai đoạn 2 : 29 giáo trình và 29 tài liệu hướng dẫn giáo viên cho nghề lập trình máy tính 2 cấp độ. Để có được khung chương trình chúng tôi đã mời các giáo viên, các chuyên gia đang làm việc trong lĩnh vực công nghệ thông tin cùng xây dựng chương trình. Trong giai đoạn viết giáo trình chúng tôi cũng đã có những sự điều chỉnh để giáo trình có tính thiết thực và phù hợp hơn với sự phát triển của lĩnh vực công nghệ thông tin. Trong quá trình biên soạn, mặc dù đã cố gắng tham khảo nhiều tài liệu và giáo trình khác nhưng tác giả không khỏi tránh được những thiếu sót và hạn chế. Tác giả chân thành mong đợi những nhận xét, đánh giá và góp ý để cuốn giáo trình ngày một hoàn thiện hơn. Tài liệu này được thiết kế theo từng mô đun/ môn học thuộc hệ thống mô đun/môn học của một chương trình, để đào tạo hoàn chỉnh nghề Lập trình máy tính ở cấp trình độ bậc cao và được dùng làm Giáo trình cho học viên trong các khoá đào tạo, cũng có thể được sử dụng cho đào tạo ngắn hạn hoặc cho các công nhân kỹ thuật, các nhà quản lý và người sử dụng nhân lực tham khảo. Đây là tài liệu thử nghiệm sẽ được hoàn chỉnh để trở thành giáo trình chính thức trong hệ thống dạy nghề. Đà lạt ,tháng 10 năm 2007 3
  4. MỤC LỤC ĐỀ MỤC TRANG 1. LỜI TỰA 3 2. MỤC LỤC 4 3. GIỚI THIỆU VỀ MÔN HỌC 5 4. SƠ ĐỒ QUAN HỆ THEO TRÌNH TỰ HỌC NGHỀ 6 5. CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MÔ ĐUN/MÔN HỌC 8 6. YÊU CẦU VỀ ĐÁNH GIÀ HOÀN THÀNH MÔN HỌC 9 7. Bài 1:KHÁI NIỆM VỀ CSDL,CÁC MÔ HÌNH CSDL 10 8. Bài 2:BIỂU DIỄN CSDL MỨC VẬT LÝ 26 9. Bài 3:KHẢO SÁT BÀI TOÁN THỰC TẾ XÂY DỰNG THÀNH MỘT CSDL 36 10. Bài 4:NGÔN NGỮ SQL 51 11. Bài 5:QUẢN TRỊ CSDL THEO MÔ HÌNH CLIENT/SERVER 67 12. Bài 6:QUẢN TRỊ CSDL THEO MÔ HÌNH PHÂN TÁN 73 13. THUẬT NGỮ CHUYÊN MÔN 75 14. TÀI LIỆU THAM KHẢO 76 4
  5. GIỚI THIỆU VỀ MÔN HỌC Vị trí, ý nghĩa, vai trò môn học : Cơ sở dữ liệu là một khái niệm quan trọng trong công nghệ thông tin, hiện nay các bài toán quản lý dữ liệu điều thiết kế dụa trên một cơ sở dử liệu nào đó. Muốn lập trình quán lý học sinh bắ buộc phải nắm được các kiến thức cơ bản vè cơ sở dữ liệu Mục tiêu của môn học: Nắm được các đặc trưng, các thành phần cơ bản của một CSDL, biết tạo quan hệ giữa các bảng dựa vào trường liên kết và biết cách sử dụng các câu lệnh SQL để truy vấn từ một CSDL. Nắm các vấn đề cơ bản về kiến trúc CSDL ở mức vật lý, mức khái niệm và khung nhìn đối với người khai thác sử dụng CSDL. Biết vấn đề độc lập dữ liệu, đọc được các tài liệu thiết kế cơ sở dữ liệu và cơ bản biết phân tích, thiết kế một CSDL. Mục tiêu thực hiện của mô đun/môn học: - Định nghĩa được cơ sở dữ liệu và phân biệt được cơ sở dữ liệu logic và cơ sở dữ liệu vật lý. - Phân biệt được các mô hình cơ sở dữ liệu khác nhau, biết được rõ ưu điểm và nhược điểm của từng mô hình cơ sở dữ liệu. - Biết được các thành phần cơ bản của các mô hình quan hệ nói chung và mô hình quan hệ cơ sở dữ liệu nói riêng. - Phân biệt và sử dụng được các kiểu dữ liệu, thực hiện được các phép toán trên các kiểu dữ liệu. Có thể phân tích, thiết kế 1 cơ sở dữ liệu đáp ứng được yêu cầu của bài toán thực tế. Nội dung chính của môn học : 1. Khái niệm và các mô hình cơ sở dữ liệu 2. Biểu diễn CSDL mức vật lý 3. Khảo sát bài toán thực tế và xây dựng thành một cơ sở dữ liệu. 4. Ngôn ngữ SQL 5. Quản trị cơ sở dữ liệu trên mô hình Client/Server 6. Mô hình cơ sở dữ liệu phân tán 5
  6. Sơ đồ quan hệ theo trình tự học nghề Học kỳ I Học kỳ II Học kỳ III Học kỳ IV Giao diện Lập trình Lập trình Hệ thống người máy nâng cao Web máy tính Lập trình Phân tích thiết căn bản Lập trình hướng kế hệ thống đối tượng Mạng căn bản Thiết kế hướng đối tượng Kỹ năng tin học Cấu trúc dữ liệu và thuật giải văn phòng Kỹ năng Ứng dụng CNTT trong doanh nghiệp Giao tiếp Cơ sở dữ liệu Kỹ năng Công nghệ Internet & WWW phần mềm Cơ sở toán học Thiết kế Web Công nghệ Đa Quản lý dự án phương tiện phần mềm Lập trình Visual Basic Hệ cơ sở dữ Hướng dẫn đồ liệu Môi trường PT án tốt nghiệp Phần mềm 7Trang 6 Anh văn Phần cứng An toàn Thi cho tin học máy tính lao động tốt nghiệp
  7. Cơ sở dữ liệu là một trong những Modun bắc buộc với các học sinh học ngành công nghệ thông tin, có thể nói hầu hết các ứng dụng hiện nay điều viết trên một hệ quản trị cơ sở dữ liệu nào đó. Ngoài ra hệ quả trị cơ sở dữ liệu cũng là nơi cũng cấp các dữ liệu cho các ứng dụng khác. Cho dù công nghệ có thể thay đổi theo thời gian nhưng có thể nói rằng những khái niểm về cơ sở dữ liệu, những thao tác trên đó sẽ không có sự thay đổi đáng kể. 76 7
  8. CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MÔ ĐUN/MÔN HỌC Học trên lớp về lý thuyết của các thành phần của môi trường lập trình, giáo viên hướng dẫn học sinh ghi chép và tiếp thu bài. Giáo viên đưa ra các bào tập lớn, học sinh làm bài tập theo nhóm và bảo vệ kết quả trên lớp, giáo viên đặt những câu hỏi với học sinh để xác nhận tính trung thực của học sinh trong quá trình thực hiện bài tập lớn. 1 : Học lý thuyết trên lớp. Giáo viên giảng dạy tại phòng lý thuyết có sự hỗ trợ của các thiết bị đa phương tiện để giới thiệu mẫu cho học sinh 2. Làm bài tập lớn Kết thúc môn học, giáo viên đưa ra các bài tập lớn cho học sinh ( dạng đề tài thực tập) học sinh thực hiện thành từng nhóm, sau khi hoàn thành, học sinh sẽ bào vệ cho các sản phẩm của mình. Trong quá trình học sinh bảo vệ, giáo viên phải có những cân hỏi để xác định tình trung thực của đề tài như: đề tài này học sinh có tự làm hay nhờ người khác, các thành viên trong nhóm phân công làm việc như thế nào. 76 8
  9. YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔ ĐUN/MÔN HỌC Lý thuyết: Đánh giá thông qua kiểm tra trắc nghiệm : - Dùng phần mềm thi trắc nghiệm. - Kiểm tra trắc nghiệm có thể trên giấy hoặc trên máy tính. - Xây dựng ngân hàng câu hỏi, học viên sẽ nhận được một bộ để phát sinh ngâu nhiên và chất lượng các đề như nhau (trung bình, khá, giỏi, xuất sắc). - Thời gian làm bài tuỳ theo số lượng các câu trong đề. - Thang điểm 10 chia đều cho các câu. - Kết quả đánh giá dựa vào bài làm theo điểm đạt được. Thực hành: Đánh giá thông qua khả năng giải hoàn thành chương trình (đề kiểm tra) đề ra, khả năng giải quyết các bài toán đã đưa ra trong quá trình làm bài tập lớn thang điểm đánh giá 100. Thang điểm: (đánh giá câu hỏi trắc nghiệm) 0-49 : Không đạt 50-69 : Đạt trung bình 70-85 : Đạt khá 86-100 : Đạt Giỏi Thang điểm tổng hợp là thang điểm 100, tùy theo qui chế cụ thể sẽ có cách tính theo tỷ lệ thích hợp. 76 9
  10. BÀI 1 TÊN BÀI: KHÁI NIỆM VỀ CƠ SỞ DỮ LIỆU, CÁC MÔ HÌNH CƠ SỞ DỮ LIỆU MÃ BÀI: ITPRG 07.1 Giới thiệu: 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. Mục tiêu thực hiện: - Nắm được khái niệm về cơ sở dữ liệu. - Nắm vững cách thành phần về cơ sở dữ liệu - Phân biệt được các mô hình quản trị cơ sở dữ liệu, phân tích được ưu điểm và nhược điểm của các mô hình cơ sở dữ liệu. - Nhận định được sự khác nhau giữa việc dùng cơ sở dữ liệu để quản lý và các quản lý bằng các hệ thống tập tin - Biết được các kiểu dữ liệu thường dùng trong quản lý cơ sở dữ liệu. - Biết cách tính toán trên cơ sở dữ liệu Nội dung: 1.1 Khái niệm về cơ sở dữ liệu 1.2 Các thành phần của 1 cơ sở dữ liệu 76 10
  11. 1.3 Các mô hình cơ sở dữ liệu 1.4 So sánh sự khác nhau giữa quản lý bằng cơ sở dữ liệu và các hệ thống tập tin 1.5 Các kiểu dữ liệu. 1.6 Tính toán trên cơ sở dữ liệu 1.1 Khái niệm về cơ sở dữ liệu Cơ sở dữ liệu (database): là 1 hệ thống thông tin có cấu trúc được trữ trên các thiết bị lưu trữ thông tinthứ cấp như băng từ, đĩa từ có thể thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích khác nhau. Một CSDL biểu diễn một phần của thế giới thực (thế giới thu nhỏ). CSDL được thiết kế, xây dựng, và lưu trữ với một mục đích xác định, phục vụ cho một số ứng dụng và người dùng. Tập ngẫu nhiên của các dữ liệu không thể xem là một CSDL 1.2 Các thành phần của 1 cơ sở dữ liệu Bảng (table): 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. Bản ghi (record): 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. Trường dữ liệu (field): 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. 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). Một khóa chính (primary key) 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. 76 11
  12. 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ũ 1.3 Các mô hình cơ sở dữ liệu Nền tảng của cấu trúc CSDL là mô hình dữ liệu. Các mô hình dữ liệu là một sưu tập các công cụ khái niệm cho việc mô tả dữ liệu, các mối quan hệ dữ liệu, các ngữ nghĩa dữ liệu và các ràng buộc dữ liệu. Các mô hình dữ liệu khác nhau đã được đề xuất và được phân vào 3 nhóm chính: Mô hình cơ sở đối tượng: (Object-based Logical Models) Các mô hình logic lưu trữ đối tượng: o Mô tả dữ liệu ở mức logic và nhìn o Cung cấp các khả năng cấu trúc hóa khá linh động o Cho phép đặc tả những ràng buộc dữ liệu một cách rõ ràng o Có nhiều mô hình khác nhau thuộc loại này, một số được biết rộng rãi là: Mô hình quan hệ - thực thể (Entity – relationsgip model) Mô hình hướng đối tượng (Object – oriented model) Mô hình dữ liệu ngữ nghĩa (Sematic data model) Mô hình dữ liệu chức năng (Functional data model) Ta hãy xem xét hai mô hình quan trọng thường dùng là mô hình quan hệ - thực thể (E – R) và mô hình đối tượng Mô hình quan hệ - thực thể (E – R) được dựa trên sự nhận thức thế giới gồm gồm có một sưu tập các đối tượng căn bản, được gọi là các thực thể, và các mối quan hệ ở giữa các đối tượng này. Một thực thể là một đối tượng tồn tại có thể phân biệt được. Chẳng hạn một người là một thực thể, và các tài khoản ngân hàng cũng có thể được xem là các thực thể 76 12
  13. Các thực thể được mô tả trong một cơ sở dữ liệu bởi một tập các thuộc tính. Chẳng hạn số tài khoản và cân đối mô tả một tài khoản nào đó trong ngân hàng. Một quan hệ là một sự kết hợp trong số vài thực thể. Chẳng hạn như quan hệ gởi kết hợp một khách hàng với mỗi tài khoản mà anh ta hoặc cô ta có. Tập hợp tất cả các thực thể cùng một loại, và tập hợp các quan hệ của cùng một loại, được gọi là tập thực thể và tập quan hệ một cách tương ứng. Một thành phần chủ yếu khác của lược đồ Quan hệ - thực thể là ánh xạ lực lượng mà nó biểu diễn số lượng thực thể khác có thể được kết hợp với nó thông qua tập thực thể Cấu trúc logic tổng quát của một cơ sở dữ liệu có thể biểu diễn một cách đồ họa bởi lược đồ E – R mà nó được xây dựng bởi các thành phần sau đây: Hình chữ nhật: biểu diễn các tập thực thể. Hình Ellipse: Biểu diễn các thuộc tính Hình thoi: Biểu dễn các quan hệ trong số các tập thực thể Đường thẳng: Nối các thuộc tính với các tập thực thể và các tập thực thể với các quan hệ. Ví dụ: Duongphokh SoTK Số CMND Thanhphokh Can_doi Tenkh Khách hàng Gởi Tài khoản Hình 1.3 : mô hình cơ sở dữ liệu Mô hình hướng đối tượng: Dựa trên bộ sưu tập các đối tượng, giống mô hình E – R. 76 13
  14. Một đối tượng chứa các giá trị được lưu trữ trong các biến thể hiện bên trong đối tượng đó. Một đối tượng chứa phần mã mà chúng thao tác trên đối tượng đó. Những phần mã này gọi là các phương pháp. Những đối tượng chứa các giá trị cùng loại và các phương pháp như nhau được nhóm lại thành lớp. Một lớp có thể được xem như là định nghĩa loại đối với các đối tượng. Một đối tượng có thể truy xuất dữ liệu của một đối tượng khác chỉ bằng cách là cầu viện đến phương pháp của đối tượng đó. Hành động này được gọi là gửi thông báo đến đối tượng đó. Như vậy giao diện được gọi là các phương pháp của một đối tượng xác định phần thấy được bên ngoài của đối tượng đó. Phần bên trong của đối tượng – các biền thể hiện và mã phương pháp- là không thấy được từ bên ngoài. Ví dụ: Xem xét một đối tượng biểu diễn một tài khoản ngân hàng. Đối tượng chứa các biểu hiện là số tài khoản và cân đối Đối tượng chứa một phương pháp là trả tiền lãi mà nó cộng thêm các tiền lãi vào cân đối. Mô hình Logic cơ sở mẫu tin (Record – based Logical Models) Các mô hình logic cơ sở mẫu tin được chấp nhận rộng rãi là mô hình quan hệ (relational), mạng (Netword), và phân cấp (hierarchical) 1. Mô hình quan hệ (Relational) Mô hình quan hệ là gì ? Mô hình Cơ sở dữ liệu Quan hệ (gọi tắt là Mô hình Quan hệ) do E.F Codd đề xuất năm 1971. Mô hình này bao gồm: - Một hệ thống các ký hiệu để mô tả dữ liệu dưới dạng dòng và cột như quan hệ, bộ, thuộc tính, khóa chính, khoá ngoại, - Một tập hợp các phép toán thao tác trên dữ liệu như phép toán tập hợp, phép toán quan hệ. - ràng buộc toàn vẹn quan hệ. Các hệ HQTCSDLQH ngày nay được xây dựng dựa vào lý thuyết của mô hình quan hệ. Mục đích của môn học này giúp cho sinh viên nắm được kiến trúc tổng quát về mô hình quan hệ và áp dụng nó để lập mô hình dữ liệu quan hệ có hiệu quả trong lưu trữ và khai thác. 76 14
  15. Chẳng hạn với bài toán quản lý điểm thi của sinh viên; nếu lưu trữ dữ liệu theo dạng bảng với các cột MASV, HOTEN, MONHOC,TENKHOA, DIEMTHI thì các gía trị của các cột HOTEN, MONHOC, TENKHOA sẽ bị trùng lắp. Sự trùng lắp này gây nên một số vấn đề: - Ta không thể lưu trữ một sinh viên mới khi sinh viên này chưa có điểm thi - Khi cần sửa đổi họ tên sinh viên thì ta phải sửa tất cả các dòng có liên quan đến sinh viên này. Điều này dễ gây ra tình trạng dữ liệu thiếu nhất quán. - Khi có nhu cầu xóa điểm thi của một sinh viên kéo theo khả năng xóa luôn họ tên sinh viên đó. Việc lưu trữ dữ liệu như trên không đúng với mô hình quan hệ. Để lưu trữ đúng với mô hình quan hệ ta phải thay MONHOC bằng MAMH, thay TENKHOA bằng MAKHOA, tách một bảng dữ liệu lớn đó ra thành nhiều bảng con, như mô hình dưới. 2 Các khái niệm cơ bản của mô hình quan hệ i Thuộc tính (Attribute, Arity) Chẳng hạn với bài toán quản lý điểm thi của sinh viên; với đôi tượng sinh viên ta cần phải chú ý đến các đặc trưng riêng như họ tên, ngày sinh, nữ (giới tính), tỉnh thường trú, học bổng, lớp mà sinh viên theo học,. . . các đặc trưng này gọi là thuộc tính. Các thuộc tính được phân biệt qua tên gọi và phải thuộc vào một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng, logic, hình ảnh, ). Kiểu dữ liệu ở đây là kiểu đơn. Trong cùng một đối tượng không được có hai thuộc tính cùng tên. Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập con của kiểu dữ liệu và tập hợp con đó gọi là miền giá trị của thuộc tính đó. Thuộc tính ngày trong tháng thì có kiểu dữ liệu là số nguyên, miền giá trị của nó là 1 đến (tối đa là) 31. Hoặc điểm thi của sinh viên chỉ là các số nguyên từ 0 đến 10. Thường người ta dùng các chữ cái hoa A,B,C, để biểu diễn các thuộc tính, hoặc A1,A2, ., An để biểu diễn một số lượng lớn các thuộc tính. ii Lược Đồ Quan Hệ (Relation Schema) Tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với mối liên hệ giữa chúng được gọi là lược đồ quan hệ. Lược đồ quan hệ Q với tập thuộc tính {A1,A2, ,An} được viết là Q(A1,A2, ,An). Tập các thuộc tính của Q được ký hiệu là Q+. Chẳng hạn lược đồ quan hệ sinh viên (Đặt tên là Sv) với các thuộc tính như trên là: Sv(MASV, HOSV,TENSV,NU, NGAYSINH, MALOP, HOCBONG, TINH) Thường khi thành lập một lược đồ, người thiết kế luôn gắn cho nó một ý nghĩa nhất định, ý nghĩa đó gọi là tân từ của lược đồ quan hệ đó. Dựa vào tân từ người ta xác 76 15
  16. định được tập thuộc tính khóa của lược đồ quan hệ (khái niệm khoá sẽ được trình bày ở phần sau). Khi phát biểu tân từ cho một lược đồ quan hệ, người thiết kế cần phải mô tả đầy đủ ý nghĩa để người khác tránh hiểu nhầm. Chẳng hạn tân từ của lược đồ quan hệ trên là:”mỗi sinh viên có một mã sinh viên (MASV) duy nhất, mỗi mã sinh viên xác định tất cả các thuộc tính của sinh viên đó như họ tên (HOTEN), nữ (NU) ,ngày sinh (NGAYSINH), lớp theo học (MALOP), học bổng (HOCBONG), tỉnh cư trú (TINH). Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý được gọi là một lược đồ cơ sở dữ liệu. Ví dụ lược đồ cơ sở dữ liệu để quản lý điểm sinh viên có thể gồm các lược đồ quan hệ sau: Sv(MASV, HOSV,TENSV, NU, NGAYSINH, MALOP, TINH, HOCBONG) Lop(MALOP,TENLOP,SISO,MAKHOA) Kh(MAKHOA,TENKHOA, SOCBGD) Mh(MAMH, TENMH, SOTIET) Kq(MASV, MAMH, DIEMTHI) Phần giải thích các thuộc tính: MASV Mã sinh viên HOTEN Tên sinh viên NU Nữ NGAYSINH ngày sinh LOP lớp TENLOP tên lớp SISO sỉ số lớp MAKHOA mã khoa HOCBONG học bổng TINH tỉnh TENKHOA tên khoa SOCBGD số cán bộ giảng dạy MAMH mã môn học 76 16
  17. TENMH tên môn học SOTIET số tiết DIEMTHI điểm thi Iii : Quan Hệ (Relation) Sự thể hiện của lược đồ quan hệ Q ở một thời điểm nào đó được gọi là quan hệ, rõ ràng là trên một lược đồ quan hệ có thể định nghĩa rất nhiều quan hệ. Thường ta dùng các ký hiệu như R, S, Q để chỉ các lược đồ quan hệ, còn quan hệ được định nghĩa trên nó tương ứng được ký hiệu là là r, s, q. iv : Bộ (Tuple) Bộ là tập mỗi giá trị liên quan của tất cả các thuộc tính của một lược đồ quan hệ. Chẳng hạn quan hệ sau có 2 bộ. Thường người ta dùng các chữ cái thường (như t,p,q, ) để biểu diễn các bộ. Chẳng hạn để nói bộ t thuộc quan hệ r ta viết: t r. Về trực quan thì mỗi quan hệ xem như một bảng, trong đó mỗi cột là thông tin về một thuộc tính, mỗi dòng là thông tin về một bộ. Chẳng hạn sau đây là các thể hiện của các quan hệ định nghĩa trên lược đồ cơ sở dữ liệu quản lý sinh viên ở trên: v : Khóa (Key, Candidate Key): Cho lược đồ quan hệ R, SR+. S được gọi là một siêu khóa (superkey) của lược đồ quan hệ R nếu với hai bộ tùy ý trong quan hệ R thì giá trị của các thuộc tính trong S là khác nhau. Một lược đồ quan hệ có thể có nhiều siêu khoá. Siêu khoá chứa ít thuộc tính nhất được gọi là khóa chỉ định, trong trường hợp lược đồ quan hệ có nhiều khóa chỉ định, thì khóa được chọn để cài đặt gọi là khóa chính (Primary key) (trong các phần sau khóa chính được gọi tắt là khóa) Các thuộc tính tham gia vào một khóa được gọi là thuộc tính khóa (prime key), ngược lại được gọi là thuộc tính không khóa (non prime key). Một thuộc tính được gọi là khóa ngoại nếu nó là thuộc tính của một lược đồ quan hệ này nhưng lại là khóa chính của lược đồ quan hệ khác. Ví dụ: Ta hãy xem lược đồ quan hệ sau: 76 17
  18. Xe(SODANGBO,QUICACH,INHDANG,MAUSAC,SOSUON,SOMAY,MAXE,QUO CGIA) Siêu khóa: (SOSUON,QUICACH), Khóa chỉ định: (SODANGBO,QUOCGIA), (SOSUON), (SOMAY), (MAXE) Khóa chính: MAXE Thuộc tính khóa: SODANGBO,QUOCGIA, SOSUON, SOMAY, MAXE Thuộc tính không khóa: QUICACH, HINHDANG, MAUSAC Khóa của Sv là (MASV), Khoá của Mh là (MAMH), khoá của Kh là (MAKHOA), khóa của Kq là (MASV,MAMH) khóa của Lop là MALOP, trong Lop thuộc tính MAKHOA là khóa ngoại 2. Mô hình mạng: Có những đặc điểm sau: o Dữ liệu được biểu diễn bởi các sưu tập các mẫu tin o Các quan hệ ở giữa các dữ liệu được biểu diễn bởi các liên kết o Các mẫu tin trong CSDL được tổ chức như là các sưu tập đồ thị 3. Mô hình phân cấp Có những đặc điểm sau: Tương tự mô hình mạng (dữ liệu – mẫu tin, quan hệ - liên kết) Các mẫu tin trong CSDL được tổ chức như là các sưu tập cây, thay vì đồ thị Mô hình dữ liệu vật lý: (Physical Data Models) Được dùng để mô tả dữ liệu ở mức thấp nhất. Ngược lại với mô hình logic, có rất ít mô hình dữ liệu vật lý được dùng. Hai mô hình được biết đến rộng rãi là mô hình hợp nhất và mô hình ký ức khung Mô hình dữ liệu vật lý còn liên quan đến những vấn đề thực hiện hệ thống CSDL. Chúng ta sẽ không xme xét các mô hình dữ liệu vật lý trong giáo trình này. 1.4 So sánh sự khác nhau giữa quản lý bằng cơ sở dữ liệu và các hệ thống tập tin Hệ thống tập tin cổ điển: (File System): 76 18
  19. Cho đến nay vẫn có một số đơn vị kinh tế, hành chính sự nghiệp sử dụng mô hình hệ thống tập tin cổ điển: chúng được tổ chức riêng lẽ, phục vụ cho một mục dích của đơn vị hay một đơn vị con trực thuộc cụ thể. Ưu điểm: Việc xây dựng các hệ thống tập tin riêng tại từng đơn vị quản ví ít tốn thời gian bởi khối lượng thông tin cần quản lý và khai thác là nhỏ, không đòi hỏi đầu tư vật chất và chất xám nhiều, do đó triển khai ứng dụng nhanh Thông tin được khai thác chỉ phục vụ cho một mục đích hẹp nên khả năng đáp ứng nhanh chóng, kịp thời Nhược điểm: Do thông tin được tổ chức ở mỗi phòng ban là khác nhau, cũng như phần mềm công cụ để triển khai mổi nơi là khác nhau nên sự phối hợp tổ chức và khai thác ở các phòng ban là khó khăn. Thông tin ở phòng ban nà không sử dụng cho phòng ban khác, tại đơn vị con với đơn vị cấp trên. Cùng một thông tin nhập vào máy tại nhiều đơn vị khác nhau gây ra lãng phí công sức nhập tin và không gian lưu trữ các vật mang tin Tông tin được tổ chức ở nhiều nơi nên việc cập nhật cũng dễ làm mất tính nhất quan dữ liệu Do hệ thống được tổ chức thành các file riêng lẽ nên thiếu sự chia sẽ thông tin ở các nơi Do đó, tiếp cận CSDL đã giải quyết 3 vấn đề của hệ tập tin theo lối cũ: Vấn đề 1: Cấu trúc Logic và cấu trúc vật lý Kiến trúc bên trong hệ quản trị CSDL quan hệ tách biệt rõ ràng giữa: - Cấu trúc luận lý của tất cả tập tin và chương trình ứng dụng khai thác tập tin này và cấu trúc vật lý của CSDL và phần lưu trữ các tập tin. Tiếp cận này tạo cho người quản trị CSDL có thể thay đổi cấu trúc vật lý hay nơi lưu trữ của tập tin mà không ảnh hưởng đến chương trình ứng dụng. Vấn đề 2: Dư thừa dữ liệu Khi hệ quản trị CSDL quan hệ được giới thiệu, nhiều tổ chức mong tích hợp các tập tin đã phân tán khắp trong tổ chức vào một CSDL tập trung. Dữ liệu có thể chia sẻ cho nhiều ứng dụng khác nhau và người sử dụng có thể khai thác đồng thời các tập con dữ liệu liên quan đến họ. Điều này làm hạn chế sự dư thừa dữ liệu. Vấn đề 3: Sự khai thác dữ liệu của người sử dụng Trong hệ quản trị CSDL quan hệ người dùng có thể trực tiếp khai thác dữ liệu thông qua việc sử dụng các câu truy vấn hay các công cụ báo cáo được cung cấp bởi hệ quản trị CSDL. 76 19
  20. 1.5 Các kiểu dữ liệu. Mỗi trường dữ liệu phải được định kiểu dữ liệu. Trong quản lý CSDL, trường dữ liệu có thể nhận một trong các kiểu dữ liệu sau: TT Kiểu dữ liệu Độ lớn Lưu trữ Số: số thực, số nguyên theo 1 Number Tùy thuộc kiểu cụ thể nhiều kiểu Autonumber Số nguyên tự động được đánh 2 4 bytes số. 3 Text tuỳ thuộc độ dài xâu Xâu ký tự 4 Yes/No 1 bytes Kiểu logic 5 Date/Time 8 bytes Lưu trữ ngày, giờ Lưu trữ dữ liệu kèm ký hiệu 6 Currentcy Sing tiền tệ 7 Memo tuỳ thuộc giá trị kiểu ghi nhớ Lưu trữ các siêu liên kết 8 Hyperlink tuỳ thuộc độ dài xâu (hyperlink) Âm thanh, hình ảnh, đồ hoạ, 9 OLE tuỳ thuộc dữ liệu (Objects) 1.6 Tính toán trên cơ sở dữ liệu Phép Chọn (Selection) + Cho lược đồ quan hệ Q(A1,A2, ,An), r là một quan hệ trên Q. X Q và E là một mệnh đề logic được phát biểu trên tập X. Phần tử t r thỏa mãn điều kiện E ký hiệu là t(E). 76 20
  21. Phép chọn từ r theo điều kiện E sẽ tạo thành một lược đồ quan hệ Q’ như sau: Q’+ = Q+ r’= r(E)= r:E ={t | t r và t(E)} phép chọn chính là phép rút trích dữ liệu theo dòng (chiều ngang) Ví dụ: Hình : 1.6.1: phép chọn Phép hợp (Union operation) Cho hai lược đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1, A2, , An}. r1 và r2 lần lượt là hai quan hệ trên Q1 và Q2. Phép hợp của hai lược đồ quan hệ Q1 và Q2 sẽ tạo thành một lược đồ quan hệ Q3. Q3 được xác định như sau: + Q3 = {A1, A2, , An} r3= r1+r2 = {t | t r1 hoặc t r2} Ví dụ: hình 1.6.2 : phép hợp Phép Trừ (Minus, difference) Cho hai lược đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1, A2 , , An}. r1 và r2 lần lượt là hai quan hệ trên Q1 và Q2. Phép trừ lược đồ quan hệ Q1 cho Q2 sẽ tạo thành một lược đồ quan hệ Q3 như sau: 76 21
  22. + Q3 ={A1,A2, ,An} r3 = r1 - r2= {t | t r1 và t ∉ r2} Ví dụ: Hình 1.6.3 : phép trừ Tích Descartes (Cartesian Product, product) Cho hai lược đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm). r1 và r2 lần lượt là hai quan hệ trên Q1 và Q2. Tích Descartes của hai lược đồ quan hệ Q1 và Q2 sẽ tạo thành một lược đồ quan hệ Q3 như sau: + + + Q3 = Q1  Q2 = {A1, , B1, } r3 = r1 x r2 = {(t1, t2)| t1 r1 và t2 r2} Ví dụ: P h é p c h i Hình 1.6.4 : phép tích a (division): Cho hai lược đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm). r1 và r2 lần lượt là hai quan hệ trên Q1 và Q2. Ai và Bj lần lượt là các thuộc tính của Q1 và Q2 sao cho n>m. Phép chia Q1 và Q2 sẽ tạo thành một lược đồ quan hệ Q3 như sau: + Q3 = {A1, ,An-m} 76 22
  23. r3 = r1÷r2 = {t3|t2 r2, t1 r1 t3=t1.{A1, ,An-m} t2 = t1.{An-m+1, ,An}} Ví dụ: Hình 1.6.5 : division Phép kết, Phép Kết Tự Nhiên (join, natural join): Cho hai lược đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm). r1 và r2 lần lượt là hai quan hệ trên Q1 và Q2. Ai và Bj lần lượt là các thuộc tính của Q1 và Q2 sao cho MGT(AI) = MGT(BJ) (MGT: miền giá trị). θ là một phép so sánh trên MGT(AI). Phép kết giữa Q1 và Q2 sẽ tạo thành một lược đồ quan hệ Q3 như sau: + + + Q3 = Q1  Q2 r3 = r1 AiθBj r1|><| r2 = {t12|t1 r1,t2 r2 sao cho + t12.Q1 = t1 + t12.Q2 = t2 t1.Ai θ t2.Bj} 76 23
  24. Ta rút ra các bước cụ thể để thực hiện phép kết như sau: - Tạo tích descartes - Thực hiện phép chọn theo điều kiện E=Ai θ Bj Ví dụ: Hình 1.6.6:phép kết, phép kết tự nhiên Phép Chiếu (Projection) + Cho một lược đồ quan hệ Q(A1,A2, ,An). r là quan hệ trên Q. X  Q . Phép chiếu của Q lên tập thuộc tính X sẽ tạo thành lược đồ quan hệ Q’= Q[X], trong đó Q’+ chính là X và r’ chính là r nhưng chỉ lấy các thuộc tính của X. Q’+ = X r’ = r[X] = r.X = {t’| t r và t.X = t[X] = t’} phép chiếu chính là phép rút trích dữ liệu theo cột (chiều dọc) Ví dụ: Hình 1.6.7 : phép chiếu 76 24
  25. Phép Giao (Intersection): Cho hai lược đồ quan hệ Q1 v Q2 có cùng tập thuộc tính {A1,A2, ,An}. r1 v r2 lần lượt là hai quan hệ trên Q1 v Q2. Phép giao của hai lược đồ quan hệ Q1 v Q2 sẽ tạo thnh một lược đồ quan hệ Q3 như sau: + Q3 ={A1,A2, ,An} r3 = r1 * r2= {t | t r1 v t r2} Ví dụ:ài 2 Hình 1.6.8 : phép giao Bài tập R A B C S B C D Q D E F a2 b2 c1 b2 c1 d1 d1 E1 f1 a1 b2 c1 b2 c1 d2 d2 E1 f2 a2 b3 c2 b1 c2 d3 d2 E2 f3 Hãy thực hiện các phép toán đại số quan hệ sau: a. A=a2(R*S) e. R x S b. ABC(R*S*Q) f. R * B = b1(S) c. BC(R)  BC(S) g. B(B=b2(R*S)) d. BC(R)  BC(S) h. D=d1(BCD(S*Q)) 76 25
  26. BÀI 2 TÊN BÀI: BIỂU DIỄN CƠ SỞ DỮ LIỆU MỨC VẬT LÝ MÃ BÀI: ITPRG 07.2 Mục tiêu thực hiện: - Mô tả cấu trúc lưu trữ vật lý và các phép toán cập nhật dữ liệu, sử dụng các kỹ thuật hỗ trợ: tệp băm (Hashed file), tệp chỉ dẫn (index) trong tìm kiếm bản ghi, các thao tác thêm, bớt và cập nhật dữ liệu. - Xây dựng cấu trúc lưu trữ theo mô hình quan hệ, thuộc tính, bộ thuộc tính (bản ghi) Nội dung: 2.1 Mô tả cấu trúc lưu trữ vật lý và các phép toán cập nhật dữ liệu, sử dụng các kỹ thuật hỗ trợ: tệp băm (Hashed file), tệp chỉ dẫn (index) trong tìm kiếm bản ghi, các thao tác thêm, bớt và cập nhật dữ liệu. Mức vật lý ( Physical level ): Mức thấp nhất của sự trừu tượng, mô tả dữ liệu hiện được lưu trữ thế nào. Ở mức này, cấu trúc dữ liệu mức thấp, phức tạp được mô tả chi tiết. 2.2 Xây dựng cấu trúc lưu trữ theo mô hình quan hệ, thuộc tính, bộ thuộc tính 1 Giới thiệu mô hình thực thể kết hợp Các nhà phân tích thiết kế hệ thống thông tin thường xây dựng lược đồ cơ sở dữ liệu từ mô hình thực thể kết hợp và mô hình này lại được xây dựng từ phần đặc tả vấn đề của một bài toán thực tế. Hình 2.1 : mô hình thực thể kết hợp 76 26
  27. Lược đồ cơ sở dữ liệu xây dựng theo hướng này thông thường đạt tối thiểu dạng chuẩn 3 (3NF: third normal form) nghĩa là ở dạng có sự dư thừa dữ liệu ở mức tối thiểu, còn môn CSDL xây dựng lược đồ CSDL đạt dạng chuẩn 3 từ lược đồ cơ sở dữ liệu chưa đạt dạng chuẩn có kèm các tân từ Ta hãy xem ví dụ sau: i : Ví dụ – Mối quan hệ một-nhiều (a) Đặc tả vấn đề Những người phụ trách đào tạo của Trường cao đẳng cộng đồng núi Ayers mong muốn tạo lập một CSDL về các môn đào tạo của trường (như: chứng chỉ leo núi, công nghệ bay) và học viên ghi danh vào những môn học này. Trường cũng có qui định là cùng một lúc, học viên chỉ có thể ghi danh vào một môn học. Họ chỉ quan tâm về dữ liệu của đợt ghi danh hiện tại. Một khi học viên kết thúc môn học thì nhà trường sẽ không còn quan tâm đến họ và những học viên này phải được xóa khỏi CSDL. Thông tin cần lưu trữ về một học viên bao gồm: mã học viên, tên học viên, địa chỉ, ngày sinh, số điện thoại, ngày nhập học Thông tin về môn học gồm mã môn học, tên môn học, thời lượng Phân tích: - phần đặc tả vấn đề chứa đựng các qui tắc quản lý và dữ liệu yêu cầu của vấn đề. - dữ liệu của vấn đề là: chi tiết về học viên có mã học viên, tên học viên, địa chỉ, ngày sinh, số điện thoại và ngày nhập học chi tiết về môn học có mã môn học, tên môn học và thời lượng. - qui tắc quản lý gồm: + Cùng một lúc, một học viên chỉ có thể ghi danh vào một môn học. + Nhiều học viên có thể ghi danh vào một môn học. + Nhà trường chỉ quan tâm đến những học viên của môn học hiện tại. (b) Mô hình thực thể kết hợp (Mô hình ER) 76 27
  28. Hình 2.2 : mối quan hệ một nhiều Các tính chất trong mô hình thực thể kết hợp: - Hình chữ nhật được gọi là tập thực thể. Tên của tập thực thể được ghi bên trong hình chữ nhật và dùng danh từ để đặt tên cho tập thực thể. - Đường nối giữa hai tập thực thể được gọi là mối quan hệ (mối kết hợp). Mối quan hệ trong vấn đề trên là mối quan hệ một-nhiều (1:M). Nội dung của mối quan hệ được diễn tả theo hai chiều: “ghi danh vào”, “được ghi danh bởi” và chúng diễn tả hai nội dung sau: + Mỗi HỌC VIÊN có thể ghi danh vào một MÔN HỌC + Mỗi MÔN HỌC phải được ghi danh bởi một hay nhiều HỌC VIÊN - Các dữ liệu ghi bên cạnh tập thực thể được gọi là thuộc tính. Chúng cung cấp thông tin chi tiết về tập thực thể. Có hai loại thuộc tính: - Thuộc tính nhận diện là thuộc tính để phân biệt thực thể này với thực thể kia trong tập thực thể. - Thuộc tính mô tả là thuộc tính cung cấp thông tin chi tiết hơn về thực thể trong tập thực thể. - Mối quan hệ của vấn đề trên là mối quan hệ một-nhiều. Tính chất này của mối quan hệ gọi là tính kết nối của mối quan hệ. Tính kết nối một-nhiều rất phổ biến trong mô hình thực thể kết hợp. Hai loại kết nối còn lại ít phổ biến hơn nhưng không kém phần quan trọng là mối quan hệ một-một và mối quan hệ nhiều-nhiều. ii Ví dụ – mối quan hệ một-một (a) Đặc tả vấn đề Phòng cảnh sát mong muốn quản lý lý lịch cá nhân những người lái xe và bằng lái của họ. Một người chỉ lấy được một bằng lái và một bằng lái chỉ thuộc về một người. Thông tin về lái xe mà phòng cảnh sát quan tâm là: mã người lái xe, tên, địa chỉ, ngày sinh Thông tin về bằng lái cần lưu trữ là: mã bằng lái, loại bằng lái, ngày hết hạn 76 28
  29. (b) Mô hình thực thể kết hợp Hình 2.3 : mối quan hệ một một mỗi NGƯỜI LÁI XE phải sở hữu một BẰNG LÁI - mỗi BẰNG LÁI phải được sở hữu bởi một NGƯỜI LÁI XE iii Ví dụ – mối quan hệ nhiều-nhiều (a) Đặc tả vấn đề Người phụ trách đào tạo Trường cao đẳng cộng đồng núi xanh mong muốn thiết lập một csdl về các môn học mà họ cung cấp (như chứng chỉ leo núi, cử nhân công nghệ bay) và các học viên ghi danh vào các môn học này. Nhà trường qui định là một học viên được ghi danh học tối đa ba môn học (b) Mô hình thực thể kết hợp (Mô hình ER) Các tính chất trong mô hình thực thể kết hợp: - Hình chữ nhật được gọi là tập thực thể. Tên của tập thực thể được ghi bên trong hình chữ nhật và dùng danh từ để đặt tên cho tập thực thể. - Đường nối giữa hai tập thực thể được gọi là mối quan hệ (mối kết hợp). Mối quan hệ trong vấn đề trên là mối quan hệ một-nhiều (1:M). Nội dung của mối quan hệ được diễn tả theo hai chiều: “ghi danh vào”, “được ghi danh bởi” và chúng diễn tả hai nội dung sau: + Mỗi HỌC VIÊN có thể ghi danh vào một MÔN HỌC + Mỗi MÔN HỌC phải được ghi danh bởi một hay nhiều HỌC VIÊN 76 29
  30. - Các dữ liệu ghi bên cạnh tập thực thể được gọi là thuộc tính. Chúng cung cấp thông tin chi tiết về tập thực thể. Có hai loại thuộc tính: - Thuộc tính nhận diện là thuộc tính để phân biệt thực thể này với thực thể kia trong tập thực thể. - Thuộc tính mô tả là thuộc tính cung cấp thông tin chi tiết hơn về thực thể trong tập thực thể. - Mối quan hệ của vấn đề trên là mối quan hệ một-nhiều. Tính chất này của mối quan hệ gọi là tính kết nối của mối quan hệ. Tính kết nối một-nhiều rất phổ biến trong mô hình thực thể kết hợp. Hai loại kết nối còn lại ít phổ biến hơn nhưng không kém phần quan trọng là mối quan hệ một-một và mối quan hệ nhiều-nhiều. ii Ví dụ – mối quan hệ một-một (a) Đặc tả vấn đề Phòng cảnh sát mong muốn quản lý lý lịch cá nhân những người lái xe và bằng lái của họ. Một người chỉ lấy được một bằng lái và một bằng lái chỉ thuộc về một người. Thông tin về lái xe mà phòng cảnh sát quan tâm là: mã người lái xe, tên, địa chỉ, ngày sinh Thông tin về bằng lái cần lưu trữ là: mã bằng lái, loại bằng lái, ngày hết hạn (b) Mô hình thực thể kết hợp - mỗi NGƯỜI LÁI XE phải sở hữu một BẰNG LÁI - mỗi BẰNG LÁI phải được sở hữu bởi một NGƯỜI LÁI XE iii Ví dụ – mối quan hệ nhiều-nhiều (a) Đặc tả vấn đề Người phụ trách đào tạo Trường cao đẳng cộng đồng núi xanh mong muốn thiết lập một csdl về các môn học mà họ cung cấp (như chứng chỉ leo núi, cử nhân công nghệ bay) và các học viên ghi danh vào các môn học này. Nhà trường qui định là một học viên được ghi danh học tối đa ba môn học trong cùng một lúc. Họ chỉ quan tâm đến dữ liệu của môn học hiện tại. Một khi học viên kết thúc môn học, họ sẽ không còn thuộc diện quản lý của nhà trường và phải được xóa khỏi csdl trừ khi học viên này ghi danh học tiếp môn mới. Thông tin về một học viên gồm: mã học viên, tên học viên, địa chỉ, ngày sinh, số điện thoại, ngày nhập học Thông tin về môn học gồm: mã môn học, tên môn học, thời lượng 76 30
  31. (b) Mô hình ER hình 2.4 : mối quan hệ nhiều nhiều + Mỗi HỌC VIÊN có thể ghi danh vào một hay nhiều MÔN HỌC + Mỗi MÔN HỌC phải được ghi danh bởi một hay nhiều HỌC VIÊN Mô hình ER trên có mối quan hệ nhiều nhiều. (c) Loại bỏ tính kết nối nhiều nhiều (nếu được) Mô hình trên gặp phải khuyết điểm sau: - Ngày nhập học là thuộc tính gắn liền với tập thực thể HỌC VIÊN sẽ không hợp lý vì không diễn tả được trường hợp học viên học cùng lúc nhiều môn học. - Còn nếu ngày nhập học là thuộc tính của MÔN HỌC thì không diễn tả được tình trạng cùng môn học nhưng có các ngày nhập học khác nhau. Hình 2.5 : loại bỏ tình kết nối nhiều nhiều Để giải quyết vấn đề này ta phải đưa vào: - một tập thực thể làm trung gian giữa HỌC VIÊN và MÔN HỌC gọi là tập kết hợp PHIẾU GHI DANH. - Thuộc tính nhận diện của tập kết hợp là sự kết hợp giữa thuộc tính nhận diện của tập thực thể HỌC VIÊN và MÔN HỌC - thuộc tính mô tả của tập kết hợp PHIẾU GHI DANH là ngày nhập học 76 31
  32. - tính kết nối của tập kết hợp với tập thực thể là một-nhiều Nội dung của mối quan hệ giữa các tập thực thể là: - mỗi HỌC VIÊN có thể có một hay nhiều PHIẾU GHI DANH - mỗi PHIẾU GHI DANH phải thuộc về một HỌC VIÊN - mỗi PHIẾU GHI DANH phải ghi nhận đào tạo về một MÔN HỌC - mỗi MÔN HỌC có thể được ghi nhận đào tạo bởi một hay nhiều PHIẾU GHI DANH Các qui tắc phải tuân thủ khi thêm tập kết hợp làm trung gian để loại bỏ tính kết nối nhiều nhiều: - Phải nhận diện được thuộc tính mô tả của tập kết hợp. - Nếu có thuộc tính mô tả thì tạo tập kết hợp làm trung gian giữa hai tập thực thể. - Nếu không có thuộc tính mô tả thì vẫn giữ nguyên mô hình như hình 1.4.4 2 Chuyển từ mô hình thực thể kết hợp sang lược đồ CSDL. i Qui tắc chung Khi biến đổi mô hình ER thành các mô hình quan hệ ta áp dụng các qui tắc sau: - Mỗi tập thực thể trong mô hình ER được chuyển thành một lược đồ quan hệ. - Mỗi thuộc tính trong mô hình ER được chuyển thành thuộc tính trong lược đồ quan hệ tương ứng - Mỗi thuộc tính nhận diện trong mô hình ER được chuyển thành khóa chính trong lược đồ quan hệ tương ứng. - Mỗi mối quan hệ trong ER được chuyển thành khóa ngoại theo qui tắc sau ii Qui tắc chuyển mối quan hệ thành khóa ngoại (a) Mối quan hệ một-một Chuyển khóa chính từ quan hệ 1 sang quan hệ 2 hay ngược lại. Ví dụ vấn đề người lái xe và bằng lái sẽ có mô hình quan hệ là một trong hai mô hình quan hệ sau 76 32
  33. Hình 2.6 : mối quan hệ một – một (b) Mối quan hệ một-nhiều Chuyển khóa chính từ bên một sang bên nhiều. hình 2.7 : mối quan hệ một – nhiều © Mối quan hệ nhiều nhiều đến tập kết hợp Hình 2.8 : quan hệ nhiều nhiều đến tập kết hợp 76 33
  34. Trong quan hệ PHIẾU GHI DANH có các khóa chính khóa ngoại như sau: + mã học viên là khóa ngoại + mã môn học là khóa ngoại + mã học viên và mã môn học là khóa chính (d) Mối quan hệ nhiều-nhiều Tạo một quan hệ mới có khóa chính là sự kết hợp các khóa chính của hai quan hệ có tính kết nối nhiều nhiều. Ví dụ giả sử Trường Cao Đẳng Cộng Đồng Núi Xanh không quan tâm đến ngày nhập học của học viên thì mô hình ER sẽ có mối quan hệ nhiều nhiều như sau: Hình : 2.9 : mối quan hệ nhiều nhiều Bài tập Cho các quan hệ với lược đồ sau: HH(HH#, TenHH, SoLuong, NgaySX, ChungLoai, NSX#) và NSX (NSX#, TenNSX) Trong đó: HH#: Mã hàng hoá. TenHH: Tên hàng. SoLuong: Số Lượng. NgaySX: Ngày sản xuất. ChungLoai: Chủng loại hàng hoá. NSX#: Mã Nhà sản xuất. TenNSX: Tên Nhà sản xuất. Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL: a. Cho biết tên hàng, chủng loại của những mặt hàng có số lượng lớn hơn 50 và sản xuất trước ngày 1/1/2000. b. Cho biết mã hàng, tên nhà sản xuất của tất cả các mặt hàng. c. Cho biết tên hàng do nhà sản xuất LG cung cấp. Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL: d. Cho biết tổng số mặt hàng hiện có trong cơ sở dữ liệu. 76 34
  35. Cho biết mã hàng, tên hàng của các mặt hàng có số lượng ít nhất. 76 35
  36. Bài 3 T ÊN BÀI: KHẢO SÁT BÀI TOÁN THỰC TẾ XÂY DỰNG THÀNH MỘT CƠ SỞ DỮ LIỆU MÃ BÀI: ITPRG 07.3 Mục tiêu thực hiện: - Khảo sát được bài toán thực tế, nắm bắt được các yêu cầu giải quyết của bài toán - Tạo được các đối tượng của cơ sở dữ liệu (xác định các trường của cơ sở dữ liệu, các kiểu dữ liệu phù hợp). - Xác định được các loại khóa của cơ sở dữ liệu. - Xác định được mối liện hệ giữa các khoá cho cơ sở dữ liệu. Thiết kế được các biểu mẫu và các thành phần của cơ sở dữ liệu theo yêu cầu của khách hàng. Nội dung: 3.1 Phân tích các yêu cầu của bài toán thực tế. 3.2 Xây dựng các bảng cho các bài toán 3.3 Xác định các loại khóa cho bài toán 3.4 Các phương pháp xác định các quan hệ cho bài toán 3.5 Thiết kế các biểu mẫu và các thành phần của cơ sở dữ liệu theo yêu cầu của khách hàng. 3.1 Phân tích các yêu cầu của bài toán thực tế. Chúng ta xét một quản lý lao động công ty TNHH Thành Văn số 65A Ngô Quyền F6 Dalat. Sau khi phân tích viên thực hiện cuộc điều tra có bảng phân tích sau: Mỗi nhân viên có thẻ nhân viên, trong thẻ nhân viên có: 76 36
  37. Hình 3.1 : trong thẻ nhân viên Mã nhân viên dùng để phân biệt với các nhân viên khác. Có họ tên, ngày sinh, phái, địa chỉ nhà riêng của nhân viên và phòng ban nhân viên đó công tác. Mỗi nhân viên có một mã số nhân viên (MANV) duy nhất. Một mã số nhân viên xác định các thông tin như họ tên (HOTEN), ngày sinh (NGAYSINH), phái (PHAI), địa chỉ (DIACHI) và phòng ban (MAPB) nơi quản lý nhân viên. Công ty có rất nhiều phòng ban, để phân biệt được tất cả các phòng ban thì ban giám đốc mới tạo ra mã phòng ban đặc trưng cho phong ban khác. Vì vậy, mỗi phòng ban có một mã phòng ban và tên của phòng ban đặc trưng. Mỗi phòng ban có một mã phòng ban (MAPB) duy nhất, mã phòng ban xác định tên phòng ban (TENPB) Quan hệ Công ghi nhận số lượng ngày công (SLNGAYCONG) của một nhân viên (MANV) tham gia vào công trình (MACT). Mỗi công trình có một mã số công trình (MACT) duy nhất. Mã số công trình xác định các thông tin như tên gọi công trình (TENCT), địa điểm (DIADIEM), ngày công trình được cấp giấy phép xây dựng (NGAYCAPGP), ngày khởi công (NGAYKC), ngày hoàn thành (NGAYHT). Một nhân viên chỉ ở một phòng ban duy nhất, nhưng một phòng ban thì có thể có nhiều nhân viên. Một nhân viên chỉ có một bảng chấm công duy nhất, nhưng bảng chấm công thì được làm mẫu chung cho toàn bộ các nhân viên trong công ty 76 37
  38. Và công được tính khi xác nhận được nhân viên làm trên một công trình nào đó với một số ngày công nhất định. 3.2 Xây dựng các bảng cho các bài toán Dựa vào quá trình phân tích trên của phân tích viên chúng ta có thể xác nhận được một số lược đồ quan hệ sau: Nhanvien(MANV,HOTEN,NGAYSINH,PHAI,DIACHI,MAPB) Phongban(MAPB,TENPB) Cong(MACT,MANV,SLNGAYCONG) Congtrinh(MACT,TENCT,DIADIEM,NGAYCAPGP,NGAYKC,NGAYHT) 3.3 Xác định các loại khóa cho bài toán Ta thấy mỗi nhân viên được xác định mỗi mã nhân viên là duy nhất. Vì thế MaNV làm khóa cho bảng Nhân viên Tương tự ta có MAPB làm khóa cho bảng Phòng ban MaCT sẽ làm khóa cho một công trình được xác định. Bảng công được tạo ra khi chúng ta muốn chấm công của một nhân viên nào đó trên công trình vì thế khóa của bảng chấm công được tạo ra từ Khóa của bảng Nhân viên và khóa của bảng công trình Vì vậy hai thuộc tính MaCT, MANV trong bảng chấm công vừa là khóa chính vừa là khóa ngoại. Còn từng thuộc tính người ta gọi là thuộc tính khóa. 3.4 Các phương pháp xác định các quan hệ cho bài toán Các phương pháp truyền thống PTV có thể dùng để xác định quan hệ cho bài toán bao gồm: Phỏng vấn và lắng nghe. Dùng bảng hỏi. Phỏng vấn nhóm. Quan sát trực tiếp người sử dụng. Tìm hiểu, nghiên cứu càc tài liệu kinh doanh của tổ chức. 76 38
  39. Phỏng vấn và lắng nghe Phỏng vấn và lắng nghe giúp phân tích viên thu thập các sự kiện, quan điểm, cũng như các suy đoán từ các người sử dụng và các thành phần khác nhau trong tổ chức. Ngoài ra việc phỏng vấn và lắng nghe còn giúp cho việc quan sát các ngôn ngữ cơ thể và cảm xúc. Chú ý rằng khi nói tới phỏng vấn nhiều người cho rằng hỏi là công việc quan trọng, nhưng thật ra kỹ năng lắng nghe cũng quan trọng không kém và đôi khi góp phần quyết định cuộc phỏng vấn có thành công hay không. Hướng dẫn phỏng vấn hiệu quả. Lập kế hoạch phỏng vấn (checklist, lịch trình gặp mặt, những câu hỏi chính). Cần có thái độ khách quan, không thành kiến. Lắng nghe tốt, cẩn thận. Ghi chép đầy đủ, trung thực. Tìm kiếm nhiều cái nhìn, quan điểm khác nhau. Không đưa ra câu hỏi theo những cách có thể suy ra câu trả lời đúng hoặc sai. Ghi lại các ghi chú về phỏng vấn trong vòng 48 tiếng đồng hồ. Không tạo ra những kỳ vọng, mong muốn về hệ thống mới. Các câu hỏi phỏng vấn. Câu hỏi mở: Phân tích viên không đoán trước được câu trả lời từ phía người được phỏng vấn. Rất tốt khi dùng để thu thập thông tin. Ví dụ: Làm thế nào để tính được giá thành sản phẩm? Trong tương lai việc tính toán giá trị hàng tồn kho sẽ được giải quyết như thế nào? Câu hỏi đóng: Người trả lời được yêu cầu chọn từ tập các câu trả lời có sẳn (được chuẩn bị bởi người phỏng vấn). Các câu hỏi yes/no cũng thuộc loại câu hỏi đóng. Câu hỏi đóng mang tính xác nhận lại nhiều hơn là cung cấp thông tin. Phân tích viên chỉ nên sử dụng khi cần thiết. Dùng bảng hỏi Dùng bảng hỏi so với phỏng vấn thì chi phí thấp hơn và hiệu quả cao hơn (theo nghĩa có thể thu thập được thông tin từ nhiều người trong cùng một thời gian). Thông tin thu được từ bảng hỏi có thể không sâu bằng thu được từ phỏng vấn. Ngoài ra, phỏng vấn cho phép PTV quan sát thái độ người sử dụng hướng về hệ thống mới như thế nào. Trong việc dùng bảng hỏi, cần suy nghĩ chọn người trả lời. Có nhiều cách chọn người trả lời các bảng hỏi đã được phân tích viên thiết kế. Người trả lời nên mang tính đại diện tất cả người sử dụng. 76 39
  40. Các loại mẫu chọn người trả lời. o Mẫu do thuận tiện (tự nguyện trả lời, gần ngay nơi thu thập, ). o Mẫu ngẫu nhiên. o Mẫu có mục đích, chủ ý khi chọn. o Mẫu phân tầng hay phân nhóm (nhóm người sử dụng, nhóm người quản lý, ). Thiết kế bảng hỏi. Phần lớn các mục hỏi là câu hỏi đóng. Có thể thực hiện qua điện thoại, hoặc phát đi cho những người trong mẫu. Phỏng vấn nhóm Ưu điểm và nhược điểm. Dùng thời gian hiệu quả hơn. Cho phép người này nghe ý kiến của người kia, và đồng ý hay không đồng ý. Khó lập lịch trình phỏng vấn. Quan sát trực tiếp người sử dụng Quan sát người sử dụng một cách trực tiếp để tìm hiểu quá trình xử lý dữ liệu chẳng hạn cũng được xem là một phương pháp tốt, và đặc biệt hỗ trợ rất nhiều cho việc phỏng vấn. Một lưu ý khi sử dụng phương pháp quan sát là dữ liệu hoặc hiểu biết thu được về yêu cầu hệ thống có thể không được khách quan do ảnh hưởng tâm lý của người bị quan sát. Về mặt tâm lý, người bị quan sát có thể hành động sẽ khác đi so với khi không bị quan sát. Phân tích các thủ tục xử lý và các tài liệu Một phương pháp cũng khá hiệu quả trong quá trình xác định yêu cầu hệ thống là tìm đọc và nghiên cứu các tài liệu kinh doanh của tổ chức liên quan đến hệ thống, đặc biệt là những tài liệu mô tả chi tiết các thủ tục xử lý dữ liệu của hệ thống, tài liệu mô tả các chức năng của hệ thống và sự liên quan giữa các chức năng. Còn trong trường hợp hệ thống hiện thời là hệ thống dựa trên máy tính thì việc tìm hiểu nghiên cứu các tập tin và hồ sơ hệ thống sẽ đặc biệt có ích giúp tìm hiểu yêu cầu hệ thống. Các loại thông tin được khám phá trong quá trình tìm hiểu yêu cầu hệ thống: 76 40
  41. Các vấn đề đang tồn tại trong hệ thống. Cơ hội đáp ứng các nhu cầu mới. Phương hướng tổ chức ảnh hưởng đến yêu cầu hệ thống. Tên của những nhân vật chủ chốt liên quan đến hệ thống. Các giá trị của tổ chức hoặc cá nhân giúp xác định các ưu tiên trong hệ thống. Các trường hợp xử lý thông tin đặc biệt, bất thường. Những lý do tại sao hệ thống hiện thời được thiết kế như vậy. Dữ liệu, các quy tắc xử lý dữ liệu, nguyên tắc tổ chức xử lý dữ liệu. Bốn loại tài liệu có ích cho việc tìm hiểu các quan hệ trong hệ thống: Các thủ tục công việc đã được tài liệu hóa. o Mô tả cách thức một công việc cụ thể được thực hiện. o Bao gồm dữ liệu và thông tin được dùng và được tạo ra trong quá trình thực hiện công việc hoặc các tác vụ trong công việc. Các biểu mẫu kinh doanh, công việc. o Chỉ rõ dòng dữ liệu ra và vào của hệ thống. o Sự liên hệ giữa các biểu mẫu. Các báo biểu, báo cáo kinh doanh, công việc. o Cho phép phân tích viên hệ thống lần ngược trở lại từ các báo biểu, báo cáo suy ra các nhập liệu cần thiết để tạo ra chúng. o Logic xử lý dữ liệu để tạo ra các báo biểu, báo cáo. Tài liệu mô tả tổ chức và hệ thống thông tin hiện thời. o Mục tiêu kinh doanh. o Cấu trúc của tổ chức (sơ đồ tổ chức). o Các vị trí quan trọng trong tổ chức. o Những yêu cầu của hệ thống thông tin hiện thời. o Mô hình dữ liệu, dòng dữ liệu trong hệ thống hiện thời. 76 41
  42. o Các quá trình xử lý dữ liệu và logic xử lý dữ liệu trong hệ thống hiện thời. Tóm lại Nhìn chung, mỗi phương pháp (phỏng vấn và lắng nghe, dùng bảng hỏi, phỏng vấn nhóm, quan sát trực tiếp người sử dụng, phân tích các thủ tục xử lý và các tài liệu) đều có những ưu điểm và nhược điểm. Phân tích viên cần phải hiểu rõ đặc điểm của mỗi phương pháp để có thể sử dụng hiệu quả và đúng hoàn cảnh trong quá trình xác định quan hệ cho bài toán. Trong thực tế, phân tích viên cần phải phối hợp tất cả các phương pháp trên khi tìm hiểu các yêu cầu về quan hệ mới. Do vậy việc thực hành các phương pháp trên là cần thiết để giúp phân tích viên thực hiện thông thạo và hiệu quả việc xác định yêu cầu hệ thống. 3.5 Thiết kế các biểu mẫu và các thành phần của cơ sở dữ liệu theo yêu cầu của khách hàng. Một cách tổng quát, biểu mẫu (forms) được dùng để trình bày hoặc sưu tập thông tin về thông tin một thực thể đơn nào đó như khách hàng, sản phẩm hoặc biến cố. Biểu mẫu có thể được dùng như nhập liệu hoặc xuất liệu Thiết kế biểu mẫu là phần quan trọng của phát triển hệ thống. Người sử dụng thường có khuynh hướng đánh giá chất lượng của hệ thống thông qua chất lượng của các phương pháp nhập liệu và xuất liệu mà cụ thể là các biểu mẫu và báo cáo. Thông tin có thể được sưu tập và định dạng theo nhiều cách khác nhau. Việc có được những hiểu biết những gì nên và không nên giữa những chọn lựa định dạng khác nhau cho các biểu mẫu dùng trong hệ thống là một kỹ năng cần thiết của PTV. Thiết kế biểu mẫu Sau khi hoàn thành giai đoạn phân tích trong VSPTHT, PTV chuyển qua giai đoạn thiết kế. Giai đoạn này được bắt đầu với khâu thiết kế Các nhập liệu và xuất liệu của hệ thống đã được sưu tập và xác định trong khi cấu trúc. Các loại biểu mẫu mà bài toán sẽ giải quyết đã được thiết lập như là một phần của phương án thiết kế được hình thành vào cuối giai đoạn phân tích. Tuy nhiên trong khi phân tích, PTV không quan tâm nhiều đến hình thức thể hiện chính xác của các biểu mẫu mà chỉ quan tâm chủ yếu đến những biểu mẫu nào cần tồn tại và nội dung của chúng là gì Biểu mẫu liên hệ đến nhiều lược đồ khác nhau được triển khai trong khi cấu trúc các yêu cầu: Mỗi biểu mẫu nhập có thể được kết hợp với một dòng dữ liệu đi vào quá trình trong lược đồ dòng dữ liệu. Mỗi biểu mẫu xuất có thể được kết hợp với một dòng dữ liệu đi ra khỏi quá trình trong lược đồ dòng dữ liệu. 76 42
  43. Như vậy nội dung của biểu mẫu sẽ tương ứng với các thành phần dữ liệu được chứa trong dòng dữ liệu kết hợp với chúng. Hơn nữa, dữ liệu trong tất cả các biểu mẫu và báo cáo phải bao gồm các thành phần dữ liệu có trong các nơi lưu trữ dữ liệu và có mặt ở mô hình dữ liệu E-R đối với ứng dụng, hoặc chúng phải được tính toán từ những dữ liệu này. Định nghĩa cụ thể hơn về biểu mẫu Biểu mẫu là những tài liệu kinh doanh chứa một số dữ liệu được xác định trước và bao gồm các vùng ở đó dữ liệu sẽ được điền vào. Quá trình thiết kế biểu mẫu: Việc thiết kế biểu mẫu là hoạt động tập trung vào người sử dụng, và thường dùng cách tiếp cận làm bản mẫu để thiết kế (propotyping approach). Trước hết PTV cần đạt được những hiểu biết về người sử dụng các biểu mẫu, cũng như các mục tiêu và tác vụ liên quan đến biểu mẫu. Những câu hỏi căn bản giúp PTV có được những hiểu biết này bao gồm: o Ai sử dụng biểu mẫu này? o Mục đích của biểu mẫu này là gì? o Khi nào thì biểu mẫu này cần dùng đến? o Biểu mẫu này được giao và được dùng ở đâu? o Bao nhiêu người cần dùng hoặc cần xem biểu mẫu này? Ngoài ra, một số câu hỏi khác cũng giúp cho việc thiết kế biểu mẫu như: o Kỹ năng, khả năng người sử dụng biểu mẫu này như thế nào? o Người sử dụng biểu mẫu này sử dụng máy tính thạo không? o Học vấn, chuyên môn, kinh nghiệm của người sử dụng biểu mẫu? Sau khi có hiểu biết liên quan đến biểu mẫu, PTV chuyển những thông tin này thành bản mẫu đầu tiên của biểu mẫu. Sau đó PTV yêu cầu người sử dụng nhận xét và cho ý kiến. Nếu cần có sự thay đổi thì PTV sẽ lặp lại quá trình tạo – đánh giá – cải tiến cho đến khi biểu mẫu được người sử dụng chấp nhận. Bản mẫu có thể được tạo trong nhiều môi trường thiết kế khác nhau (công cụ CASE, phần mềm đồ họa, trình xử lý văn bản, trình xử lý bảng tính). Bản mẫu có thể ở dạng màn hình giả (không lập trình). Điều quan trọng là PTV cần nhớ ở giai đoạn thiết kế này chỉ tập trung vào nội dung và hình thức phác họa (layout) của biểu mẫu. Còn việc làm thế nào để thực hiện chúng thì sẽ thực hiện ở giai đoạn sau. 76 43
  44. Các kết quả có thể giao được sau khi hoàn tất việc thiết kế biểu mẫu chủ yếu là các đặc tả thiết kế. Những đặc tả này sẽ là nhập liệu cho giai đoạn thực hiện hệ thống về sau. Các đặc tả thiết kế bao gồm ba phần: Tường thuật tổng quát. Thiết kế mẫu. Kiểm tra và đánh giá khả năng sử dụng. Tường thuật tổng quát nói về những đặc tính của người sử dụng biểu mẫu, các tác vụ, các yếu tố môi trường và hệ thống mà trong đó biểu mẫu được sử dụng. Mục đích của tường thuật tổng quát này là nhằm giải thích cho người phát triển sau này hiểu được tại sao biểu mẫu tồn tại và nó được sử dụng như thế nào để họ có thể có những quyết định thực hiện phù hợp. Phần thiết kế mẫu trình bày mẫu biểu mẫu được thiết kế. Phần cuối cùng trình bày những thông tin liên quan đến ý kiến người sử dụng đối với việc kiểm tra và đánh giá khả năng sử dụng (còn gọi là tính khả dụng) của biểu mẫu Định dạng biểu mẫu Nhiều nhà nghiên cứu về sự tương tác giữa người – máy đã đưa ra nhiều lời khuyên và hướng dẫn bổ ích cho việc định dạng thông tin. PTV có thể áp dụng những hướng dẫn trên vào việc thiết kế biểu mẫu. Tuy nhiên PTV phải luôn nhớ rằng chỗ dựa chính cho việc thiết kế các biểu mẫu có thể dùng được là sự tương tác giữa PTV với người sử dụng. Trong bối cảnh xây dựng hệ thống thông tin, người ta phân thành hai loại thông tin chính: Thông tin trong: Nhằm nói đến những thông tin được sưu tập, tạo ra hoặc tiêu thụ bên trong tổ chức. Thông tin ngoài: Nhằm nói đến những thông tin được sưu tập từ hoặc được tạo ra cho các tác nhân bên ngoài tổ chức như khách hàng hay nhà cung cấp. Cả thông tin trong lẫn thông tin ngoài đều có thể được giao dưới nhiều hình thức và bằng nhiều phương tiện khác nhau. Nhiều tổ chức có những chuẩn riêng đối với việc định dạng thông tin ngoài, chẳng hạn như truyền đi một hình ảnh phù hợp đến các khách hàng. Những chuẩn này có thể bao gồm cách dùng logo, màu sắc, fông chữ, kích thước và chất lượng giấy. Một loại thông tin lai giữa thông tin trong và thông tin ngoài được gọi là “tư liệu vòng quanh” (turnaround document). Tư liệu vòng quanh được tạo ra bởi hệ thống như là một xuất liệu mà nó có thể đi vòng trở lại và trở về tổ chức như là một nhập liệu. PTV có thể định dạng thông tin trong và thông tin ngoài theo nhiều cách khác nhau, chẳng hạn các báo cáo có thể in ra trên giấy trơn, cũng có thể in ra trên giấy đã có những đề mục sẳn. Dĩ nhiên các cách khác nhau tạo ra các biểu mẫu và báo cáo sẽ ảnh hưởng đến chi phí tạo ra thông tin. 76 44
  45. Nhiều phương tiện khác nhau có thể được dùng để giao thông tin hệ thống. Theo quan điểm thiết kế thì PTV phải xác định người sử dụng sẽ tương tác trực tiếp với hệ thống – thông tin sẳn dùng trực tuyến – hay thông tin sẽ được tập hợp lại và cung cấp trên giấy. Nói cách khác PTV cần xác định thông tin nào được xử lý trực tuyến, còn thông tin nào được xử lý theo lô. Việc xử lý trực tuyến nhằm nói đến sự tập hợp và giao những thông tin sẳn dùng mới nhất, thông thường thông qua các trạm làm việc (workstation) trực tuyến. Xử lý trực tuyến phù hợp cho những trường hợp sau: Truy cập hoặc nắm bắt thông tin xảy ra một cách ngẫu nhiên. Thông tin không định dạng (những câu truy vấn). Thông tin liên tục thay đổi và thông tin mới nhất cần cho việc xử lý và quyết định. Người sử dụng ở những nơi dễ truy cập thông tin. Việc xử lý theo lô nhằm nói đến những nhập liệu và xuất liệu mà chúng được xác định trước và nhận hoặc giao trong thời điểm xác định. Như vậy thông tin được sưu tập hoặc tạo ra bởi xử lý theo lô thì có hạn chế về thời gian trong khi xử lý trực tuyến luôn luôn biểu diễn thông tin sẳn dùng mới nhất. Xử lý theo lô phù hợp cho những trường hợp sau: Truy cập thông tin xảy ra đều đặn (thời gian định trước, tính chu kỳ). Thông tin định dạng. Thông tin ổn định trong khoảng thời gian, vẫn dùng được cho việc quyết định. Người sử dụng ở những nơi khó hay không thể truy cập thông tin. Những hướng dẫn định dạng tổng quát đối với thiết kế biểu mẫu. Tiêu đề có ý nghĩa. o Các tiêu đề phải cụ thể rõ ràng, mô tả rõ nội dung và công dụng. o Ngày cập nhật, mã số rõ ràng để phân biệt với những phiên bản trước. o Ngày hiện thời cho biết thời điểm báo cáo được tạo ra. o Ngày cho biết thời điểm nhận được dữ liệu. Thông tin có ý nghĩa. o Chỉ những thông tin cần thiết xuất hiện. o Thông tin xuất hiện dùng ngay không cần xử lý thêm. 76 45
  46. Bố trí cân đối. o Bố trí thông tin cân đối trên giấy hoặc màn hình. o Cách dòng phù hợp, căn lề cân đối. o Tất cả các mục dữ liệu phải có nhãn. Dễ dàng di chuyển màn hình. o Chỉ ra nơi di chuyển tới, lui. o Chỉ ra nơi đang ở o Chỉ cho người dùng biết trang cuối (khi có nhiều trang). Thiết kế bảng biểu và danh sách. Việc trình bày thông tin dưới dạng các bảng biểu và danh sách được xem là hiệu quả nhất so với các kiểu trình bày thông tin khác. Những hướng dẫn tổng quát cho việc trình bày bảng biểu và danh sách. Dùng các nhãn có nghĩa. o Tất cả các cột và hàng nên có nhãn có đầy đủ ý nghĩa. o Các nhãn nên được tách khỏi các thông tin khác bằng cách làm nổi bật. o Hiển thị lại nhãn khi dữ liệu hiển thị vượt quá khổ màn hình hay trang giấy. Định dạng cột, hàng và văn bản. o Sắp xếp theo thứ tự có nghĩa (tăng, giảm, theo ký tự chữ cái). o Đặt một dòng trống giữa mỗi năm dòng trong những cột dài. o Các cột nên có ít nhất hai khoảng trắng giữa chúng. o Cho phép khoảng trắng trên các báo cáo in để người sử dụng ghi chú. o Dùng nét đơn trừ trường hợp cần nhấn mạnh. o Tránh những fông chữ kiểu cọ. o Dùng cùng kiểu nét trong cùng báo cáo hay trong cùng một hiển thị. Định dạng dữ liệu số, văn bản, và chữ số. 76 46
  47. o Canh phải dữ liệu số, canh thẳng hàng dấu chấm thập phân và dấu cách khác. o Canh trái dữ liệu văn bản. Dùng dòng ngắn (30-40 ký tự mỗi dòng). o Bẻ dãy dài các chữ số thành nhóm gồm từ ba đến bốn ký tự mỗi nhóm. Chọn lựa bảng biểu hay đồ thị. Khi thiết kế hiển thị thông tin số, xác định bảng biểu hay đồ thị nên được dùng. Một số hướng dẫn chọn dùng bảng biểu hay đồ thị. o Dùng bảng thích hợp cho việc đọc những giá trị dữ liệu riêng lẻ. o Dùng đồ thị thích hợp cho việc cung cấp tổng kết dữ liệu, phát hiện xu hướng theo thời gian, so sánh các điểm hoặc các mẫu của các biến khác nhau, các hoạt động dự báo, báo cáo nhanh lượng lớn thông tin (nhằm cho thấy xu hướng tổng quát hơn chi tiết). Đánh giá khả năng sử dụng Có nhiều yếu tố cần xem xét khi PTV thiết kế biểu mẫu và báo cáo. Mục tiêu của việc thiết kế biểu mẫu, báo cáo và các tương tác người – máy là khả năng sử dụng, hay còn gọi là tính khả dụng (usability). Tính khả dụng có thể xem như là một đánh giá tổng quát xem hệ thống thực hiện thế nào trong việc hỗ trợ một cá nhân nào đó thực hiện một tác vụ hay công việc nào đó. Tính khả dụng thường liên quan đến ba đặc trưng sau đây: Tốc độ. Bạn có hoàn thành tác vụ hay công việc một cách hiệu quả không? Sự chính xác. Xuất liệu có cung cấp cho bạn những gì bạn mong muốn không? Sự thỏa mãn. Bạn có thích dùng xuất liệu này không? Nói cách khác, tính khả dụng có nghĩa là các thiết kế của PTV có trợ giúp sự thi hành của người sử dụng không. Có nhiều yếu tố ảnh hưởng đến tính khả dụng và một số kỹ thuật đánh giá tính khả dụng của một thiết kế. 76 47
  48. Yếu tố thành công chính của tính khả dụng là thiết kế phù hợp. Thiết kế phù hợp là yếu tố quan trọng đối với việc thiết kế hệ thống khả dụng. Sự phù hợp ảnh hưởng đến khả năng có được sự thuần thục khi tương tác với hệ thống. Phù hợp ở đây có nghĩa là: Các tiêu đề, thông báo sai, tùy chọn thực đơn và các thành phần thiết kế khác xuất hiện những chỗ giống nhau, và xuất hiện giống nhau ở tất cả biểu mẫu và báo cáo. Cùng một sự nhấn mạnh hay nổi bật thông tin thì phải có cùng ý nghĩa như nhau mỗi khi nó được dùng. Hệ thống trả lời với thời gian gần như nhau cho một tác vụ mỗi khi tác vụ được thực hiện. Ngoài yếu tố phù hợp còn có những yếu tố khác ảnh hưởng đến tính khả dụng của thiết kế. Những yếu tố và những hướng dẫn tổng quát tương ứng sau dành cho tính khả dụng của biểu mẫu và báo cáo: Phù hợp: Dùng phù hợp các thuật ngữ, từ rút gọn, định dạng, các tiêu đề, và di chuyển bên trong hoặc đi qua các xuất liệu. Phù hợp về thời gian đáp ứng mỗi khi chức năng được thực hiện. Hiệu quả: Định dạng nên được thiết kế có sự am hiểu về nghiệp vụ được thực hiện và người sử dụng. Văn bản và dữ liệu nên được canh thẳng hàng và sắp xếp thứ tự để việc tham khảo và di chuyển hiệu quả. Dễ dàng: Các xuất liệu nên mang tính tự giải thích, không đòi hỏi người sử dụng phải nhớ thông tin từ các xuất liệu trước đó mới có thể hoàn thành tác vụ. Các nhãn nên được dùng đầy đủ và các thang độ và đơn vị đo lường nên được chỉ ra rõ ràng. Dạng thức: Dạng thức thông tin nên phù hợp giữa hiển thị và đề mục. Dạng thức nên giúp phân biệt giữa các mẫu dữ liệu cũng như các nhấn mạnh nổi bật dữ liệu, không nên làm rườm rà rối mắt, nên làm rõ những dữ liệu quan trọng. Các ký hiệu như dấu đồng, dấu chấm thập phân, nên được dùng một cách thích hợp. Linh động: Thông tin nên được trình bày và truy tìm sao cho tiện lợi nhất đối với người sử dụng. Chẳng hạn như người sử dụng nên có tùy chọn trong việc sắp thứ tự dữ liệu, vào dữ liệu hay xem dữ liệu, dùng phím tắt, và hệ thống nên nhớ được nơi nào người sử dụng đã dừng lại khi dùng hệ thống lần gần đây nhất. Khi thiết kế các xuất liệu PTV cũng phải xem xét bối cảnh trong đó các màn hình, biểu mẫu và báo cáo sẽ được sử dụng. Những yếu tố về bối cảnh cũng đóng vai trò quan trọng trong việc hình thành tính khả dụng của hệ thống. Sau đây là một số yếu tố bối cảnh ảnh hưởng đến tính khả dụng hệ thống mà PTV cần để ý khi thiết kế: Người sử dụng: Những gì liên quan đến kinh nghiệm, kỹ năng, động lực, trình độ, cá tính của người sử dụng nên được xem xét. Tác vụ hay công việc: Các tác vụ khác nhau đòi hỏi cung cấp lượng thông tin khác nhau, và tạo ra lượng thông tin cũng khác nhau đến người sử dụng. Những yêu 76 48
  49. cầu của tác vụ đối với thời gian đáp ứng, giá lỗi sai, thời gian hoàn thành sẽ ảnh hưởng đến tính khả dụng. Hệ thống: Nền tảng trên đó hệ thống được xây dựng ảnh hưởng đến kiểu tương tác và các thiết bị. Môi trường: Các vấn đề xã hội như tình trạng, vai trò người sử dụng nên được xem xét bên cạnh các liên quan đến môi trường như chiếu sáng, âm thanh, cắt ngang tác vụ, nhiệt độ, độ ẩm. Sự tạo ra các biểu mẫu và báo cáo có thể cần phải thay đổi trong điều kiện làm việc của người sử dụng. Đo tính khả dụng. Thân thiện với người sử dụng là thuật ngữ thường được dùng rộng rãi để mô tả tính khả dụng của hệ thống. Tuy nhiên thuật ngữ này khá mơ hồ. Những người phát triển hệ thống dùng một vài phương pháp để đánh giá tính khả dụng, trong đó gồm có các đánh giá: o Thời gian học sử dụng. o Tốc độ hoàn thành tác vụ. o Tỷ lệ lỗi. o Thời gian còn nhớ từ khi thôi sử dụng. o Sự thỏa mãn, hài lòng của người sử dụng. Để thu thập thông tin phục vụ cho việc đánh giá tính khả dụng, PTV có thể dùng phương pháp quan sát, phỏng vấn, dùng bảng hỏi, Còn thời gian học có thể được đánh giá bởi thời gian một người sử dụng trung bình có thể trở thành thuần thục sử dụng hệ thống. Một yếu tố cũng quan trọng là trong phạm vi nào người sử dụng còn nhớ cách dùng các nhập liệu và xuất liệu. Cách thức mà trong đó các bước xử lý được sắp thứ tự và sự chọn lựa tập phím sử dụng khi thao tác cũng ảnh hưởng nhiều đến thời gian học, hiệu quả thi hành tác vụ của người sử dụng và tỷ lệ lỗi. . Bài tập Cho các quan hệ với lược đồ sau:CB(CB#, TenCB, SoNamCT, NgayVD, DiaChi, CQ#) và CQ (CQ#, DCCQ) Trong đó: CB#: Mã cán bộ. TenCB: Tên cán bộ. SoNamCT: Số năm công tác của cán bộ. NgayVD: Ngày vào Đảng. DiaChi: Địa chỉ cán bộ. CQ#: Mã cơ quan của cán bộ. DCCQ: Địa chỉ cơ quan của cán bộ. Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL: e. Cho biết tên cán bộ, số năm công tác của những cán bộ có địa chỉ là “Ha Tay” có số năm công tác ít hơn 10. f. Cho biết mã cán bộ, tên cán bộ và địa chỉ cơ quan của tất cả các cán bộ. g. Cho biết tên những cán bộ có địa chỉ cơ quan là Hà Nam. 76 49
  50. Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL: h. Cho biết tổng số cán bộ hiện có trong cơ sở dữ liệu. i. Cho biết mã cán bộ, tên cán bộ của các cán bộ có số năm công tác ít nhất nhất. 76 50
  51. Bài 4 T ÊN BÀI: NGÔN NGỮ SQL MÃ BÀI: ITPRG 07.4 Giới thiệu Báo cáo cũng đựợc xem là một loại biểu mẫu đơn giản. Trong đó bạn có thể trình bày những dữ liệu theo yêu cầu hoặc liên kết các dữ liệu có liên quan vào các nhóm với dòng cộng số liệu ở cuối mỗi nhóm (hay ở mỗi trang) và dòng tổng cộng số liệu ở cuối bảng báo cáo. Mục tiêu thực hiện: - Hiểu được ý nghĩa của các câu lệnh SQL - Biết được ý nghĩa của các thành phần trong câu lệnh SQL, biết được tác dụng của câu lênh SQL cơ bản. - Biết được ý nghĩa của các thành phần trong câu lệnh SQL, biết được tác dụng của các thành phần trong câu lệnh SQL nâng cao - Sử dụng được câu lệnh SQL để lấy được những thông tin theo yêu cầu của người xử dụng. Nội dung: 4.1 Giới thiệu ngôn ngữ SQL 4.2 Câu lệnh SQL đơn giản 4.3 Câu lệnh SQL nâng cao. 4.4 Bài tập truy vấn cơ sở dữ liệu 4.5 Giới thiệu ngôn ngữ SQL SQL đã trở thành ngôn ngữ cơ sở dữ liệu quan hệ chuẩn. Nó bao gồm các phần:  Ngôn ngữ định nghĩa dữ liệu (DDL – Data Definition Language). Phần này của SQL cung cấp các mệnh đề để  Định nghĩa các lược đồ quan hệ  Xóa bỏ các quan hệ  Tạo ra các chỉ mục  Cập nhật các lược đồ quan hệ 76 51
  52.  Ngôn ngữ thao tác dữ liệu (DML – Data Manipulation Language). Phàn này của SQL bao gồm một ngôn ngữ truy vấn dựa trên cả đại số quan hệ lẫn tính toán quan hệ bộ. Nó cũng bao gồm các lệnh chèn vào, xóa bỏ, và cập nhật các bộ trong CSDL.  Ngôn ngữ thao tác dữ liệu nhúng (DML nhúng – Embedded DML). Việc nhúng của SQL được thiết kế dành cho việc sử dụng bên trong các ngôn ngữ lập trình đa năng như C, PL/1, Pascal  Định nghĩa sự nhìn: Các lệnh của DDL SQL dành cho việc định nghĩa sự nhìn.  Quyền sở hữu: Các lệnh của DDL dùng cho việc xác định rõ các quyền truy xuất đến các quan hệ và các sự nhìn  Toàn vẹn: các lệnh SQL DDL dành cho việc đặc tả các ràng buộc toàn vẹn mà dữ liệu được lưu trữ trong CSDL phải thỏa mãn. Những cập nhật làm vi phạm đến những ràng buộc toàn vẹn là không được phép  Kiểm soát giao dịch: Các lệnh SQL dành cho việc xác định lúc bắt đầu và kết thúc của các giao dịch. 4.6 Câu lệnh SQL đơn giản Cấu trúc căn bản của một biểu thức SQL bao gồm 3 mệnh đề: Select, From, Where. Mệnh đề select: liệt kê các thuộc tính mong muốncó trong kết quả truy vấn. Nó tương ứng với phép chiếu của đại số quan hệ. Mệnh đề From: tương ứng với tích Đề - Các. Nó liệt kê các quan hệ được sử dụng. Mệnh đề Where: tương ứng với khẳng định chọn trong đại số quan hệ. Nó bao gồm một khẳng định liên quan đến các thuộc tính của các quan hệ xuất hiện trong mệnh đề From Một truy vấn SQL đặc thù có dạng: SELECT A1,A2, ,An FROM R1,R2, ,Rn WHERE P Trong đó mỗi Ai biểu diễn một thuộc tính, mỗi Ri là một quan hệ, và P là một khẳng định. Truy vấn tương đương với biểu thức đại số quan hệ: A1, A2, ,An (P(R1 x R2 x .x Rn)) 76 52
  53. Nếu mệnh đề Where bỏ qua thì khẳng định P là true Danh sách thuộc tính có thể được thay thế bởi một dấu * để chọn tất cả SQL định dạng tích Descartes của các quan hệ được nêu tên trong mệnh đề From, sau đó thực hiện một phép chọn đại số quan hệ dùng khẳng định trong mệnh đề Where, cuối cùng chiếu kết quản lên các thuộc tính được nêu trong mệnh đề Select. 4.6.1 Mệnh đề Select Kết quả của một truy vấn SQL là một quan hệ. Coi ví dụ đơn giản “Tìm tên của các chi nhánh ngân hàng trong quan hệ Tài khoản vay”: Select têncn From tài khoản vay Kết quả là một quan hệ gồm thuộc tính mang tên têncn. Chú ý không giống như trong đại số quan hệ, kết quả truy vấn SQL có thể chứa nhiều bản trùng nhau ta có thể dùng từ khóa distinct sau select Select distinct têncn From tài khoản vay SQL cho phép dùng từ khóa all để chỉ ra một cách rõ ràng các bộ trùng nhau không cần phải gỡ bỏ Select all têncn From tài khoản vay Tuy nhiên, việc giữ lại các bộ trùng nhau là mặc nhiên nên không cần dùng all trong các ví dụ của chúng ta. Mệnh đề Select có thể dùng các biểu thức số học với các phép toán +, -, *, / và tính toán với các hằng hoặc các giá trị thuộc tính của các bộ. Chẳng hạn: Select têncn, số kv, stvay*100 From tài khoản vay 4.6.2 Mệnh đề Where Coi truy vấn “tìm kiếm tất cả các số tài khoản vay của các tài khoản vay thực hiện tại chi nhánh Phong Lan mà có số tiền vay lớn hơn 1200$”. Viết truy vấn này bằng SQL: Select sốtkv 76 53
  54. From tài khoản vay Where têncn = “Phong Lan” and stvay > 1200 Khẳng định trong mệnh đề Where có thể dùng các phép nối logicand, or và not. Các toán hạng của phép nối logic có thể là các biểu thức có dùng các phép toán so sánh: , >=, = và = 90000 and stkvay <=100000 4.6.3 Mệnh đề From: Mệnh đề From định nghĩa một tích Descartes các quan hệ. Vì phép nối tự nhiên được diễn tả theo tích Descartes, phép chọn và phép chiếu nên ta có thể viết biểu thức SQL cho phép nối tự nhiên. Đối với biểu thức đại số quan hệ: tênkh, sốtkvay (vay tài khoản vay) Chúng ta có thể viết trong SQL như sau: Select distinct tênkh, sốtkv From vay, tài khoản vay Where vay.sốtkv = tài khoản vay.sốtkv Mở rộng truy vấn trên, tìm tên và số tài khoản vay của tất cả các khách hàng có tài khoản vay tại chi nhánh Phong Lan 76 54
  55. Select distinct tênkh, sốtkv From vay, tài khoản vay Where vay.sốtkv = tài khoản vay.sốtkv and têncn = “Phong Lan” 4.6.4 Phép đặt lại tên: SQL cho phép đặt lại tên cả quan hệ lẫn thuộc tính. Nó dùng mệnh đề As có dạng tên cũ as tên mới. Mệnh đề As có thể xuất hiện trong mệnh đề select và From. Coi lại truy vấn đã dùng trước đây: Select distinct tênkh, sốtkv From vay, tài khoản vay Where vay.sốtkv = tài khoản vay.sốtkv and têncn = “Phong Lan” Kết quả truy vấn này là quan hệ với các thuộc tính: tên khách hàng, số tài khoản vay Tên thuộc tính trong kết quả được suy ra từ tên thuộc tính trong các quan hệ trong mệnh đề From. Tuy nhiên có thể chúng ta không muốn suy ra các tên thuộc tính trong quan hệ kết quả theo kiểu này. Bởi vì: Các qua nhệ có thể có các thuộc tính trùng tên. Rồi quan hệ kết quả lại có thuộc tính trùng tên nữa. Nếu dùng các biểu thức số học trong mệnh đề Select thì thuộc tính kết quả không có tên. Có thể cần đổi tên thucộ tính để tiện dụng trong một số trường hợp. Ví dụ về đổi tên trong truy vấn trên Select distinct tênkh, sốtkv as mã tkvay From vay, tài khoản vay Where vay.sốtkv = tài khoản vay.sốtkv and têncn = “Phong Lan” 4.6.5 Biến cố Các biến cố có thể được dùng trong SQL, và chúng được định nghĩa trong mệnh đề From thông qua mệnh đề As. Viết lại truy vấn “Với mọi khách hàng có tài khoản vay tại ngân hàng, tìm tên và số tài khoản vay của họ” 76 55
  56. Select distinct tênkh, T.sốtkv From vay as T, tài khoản vay as S Where T.Sốtkv = S.Sốtkv Biến cố được định nghĩa trong mệnh đề From bằng cách đặt nó sau tên của quan hệ mà nó được kết hợp, với từ khóa As ở giữa (từ khóa As là tự chọn) Những biến cố này có thể được dùng trong biểu thức. Có thể nghĩ cách dùng các biến cố giống như các phép toánđặt lại tên vậy. Chúng đặt biệt có ích trong các trường hợp cùng phài so sánh hai bộ trong cùng một quan hệ. Giả sử chúng ta cần truy vấn “ Tìm tên tất cả các chi nhánh có tài sản lớn hơn ít nhất tài sản của một chi nhánh tọa lạc tại Đà Lạt” Chúng ta có thể viết biểu thức SQL như sau: Select distinct T.têncn From chi nhánh as T, chi nhánh as S Where T.tsản > S.tsản and S.tpcn = “Đà Lạt” 4.6.6 Các phép toán chuỗi SQL dùng phép toán like dùng cho việc khớp mẫu chuỗi. Có hai ký tự đặc biệt dùng để mô tả chuỗi: Ký tự % khớp với bất kỳ chuỗi con Ký tự _ khớp với bất kỳ ký tự Ngoài ra, các ký tự chữ in không khớp với các ký tự chữ thường. Một số ví dụ sau minh họa việc hkớp mẫu chuỗi: “Phong%” khớp với bất kỳ chuỗi nào bắt đầu bởi “Phong” “%ng%” khớp với bất kỳ chuỗi nào có chữa “ng” như là chuỗi con “_ _ _” khớp với chuỗi nào có chứa đúng 3 ký tự “_ _ _%” khớp với chuỗi nào có chứa ít nhất 3 ký tự Coi truy vấn “Tim tất cả các khách hàng mà đường phố họ ở có chứa chuỗi con “Phan”. Truy vấn này có thể viết: Select tênkh From khách hàng Where đpkh like “%Phan%” 76 56
  57. Đối với các mẫu chuỗi có chứa các ký tự đặc biệt (chẳng hạn như % và _), SQL cho phép dùng ký tự thoát. Ký tự thoát được đặt ngay trước ký tự đặt biệt để tìm ra rằng ký tự đặt biệt được đối xử giống như một ký tự bình thường. Chúng ta dùng từ khóa ascape để định nghĩa ký tự thoát trong phép toán so sánh like. Chẳng hạn dùng ký tự \ để làm ký tự thoát: Like “ab\%cd%” escape “\” khớp mọi chuỗi bắt đầu bằng”ab%cd” SQL cũng cho phép dùng phép so sánh not like để tìm những mẫu chuỗi không khớp. Nó cũng cho phép dùng một số hàm chuỗi như nối chuỗi, trích chuỗi con, tìm chiều dài chuỗi, chuyển đổi ký tự thường thành ký tự in và ngược lại 4.6.7 Thứ tự hiển thị bộ SQL cho phép người sử dụng kiểm soát thứ tự trong đó các bộ được hiển thị. Order by làm cho các bộ xuất hiện trong một thứ tự được sắp xếp. Desc chỉ thứ tự giảm Asc chỉ thứ tự tăng Việt sắp xếp có thể là đắt giá, và chỉ nên được thực hiện khi cần thiết. Chẳng hạn ta có thể liệt kê theo thứ tự chữ cái tất cả các khách hàng có khả năng vay tại chi nhánh ngân hàng Phong Lan. Select distinct tênkh From vay, khách hàng vay Where vay.sốtkv = tài khoản vay.sốtkv and têncn = “Phong Lan” order by tênkh Mặc nhiên, mệnh đề Order by liệt kê theo tứ tự tăng dần. Giả sử chúng ta muốn liệt kê toàn bộ quan hệ tài khoản vay theo thứ tự giảm dần stvay. Nếu có nhiều tài khoản vay có cùng số tiền thì sắp xếp chúng theo thứ tự tăng dần của số tài khoản vay. Select * From tài khoản vay Order by stvay desc, sốtkv asc 4.6.8Tạo một CSDL CREATE DATABASE tên_CSDL 4.6.9 Tạo một bảng trong một CSDL 76 57
  58. CREATE TABLE tên_bảng ( tên_cột_1 kiểu_dữ_liệu, tên_cột_2 kiểu_dữ_liệu, ) 4.7 Câu lệnh SQL nâng cao. 4.7.1 Các phép toán tập hợp SQL có các phép toán tập hợp Union, insersect và except. Một số ví dụ: Tìm tất cả các khách hàng có tài khoản vay, tài khoàn giử hoặc cả hai tại ngân hàng (Select tênkh From gởi) union (Select tênkh From vay) Phép Union tự động loại các bộ trùng nhau, không giống như mệnh đề Select. Nếu giữ các bộ trùng nhau ta dùng Union all. (Select tênkh From gởi) Union all (Select tênkh From vay) Tìm các khách hàng có tài khoản vay và tài khoản gởi tại ngân hàng (Select distinct tênkh From gởi) intersect 76 58
  59. (Select distinct tênkh From vay) Phép intersect tự động loại các bộ trùng nhau. Nếu muốn giữ lại các bộ trùng nhau ta dùng intersect all (Select district tênkh From gởi) Intersect all (Select distinct tênkh From vay) Tìm các khách hàng có tài khoản gởi nhưng không có tài khoản vay tại ngân hàng (Select district tênkh From gởi) except (Select distinct tênkh From vay) Phép except tự động loại bỏ các bộ trùng nhau. Nếu muốn giữ lại các bộ trùng nhau ta dùng except all (Select district tênkh From gởi) except all (Select distinct tênkh From vay) 4.7.2 Các hàm gộp Các hàm gộp là những hàm lấy một tập hợp các giá trị là nhập liệu và trả về một giá trị đơn như là xuất liệu. SQL đưa ra các hàm gộp: 76 59
  60. Giá trị trung bình – avg Giá trị nhỏ nhất – min Giá trị lớn nhất – max Giá trị tổng cộng – sum Dếm số trong nhóm – count Ví dụ tìm giá trị trung bình của cân đối tài khoản gỏi tại chi nhánh ngân hàng Phong Lan Select avg(cđối) From tài khoản gởi Where têncn = “Phong Lan” SQL không dùng distinct với count. Tuy nhiên dùng distinct với max, min thì hợp lệ mặc dù kết quả không thay đổi. Chúng ta có thể dùng all trong chỗ của distinct để chỉ việc giữ lại các bộ trùng nhau, nhưng vì all là mặc nhiên nên không cần làm như vậy. Trong SQL chúng ta có thể tính các hàm gộp dựa trên nhóm tập các bộ bằng cách dùng mệnh đề group by. Các thuộc tính được cho trong mệnh đề group by được dùng để hình thành các nhóm. Các bộ có trị giống nhau trên tất cả các thuộc tính trong mệnh đề group by được đặt vào trong một nhóm. Ví dụ tính trung bình cân đối tài khoản gởi tại mỗi chi nhánh Select têncn, avg(cđối) From tài khoản gởi Group by têncn Ta có thể phát biểu các điều kiệm áp dụng cho các nhóm thay vì cho các bộ, bằng cách sử dụng mệnh đề having. Các khẳng định trong mệnh đề having được áp dụng sau khi hình thành nhóm. Ví dụ: Tìm các chi nhánh ngân hàng và các giá trị trung bình cân đối tài khoản gởi của nó với điều kiệm giá trị trung bình cân đối tài khoản gởi của nó với điều kiện giá trị trung bình cân đối phải lớn hơn 1200$ Select têncn, avg(cđối) From tài khoản gởi 76 60
  61. Group by têncn Having avg(cđối)>1200 Nếu mệnh đề Where và having cùng xuất hiện trong một truy vấn thì: Khẳng định mệnh đề Where được áp dụng trước Các bộ thỏa mãn mệnh đề Where được đặt vào trong các nhóm chỉ định bởi mệnh đề Group by Mệnh đề having nếu có sẽ được áp dụng cho mỗi nhóm. Các nhóm không thỏa khẳng định của having được loại bỏ. Các nhóm thỏa mệnh đề của having được dùng bởi mệnh đề select để tạo ra các bộ kết quả 4.7.3 Các giá trị rỗng Như đã đề cập trước, SQL cho phép dùng các giá trị rỗng để chỉ ra sự vắng mặt của thông tin về giá trị của một thuộc tính. Chúng ta có thể dùng từ khóa null trong một khẳng định để kiểm tra giá trị rỗng. Select sốtkv From tài khoản vay Where stvay is null Khẳng định is not null dùng để kiểm tra sự vắng mặt của giá trị rỗng 4.7.4 Truy vấn con lồng nhau: SQL cung cấp một cơ chế cho việc lồng truy vấn con. Một truy vấn con là một biểu thức select – from – where mà nó được lồng bên trong một truy vấn khác. 4.7.4.1 Quan hệ phần tử của tập hợp: Chúng ta dùng các phép in và not in đối với quan hệ phần tử của tập hợp. Ta viết lại truy vấn “Tìm tất cả các khách hàng có tài khoản vay lẫn tài khoản gởi tại ngân hàng” bằng cách dùng phép in 76 61
  62. Select distinct tênkh From vay Where tênkh in (select tênkh from gởi) 4.7.4.2 So sánh tập hợp: Coi truy vấn “Tìm tên tất cả các chi nhánh có tài sản lớn hơn ít nhất một tài sản của chi nhánh tọa lạc tại Dalat” . Chúng ta viết truy vấn như sau: Select distinct T.têncn From chi nhánh as T.chi nhánh as S Where T.tsản > S.tsản and S.tpcn = “Dalat” 4.8 Bài tập truy vấn cơ sở dữ liệu 1. Cho lược đồ cơ sở dữ liệu dùng để quản lý hồ sơ sinh viên bao gồm các quan hệ Sv(sinh viên), Lop(Lớp), kh(khoa), Mh(môn học), Kq(kết quả) được mô tả bởi các lược đồ quan hệ như sau: Sv(MASV,HOTEN,NU,NGAYSINH,MALOP,TINH,HOCBONG) Tân từ: Mỗi sinh viên có mỗi MASV duy nhất. Mỗi MASV xác định tất cả các thuộc tính còn lại của sinh viên đó. Lop(MALOP,TENLOP,SISO,MAKHOA) Tân từ: Mỗi lớp có một mã lớp duy nhất, mỗi lớp chỉ thuộc về một khoa nào đó. Kh(MAKHOA,TENKHOA,SOCBGD) Tân từ: Mỗi khoa có mỗi MAKHOA duy nhất. Mỗi MAKHOA xác định tất cả các thuộc tính còn lại của khoa đó. Mh(MAMH,TENMH,SOTIET) Tân từ: Môi Môn học có một MAMH duy nhất. Mỗi MAMH xác định tất cả các thuộc tính còn lại của môn học đó. Kq(MASV,MAMH,DIEMTHI) Tân từ: Mỗi sinh viên cùng với một môn học xác dịnh duy nhất một điểm thi 76 62
  63. Hãy thực hiện các câu truy vấn sau a) Lập danh sách những sinh viên nam của tỉnh “LONG AN” học khoa “CNTT”, danh sách cần tất cả các thuộc tính của quan hệ Sv. b) Lập danh sách những sinh viên có điểm thi < 5 (thi lại), danh sách cần MASV,HOTEN,TENMH, DIEMTHI và được sắp tăng dần theo cột MASV. c) Lập danh sách các sinh viên có điểm thi trung bình các môn < 5, danh sách cần MASV,HOTEN, DIEMTRUNGBINH và được sắp tăng dần theo cột MASV. d) Tổng số tiền học bổng của mỗi khoa e) Những sinh viên nào đăng ký học nhiều hơn 3 môn học, danh sách cần MASV,HOTEN,SOLAN_DANGKY f) Lập danh sách sinh viên có điểm trung bình cao nhất, danh sách cần MASV, HOTEN, NGAYSINH, DIEMTRUNGBINH 2/ Cho các quan hệ sau: Monhoc(MSMH ,TENMH,SOTINCHI ,TINHCHAT) MSMH mã số môn học, TENMH tên môn học SOTINCHI số lượng tín chỉ, TÍNH CHẤT bằng 1 nếu đó là môn học bắt buộc, bằng 0 nếu đó là môn học không bắt buộc Sinhvien(MSSV,HOTEN,NGAYSINH,LOP) MSSV mã số sinh viên, HOTEN họ tên sinh viên NGAYSINH ngày sinh, LOP(C,4,0) lớp Diem(MSSV,MSMH,DIEMTHI) 76 63
  64. DIEMTHI điểm thi Hãy dùng lệnh SQL để thực hiện các câu lệnh sau: a) Hãy cho biết những môn học bắt buộc có SOTINCHI cao nhất. b) Hãy liệt kê danh sách gồm MSSV,HOTEN,LOP, DIEMTHI của những sinh viên thi môn học CSDL, theo thứ tự LOP,DIEMTHI c) Hãy cho biết các sinh viên có điểm thi cao nhất về môn học có mã là CSDL d) Hãy cho biết phiếu điểm của sinh viên có mã số là 9900277 e) Hãy liệt kê danh sách gồm MSSV, HOTEN., LOP, ĐIỂM TRUNG BÌNH của những sinh viên có điểm trung bình các môn dưới 5, theo thứ tự LOP,HOTEN. f) Hãy liệt kê danh sách điểm trung bình của sinh viên theo thứ tự , lớp, tên. g) Hãy cho biết điểm của sinh viên theo từng môn. 3/ Dựa vào lược đồ cơ sở dữ liệu Docgia(MADG,HOTEN,NGAYSINH,DIACHI,NGHENGHIEP) Phieumuon(SOPM,NGAYMUON,MADG) Chitietmuon(SOPM,MADAUSACH,NGAYTRA) Dausach(MADAUSACH,BAN,TAP,MASH) Sach(MASH,TENSACH,TACGIA,NHAXB,NAMXB) Hãy thực hiện các câu hỏi sau đây bằng SQL a) Danh sách các đọc giả đã đăng ký mượn sách trong ngày d. Yêu cầu các thông tin: MAĐG, HOTEN, ĐIACHI. b) Các quyển sách của phiếu mượn có SOPM là x. Yêu cầu các thông tin MASH, TENSACH, TACGIA, NGAYMUON, NGAYTRA. c) Tổng số lượt mà mỗi đọc giả đến mượn sách trong năm 2001. Yêu cầu thông tin MAĐG,HOTEN,SOLANMUON (SOLANMUON là thuộc tính tự đặt) d) Danh sách các đọc giả cao tuổi nhất đã mượn sách trong ngày d. Yêu cầu các thông tin MAĐG, HOTEN, NGAYSINH, ĐIACHI, NGHENGHIEP. 76 64
  65. 4/ Dựa vào lược đồ cơ sở dữ liệu Khach(MAKH,HOTEN,DIACHI,DIENTHOAI) Hoadon(SOHD,NGAYLAPHD,NGAYBAN,MAKH) DongHoaDon(SOHD,MAHANG,SLBAN) Hang(MAHANG,TENHANG,DONGIA,DVT,MANHOM) Nhom(MANHOM,TENNHOM) Hãy thực hiện các câu hỏi sau bằng SQL a) Danh sách các khách hàng đã mua hàng trong ngày d. Yêu cầu các thông tin MAKH, HOTEN, ĐIACHI, ĐIENTHOAI. b) Danh sách các mặt hàng trong số hóa đơn (SOHĐ) là x. Yêu cầu các thông tin MAHANG, TENHANG, SLBAN, ĐONGIA, THANHTIEN (THANHTIEN= SLBAN * ĐONGIA; THANHTIEN là thuộc tính tự đặt).Yêu cầu sắp xếp tăng dần theo cột TENHANG c) Danh sách các mặt hàng thuộc mã nhóm hàng là A có đơn giá cao nhất. Yêu cầu các thông tin : MAHANG, TENHANG,ĐONGIA d) Đếm số lượng mặt hàng của mỗi nhóm hàng. Yêu cầu các thông tin : MANHOM, TENNHOM, SOLUONG. (trong đó SOLUONG là thuộc tính tự đặt) (0,75đ) e) Danh sách các khách hàng đã mua các mặt hàng có mã nhóm hàng là A trong ngày d. Yêu cầu các thông tin MAKH, HOTEN, ĐIACHI, ĐIENTHOAI,TENHANG. f) Thống kê việc mua hàng trong năm 2002 của khách hàng có mã khách hàng là Kh01 (theo từng hóa đơn). Yêu cầu các thông tin MAKH,HOTEN,SOHĐ,TRIGIAHĐ trong đó TRIGIAHĐ là tổng số tiền trong một hóa đơn (TRIGIAHĐ là thuộc tính tự đặt) 5/ Dựa vào lược đồ cơ sở dữ liệu Giaovien(MAGV,HOTEN,DTGV,MAKHOA) Khoa(MAKHOA,TENKHOA,DTKHOA) Lop(MALOP,TENLOP,SISO,MAKHOA) Monhoc(MAMH,TENMH) 76 65
  66. Phonghoc(SOPHONG,CHUCNANG) Lichbaogiang(MALICH,NGAYDAY,MAGV) Dongbaogiang(MALICH,TUTIET,DENTIET,BAIDAY,GHICHU,LYTHUYET,MAMH,MALOP,SO PHONG) Hãy thực hiện các câu hỏi sau bằng SQL a) Xem lịch báo giảng tuần từ ngày 16/09/2002 đến ngày 23/09/2002 của giáo viên có MAGV (mã giáo viên) là TH3A040. Yêu cầu: MAGV, HOTEN, TENLOP, TENMH, SOPHONG, NGAYDAY, TUTIET, DENTIET, BAIDAY, GHICHU b) Xem lịch báo giảng ngày 23/09/2002 của các giáo viên có mã khoa là CNTT. Yêu cầu: MAGV, HOTEN, TENLOP, TENMH, PHONG, NGAYDAY, TUTIET, DENTIET, BAIDAY, GHICHU) c) Cho biết số lượng giáo viên (SOLUONGGV) của mỗi khoa, kết quả cần sắp xếp tăng dần theo cột tên khoa. yêu cầu: TENKHOA ,SOLUONGGV ( SOLUONGGV là thuộc tính tự đặt) oOo Bài tập Cho quan hệ R trên tập thuộc tính U = {A, B, C, D, E, G) và tập các phụ thuộc hàm F = {AB C, AC D, D EG, G B, A D, CG A}. a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB E và AD BC. b. Tính bao đóng {A}+ của tập thuộc tính {A}. c. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F. 76 66
  67. Bài 5 T ÊN BÀI: QUẢN TRỊ CƠ SỞ DỮ LIỆU THEO MÔ HÌNH CLIENT/SERVER MÃ BÀI: ITPRG 07.5 Mục tiêu thực hiện: - Biết được khái niệm về mô hình cơ sở dữ liệu Client/Server - Biết được những ưu điểm của mô hình cơ sở dữ liệu Client/Sever - Nhìn nhận được những bài toán xử dụng mô hình cơ sở dữ liệu Client/Server - Sử dụng kỹ thuật lập trình có cấu trúc và điều khiển với cơ sở dữ liệu Nội dung: 5.1 Giới thiệu mô hình cơ sở dữ liệu Client/server 5.2 Một số bài toán thực tế có sử dụng mô hình Client/Server 5.1 Giới thiệu mô hình cơ sở dữ liệu Client/server Các máy tính cá nhân (PC) ngày càng trở nên mạnh hơn, nhanh hơn, và rẻ hơn. Có sự chuyển dịch trong hệ thống tập trung. Các đầu cuối (terminal) được nối với hệ thống tập trung bây giờ được thế chỗ bởi các máy tính cá nhân. Chức năng giao diện người dùng (user interface) thường được quản lý trực tiếp bởi các hệ thống tập trung nay được quản lý bởi các máy tính cá nhân. Như vậy, các hệ thống tập trung ngày nay hoạt động như các hệ thống server nó làm thoả mãn các đòi hỏi của các client. Chức năng CSDL có thể được chia thành hai phần: phần trước (front-end) và phần sau (back-end). Phần sau quản trị truy xuất cấu trúc, định giá câu vấn tin và tối ưu hoá, điều khiển sự xảy ra đồng thời và phục hồi. Phần trước của hệ CSDL gồm các công cụ như: tạo mẫu (form), các bộ soạn báo cáo (report writer), giao diện đồ hoạ người dùng (graphical user interface). Giao diện giữa phần trước và phần sau thông qua SQL hoặc một chương trình ứng dụng. Các hệ thống server có thể được phân thành các phạm trù : server giao dịch (transaction server), server dữ liệu (data server). 76 67
  68. • Hệ thống server giao dịch (transaction-server systems): còn được gọi là hệ thống server vấn tin (query-server system), cung cấp một giao diện mà các client có thể gửi đến nó các yêu cầu thực hiện một hành động. Để đáp ứng các yêu cầu, hệ thống thực hiện các hành động và gửi lại client các kết quả. Các người sử dụng có thể đặc tả các yêu cầu trong SQL hoặc trong một giao diện trình ứng dụng sử dụng một cơ chế gọi thủ tục xa (remote-procedure-call). o Các servers giao dịch (Transaction servers): Trong các hệ thống tập trung, phần trước (front-end) và phần sau (back-end) được thực hiện trong một hệ thống. Kiến trúc server giao dịch cho phép chia chức năng giữa phần trước và phần sau. Chức năng phần trước được hỗ trợ trên các máy tính cá nhân (PC). Các PC hành động như những khách hàng của các hệ thống server nơi lưu trữ một khối lượng lớn dữ liệu và hỗ trợ các chức năng phần sau. Các clients gửi các giao dịch đến các hệ thống server tại đó các giao dịch được thực hiện và các kết quả được gửi trả lại cho các clients, người giữ trách nhiệm hiển thị dữ liệu. ODBC (Open DataBase Connectivity) được phát triển để tạo giao diện giữa các clients và các servers. ODBC là một giao diện trình ứng dụng cho phép các clients sinh ra các lệnh SQL và gửi đến một server tại đó lệnh được thực hiện. Bất kỳ client nào sử dụng giao diện có thể nối với bất kỳ một server nào cung cấp giao diện này. Các giao diện client-server khác ODBC cũng được sử dụng trong một số hệ thống xử lý giao dịch. Chúng được xác định bởi một giao diện lập trình ứng dụng, sử dụng nó các clients tạo ra các lời gọi thủ tục giao dịch từ xa ( transactional remote procedure calls ) trên server. Các lời gọi này giống như các lời gọi thủ tục gốc đối với người lập trình nhưng tất cả các lời gọi thủ tục từ xa của một client được bao trong một giao dịch ở server cuối. Như vậy nếu giao dịch bỏ dở, server có thể huỷ bỏ hiệu quả của các lời gọi thủ tục xa riêng lẻ. • Hệ thống server dữ liệu ( Data-server systems ): cho phép các clients trao đổi với các server bằng cách tạo ra các yêu cầu đọc hoặc cập nhật dữ liệu trong các đơn vị như file hoặc trang. Ví dụ, các file-servers cung cấp một giao diện với hệ thống file tại đó các clients có thể tạo, cập nhật, đọc hoặc xoá files. Các servers dữ liệu của cơ sở dữ liệu cung cấp nhiều chức năng hơn; chúng hỗ trợ các đơn vị dữ liệu nhỏ hơn file như trang, bộ ( tuple ) hoặc đối tượng. Chúng cũng cung cấp phương tiện dễ dàng để lấy chỉ mục (indexing) dữ liệu, phương tiện dễ dàng để tạo giao dịch. o Các server dữ liệu (Data Servers): Các hệ thống server dữ liệu được sử dụng trong các mạng cục bộ, trong đó có một nối kết tốc độ cao giữa các máy clients và máy server, các máy clients có sức mạnh xử lý tương thích với máy server và các công việc phải được thực hiện là tăng cường tính toán. Trong một môi trường như vậy, có thể gửi dữ liệu đến các máy client để thực hiện tất cả các xử lý tại máy clients sau đó gửi dữ liệu trở lại đến máy server. Kiến trúc này đòi hỏi các tính năng back-end đầy đủ tại các clients. Kiến trúc server dữ liệu thường được gặp trong các hệ CSDL hướng đối tượng (Object- Oriented DataBase Systems) 76 68
  69. Gửi trang đối lại với gửi hạng mục (Page shipping versus item shipping): Đơn vị liên lạc dữ liệu có thể là các "hạt thô" (Coarse granularity) như một trang, hay hạt min (fine granularity) như một bộ (tuple)/ đối tượng (object). Ta dùng thuật ngữ hạng mục để chỉ bộ hay đối tượng. Nếu đơn vị liên lạc là một hạng mục sẽ dẫn đến tổng chi phí truyền thông điệp tăng. Đem về hạng mục (fetching item) trước khi nó được yêu cầu, được gọi là đem về trước (Prefetching). Gửi trang có thể được xem như một dạng của đem về trước nếu một trang chứa nhiều hạng mục. Chốt (Locking): Các chốt thường được cấp bởi server trên các hạng mục mà nó gửi cho các máy clients. Khi client giữ một chốt trên một hạng mục dữ liệu, nó có quyền “sử dụng” hạng mục dữ liệu này, hơn nữa trong khoảng thời gian client giữ chốt trên hạng mục dữ liệu không một client nào khác có thể sử dụng hạng mục dữ liệu này. Bất lợi của gửi trang là các máy client có thể được cấp các chốt "hạt quá thô" một chốt trên một trang ẩn chứa các chốt trên tất cả các hạng mục trong trang. Các kỹ thuật nhằm tiết giảm chốt (lock deescalation) được đề nghị, trong đó server có thể yêu cầu các clients truyền trả lại các chốt trên các hạng mục cấp phát trước. Nếu máy client không cần hạng mục cấp phát trước, nó có thể truyền trả lại các chốt trên hạng mục cho server và các chốt này có thể được cấp phát cho các clients khác. Trữ dữ liệu (Data caching): Dữ liệu được gửi đến một client với danh nghĩa một giao dịch có thể được trữ ở client, ngay cả khi giao dịch đã hoàn tất, nếu không gian lưu trữ có sẵn. Các giao dịch liên tiếp tại cùng một client có thể dùng dữ liệu được trữ. Tuy nhiên, sự kết dính dữ liệu là một vấn đề cần phải được xem xét: một giao dịch tìm thấy dữ liệu được trữ, nó phải chắc chắn rằng dữ liệu này là "mới nhất" vì các dữ liệu này có thể được cập nhật bởi một client khác sau khi chúng được trữ. Như vậy, vẫn phải trao đổi với server để kiểm tra tính hợp lệ của dữ liệu và để giành được một chốt trên dữ liệu. Trữ chốt (Lock caching): Các chốt cũng có thể được trữ lại tại máy client. Nếu một hạng mục dữ liệu được tìm thấy trong cache và chốt yêu cầu cho một truy xuất đến hạng mục dữ liệu này cũng tìm thấy trong cache, thì việc truy xuất có thể tiến hành không cần một liên lạc nào với server. Tuy nhiên, server cũng phải lưu lại vết của các chốt được trữ. Nếu một client đòi hỏi một chốt từ server, server phải gọi lại tất cả các chốt xung đột trên cùng hạng mục dữ liệu từ tất cả các máy clients đã trữ các chốt. hình 5.1 : hệ thống sever dữ liệu 5.2 Một số bài toán thực tế có sử dụng mô hình Client/Server 76 69
  70. Phần mềm ứng dụng trong lĩnh vực bảo hiểm y tế cho các tổ chức, cơ quan bảo hiểm xã hội, bảo hiểm y tế. Mục tiêu Thiết lập hệ thống thông tin thông suốt và được chia sẽ giữa các bộ phận nghiệp vụ nhưng đảm bảo an toàn, kiểm soát số liệu tốt, nâng cao chất lượng phục vụ khách hàng, giảm thiểu các chi phí nhân công thủ công và thống kê báo cáo. Quản lý chặt chẽ qui trình thu tiền bảo hiểm y tế thống nhất trong toàn hệ thống. Quản lý thống nhất và xuyên suốt việc cấp phát thẻ bảo hiểm y tế, phiếu khám chữa bệnh cho các đối tượng tham gia bảo hiểm. Quản lý theo dõi chặt chẽ tình hình chi quỹ khám chữa bệnh cho các cơ sở khám chữa bệnh để làm căn cứ báo cáo và quyết toán với các đơn vị, các cơ sở khám chữa bệnh. Đặc điểm Thiết kế trên mô hình Client/Server: Giải quyết vấn đề cơ sở dữ liệu lớn. Máy tính chủ (Server): Windows NT40/2000, SQL Server 7.0/2000. Các trạm làm việc (Workstation): Windows 9x/ME/XP/2000 Chuẩn ODBC (Open DataBase Connectivity) Tính chính xác, nhanh chóng và đồng bộ: Các máy trạm triển khai tại các phòng ban trên phạm vi toàn công ty. Số liệu được cập nhật và xử lý kịp thời, đồng bộ thống nhất xuyên suốt trong toàn công ty. Các báo cáo, thống kê nhanh chóng, kịp thời tại mọi thời điểm và mang tính chính xác cao nhằm nâng cao hiệu quả quản lý và giảm thiểu các chi phí không cần thiết. Tính phân cấp, bảo mật cao: Phân quyền cho mỗi người sử dụng trên từng chức năng của hệ thống. Phân quyền cập nhật và khai thác số liệu trên Database server. Ghi nhận, theo dõi lịch sử cập nhật số liệu. An toàn dữ liệu: Tiện ích Backup Restore Database tự động theo lịch hẹn. 76 70
  71. Tự động cắt số liệu lịch sử theo qui định đặt ra để tăng khả năng truy cập. Có nhật ký an ninh theo dõi mọi hoạt động thao tác trên cơ sở dữ liệu. Chức năng Phân hệ quản trị hệ thống: Phân hệ phát hành thẻ và phiếu khám chữa bệnh: Quản lý các thành phần chức năng, bảo mật phân quyền hệ thống, nhật ký thao tác Quản lý việc phát hành và in ấn phiếu dữ liệu và giao dịch trong toàn bộ hệ thống. khám chữa bệnh cho tất cả các đối Hệ thống tích hợp chặt chẽ những tính tượng tham gia bảo hiểm y tế đúng năng ưu việt được thiết kế sẵn trong hệ thời hạn. quản trị cơ sở dữ liệu để đem lại những Quản lý việc cấp mới, cấp lại, gia hạn công cụ quản trị hệ thống hiệu quả, an toàn cho các đối tượng tham gia bảo hiểm trong vận hành. y tế. Phân hệ danh mục dùng chung: Phân hệ quản lý chi: Quản lý các danh mục tập trung và xuyên Quản lý và phân bổ các khoản tạm suốt toàn hệ thống. ứng cho các đơn vị, cơ sở khám chữa Các danh mục dùng chung sẽ được phân bệnh. quyền chi tiết cho từng bộ phận chức năng, Quản lý chi tiết chi phí khám chữa đảm bảo nguyên tắc duy nhất mã trong bệnh ngoại trú, nội trú, chi phí khám danh mục, gợi nhớ và quản lý thống nhất chữa bệnh ngoại tỉnh, thanh toán trực trong toàn doanh nghiệp nhằm phục vụ tiếp, thanh toán cho y tế trường học, công tác thống kê một cách nhanh chóng và chi phí hỗ trợ mai táng, thanh toán đại chính xác. lý, chi phí quản lý, tuyên truyền, khen thưởng Phân hệ quản lý thu: Phân hệ thanh quyết toán: Quản lý danh sách thu bảo hiểm y tế theo từng nhóm đối tượng: hộ gia đình, hội đoàn Cập nhật và theo dõi số lượt khám thể, học sinh sinh viên chi tiết theo từng khu chữa bệnh và chi phí khám chữa bệnh vực thành thị, nông thôn, số lượt người của các đối tượng tham gia bảo hiểm 76 71
  72. tham gia, thời hạn, mức đóng làm căn cứ y tế theo thông báo của phòng giám lập báo cáo và cấp phát thẻ bảo hiểm y tế, định, để làm căn cứ báo cáo thống kê. phiếu khám chữa bệnh. Quản lý tình hình thu thực tế để đối chiếu Phân hệ báo cáo thống kê: với kế toán và lập các báo cáo về tài chính. Khai thác số liệu cập nhật từ các bộ phận lập báo cáo quản lý theo qui định của cơ quan bảo hiểm xã hội Việt Nam và các yêu cầu quản lý khác. Cho phép chọn báo cáo thống kê theo quận huyện, cơ sở khám chữa bệnh, loại đối tượng, nhóm đơn vị, đơn vị tham gia bảo hiểm y tế, chi tiết theo khu vực thành thị, nông thôn Chọn thời gian báo cáo từ ngày bất kỳ đến ngày bất kỳ hoặc tháng, quý, năm. Bài tập . Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A C, AB G, B DE, G H, GH A }. a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB H và G C. b. Tính bao đóng {G}+ của tập thuộc tính {G}. Bài 3. Cho quan hệ R trên tập thuộc tính U = {G, H, I, K, L, M} và tập các phụ thuộc hàm F = {GH L, I M, L K, HM G, GK I, H L}. d. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm HI G và GH KM. e. Tính bao đóng {G, H}+ của tập thuộc tính {G, H}. f. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F. Bài 4. Cho quan hệ R(U): U = {H, I, K, L, M, N} và tập phụ thuộc hàm F = {I LM, HI K, K N, KN I}. c. Tìm một khoá tối thiểu của quan hệ R. d. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(HIN); R2(HIK), R3(ILM). e. Chuẩn hoá quan hệ R về dạng chuẩn 3NF. 76 72