Bài 4 - thiết kế database và tables I. Giới thiệu Bảng dữ liệu (gọi tắt là bảng) là nơi lưu trữ dữ liệu và nó đóng một vai trò quan trọng trong các bài toán quản lý. Xuất phát từ việc phân tích yêu cầu, các mẫu biểu của bài toán để từ đó đưa ra cấu trúc các bảng sao cho phù hợp, đáp ứng các yêu cầu đặt ra là một công việc khá phức tạp, đòi hỏi phảI có kiến thức và kinh nghiệm trong lĩnh vực cụ thể đó. Có thể tham khảo một số vấn đề giúp các bạn rõ hơn trong việc phân tích, thiết kế dữ liệu trong tài liệu [1] từ trang 131 đến 142, hoặc tham khảo tài liệu [3]. II. Tạo Database 1. Tạo mới Database Câch 1: Sử dụng câu lệnh Bằng cách này chúng ta có thể tạo ta một Database, tuy nhiên database này là một Database độc lập (không liên quan đến Project nào) Câu lệnh: CREATE DATABASE <TenDatabase> Kết thúc lệnh này Visual Foxpro sẽ tạo ra file Database có tên là TenDatabase (phần mở rộng là DBC) Về sau có thể thêm Database này vào trong 1 Project nào đó. Cách 2: Sử dụng Project Manager Bằng cách này thì Database được tạo ra sẽ là một thành phần của Project 1. Mở Project QLDIEM 2. Trong Tab Data, chọn mục Database rồi chọn New, khi đó giao diện New database xuất hiện như hình 1. Hình 1 - Hộp thoại New database 3. Tiếp đến chọn New Database để tạo một database trống (chọn Database Wizard để tạo một Database theo một trong các mẫu thiết kế sẵn của Visual Foxpro). 4. Tiếp đến Visual Foxpro yêu cầu nhập vào tên Database (file có phần mở rộng là DBC), rồi chọn Save để ghi lại. Khi đó giao diện Database designer xuất hiện như hình 2. 5. Giao diện Database Designer cho phép xem một cách tổng thể các thành phần (bảng, view, mỗi quan hệ giữa các bảng ) trong csdl. Hình 2 cho ta thấy Database Diem tại thời điểm này còn trống, chúng ta sẽ trở lại giao diện này trong các phần sau (đóng cửa sổ này lại). Hình 2 - Giao diện Database Designer 2. Sửa đổi Database 1. Trong Project Manager, chọn Tab Data, tiếp đến chọn Database và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước) . 2. Chọn Database cần sửa (vì trong một Project có thể có nhiều hơn một Database) rồi chọn lệnh Modify, khi đó cửa sổ Database designer (hình 2) xuất hiện. 3. Thêm vào Project một Database đã có Trường hợp Project sử dụng một Database đã có (đã thiết kế trước đó) thì chúng ta có thể thêm (Add) Database đó vào Project. 1. Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database (đặt vệt sáng ở mục này). 2. Chọn lệnh Add, khi đó sẽ xuất hiện cửa số open file (hình 3) cho phép chúng ta chọn csdl cần thêm vào. Hình 3 - Hộp thoại Open file (Select Database) 4. Loại bỏ một Database khỏi Project Khi không cần dùng một Database nào đó, chúng ta có thể loại bỏ Database đó khỏi Project như sau: 1. Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước). 2. Chọn Database cần bỏ, tiếp đến chọn lệnh Remove khi đó xuất hiện hộp thoại như hình 4. Hình 4 - Hộp thoại Remove Database 3. Chọn Remove (khỏi Project ) nếu không muốn xoá hẳn Database này; chọn Delete nếu muốn xoá hẳn Database này; chọn Cancel khi muốn huỷ bỏ thao tác này. III. Tạo bảng 1. Tạo mới Tables Câch 1: Sử dụng câu lệnh Bằng cách này chúng ta có thể tạo ta một Table, tuy nhiên Table này là một Table độc lập (không liên quan đến Project nào). Câu lệnh (dạng đơn giản): CREATE TABLE <TableName>(FieldName1 Ftype1(width1) [, ]) Trong đó: TableName - tên bảng (không chứa dấu cách), FieldName1 - Tên trường 1, Ftype1 - Kiểu trường 1 (dùng các chữ cái đầu của kiểu trong fox để mô tả), with1 - độ rộng của trường. Tương tự như vậy cho trường thứ 2. Ví dụ: CREATE TABLE Hososv(masv C(10), Hoten C(30)) Câch 1: Sử dụng Project Manager 1. Trong Project Manager chọn Tab Data, chọn mục Database và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước). 2. Chọn Database cần làm việc và mở rộng đối tượng này (bằng cách kích vào dấu + phía trước), tiếp đến chọn Tables rồi chọn New. Khi đó giao diện New table có dạng như hình 5. Hình 5 - New table 3. Tiếp đến chọn New Tbale để tạo một Table trống (chọn Table Wizard để tạo một Table theo một trong các mẫu thiết kế sẵn của Visual Foxpro). 4. Tiếp đến Visual Foxpro yêu cầu nhập vào tên Table (file có phần mở rộng là dbf), rồi chọn Save để ghi lại. Giao diện Table Designer xuất hiện như hình 6. Giao diện Table Designer Hình 6 - Table Designer o Tab Field: Phần khai báo chính cho 1 trường của bảng a. Name : Tên trường b. Type: Kiểu c. Width, Decimal d. Index: Sắp xếp (Ascending, Descending, None) e. Null: Checked or Unchecked f. Format: Định dạng dữ liệu hiển thị (sử dụng các ký tự qui định cho fornat của Foxpro xem bảng sau) Format Code: Description: Applies to data of type: ! Force text to uppercase. Character only B Left justify . All types J Right justify. All types I Center justify. All types L Leading zeros. Numeric only Z Blank if zero. Numeric, Date, and DateTime ( Surround negative numbers with (). Numeric only C Appends " CR" to positive, non-zero numbers. Numeric only X Appends " DB" to negative, non-zero numbers. Numeric only $ Uses currency notation. Numeric only D Use current SET DATE setting. All types E Display as if SET DATE BRITISH was in effect. All types YL Display using system Long Date format. Date YS Display using system Short Date format. Date R Prevents non- formatting characters in the template string from replacing the corresponding character of the field expression value. When @R is used, the template string interleaves instead of overlaying. (See example below.) Character and Numeric g. Input Mask: Định dạng dữ liệu nhập (sử dụng các ký tự qui định cho Input mask của Visual Foxpro - xem bảng sau) cMask Description ! Converts lowercase letters to uppercase letters. # Permit entry of digits, spaces, and signs, such as the minus sign ( – ). $ Displays the current currency symbol, as specified by the SET CURRENCY command, in a fixed position. $$ Displays floating currency symbol that always appears adjacent to the digits in a spinner or text box. , Displays the current digit-grouping, or separator, symbol as set by the Regional and Language Options setting in the Windows Control Panel. . Displays the current decimal point character as specified by the SET POINT command setting. (Default is a period (.)) 9 Permits entry of digits and signs. A Permits alphabetic characters only. H Prevents entry of non-hexadecimal symbols in the specified position. L Permits logical data only. N Permits letters and digits only. U Permits alphabetic characters only and converts them to uppercase (A - Z). W Permits alphabetic characters only and converts them to lowercase (a - z). X Permits any character. Y Permits the letters, Y, y, N, and n for the logical values True (.T.) and False (.F.), respectively. h. Rule: Luật kiểm tra đối với dữ liệu của trường này (dữ liệu nhập vào cho trường này phải thoả mãn luật này) i. Message: Thông báo khi dữ liệu nhập không thoả mãn luật qui định với trường ở Rule. j. Default: Giá trị mặc định cho trường dữ liệu này khi thêm mới 1 bản ghi. k. Display library, Display class: Xác định lớp gắn với ứng trường này (ví dụ nếu kiểu của trường này là Character - > Lớp mặc định được dùng là Textbox, Là Logic ->Lớp mặc định được dùng là Checkbox ), người sử dụng có thể tạo ra các lớp của riêng mình và sử dụng ở đây. o Tab Index: Phần khai báo các index (chi mục) cho bảng a. Order: Ascending, Đescening b. Name: Tag name c. Type: Kiểu type Description Number allowed Primary Does not permit duplicate values in the specified fields or expression. One per table Candidate Does not permit duplicate values in the specified fields or expression. Many per table Regular Permits duplicate values in the specified fields or expression. Many per table Binary Indexes records based on a valid and non-null logical expression. Many per table Unique Selects a subset of records based on the first occurrence of a specified value. Included for backward compatibility. Many per table d. Expression: Biểu thức index e. Filter: Biểu thức lọc o Tab Table: Tính chất chung của bảng (hình 7) Hình 7 a. Name: Tên bảng b. Database: Thuộc vào Database nào c. Rule: Luật cho bản ghi. Một bản ghi chỉ được cập nhật khi thoả mã luật này (ví dụ) d. Message: Thông báo lỗi khi luật Rule không thoả mãn. e. Insert Trigger: Tại đây cho phép nhập vào 1 Biểu thức, biểu thức này sẽ được tính khi sảy ra sự hiện Insert đối với bảng này. f. Update Trigger, Delete Trigger (tương tự như Insert Trigger) Bài tập 1. Mở Project QLDIEM, tạo Database DIEMDB để lưu trữ cơ sở dữ liệu cho hệ thống quản lý điểm. 2. Tạo các bảng cho Database DIEMDB như đã nêu trong Bài tập môn học. Tự xác định các tính chất Format, Caption, Input Mask, Rule cho các trường của các bảng này. . Hình 5 - New table 3. Tiếp đến chọn New Tbale để tạo một Table trống (chọn Table Wizard để tạo một Table theo một trong các mẫu thiết kế sẵn của Visual Foxpro) . 4. Tiếp đến Visual Foxpro yêu. Hình 1 - Hộp thoại New database 3. Tiếp đến chọn New Database để tạo một database trống (chọn Database Wizard để tạo một Database theo một trong các mẫu thiết kế sẵn của Visual Foxpro) . 4. Tiếp. ]) Trong đó: TableName - tên bảng (không chứa dấu cách), FieldName1 - Tên trường 1, Ftype1 - Kiểu trường 1 (dùng các chữ cái đầu của kiểu trong fox để mô tả), with1 - độ rộng của trường. Tương