Hệ quản trị cơ sở dữ liệu - Microsoft Visual FoxPro - Đỗ Quang Vinh
KHỞI ĐỘNG Microsoft Visual FoxPro
Cách 1: Start\Program\Microsoft Visual FoxPro 9
Cách 2: Start\Run
Cách 3: nháy vào biểu tượng Microsoft Visual FoxPro 9 trên màn hình nền Desktop
CÁC CHẾ ĐỘ LÀM VIỆC: 2
a. Chế độ tương tác
b. Chế độ chương trình
THOÁT KHỎI Visual FoxPro: lệnh QUIT
dữ liệu: LIST/ DISPLAY/ BROWSE 5. TÍNH TOÁN HỖN HỢP CALCULATE - CÚ PHÁP: CALCULATE [] [] [FOR ] [WHILE ] [TO ] ĐỖ QUANG VINH - HUC * - CHỨC NĂNG: Lệnh CALCULATE là tổng quát của các lệnh SUM, AVERAGE, COUNT ... cho phép thực hiện đồng thời nhiều giá trị khác nhau trong cùng một lệnh trong đó: bao gồm danh sách các hàm: CNT() SUM() AVG() MAX() MIN() STD() VAR() ĐỖ QUANG VINH - HUC * 6. TRÍCH LỌC DỮ LIỆU COPY TO - CÚ PHÁP: COPY TO [] [FIELDS] [FOR ] [WHILE ] - CHỨC NĂNG: Tạo bảng dữ liệu mới được trích lọc từ bảng dữ liệu hiện thời, bao gồm những bản ghi thuộc thoả mãn và những trường trong ĐỖ QUANG VINH - HUC * VII - QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆU 1. ĐẶT VẤN ĐỀ NGUYÊN TẮC QUAN HỆ Trong xử lý dữ liệu, nhiều khi phải xử lý nhiều bảng có quan hệ với nhau đồng thời. Các mối quan hệ là mối quan hệ từ thực tế mang vào, hoặc là do phát sinh trong quá trình chuyển (phân tích) từ môi trường thực tế sang mô hình tin học. Xét các mối quan hệ, từ đó tìm ra phương thức xử lý nhiều bảng đồng thời. QUAN HỆ 1-1 QUAN HỆ 1-N, N-1 (1 - nhiều, nhiều - 1) QUAN HỆ M-N (nhiều - nhiều) QUAN HỆ BẮC CẦU QUAN HỆ ĐỒNG THỜI QUAN HỆ PHẢN THÂN ĐỖ QUANG VINH - HUC * VÙNG LÀM VIỆC VÀ LỆNH SELECT - Là vùng nhớ trong bộ nhớ RAM mà VFP dành cho việc mở bảng dữ liệu, cho phép tạo ra 32767 vùng làm việc được đánh số từ 1 đến 32767 - Trên một vùng làm việc ở một thời điểm chỉ có một bảng dữ liệu được mở, nếu mở bảng dữ liệu khác thì bảng hiện thời tự đóng lại - Muốn mở nhiều bảng đồng thời phải chọn cho mỗi bảng một vùng làm việc khác nhau bằng lệnh: SELECT trong đó: là vùng muốn chọn để mở bảng dữ liệu cho phép từ 1 ÷ 32767 + Việc chọn vùng làm việc không nhất thiết phải theo trật tự ĐỖ QUANG VINH - HUC * + Lệnh SELECT 0 chọn vùng làm việc có số vùng thấp nhất chưa dùng tới để mở bảng dữ liệu VÙNG LÀM VIỆC VÀ BÍ DANH ALIAS GÁN BÍ DANH CHO BẢNG DỮ LIỆU - Mỗi khi mở một bảng trên một vùng làm việc, VFP cho phép gán bí danh cho bảng ngoài tên khai sinh bằng lệnh: USE Tên bảng ALIAS - Bí danh đặt theo quy tắc tên biến: bắt đầu bằng ký tự sau đó là số hoặc ký tự, không chứa dấu cách và dài 254 kí tự - Các bảng được mở đồng thời phải có bí danh khác nhau. - Nếu không gán bí danh cho bảng dữ liệu khi mở thì VFP tự đặt tên bí danh theo quy tắc: ĐỖ QUANG VINH - HUC * + Lấy tên bảng làm tên bí danh. Nếu tên bảng thoả mãn tên biến và không bị trùng bí danh + Bí danh mặc định A ÷ J cho 10 vùng làm việc đầu tiên, các vùng còn lại là W11 ÷ W32767 CHỌN VÙNG LÀM VIỆC DỰA VÀO BÍ DANH - Khi đã mở bảng dữ liệu ở vùng làm việc nào đó có thể dùng lệnh SELECT bí danh để thay cho lệnh SELECT số hiệu vùng THAM KHẢO TRÊN CÁC VÙNG LÀM VIỆC KHÁC - Tại vùng hiện thời có thể mở bảng dữ liệu ở vùng khác bằng lệnh: USE Tên bảng IN Số hiệu vùng - Tại một vùng chỉ được mở một bảng, nhưng một bảng có thể mở ở nhiều vùng khác bằng từ khoá AGAIN: USE AGAIN [ALIAS ] ĐỖ QUANG VINH - HUC * VÙNG LÀM VIỆC VÀ CON TRỎ BẢN GHI - VFP quản lý riêng biệt từng bảng dữ liệu và các tệp liên quan đang mở của chúng như các tệp .CDX, .IDX, .FMT, .FPT - Đặc biệt có 32767 con trỏ bản ghi để quản lý 32767 vùng làm việc. Vì vậy, việc dịch chuyển con trỏ bản ghi vùng này không làm ảnh hưởng đến con trỏ bản ghi vùng khác, việc chuyển vùng làm việc từ vùng này sang vùng kia cũng không ảnh hưởng tới con trỏ bản ghi của các vùng đó, kể cả khi 1 bảng dữ liệu được mở ở nhều vùng khác nhau Vì vậy, nếu không thiết lập mối quan hệ nào giữa các bảng dữ liệu thì con trỏ bản ghi trong các vùng khác nhau là hoàn toàn độc lập ĐỖ QUANG VINH - HUC * CHUYỂN ĐỔI VÙNG LÀM VIỆC HIỆN THỜI - Để làm việc được với nhiều bảng đồng thời, phải tham chiếu dữ liệu ở các bảng khác nhau, sẽ phải thường xuyên thay đổi vùng làm việc hiện thời - Lệnh SELECT ngoài công dụng xác định vùng làm việc của từng bảng dữ liệu còn cho phép di chuyển từ vùng này sang vùng khác - Một số dạng của lệnh SELECT: + SELECT + SELECT + SELECT + SELECT ĐỖ QUANG VINH - HUC * QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆU TRONG CÁC VÙNG KHÁC NHAU - Các bảng được mở ở các vùng làm việc khác nhau chỉ có quan hệ với nhau khi thiết lập được mối quan hệ giữa chúng bằng các lệnh SET RELATION, JOIN, UPDATE - Lệnh SET RELATION duy trì mối quan hệ một chiều từ bảng chủ tới bảng khách. Muốn có mối quan hệ đảo ngược chúng ta phải thiết lập lại mối quan hệ - Các lệnh JOIN, UPDATE chỉ duy trì mối quan hệ tạm thời giữa 2 bảng khi các lệnh này đang thi hành. Khi thi hành xong các bảng đó lại trở về trạng thái độc lập ĐỖ QUANG VINH - HUC * 2. ĐẶT QUAN HỆ BẰNG LỆNH SET RELATION LỆNH SET RELATION - Nhiều trường hợp xử lý dữ liệu đòi hỏi phải tham khảo dữ liệu có liên quan với nhau ở các bảng khác nhau, phải thiết lập mối quan hệ giữa chúng bằng lệnh SET RELATION. Khi đó, có một cơ chế tự động lật các bản ghi của bảng dữ liệu khách tương ứng với sự dịch chuyển bản ghi của bảng hiện thời (bảng chủ). Cơ chế này được hoạt động theo một mối "quan hệ" đã được xác định từ trước giữa bảng chủ và bảng khách - Cú pháp: SET RELATION [ INTO | ] [, INTO ...] [IN | ] [ADDITIVE] ĐỖ QUANG VINH - HUC * Ví dụ: Để quản lý bạn đọc trong thư viện CLOSE ALL SELECT 2 USE KHOSACH ALIA KS INDEX ON SDK TO CMSDK SELECT 1 USE BANDOC SET RELATION TO SDK INTO KS BROWSE FIELDS SDK, HOTEN, KS.TENSACH, NGAYMUON, SONGAYQH=DATE()-NGAYMUON-15 CHÚ Ý KHI DÙNG LỆNH SET RELATION - Nếu một trong hai bảng thay đổi cấu trúc, đặc biệt là trường quan hệ thì quan hệ vẫn được duy trì, vì thế có thể gây ra những kết quả sai ĐỖ QUANG VINH - HUC * ĐỖ QUANG VINH - HUC * - Không dùng lệnh COPY TO, SORT ON, JOIN ... để tạo ra bảng kết quả mà bảng này là bảng khách - Không nên dùng lệnh SUM, AVERAGE theo biểu thức nào đó của bảng khách. - Thường thiết lập quan hệ từ bảng có nhiều bản ghi trùng khoá đến bảng mỗi khoá chỉ có 1 bản ghi duy nhất - Lập SET RELATION cho phép thiết lập mối quan hệ bắc cầu, trong đó một bảng vừa là khách của quan hệ này, vừa là chủ quan hệ khác. - Song, không được đặt quan hệ vòng Ví dụ: A B C A ĐỖ QUANG VINH - HUC * HUỶ BỎ MỐI QUAN HỆ - Mở một quan hệ mới từ vùng hiện thời đến vùng khác sẽ cắt đứt quan hệ của vùng hiện thời đã có với các vùng khác - Đứng ở vùng làm việc của bảng chủ ra lệnh SET RELATION TO không có tham số - Đóng các bảng 3. KẾT NỐI CÁC BẢNG DỮ LIỆU BẰNG LỆNH JOIN - Dùng để tạo ra một bảng thứ ba từ hai bảng đang mở dựa trên một tiêu chuẩn nào đó đã định trước. Chọn 1 trong 2 bảng đã mở để kết nối ở vùng hiện thời, còn bảng kia ở một vùng khác. - Cú pháp: JOIN WITH TO [FIELDS ] [FOR ] + Bảng thứ nhất ở vùng hiện thời, bảng thứ hai nhận diện bởi bí danh sau WITH ĐỖ QUANG VINH - HUC * - Ví dụ: quản lý sách thư viện có bảng BANDOC và bảng KHOSACH. Tạo bảng thứ 3 là BDMS gồm trường SDK, TENSACH, SOTHE và HOTEN CLOSE ALL SELECT 2 USE KHOSACH ALIAS KS SELECT 1 USE BANDOC JOIN WITH KS TO SACHMUON FIELDS SOTHE, HOTEN, SDK, KS.TENSACH FOR SDK=KS.SDK SELECT 3 USE BDMS BROWSE ĐỖ QUANG VINH - HUC * ĐỖ QUANG VINH - HUC * 4. CẬP NHẬT BẢNG CHÍNH TỪ CÁC BẢNG LIÊN QUAN UPDATE - Một trong những ứng dụng của việc mở nhiều bảng là có thể lấy dữ liệu từ bảng này cập nhật sang bảng khác. Bảng được cập nhật phải được mở ở vùng hiện hành, còn bảng chứa các dữ liệu để lấy phải được mở ở một vùng khác với . Để VFP biết được cần lấy dữ liệu từ những bản ghi nào của bảng có dữ liệu, sao chép sang bản ghi hiện hành của bảng cần nhập, chúng ta cần phải xác định một giá trị so khớp. Trường tính giá trị này được gọi là và phải có mặt trong cả hai bảng. - Cú pháp: UPDATE ON FROM REPLACE WITH [ WITH , ...] [RANDOM] ĐỖ QUANG VINH - HUC * Có 2 cách dùng UPDATE: a. Dùng UPDATE không có RANDOM - Đòi hỏi cả hai bảng hiện hành và bảng cần phải được sắp xếp vật lý hoặc chỉ mục tăng dần theo - Nếu không thoả mãn điều kiện, UPDATE không có RANDOM vẫn làm việc nhưng cho kết quả sai b. Dùng UPDATE có RANDOM - Không đòi hỏi bảng phải có thứ tự, nhưng bảng hiện hành phải được chỉ mục tăng theo - Nếu bảng hiện hành không được chỉ mục thì VFP thông báo lỗi Database is not ordered (dữ liệu không đưọc sắp xếp), còn nếu chỉ mục không đúng sẽ cho kết quả sai ĐỖ QUANG VINH - HUC * - Ví dụ: Trong việc quản lý xuất bản phẩm, giả sử đã biết tình trạng tồn kho đầu tháng, trong tháng có thể nhập, xuất một số hàng. Mỗi lần nhập, xuất đều được ghi nhận lại trong những biên lai tương ứng. Căn cứ vào những biên lai này, có thể tính lại tình trạng tồn kho cho đầu tháng kế tiếp. Giả sử tình trạng tồn kho được cất trong bảng KDXBP gồm hai trường: MAXBP ghi mã xuất bản phẩm và SOLUONG ghi số lượng xuất bản phẩm. Các biên lai nhập được cất trong bảng NHAPXBP. Các biên lai xuất được cất trong bảng XUATXBP ĐỖ QUANG VINH - HUC * CLOSE ALL SELECT 2 USE NHAPXBP ALIAS NH SELECT 3 USE XUATXBP ALIAS XU SELECT 1 USE KDXBP INDEX ON MAXBP TO CMXBP BROWSE UPDATE ON MAXBP FROM NH REPLACE SOLUONG WITH SOLUONG + NH.SOLUONG RANDOM BROWSE UPDATE ON MAXBP FROM XU REPLACE SOLUONG WITH SOLUONG - XU.SOLUONG RANDOM BROWSE ĐỖ QUANG VINH - HUC * ĐỖ QUANG VINH - HUC * TÀI LIỆU THAM KHẢO Date C.J. (1995), An Introduction to Database Systems, 6th Edition, Addison-Wesley, Massachusetts. A.J. Fabbri, A.R. Schwab (1999), Quản trị cơ sở dữ liệu, Trần Đức Quang biên dịch, Nxb Thống kê, TP. Hồ Chí Minh. T.J. Toby (2002), Mô hình hóa & Thiết kế cơ sở dữ liệu, Trần Đức Quang biên dịch, Nxb Thống kê, TP. Hồ Chí Minh. Nguyễn Kim Anh (2004), Nguyên lý của các hệ cơ sở dữ liệu, Nxb Đại học quốc gia Hà Nội. Nguyễn Thị Ngọc Mai, Nguyễn Thị Kim Trang, Đoàn Thiện Ngân (2007), Lý thuyết cơ sở dữ liệu, 2 tập, Nxb Lao động - Xã hội, TP. Hồ Chí Minh. Đỗ Trung Tuấn (2004), Cơ sở dữ liệu, Nxb Đại học quốc gia Hà Nội. Nguyễn Tô Thành (1996), Giáo trình FoxPro, 2 tập, Trường Đại học Bách khoa Hà Nội. Nguyễn Tuệ (2007), Nhập môn hệ cơ sở dữ liệu, Nxb Giáo dục, Hà Nội. Nguyễn Văn Tâm, Nguyễn Hữu Bình (2002), Cơ sở dữ liệu quan hệ, Nxb Thống kê, TP. Hồ Chí Minh. Đỗ Quang Vinh (chủ biên) (2010), Hệ quản trị cơ sở dữ liệu Microsoft Visual FoxPro và ứng dụng, xuất bản lần thứ 2, Nxb Đại học Quốc gia Hà Nội.
File đính kèm:
- Hệ quản trị cơ sở dữ liệu - Microsoft Visual FoxPro - Đỗ Quang Vinh.ppt