Visual Foxpro - Bài 6: Tạo Queries và Views
Trên thực tế, các bảng của CSDL thường có quan hệ nào đó với nhau. Mối quan hệ giữa các bảng có thể thiết lập qua lệnh (Lệnh SET RELATION - xem bài 5) - mối quan hệ tạm thời , hoặc trong quá trình thiết kế cơ sở dữ liệu - mối quan hệ bền vững. Trong phần này chúng ta chỉ xét mối quan hệ bền vững.
Để đặt quan hệ giữa các bảng thì việc đầu tiên cần làm đó là xác định các Index cho bảng. Việc xác định các Index cho bảng có thể thực hiện qua lệnh (lệnh INDEX - xem bài 5) hoặc có thể xác định khi thiết kế bảng trong giao diện Table Designer.
Bài 6 - Tạo queries và views I. Thiết lập quan hệ giữa các bảng Trên thực tế, các bảng của CSDL thường có quan hệ nào đó với nhau. Mối quan hệ giữa các bảng có thể thiết lập qua lệnh (Lệnh SET RELATION - xem bài 5) - mối quan hệ tạm thời , hoặc trong quá trình thiết kế cơ sở dữ liệu - mối quan hệ bền vững. Trong phần này chúng ta chỉ xét mối quan hệ bền vững. Để đặt quan hệ giữa các bảng thì việc đầu tiên cần làm đó là xác định các Index cho bảng. Việc xác định các Index cho bảng có thể thực hiện qua lệnh (lệnh INDEX - xem bài 5) hoặc có thể xác định khi thiết kế bảng trong giao diện Table Designer. Tạo index trong Table Designer (Xem bài 4) Thiết lập quan hệ bền vững giữa các bảng trong CSDL Mối quan hệ bền vững được tạo trong quá trình thiết kế CSDL, và được lưu lại trong file csdl (DBC) và có những đặc điểm sau: Được tự động sử dụng như các kết nối mặc nhiên (khi tạo Queries và Views) Được thể hiện bằng các đường nối trong Database Designer. Được thể hiện trong môi trường Data Dùng để lưu thông tin về mối quan hệ toàn vẹn. Không giống như các mối quan hệ tạm thời được tạo bằng lệnh SET RELATION, mối quan hệ bền vững không không cần phải tạo lại mỗi khi sử dụng đến các bảng dữ liệu. Tuy nhiên bởi mối quan hệ bền vững không điều khiển các con trỏ bản ghi giữa các bảng dữ liệu nên mối quan hệ tạm thời vẫn rất cần thiết khi phát triển ứng dụng. Các bước thiết lập quan hệ bền vững Mở Project Chọn Tab Data Chọn mục Database và mở rộng (expand) Chọn Database cụ thể cần làm việc (DIEMDB) Chọn mục Modify, khi đó giao diện Database Designer xuất hiện. Trong giao diện Database Designer để tạo quan hệ giữa 2 bảng chỉ cần kéo-thả trường Index (Primary) từ bảng cha đến trường Index (Regular) của bảng con. ở đây cần lưu ý việc tạo Index cho các trường trước khi thiết lập quan hệ giữa các bảng. Sau khi thiết lập xong quan hệ giữa các bảng ta có giao diện Database Designer có dạng như hình 6.1. Hình 6.1 Quan hệ giữa các bảng trong CSDL Đường nối thể hiện quan hệ giữa các bảng. Thiết lập quan hệ toàn vẹn giữa các bảng Thực chất là xác định các qui tắc ứng xử giữa các bảng có quan hệ với nhau. Các qui tắc đó sẽ kiểm xoát các việc như thay đổi (Update), Thêm (Insert), Xoá (Delete) sao cho vẫn đảm bảo mối quan hệ giữa các bảng này không bị vi phạm. Để thiết lập quan hệ toàn vẹn giữa các bảng, nháy đúp chuột trái vào đường liên kết bất kỳ giữa 2 bảng, tiếp đến chọn lệnh Referential Integrity như hình 6.2 Hình 6.2 Khi chọn Referential Integrity giao diện này xuất hiện như hình 6.3 Hình 6.3 Giao diện Referential Integrity, Rules For Updating Trong đó: Dòng (trong grid phía dưới): Thể hiện các quan hệ hiện có của CSDL, các thông tin của một quan hệ gồm có: Bảng cha (Parent Table), Bảng con (Child Table), Biểu thức quan hệ trên bảng cha (Parent Tag), Biểu thức quan hệ trên bảng con (Child Tag). Tab Rules for Updating: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi sửa đổi. Các qui tắc ứng xử ở đây là: Ignore: Cho phép sửa các bản ghi liên quan trên bảng con một cách độc lập (không phụ thuộc vào bảng cha), đây là giá trị mặc định. Ví dụ Restrict: Không cho phép sửa đổi các bản ghi trong bảng cha nếu tồn tại những bản ghi liên quan trong bảng con. Ví dụ Cascade: Sửa tất cả những bản ghi có quan hệ trong bảng con với giá trị khoá mới tương ứng của bảng cha. Ví dụ Tab Rules for Deleting: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi xoá. Các qui tắc ứng xử ở đây là: Ignore: Cho phép xoá các bản ghi liên quan trên bảng con một cách độc lập (không phụ thuộc vào bảng cha), đây là giá trị mặc định. Ví dụ Restrict: Không cho phép xoá các bản ghi trong bảng cha nếu tồn tại những bản ghi liên quan trong bảng con. Ví dụ Cascade: Xoá tất cả những bản ghi có quan hệ trong bảng con tương ứng với bản ghi bị xoá của bảng cha. Ví dụ Hình 6.4 Rules For Deleting Tab Rules for Inserting: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi thêm mới. Các qui tắc ứng xử ở đây là: Hình 6.4 Rules For Inserting Ignore: Cho phép thêm các bản ghi vào bảng con một cách độc lập (không phụ thuộc vào bảng cha), đây là giá trị mặc định. Ví dụ Restrict: Không cho phép thêm các bản ghi vào bảng con nếu không tồn tại một bản ghi tương ứng trong bảng cha. Ví dụ II. Tạo các queries Query: Công cụ truy vấn dữ liệu. Có thể tạo ra query với nhiều lý do khác nhau như: để tổ chức thông tin cho Report, để trả lời nhanh một câu hỏi .... Ví dụ, với bảng DIEM khi biết mã sinh viên và cần xem sinh viên đó có tên là gì? Bảng điểm của một môn học nào đó. .. Tạo mới một Query sử dụng Wizard Trong Project Manager chọn Tab Data Chọn Queries Chọn New Chọn Query Wizard Chọn kiểu Query Wizard cần tạo, có các kiểu là Cross-Tab, Graph và Query. Ví dụ 1: Tạo một Cross Tab Query Giả sử cần xác định xem số lượng thí sinh thi trượt lần 1 các môn học theo lớp có số lượng là như thế nào? Số liệu cần đưa ra dạng sau: Lớp /môn MH1 MH2 ... ... ... MHn 3A-04 4 7 ... ... ... ... 3B-04 3 5 ... ... ... ... ... ... ... ... ... ... ... Khi đó cần sử dụng một Cross-Tab. Chọn Cross-Tab Wizard, chọn OK. Step 1 - Select Fields: Chọn Database, Tables và Fields (Sử dụng lệnh >, >> để chọn các trường cần thiết). Khi đã chọn xong các trường, chọn Next để qua bước 3. Step 2 - Define Layout: Bước này cần định nghĩa 3 đối tượng cho Cross-Tab đó là: Row (trong ví dụ này là Malop), Column (Mamon) và Data (Diem1) bàng cách nhấp-thả (Drag) các trường vào các ô (Row, Column, Data) tương ứng. Chọn Next để tiếp tục Step 3 - Add summary Information: Chọn các hàm thống kê đối với đối tượng Data, các hàm này có thể là: Sum, Countm Average, Max, Min, trong ví dụ này thì Summary chọn là Count. Tuỳ chọn Subtotal cho phép thêm vào cột cuối để tính subtotal cho mỗi dòng. Tiếp đến chọn Finish và nhập vào tên file Query để hoàn tất công việc (hoặc chọn Next sẽ chuyển đến bước 4 Step 4 - Finish). Trong cửa sổ Project Manager chọn Query vừa tạo rồi chọn lệnh Run - > Được kết quả thể hiển của Query. Ví dụ 2: Tạo một Graph Form bằng Graph Wizard Giả sử cần thể hiện số lượng sản phẩm của các mặt hàng hiện có trong kho dạng biểu đồ. Khi đó sử dụng Graph Wizard như sau: Chọn Graph Wizard, chọn OK. Step 1 - Select Fields: Như ví dụ trên Step 2 - Define Layout: Bước này cần định nghĩa 2 đối tượng cho là: Data series - Trường số (trong ví dụ này là Soluong) và Axis - Trong ví dụ này là Ma. Chọn Next để tiếp tục (lưu ý là Next và Finish chỉ cho phép khi đã chọn đủ Data series và Axis). Step 3 - Select Graph Style Bước này cho phép chọn kiểu biểu đồ, trong ví dụ này chọn biểu đồ cột (thứ 6). Chọn Next để tiếp tục Step 4 - Finish: Chọn Finish rồi nhập vào tên form cần lưu (Kết quả của Wizard này là một Form). Trong cửa sổ Project Manager chọn Form vừa tạo rồi chọn lệnh Run - > Được kết quả thể hiển của Query. Với ví dụ 2 ta có form DMHANG dạng biểu đồ như hình sau: Tạo mới một Query sử dụng Queries Designer Giả sử cần xem bảng điểm một môn học của một lớp nào đó, bảng điểm bao gồm Masv, Hoten, Ngaysinh và điểm. Với yêu cầu này có thể sủ dụng Query để lấy thông tin theo các bước sau: Trong Project Manager chọn Tab Data Chọn Queries Chọn New Chọn New Query Chọn Table hoặc View cần dùng cho Query như hình sau. Trong ví dụ này chọn Table Diem (rồi Add) và Hososv (rồi Add) (bước chọn Bảng này có thể thực hiện về sau). Chọn Close để đóng cửa sổ Add Table or View Tiếp đến giao diện Query xuất hiện như hình 6.6 Giao diện Query Designer: Phía trên: Thể hiện các bảng (hoặc View) sử dụng trong Query. Nháy chuột phải vào phần này ta có Popup menu như sau: Run Query: Thực hiện (chạy) query này View SQL: Xem query ở dạng SQL Remove Table: Loại bỏ bảng đã chọn khỏi Query (khi chọn vào bảng) Add Table: Show giao diện Add Table or View Output Setting: Tuỳ chọn đầu ra cho query (xem sau). Hình 6.6 - Query Designer Đường nối thể hiện quan hệ giữa các bảng. Phía dưới: Các tuỳ chọn cho thiết kế Query Tab Fields: Chọn các trường cho query. Available Fields: Các filed có thể chọn cho query. Selected Fields: Các trường đã chọn. Lệnh Add: Thêm trường đã chọn từ Available Fields vào Selected Fields. Lệnh Add All: Thêm tất cả các trường từ Available Fields vào Selected Fields. Lệnh Remove: Loại bỏ 1 trường đã chọn trong Selected Fields. Lệnh Remove All: Loại bỏ tất cả các trường đã chọn trong Selected Fields. Mục Functions and Expressions: Khai báo 1 biểu thức và có thể thêm (Add) biểu thức này vào Selected fields (và nó có vai trò như 1 trường, dùng khai báo AS để đặt tên cho biểu thức này). Tab Joint: Thiết lập các thuộc tính về kết nối giữa 2 bảng. Các bảng dùng cho 1 query thường có quan hệ nào đó với nhau. Khi truy xuất dữ liệu, kiểu liên kết (Joint Type) có vai trò quan trọng trong việc ứng xử giữa các bảng. Ví dụ có 2 bảng Dmhang và Hoadon được dùng trong 1 query và có số liệu như hình sau: Bảng Dmhang có chứa các bản ghi H4, H5, các bản ghi này không có trong Hoađon, và ngược lại trong Hoadon có mặt hàng H10 là loại hàng chưa có trong Dmhang. Như vậy khi ghép 2 bảng này mặt hang H4, H5 có số hóa đơn là bao nhiêu? Hóa đơn 7 mặt hàng H10 thì tên hàng là gì, đơn giá là bao nhiêu? Để giái quyết vấn đề này chúng ta sẽ xét các Joint sau đây. Left Table: Bảng phía trái (bảng cha) Right Table: Bảng phía phải (bảng con) Joint Type: Có thể 1 trong các loại sau: Inner joint: Chỉ trả về các bản ghi có thể so khớp được với nhau trên 2 bảng (khi đó các bản ghi H4, H5 và H7 trong cả 2 bảng sẽ không được trả về) Left Outer Joint: Right Outer joint: Full Joint: Bài tập Tạo chỉ mục cho các bảng như đã chỉ ra trong bài 1.
File đính kèm:
- Visual Foxpro - Bài 6 Tạo Queries và Views.doc