1HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxProTS. ĐỖ QUANG VINHEmail: dqvinh@live.com Hà Nội - 2008ĐỖ QUANG VINH - HUC2I - TỔNG QUAN Microsoft Visual FoxProMỞ ĐẦU - VFP 9.0 SP2 phát hành vào năm 2007YÊU CẦU HỆ THỐNG Máy tính PC Pentium Bộ nhớ 64 MB RAM (128 MB or cao hơn) Dung lượng đĩa cứng dành cho VFP 9.0 165 MB Màn hình có độ phân giải 800 x 600, 256 màu hoặc High color 16-bit Ổ đĩa CD-ROM/DVD Chuột Hệ điều hành WINDOWS XP Tốt nhất là cài đầy đủ VFP9.0 SP2 từ đĩa CD ĐỖ QUANG VINH - HUC3K
78 trang |
Chia sẻ: huongnhu95 | Lượt xem: 563 | Lượt tải: 0
Tóm tắt tài liệu Bài giảng Hệ quản trị cơ sở dữ liệu - Đỗ Quang Vinh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỞI ĐỘNG Microsoft Visual FoxProCách 1: Start\Program\Microsoft Visual FoxPro 9Cách 2: Start\RunCách 3: nháy vào biểu tượng Microsoft Visual FoxPro 9 trên màn hình nền DesktopCÁC CHẾ ĐỘ LÀM VIỆC: 2 a. Chế độ tương tác b. Chế độ chương trìnhTHOÁT KHỎI Visual FoxPro: lệnh QUIT ĐỖ QUANG VINH - HUC4ĐỖ QUANG VINH - HUC5GIAO DIỆN HỆ THỐNG BẢNG CHỌN a. Bảng chọn menu b. Mục chọn c. Menu PopUp d. Menu OptionCỬA SỔ LỆNH COMMANDTRỢ GIÚP HELPĐỖ QUANG VINH - HUC6ĐỖ QUANG VINH - HUC7CÁC KHÁI NIỆM CƠ BẢN LỆNH Visual FoxPro - Lệnh của VFP là một chỉ thị cho VFP thực hiện một thao tác quản trị dữ liệu cụ thể. - Cú pháp tổng quát của lệnh VFP: [] [] [] [FORWHILE ] + Bao gồm một số từ khoá để chỉ hành động và các phương thức hoạt động + Độ dài mỗi dòng lệnh không quá 254 ký tự + Không phân biệt ký tự hoa hay ký tự thường đối với các từ khoá hay các tên hàm mẫu + Cho phép chỉ cần viết 4 ký tự đầuĐỖ QUANG VINH - HUC8 - Phạm vi là miền tác động của lệnh khi thực hiện: 4 + ALL thao tác với tất cả các bản ghi + RECORD thao tác với bản ghi thứ + NEXT thao tác với bản ghi tiếp theo kể từ bản ghi hiện thời + REST thao tác với các bản ghi kể từ bản ghi hiện thời đến bản ghi cuối cùngCÁC KIỂU DỮ LIỆU - Kiểu ký tự C (Character)+ có dạng một xâu ký tự thuộc bảng mã ASCII + có độ rộng tối đa là 254 ký tự+ phân biệt giữa ký tự hoa và ký tự thường - Kiểu số thập phân N (Numeric) biểu diễn một giá trị số với tối đa 20 ký số kể cả phần nguyên, thập phân và dấu chấm thập phân ĐỖ QUANG VINH - HUC9- Kiểu ngày tháng D (Date) + ngày dương lịch từ 01/01/0001 đến 31/12/9999 + dạng mặc định là mm/dd/yy + Độ rộng cố định là 8 + dùng lệnh SET DATE và SET CENTURY ON - Kiểu Logic L (Logical) + chỉ lấy một trong hai giá trị: đúng .T. hoặc sai .F. + mặc định giá trị .T. lớn hơn .F. + có độ rộng cố định là 1- Kiểu ký ức M (Memo) + văn bản có độ rộng 4000 ký tự + độ rộng khai báo = 4- Kiểu chung G (General) + dùng để lưu trữ các đối tượng OLE + Độ rộng khai báo = 4ĐỖ QUANG VINH - HUC10- Kiểu số dấu chấm động F (Float)- Kiểu số Integer- Kiểu số Double- Kiểu tài chính (Currency)HẰNG - Là đại lượng có giá trị không thay đổi - 4 loại hằng:+ Hằng số + Hằng ký tự + Hằng logic+ Hằng ngày thángBIẾN - Là đại lượng có giá trị thay đổi - 3 loại biến: ĐỖ QUANG VINH - HUC11+ Biến bộ nhớ+ Biến trường+ Biến hệ thốngTOÁN TỬ - Là các phép toán trên các giá trị nhằm sinh ra một giá trị mới - 4 loại toán tử: + Toán tử số học + Toán tử xâu ký tự + Toán tử quan hệ/ toán tử so sánh + Toán tử logic HÀM - Là một loại chương trình con - Xây dựng một thư viện các hàm mẫu - Cú pháp: (danh sách đối số)ĐỖ QUANG VINH - HUC12- Phân loại hàm:Hàm mẫu+ Hàm số họcABS(x) cho biết trị tuyệt đối của số xSQRT(x) tính căn bậc 2 của xEXP(x) tính e mũ xLOG(x) tính loga cơ số e của xINT(x) lấy phần nguyên của xROUND (x,n) làm tròn số x với n chữ số thập phânMAX(,) cho giá trị lớn nhất của hai biểu thứcMIN(,) cho giá trị nhỏ nhất của hai biểu thứcMOD(,) cho số dư của phép toán chia cho VAL(s) trả lại giá trị số của xâu sĐỖ QUANG VINH - HUC13+ Hàm xâuLEN(s) cho biết độ dài của xâu sLEFT(s,n) trích n ký tự bên trái xâu sRIGHT(s,n) trích ký tự bên phải của xâu sSUBSTR(s,i,n) trích n ký tự của xâu s kể từ ký tự thứ iREPLICATE(s,n) tạo một xâu gồm n lần xâu sSPACE(n) tạo một xâu gồm n ký tự trắngLTRIM(s) cắt các dấu trắng bên trái xâu sRTRIM(s) cắt các dấu trắng bên phải xâu sALLTRIM(s) cắt các dấu trắng ở hai bên xâu sTRIM(s)UPPER(s) biến tất cả các chữ cái trong xâu s thành chữ hoaLOWER(s) biến tất cả các chữ cái trong xâu s thành chữ nhỏPROPER(s)STR(x,n,m) trả lại giá trị xâu của số x, gồm n ký tự với m chữ số lẻASC(s) cho biết mã ASCII của ký tự đầu tiên trong xâu sĐỖ QUANG VINH - HUC14CHR(n) cho biết ký tự có mã ASCII là nAT(t,s) cho biết vị trí đầu tiên xâu con t xuất hiện trong xâu s, nếu không tìm thấy t trong s, hàm trả lại giá trị 0+ Hàm ngày thángCTOD(s) chuyển đổi xâu s sang kiểu ngày tháng DDTOC(d) chuyển đổi ngày D sang kiểu ký tự CDTOS(d) ‘yyyymmdd’YEAR(d) cho biết giá trị số của năm trong ngày d MONTH(d) cho biết giá trị số của tháng trong ngày dDAY(d) cho biết giá trị số của ngày trong ngày d DOW(d) trả lại ngày trong tuần của ngày d (1 là chủ nhật, 2 là thứ hai , ... ,7 là thứ bảy)DATE () cho biết giá trị của ngày hiện tại+ Hàm đối với tệp dữ liệuDBF([]) cho tên đầy đủ của tệp dữ liệu đang mở trong vùng làm việc thứ ĐỖ QUANG VINH - HUC15ALIAS([]) chỉ bí danh của tệp dữ liệu đang mở trong vùng làm việc thứ BOF([]) dùng để kiểm tra xem vị trí con trỏ có ở đầu tệp dữ liệu trong vùng không?EOF([]) dùng để kiểm tra xem vị trí con trỏ có ở cuối tệp dữ liệu trong vùng không?DELETED([]) cho giá trị .T. nếu bản ghi hiện thời trong vùng làm việc thứ bị đánh dấu xoáFOUND([]) cho giá trị .T. nếu lệnh tìm kiếm LOCATE ... CONTINUE, SEEK, FIND trong vùng tìm được một bản ghiĐỖ QUANG VINH - HUC16RECCOUNT([]) cho biết số bản ghi có trong bảng dữ liệu đang mở trong vùng RECNO([]) cho số hiệu của bản ghi hiện thời trong vùng SELECT() cho số hiệu của vùng làm việc hiện thời+ Hàm môi trường làm việcDISKSPACE() cho số byte còn trống trên ổ đĩa hiện thờiOS() cho biết hệ điều hành đang sử dụngVERSION() cho biết ấn bản của VFP đang sử dụngĐỖ QUANG VINH - HUC17+ Hàm logicIIF(, , ) cho giá trị nếu là .T. , ngược lại, hàm cho giá trị BETWEEN(x, a, b) cho giá trị .T. nếu x nằm trong khoảng từ a đến bINLIST(x, a1, a2, ..., an) cho giá trị .T. nếu x = a1 hoặc x = a2 ... hoặc x = an ĐỖ QUANG VINH - HUC18Hàm tự xây dựng của người sử dụng UDF (User Defined Function)FUNCTION TRICHTENparameters s private t,j t = rtrim(s) j = rat(' ',t) t = substr(t,j)return padr(t,7)BIỂU THỨC - Là một tổ hợp các hằng, biến, hàm và toán tử - Phân loại biểu thức: biểu thức ký tự C, biểu thức số N, biểu thức logic L, biểu thức ngày tháng DĐỖ QUANG VINH - HUC19II - TẠO LẬP BẢNG DỮ LIỆU KHÁI NIỆM - Bảng dữ liệu: Là một tập hợp thông tin về một đối tượng quản lý và được tổ chức theo một nguyên tắc nhất định - Trường (Field): Là một thuộc tính của đối tượng quản lý - Bản ghi (Record): Là các thông tin phản ánh về từng đối tượng được quản lý - Mỗi trường nhận một tên, kiểu dữ liệu và có độ rộng nhất định. Số lượng trường tối đa trong một bảng dữ liệu là 255 trườngĐỖ QUANG VINH - HUC20TẠO LẬP BẢNG DỮ LIỆU- 2 bước: + Khai báo cấu trúc bảng dữ liệu + Nhập bản ghi dữ liệu vào bảng dữ liệu a. Tạo và khai báo cấu trúc bảng dữ liệu: 2 cách Cách 1: tại khung cửa sổ lệnh: CREATE + Bước 1: tại khung cửa sổ lệnh, gõ: CREATE KHOSACH + Bước 2: khai báo từng trường như Tên trường (Name), Kiểu trường (Type), Độ rộng trường (Width), Phần thập phân (Decimal) ... Cách 2: tạo cấu trúc bằng hộp thoại Table DesignerĐỖ QUANG VINH - HUC21ĐỖ QUANG VINH - HUC22Cách 2: tạo cấu trúc bằng hộp thoại Table Designer Bước 1: từ menu File, chọn New hoặc ấn 2 phím để xuất hiện hộp thoại New. Chọn mục Table rồi chọn tiếp New File. Bước 2: hộp thoại CREATE xuất hiện Bước 3: Khai báo cấu trúc bảng dữ liệub. Nhập bản ghi dữ liệu Cách 1: BROWSECách 2: APPEND hoặc INSERT ĐỖ QUANG VINH - HUC23ĐỖ QUANG VINH - HUC24LIỆT KÊ DỮ LIỆU Có 3 cách:- DISPLAY- LIST- BROWSEĐỖ QUANG VINH - HUC25ĐỖ QUANG VINH - HUC26KHAI BÁO SỬ DỤNG BẢNG DỮ LIỆU Có 2 cách khai báo:Cách 1:Tại cửa sổ lệnh, gõ:USE Cách 2: Chọn lệnh File\OpenHIỂN THỊ CẤU TRÚC CỦA BẢNG DỮ LIỆU DISPLAY STRUCTURE [TO ] [TO FILE ] hoặc LIST STRUCTURE [TO ] [TO FILE ] ĐỖ QUANG VINH - HUC27III - CẬP NHẬT DỮ LIỆU1. ĐẶT VẤN ĐỀ Cập nhật dữ liệu liên quan đến các trường hợp sau: - Cập nhật có thể là việc huỷ bỏ một số bản ghi lỗi thời hoặc nhập sai gây dư thừa hay trùng lặp dữ liệu. - Cập nhật có thể liên quan đến việc chèn thêm bản ghi mới, xảy ra sau khi tệp dữ liệu đã được tạo lập, hoặc trong một chu kỳ xử lý - Cập nhật có thể là việc thay đổi nội dung của, thay đổi trị số một trường - Cập nhật cũng có thể liên quan đến dữ liệu đúng2. CHÈN THÊM BẢN GHI: 2 cách + Chèn thêm vào giữa bảng dữ liệu INSERTĐỖ QUANG VINH - HUC28 + Chèn thêm vào cuối bảng dữ liệu - BROWSE - APPEND - APPEND FROMCHÈN THÊM BẢN GHI VÀO CUỐI BẢNG DỮ LIỆU APPEND - Chèn thêm một hoặc nhiều bản ghi mới vào cuối bảng dữ liệu - Cú pháp: APPEND [BLANK] [IN / ] [NOMENU]NỐI THÊM BẢN GHI VÀO CUỐI BẢNG DỮ LIỆU APPEND FROMĐỖ QUANG VINH - HUC29 USE APPEND FROM []CHÈN THÊM VÀO GIỮA BẢNG DỮ LIỆU INSERT - Cú pháp: INSERT [BLANK] [BEFORE]3. SỬA ĐỔI DỮ LIỆU: 3 - CHANGE/ EDIT - BROWSE - REPLACELỆNH EDIT/CHANGE - Cho phép hiệu chỉnh dữ liệu của bảng dữ liệu hiện thời - Cú pháp:ĐỖ QUANG VINH - HUC30EDIT/CHANGE [] [FIELDS ][FOR ] [WHILE ][FONT [, ]][STYLE ] [FREEZE ][KEY [,]] [LAST/ NOINIT][LPARTITION] [NAME ][NOAPPEND] [NOCLEAR] [NODELETE][NOEDIT/ NOMODIFY] [NOLINK] [NOMENU][NOOPTIMIZE] [NORMAL] [NOWAIT]LỆNH BROWSE - Là một trong những lệnh mạnh nhất của Visual FoxPro - Cú pháp:ĐỖ QUANG VINH - HUC31 BROWSE [FIELDS ] [FOR [REST]] [FONT [,]] [FORMAT] [STYLE ] [FREEZE ] [KEY ] [,]] [LOCK ] [LPARTITION] [NAME ] [NOAPPEND] [NOCLEAR] [NODELETE] [NOEDIT/ NOMODIFY] [NOLINK] [NOMENU] [NOLGRID] [NORGRID] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT] [PARTITION ] [LEDIT] [REDIT]ĐỖ QUANG VINH - HUC32LỆNH REPLACE - Trường hợp muốn cập nhật nhiều bản ghi, trường - Cú pháp: REPLACE WITH [ADDITIVE] [, WITH [ADDTIVE]] ... [ phạm vi] [FOR ] [WHILE ] [IN / ] [NOOPTIMIZE]4. XOÁ DỮ LIỆU: 2 mức + Mức 1: đánh dấu bản ghi / xoá logic bản ghi không tham gia vào xử lý thông tin, nhưng vẫn tồn tại trong bảng dữ liệu và có thể phục hồi bằng lệnh RECALLĐỖ QUANG VINH - HUC33 + Mức 2: xoá vật lý các bản ghi đã bị đánh dấu xoá bản ghi bị xoá hoàn toàn, không tồn tại trong bảng dữ liệu, không thể phục hồi XOÁ LOGIC Lệnh DELETE - Cú pháp: DELETE [phạm vi] [FOR ] [WHILE ][IN / ] Đánh dấu xoá bản ghi ở lệnh BROWSE + ấn tổ hợp phím + Chọn mục Table/Delete Record LỆNH SET DELETED ON/OFF XOÁ VẬT LÝ PACK ZAP ĐỖ QUANG VINH - HUC34PHỤC HỒI BẢN GHI - Phục hồi các bản ghi đã bị đánh dấu xóa - Cú pháp: RECALL [] [FOR] [WHILE] [NOOPTIMIZE] 5. SỬA ĐỔI CẤU TRÚC BẢNG DỮ LIỆU - Cho phép thực hiện: + Xóa trường + Thêm trường + Đổi tên trường/ kiểu trường/ độ rộng trường + Thay đổi thứ tự các trường - Cú pháp: MODIFY STRUCTUREĐỖ QUANG VINH - HUC356. SAO CHÉP CẤU TRÚC BẢNG DỮ LIỆULỆNH COPY STRUCTURE - Tạo lập một tệp dữ liệu mới, rỗng - Cú pháp: USE COPY STRUCTURE TO [FIELDS ]LỆNH APPEND FROM - Cú pháp: APPEND FROM / ?[FIELDS ] [FOR][TYPE] DIF/ MOD/ SDF/ SYLK/ WK1/ WK3/ WKS/ FW2/ PDOX/ WR1/ WRK/ XLS/ XL5/ RPD/ DELIMITED[WITH Delimiter/WITH BLANK / WITH TAB]] [AS ]ĐỖ QUANG VINH - HUC367. SAO LƯU CẤU TRÚC TỆP DỮ LIỆULỆNH COPY STRUCTURE EXTENDED - Cú pháp: USE COPY STRUCTURE EXTENDED TO [FIELDS ]LỆNH CREATE FROM - Cú pháp: CREATE FROM ĐỖ QUANG VINH - HUC37IV - SẮP XẾP VÀ CHỈ MỤC 1. ĐẶT VẤN ĐỀ - 2 cách: + Sắp xếp vật lý SORT: lệnh SORT sẽ tạo ra tệp thứ hai cùng kích thước như tệp nguồn nhưng được sắp xếp theo một trật tự mới về mặt vật lý + Sắp xếp theo chỉ mục INDEX: đối với lệnh INDEX, tệp nguồn không thay đổi, nhưng một tệp chỉ mục (index file) được tạo ra theo tiêu chí cần sắp xếp + Trường/ biểu thức dùng làm tiêu chí để sắp xếp là khoá sắp xếp khi dùng SORT hoặc INDEX. + Có thể sắp xếp theo theo thứ tự tăng dần hoặc giảm dần. ĐỖ QUANG VINH - HUC382. SẮP XẾP VẬT LÝ SORT - Cú pháp: SORT TO ON [/A] [/D] [/C][, [/A] [/D] [/C], ...] [ASCENDING | DESCENDING][] [FOR | WHILE ] [FIELDS | FIELD LIKE | FIELD EXCEPT ] [NOOPTIMIZE] + Bảng dữ liệu cần sắp xếp (bảng nguồn) là bảng hiện hành. + là tên bảng đã được sắp xếp (bảng đích) + là trường thứ i dùng làm tiêu chí sắp xếp. Trường hợp dùng nhiều trường khoá thì tên các trường khoá phải được phân cách bằng dấu phẩy + Số trường khoá không hạn chế nhưng tổng độ dài của lệnh SORT không quá 254 ký tự ĐỖ QUANG VINH - HUC39 + Trường khoá có thể là dữ liệu kiểu C, N, D, L + Có thể sắp xếp tăng dần [/A] hoặc giảm dần [/D]. Nếu không có tham số [/A] hoặc [/D] thì mặc định là tăng dần + Đối với trường khoá, nếu không có tham số [/A] hoặc [/D] thì sắp xếp tăng dần khi dùng từ khoá [ASCENDING] hoặc giảm dần khi dùng từ khoá [DESCENING] + Đối với trường kiểu C, nếu sắp xếp không phân biệt chữ hoa và chữ thường thì dùng từ khoá [/C]Nhận xét: - Yêu cầu dung lượng nhớ trống tối thiểu trên ổ đĩa 3 lần kích thước tệp cần sắp xếp - Sắp xếp đơn giản - Không cho phép sắp xếp theo trường khoá là biểu thức phức tạp, nghĩa là một phần của trường, biến bộ nhớ, hàm hoặc biểu thứcĐỖ QUANG VINH - HUC40 - Chỉ thích hợp đối với các tệp dữ liệu nhỏ Đối với các tệp dữ liệu có kích thước lớn lệnh SORT có những nhược điểm sau đây: - Tốc độ sắp xếp chậm so với INDEX vì phải chép qua chép lại các bản ghi. Nếu tệp nhỏ ~ 1000 ÷ 2000 bản ghi thì tốc độ thực hiện chậm của lệnh SORT không thể hiện rõ, nhưng khi tệp lớn trên chục nghìn bản ghi thì tốc độ thực hiện rất chậm. - Các bản ghi của tệp đích không cùng số hiệu với các bản ghi tương ứng trong tệp dữ liệu nguồn - Gây khó khăn cho người dùng vì mỗi lần thực hiện lệnh SORT tạo ra một tệp dữ liệu mới cùng với tiêu chí sắp xếpĐỖ QUANG VINH - HUC413. SẮP XẾP THEO CHỈ MỤCKHÁI NIỆM VỀ CHỈ MỤC - Sắp xếp theo chỉ mục được dựa trên nguyên tắc tương tự như bảng mục lục của một quyển sáchPHÂN LOẠI TỆP CHỈ MỤC THEO TỔ CHỨC: 3 - Tệp chỉ mục độc lập .IDX (còn gọi là stand-alone IDX) - Tệp chỉ mục kết hợp .CDX structural - Tệp chỉ mục kết hợp .CDX non-structuralPHÂN LOẠI TỆP CHỈ MỤC THEO SỬ DỤNG: 4 - Chỉ mục chính (primary index) - Chỉ mục dự bị (candidate index) - Chỉ mục thông thường (regular index) - Chỉ mục duy nhất (unique index)ĐỖ QUANG VINH - HUC42TẠO TỆP CHỈ MỤCTạo tệp chỉ mục bằng lệnh INDEX - Cú pháp: INDEX ON TO | TAG [OF ] [FOR ] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]Sử dụng bảng chọn để tạo tệp chỉ mục a. Mở bảng dữ liệu qua khung giao diện hoặc gõ lệnh USE tại khung cửa sổ lệnh b. Chọn mục View\Browse để hiển thị bảng dữ liệu ở chế độ Browse hoặc gõ Browse tại cửa sổ lệnh c. Chọn mục View\Table Designer, khung hội thoại Table Designer xuất hiện với thẻ mặc định là Fields d. Chọn thẻ Indexes43 e. Nhập tên tệp chỉ mục (hoặc tên đính mục) f. Sau khi nhập xong cột Name cột Type hiện lên giá trị mặc định là regular g. Tại cột Expression nhập biểu thức dùng làm trường khoáCÁCH THÀNH LẬP BIỂU THỨC CHỈ MỤC + Chỉ mục trên các biểu thức đơn giản + Chỉ mục trên các biểu thức phức tạp + Chỉ mục trên một biểu thức kiểu xâu + Chỉ mục trên nhiều trường có kiểu dữ liệu khác nhau + Dùng hàm mẫu có sẵn và UDF trong biểu thức chỉ mục Ví dụ: hàm UDF TRICHTEN(s) SỬ DỤNG CHỈ MỤCMở tệp chỉ mục tại khung cửa sổ lệnh: 2 cách - USE ... INDEX - SET INDEX ...ĐỖ QUANG VINH - HUC44Lệnh SET INDEX - Dùng để mở một hoặc nhiều tệp chỉ mục .IDX hoặc .CDX của tệp dữ liệu hiện thời - Cú pháp: SET INDEX TO [| ?] [ORDER | | [TAG] [OF ]] [ASCENDING | DESCENDING] [ADDITIVE]Lệnh USE ... INDEX - Cú pháp: USE [||] [IN | ] [AGAIN] [NOREQUERY []] [NODATA][INDEX | [ORDER [ | [TAG] [OF ] [ASCENDING|DESCENDING]]]][ALIAS ] [EXCLUSIVE] [SHARED] [NOUPDATE]ĐỖ QUANG VINH - HUC45Lệnh SET ORDER - Chỉ định rõ ràng tệp .IDX trong danh sách là tệp chỉ mục chủ/ chính (master index) - Cú pháp: SET ORDER TO [ | | [TAG] [OF ] [IN | ] [ASCENDING | DESCENDING]] + Lệnh SET ORDER TO 0 hoặc SET ORDER TO huỷ tác dụng chỉ mục, nghĩa là tệp dữ liệu được liệt kê hoặc truy xuất theo thứ tự vật lý ban đầu nhưng các tệp chỉ mục vẫn đang mởCập nhật các tệp chỉ mục REINDEX - Chỉ mục lại các tệp chỉ mục đã lỗi thời + Cách 1: USE INDEX REINDEXĐỖ QUANG VINH - HUC46 + Cách 2: USE SET INDEX TO REINDEXXoá tệp chỉ mục kiểu .IDX DELETE FILE [ | Đóng các tệp chỉ mục SET INDEX TO CLOSE INDEX ĐỖ QUANG VINH - HUC47 V - TÌM KIẾM THÔNG TINCÁC KHÁI NIỆM CON TRỎ BẢN GHI - VFP tổ chức cơ chế con trỏ bản ghi (record pointer) dùng để xác định bản ghi hiện thời - Khi mở bảng dữ liệu, con trỏ bản ghi bao giờ cũng đặt ở bản ghi thứ nhất - Có 3 cách di chuyển con trỏ bản ghi: + Di chuyển tuyệt đối - lệnh GO/GOTO + Di chuyển tương đối - lệnh SKIP + Di chuyển “ẩn” nằm ngay trong các lệnh như: LIST, DISPLAY ALL, LOCATE/CONTINUE, SCAN, COUNT, AVERACE, SUM, TOTAL ĐỖ QUANG VINH - HUC48DI CHUYỂN TUYỆT ĐỐI - LỆNH GO/GOTO - Di chuyển con trỏ tới bản ghi mang số hiệu được chỉ định - Cú pháp: GO/ GOTO [RECORD] [IN | ] GOTO TOP | BOTTOM [IN | ]DI CHUYỂN TƯƠNG ĐỐI - LỆNH SKIP - Di chuyển con trỏ về bản ghi nằm phía trước/ phía sau bản ghi hiện hành bản ghi - Cú pháp: SKIP [+|-] [] [IN | ]HÀM RECNO(), BOF() VÀ EOF() ĐỖ QUANG VINH - HUC492. TÌM KIẾM ĐƠN GIẢN BẰNG LIỆT KÊ DỮ LIỆULỆNH LIST/ DISPLAY - Cú pháp: LIST [ OFF] [] [FIELDS ] [FOR | WHILE ][NOCONSOLE][TO PRINTER [PROMPT] | TO FILE ] [NOOPTIMIZE]DISPLAY [ OFF] [] [FIELDS ] [FOR | WHILE [NOCONSOLE][TO PRINTER [PROMPT] | TO FILE ] [NOOPTIMIZE]LỆNH BROWSE - Là một trong những lệnh mạnh nhất của Visual FoxProĐỖ QUANG VINH - HUC50 - Cú pháp: BROWSE [FIELDS ] [FOR ] [WINDOW ] [IN WINDOW | IN SCREEN] [TITLE ] [WIDTH ] [LPARTTION] [PARTION ] [NOLINK] [LEDIT] [REDIT] [LOCK] [FREEZE ] [NOEDIT | NOMODIFY] [NOAPPEND] [NODELETE]3. TÌM KIẾM TUẦN TỰ LỆNH LOCATE - Cú pháp: LOCATE FOR [] [WHILE ] [NOOPTIMIZE] LỆNH CONTINUE ĐỖ QUANG VINH - HUC514. TÌM KIẾM THEO CHỈ MỤCLỆNH SEEKLỆNH FINDHÀM SEEK() LỆNH FIND - Cú pháp:FIND LỆNH SEEK - Tìm kiếm ngẫu nhiên bản ghi trong tệp dữ liệu đã được chỉ mục - Cú pháp: SEEK [ORDER | [TAG] [OF ]] [ASCENDING | DESCENDING] [IN | ]ĐỖ QUANG VINH - HUC52HÀM SEEK() - Hàm SEEK() cũng thực hiện nhiệm vụ giống như lệnh SEEK, nghĩa là tìm kiếm trên bảng dữ liệu được chỉ mục để tìm ra sự tồn tại của bản ghi đầu tiên có trường khoá trùng khớp với . - Cú pháp: SEEK( [, | [, | | ]])HẠN CHẾ DỮ LIỆU HẠN CHẾ THEO BẢN GHI - LỆNH SET FILTER - Là việc thiết lập một cơ chế sao cho các thao tác sau đó chỉ được truy xuất các bản ghi cho phép. Đây là một trong những điểm quan trọng của một DBMS quản lý và khai thác các tệp dữ liệu trở nên mềm dẻo và thuận tiệnĐỖ QUANG VINH - HUC53 - Cú pháp: SET FILTER TO - Huỷ lọc đã đặt, dùng lệnh không tham số: SET FILTER TOHẠN CHẾ THEO TRƯỜNG - LỆNH SET FIELDS - Đặt lọc các trường chung cho các lệnh tiếp theo - Cú pháp: SET FIELDS TO - Hủy đặt lọc: SET FIELDS OFF SET FIELDS TO ALL SET FIELDS TOĐỖ QUANG VINH - HUC54VI - THỐNG KÊ & TRÍCH LỌC DỮ LIỆUĐẾM SỐ BẢN GHI - CÚ PHÁP: COUNT [] [FOR ] [WHILE ] [TO ] - CHỨC NĂNG: Đếm số bản ghi trong bảng dữ liệu thoả mãn 2. TÍNH TỔNG SUM - CÚ PHÁP: SUM [] [] [FOR ] [WHILE ] [TO ] - CHỨC NĂNG: Tính tổng các trường số hoặc các biểu thức số trong bảng dữ liệu thoả mãn ĐỖ QUANG VINH - HUC553. TÍNH TRUNG BÌNH AVERAGE - CÚ PHÁP: AVERAGE [] [] [FOR ] [WHILE ] [TO ] - CHỨC NĂNG Tính trung bình các trường số hoặc các biểu thức số trong bảng dữ liệu thoả mãn 4. TÍNH TỔNG THEO NHÓM TOTAL - CÚ PHÁP: TOTAL TO ON [] [FIELDS ] [FOR ] [WHILE ] - CHỨC NĂNG: Tính tổng các giá trị bản ghi thuộc trường số của các bản ghi có cùng ĐỖ QUANG VINH - HUC56 + Bảng dữ liệu cần được tính tổng theo nhóm cần được sắp xếp trước đó bởi lệnh sắp xếp vật lý (SORT) hoặc chỉ mục (INDEX) theo biểu thức khoáCác bước tiến hành lệnh tính tổng theo nhóm: + Bước 1: sắp xếp bảng dữ liệu gốc theo hay còn gọi là tiêu chí phân nhóm + Bước 2: mở bảng dữ liệu đã sắp xếp theo + Bước 3: tính tổng theo nhóm + Bước 4: xem kết quả tính tổng theo nhóm - Mở bảng dữ liệu kết quả: USE - Liệt kê dữ liệu: LIST/ DISPLAY/ BROWSE5. TÍNH TOÁN HỖN HỢP CALCULATE - CÚ PHÁP: CALCULATE [] [] [FOR ] [WHILE ] [TO ]ĐỖ QUANG VINH - HUC57- 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ệnhtrong đó: bao gồm danh sách các hàm:CNT()SUM()AVG()MAX()MIN()STD()VAR()ĐỖ QUANG VINH - HUC586. 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 - HUC59VII - QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆU1. ĐẶ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-1QUAN HỆ 1-N, N-1 (1 - nhiều, nhiều - 1)QUAN HỆ M-N (nhiều - nhiều)QUAN HỆ BẮC CẦUQUAN HỆ ĐỒNG THỜIQUAN HỆ PHẢN THÂNĐỖ QUANG VINH - HUC60VÙ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 - HUC61 + 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ệuVÙNG LÀM VIỆC VÀ BÍ DANH ALIASGÁ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 - HUC62 + 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ùngTHAM 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 - HUC63VÙ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 - HUC64CHUYỂ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 - HUC65QUAN 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 - HUC662. ĐẶT QUAN HỆ BẰNG LỆNH SET RELATIONLỆ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 - HUC67Ví 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-15CHÚ Ý 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 - HUC68ĐỖ QUANG VINH - HUC69 - 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 - HUC70 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ảng3. 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 - HUC71 - 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 - HUC72ĐỖ QUANG VINH - HUC734. 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 - HUC74Có 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ả saib. 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 - HUC75 - 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 - HUC76 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 - HUC77ĐỖ QUANG VINH - HUC78TÀI LIỆU THAM KHẢODate 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.
Các file đính kèm theo tài liệu này:
- bai_giang_he_quan_tri_co_so_du_lieu_do_quang_vinh.ppt