Chương 9. Thao tác với nhiều tệp CSDL

1. Định vùng làm việc và gán bí danh 2. Cập nhật từ một tệp CSDL khác 3. Kết nối hai tệp CSDL 4. Thiết lập mối liên kết giữa nhiều tệp CSDL 5. Đóng các tệp CSDL đang mở

pdf20 trang | Chia sẻ: lylyngoc | Lượt xem: 1743 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Chương 9. Thao tác với nhiều tệp CSDL, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG CAO ĐẲNG SƯ PHẠM QUẢNG TRỊ KHOA CÔNG NGHỆ THÔNG TIN 1. Định vùng làm việc và gán bí danh 2. Cập nhật từ một tệp CSDL khác 3. Kết nối hai tệp CSDL 4. Thiết lập mối liên kết giữa nhiều tệp CSDL 5. Đóng các tệp CSDL đang mở Chương 9. Thao tác với nhiều tệp CSDL 1. Định vùng làm việc và gán bí danh 1.1. Các vùng làm việc của FoxPro. 1.2. Mở tệp trên một vùng làm việc bất kỳ và gán bí danh. 1.3. Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở ở vùng làm việc khác. Chương 9. Thao tác với nhiều tệp CSDL 1. Định vùng làm việc và gán bí danh 1.1. Các vùng làm việc của FoxPro Từ trước cho đến nay chúng ta chỉ làm việc với một vùng của Foxpro nên khi mở tệp CSDL cũng đồng nghĩa với việc đóng tệp CSDL đang mở. Thực tế Foxpro có 25 vùng làm việc được đặt tên như sau:  Dùng số: Từ 1 đến 25  Dùng ký tự: 10 vùng làm việc đầu tiên có tên bằng số từ 1 đến 10 hoặc bằng ký tự từ A đến J. Để chọn vùng làm việc ta dùng lệnh SELECT Ví dụ: SELE C hoặc SELE 15 Chương 9. Thao tác với nhiều tệp CSDL 1. Định vùng làm việc và gán bí danh 1.2. Mở tệp trên một vùng làm việc bất kỳ và gán bí danh a. Mở tệp trên vùng làm việc SELECT USE b. Gán bí danh SELECT USE ALIAS : Do người sử dụng tự đặt nhưng phải tuân thủ hai điều sau: * Theo đúng luật đặt tên trường dữ liệu * Tên không thể là các ký tự từ A đến J. Ví dụ: SELE 5 USE HSCB Ví dụ: SELE 16 USE BLUONG ALIAS BL Chương 9. Thao tác với nhiều tệp CSDL 1. Định vùng làm việc và gán bí danh 1.3 Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở ở vùng làm việc khác. * Tệp hiện thời: như đã dùng từ trước đến nay * Tệp ở vùng làm việc khác . . Chú ý rằng việc di chuyển con trỏ bản ghi chỉ thực hiện được đối với tệp hiện thời chứ không làm đưọc với tệp đang mở trên vùng khác, trừ dùng lệnh SET RELATION Ví dụ: SELE 3 USE HSCB ALIAS HS SELE 1 USE BLUONG ? HSL ? HS.HSL (hoặc C.HSL) Chương 9. Thao tác với nhiều tệp CSDL 2. Cập nhật từ một tệp CSDL khác 2.1. Bổ sung các bản ghi từ một tệp CSDL khác. 2.2. Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác. Chương 9. Thao tác với nhiều tệp CSDL 2. Cập nhật từ một tệp CSDL khác 2.1. Bổ sung các bản ghi từ một tệp CSDL khác Khi hai tệp CSDL có cùng chung cấu trúc tệp hay có một số trường trùng nhau về cấu trúc ta có thể bổ sung các bản ghi của tệp này sang tệp kia bằng cách sau: Tệp muốn bổ sung được mở ở vùng hiện thời. Tệp chứa các bản ghi để bổ sung ở trạng thái đóng. Sử dụng lệnh: APPEND FROM [FOR ][FIELDS ] Chương 9. Thao tác với nhiều tệp CSDL 2. Cập nhật từ một tệp CSDL khác 2.1. Bổ sung các bản ghi từ một tệp CSDL khác Giải thích: Nếu có tuỳ chọn FOR thì chỉ những bản ghi thỏa mãn mới được bổ sung. Nếu có tuỳ chọn FIELDS thì các bản ghi được bổ sung vào tệp hiện thời theo các trường được liệt kê trong danh sách. Ngược lại các bản ghi được bổ sung vào tệp hiện thời theo tất cả các trường của nó trùng tên với tệp hiện thời. Ví dụ:USE HSCB COPY TO HS1 APPEND FROM HS1 FOR HSL>3 APPEND FROM HS1 FIELD MSCB, HD, TEN,HSL APPEND FROM BLUONG Chương 9. Thao tác với nhiều tệp CSDL 2. Cập nhật từ một tệp CSDL khác 2.2. Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác Thông thường khi sửa đổi dữ liệu nhiều, người ta sẽ chuẩn bị dữ liệu sửa đổi trên một tệp khác. Sau đó sẽ dùng tệp đó để sửa trên tệp hiện thời bằng lệnh: UPDATE ON FROM REPLACE WITH [, WITH ... ] [ FOR ] Giải thích: Tệp chứa dữ liệu sửa đổi được mở trên vùng làm việc khác với <bí danh> và chỉ số theo cập nhật. Tệp cần sửa đổi được mở ở vùng hiện thời và cũng được chỉ số theo cập nhật. Với những bản ghi của hai tệp có cùng giá trị khoá thì việc cập nhật được tiến hành như mô tả trên REPLACE. Nếu có tuỳ chọn FOR thì chỉ những bản ghi thoả mãn mới được cập nhật. Chú ý: Trường của cả hai tệp phải trùng nhau về cấu trúc. Chương 9. Thao tác với nhiều tệp CSDL 2. Cập nhật từ một tệp CSDL khác 2.2. Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác Ví dụ: SELE 3 USE LMOI ALIAS LM INDE ON MSCB TO T1 SELE 1 USE HSCB INDE ON MSCB TO T2 UPDATE ON MSCB FROM LM REPL HSL WITH LM.HSL Chương 9. Thao tác với nhiều tệp CSDL 3. Kết nối hai tệp CSDL Với hai tệp CSDL có mối quan hệ logic với nhau ta có thể kết nối chúng bằng lệnh sau: JOIN WITH TO FOR [FIELDS ] Điều kiện: Một tệp được mở trên vùng làm việc khác với , tệp còn lại được mở trên vùng hiện thời. Giải thích: Lệnh sẽ tiến hành kết nối mỗi bản ghi của tệp hiện thời lần lượt với từng bản ghi của tệp thỏa mãn và ghi vào . Nếu có tùy chọn FIELDS thì bao gồm những trường được liệt kê trong danh sách và theo thứ tự này. Nếu không có tùy chọn đó thì <tệp KQ> bao gồm tất cả các trường của tệp hiện thời và tất cả các trường của tệp không trùng tên với các trường của tệp hiện thời. Chương 9. Thao tác với nhiều tệp CSDL 3. Kết nối hai tệp CSDL Cơ chế: Trước hết con trỏ của tệp hiện thời đặt ở bản ghi đầu tiên, con trỏ của tệp cũng được đặt ở bản ghi đầu tiên và lệnh xét nếu thỏa mãn thì một bản ghi sẽ được kết nối và ghi vào , ngược lại thì bỏ qua và con trỏ trên tệp di chuyển đến bản ghi kế tiếp và lại xét quá trình tiếp tục cho đến khi con trỏ bản ghi của tệp đặt ở cuối tệp thì con trỏ của tệp hiện thời được di chuyển đến bản ghi kế tiếp và con trỏ bản ghi của tệp lại trở về bản ghi đầu tiên. Quá trình xét bản ghi này của tệp hiện thời với các bản ghi của tệp bí danh lại diễn ra như trên. Đến khi con trỏ của tệp hiện thời đặt ở cuối tệp thì lệnh kết thúc. Chương 9. Thao tác với nhiều tệp CSDL 3. Kết nối hai tệp CSDL Ví dụ 1: CLOS ALL SELE 2 USE DMHANG ALIAS DM SELE 1 USE HOADON JOIN WITH DM TO KQUA FOR MSHH=DM.MSHH FIEL SHHD, MSHH, DM.DGIA, SL, TIEN USE KQUA BROW Chương 9. Thao tác với nhiều tệp CSDL 3. Kết nối hai tệp CSDL Ví dụ 2: CLOSE ALL SELE 3 USE DIEMTHI ALIA DT SELE 2 USE FACHBT ALIA FA SELE 1 USE HOSO JOIN WITH FA TO TGIAN FOR SBD=FA.SBD USE TGIAN JOIN WITH DT TO KQTHI FOR FACH=DT.FACH USE KQTHI BROW Chương 9. Thao tác với nhiều tệp CSDL 4. Thiết lập mối liên kết giữa nhiều tệp CSDL Lệnh JOIN có một số nhược điểm sau: Phải tạo ra tệp CSDL để chứa kết quả (tốn không gian nhớ) Việc kết nối chỉ thể hiện một lúc hai tệp Kết quả bị cứng hoá nên sau khi kết nối nếu có sự thay đổi trên các tệp nguồn thì tệp kết quả cũng không thể hiện được. Để khắc phục chúng ta sẽ tiến hành liên kết bằng lệnh: SET RELATION TO INTO [ADDITIVE] Điều kiện: Trong các tệp tham gia liên kết ta phải chọn một tệp có khả năng liên kết với các tệp khác để mở ở vùng hiện thời và gọi nó là tệp chủ. Các tệp còn lại gọi là tệp kết được mở trên các vùng làm việc khác với bí danh và được chỉ số theo trường khóa liên kết. Chương 9. Thao tác với nhiều tệp CSDL 4. Thiết lập mối liên kết giữa nhiều tệp CSDL Giải thích: Lệnh thiết lập mối liên kết giữa tệp chủ và tệp theo phép so sánh bằng giữa trường của tệp chủ và trường lập chỉ số của tệp . Nếu có tuỳ chọn ADDITIVE thì liên kết này sẽ bổ sung vào các liên kết đã có trước đó của tệp chủ. Nếu không đây là liên kết đầu tiên của tệp chủ. Cơ chế: Với các tệp kết đang thiết lập liên kết với tệp chủ, khi con trỏ của tệp chủ đứng ở một bản ghi nào đó thì con trỏ của các tệp kết sẽ tự động dịch chuyển đến các bản ghi tương ứng Ví dụ: Trong 2 tệp HOADON.DBF và DMHANG.DBF thì HOADON.DBF là tệp chủ. Trong 3 tệp HOSO.DBF, FACHBT.DBF và DIEMTHI.DBF thì FACHBT.DBF là tệp chủ Chương 9. Thao tác với nhiều tệp CSDL 4. Thiết lập mối liên kết giữa nhiều tệp CSDL Ví dụ 1: CLOS ALL SELE 2 USE DMHANG ALIAS DM INDE ON MSHH TO T1 SELE 1 USE HOADON SET RELATION TO MSHH INTO DM BROW FIEL SHHD, MSHH, SL, DM.DGIA, TIEN Chương 9. Thao tác với nhiều tệp CSDL 4. Thiết lập mối liên kết giữa nhiều tệp CSDL Ví dụ 2: CLOSE ALL SELE 3 USE DIEMTHI ALIA DT INDE ON FACH TO T1 SELE 2 USE HOSO ALIA HS INDE ON SBD TO T2 SELE 1 USE FACHBT SET RELA TO SBD INTO HS SET RELA TO FACH INTO DT ADDITIVE BROW FIEL SBD, HS.HVT, DT.DIEM Chương 9. Thao tác với nhiều tệp CSDL 5. Đóng các tệp CSDL đang mở CLOSE DATABASE: Đóng tất cả các tệp CSDL và các tệp chỉ số. CLOSE ALL: Đóng tất cả các loại tệp. QUIT: Đóng tất cả các loại tệp và thoát khỏi Foxpro Chương 9. Thao tác với nhiều tệp CSDL