Đề tài Cơ sở lý thuyết và giới thiệu một số công cụ lập trình

Tài liệu Đề tài Cơ sở lý thuyết và giới thiệu một số công cụ lập trình: Phần I. CƠ SỞ LÝ THUYẾT VÀ GIỚI THIỆU MỘT SỐ CÔNG CỤ LẬP TRÌNH Chương I. TỔNG QUAN VỀ INTERNET I.1. INTERNET I.1.1. TÌM HIỂU SƠ LƯỢC VỀ INTERNET Internet là một mạng máy tính có phạm vi toàn cầu bao gồm nhiều mạng nhỏ cũng như các máy tính riêng lẻ được kết nối với nhau để có thể liên lạc và trao đổi thông tin. Thông qua mạng Internet bạn có thể viết thư, đọc báo, xem bản tin, giải trí, tra cứu... Đặc biệt từ năm 1993 trở đi, mạng Internet không chỉ cho phép chuyển tải thông tin nhanh chóng mà còn giúp cung cấp thông tin, nó cũng là diễn đàn và là thư viện toàn cầu đầu tiên. Các thông tin được đặt rải rác trên toàn cầu có thể truyền thông được với nhau nhờ một thiết bị là Modem và đường dây điện thoại. Ngày nay, số lượng người truy cập vào mạng Internet trên toàn thế giới đang ngày càng tăng lên nhanh chóng. Qua đó có thể thấy rằng Internet đã đưa chúng ta vào thế giới có tầm nhìn rộng hơn. Hệ điều hành UNIX là hệ phát triển mạnh với rất nhiều công cụ hỗ trợ và đảm bảo các ph...

doc107 trang | Chia sẻ: hunglv | Lượt xem: 1120 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Cơ sở lý thuyết và giới thiệu một số công cụ lập trình, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Phần I. CƠ SỞ LÝ THUYẾT VÀ GIỚI THIỆU MỘT SỐ CÔNG CỤ LẬP TRÌNH Chương I. TỔNG QUAN VỀ INTERNET I.1. INTERNET I.1.1. TÌM HIỂU SƠ LƯỢC VỀ INTERNET Internet là một mạng máy tính có phạm vi toàn cầu bao gồm nhiều mạng nhỏ cũng như các máy tính riêng lẻ được kết nối với nhau để có thể liên lạc và trao đổi thông tin. Thông qua mạng Internet bạn có thể viết thư, đọc báo, xem bản tin, giải trí, tra cứu... Đặc biệt từ năm 1993 trở đi, mạng Internet không chỉ cho phép chuyển tải thông tin nhanh chóng mà còn giúp cung cấp thông tin, nó cũng là diễn đàn và là thư viện toàn cầu đầu tiên. Các thông tin được đặt rải rác trên toàn cầu có thể truyền thông được với nhau nhờ một thiết bị là Modem và đường dây điện thoại. Ngày nay, số lượng người truy cập vào mạng Internet trên toàn thế giới đang ngày càng tăng lên nhanh chóng. Qua đó có thể thấy rằng Internet đã đưa chúng ta vào thế giới có tầm nhìn rộng hơn. Hệ điều hành UNIX là hệ phát triển mạnh với rất nhiều công cụ hỗ trợ và đảm bảo các phần mềm ứng dụng có thể chuyển qua lại trên các họ máy tính khác nhau (máy mini, máy tính lớn và máy vi tính). Bên cạnh là hệ điều hành UNIX BSD còn cung cấp nhiều thủ tục Internet cơ bản, đưa ra khái niệm Socket và cho phép chương trình ứng dụng thâm nhập vào Internet một cách dễ dàng. Internet có thể tạm hiểu là liên mạng gồm các máy tính nối với nhau theo một nghi thức và một số thủ tục chung gọi là TCP/IP (Transmission Control Protocol /Internet Protocol). Thủ tục và nghi thức này trước kia đã được thiết lập và phát triển cho một đề án nghiên cứu của Bộ Quốc Phòng Mỹ với mục đích liên lạc giữa các máy tính nối đơn lẻ và các mạng máy tính với nhau mà không phụ thuộc vào các hãng cung cấp máy tính. Sự liên lạc này vẫn được bảo đảm liên tục ngay cả trong trường hợp có nút trong mạng không hoạt động. Trên quan điểm Client/Server thì có thể xem Internet như là mạng của các mạng của các Server, có thể truy xuất bởi hàng triệu Client. Việc chuyển và nhận thông tin trên Internet được thực hiện bằng nghi thức TCP/IP. Nghi thức này gồm hai thành phần là Internet Protocol (IP) và Transmission Control Protocol (TCP). IP cắt nhỏ và đóng gói thông tin chuyển qua mạng, khi đến máy nhận thì thông tin đó sẽ được ráp nối lại. TCP bảo đảm cho sự chính xác của thông tin được truyền đi cũng như của thông tin được ráp nối lại, đồng thời TCP cũng sẽ yêu cầu truyền lại thông tin thất lạc hay hư hỏng. Tùy theo thông tin lưu trữ và mục đích phục vụ mà các Server trên Internet sẽ được phân chia thành các loại khác nhau như Web Server, Email Server hay FTP Server. Mỗi loại server sẽ được tối ưu hóa theo mục đích sử dụng. Theo quan điểm người sử dụng, Internet trông như là bao gồm một tập hợp các chương trình ứng dụng, sử dụng những cơ sở hạ tầng của mạng để truyền tải những công việc thông tin liên lạc. Chúng ta dùng thuật ngữ "Interoperability" để chỉ khả năng những hệ máy tính nhiều chủng loại hợp tác lại với nhau để giải quyết vấn đề. Hầu hết người sử dụng truy cập Internet thực hiện công việc đơn giản là chạy các chương trình ứng dụng trên một máy tính nào đó gọi là máy Client mà không cần hiểu loại máy tính đang được truy xuất (Server), kỹ thuật TCP/IP, cấu trúc hạ tầng mạng hay Internet ngay cả con đường truyền dữ liệu đi qua để đến được đích của nó.Chỉ có những người lập trình mạng cần xem TCP/IP như là một mạng và cần hiểu một vài chi tiết kỹ thuật. Hình 1: Liên lạc trên Internet I.1.2. INTERNET BẮT NGUỒN TỪ ĐÂU? Internet bắt đầu từ đầu năm 1969 dưới cái tên là ARPANET (Advanced Research Projects Agency) còn gọi là ARPA. Nó thuộc bộ quốc phòng Mỹ. Đầu tiên nó chỉ có 4 máy được thiết kế để minh họa khả năng xây dựng mạng bằng cách dùng máy tính nằm rải rác trong một vùng rộng. Vào năm 1972, khi ARPANET được trình bày công khai đã được 50 trường đại học và các viện nghiên cứu nối kết vào. Mục tiêu của ARPANET là nghiên cứu hệ thống máy tính cho các mục đích quân sự. Mạng này thiết kế chỉ cho phép các văn thư lưu hành từ máy tính này đến máy tính khác. Đối với chính phủ và quân đội, máy tính đã có những công dụng rõ ràng và sâu rộng. Tuy nhiên, một trong những mối bận tâm chính yếu là tính tin cậy vì nó có liên quan đến vấn đề sinh tử. Kế hoạch ARPANET đã đưa ra nhiều đường nối giữa các máy tính. Điều quan trọng nhất là các máy tính có thể gởi các văn thư bởi bất kỳ con đường khả dụng nào, thay vì chỉ qua một con đường cố định. Đây chính là nơi mà vấn đề về giao thức đã xuất hiện. I.1.3. GIAO THỨC Giao thức hay còn gọi là nghi thức là các phương tiện để làm cho sự thông tin trở nên khả hữu. Đầu tiên ARPANET đã đưa ra giao thức Host-to-Host Protocol, nhưng giao thức này không đáng tin cậy và nó chỉ giới hạn trong một số máy. Vào cuối năm 1970, một số mạng đã xuất hiện như mạng UUCP đã nối được hàng trăm máy rồi hàng ngàn máy. Vào cuối năm 1980 mạng NSFNET của National Science Foundation được phát triển để nối 5 trung tâm siêu máy tính của nó. Đây là một mạng hấp dẫn cho tất cả các nhà nghiên cứu và các viện đại học cũng như các viện nghiên cứu. Năm 1972, bắt đầu thế hệ thứ hai của giao thức mạng, đã làm phát sinh ra một nhóm giao thức được gọi là Transmission Control Protocol/ Internet Protocol viết tắt là TCP/IP. Năm 1983, TCP/IP là bộ giao thức cho ARPANET, TCP/IP đã trở thành một trong những giao thức mạng được dùng rộng rãi nhất. Sau cùng tất cả các mạng được tài trợ bởi cá nhân hay xã hội: mạng ARPANET, MILNET, UUCP, BITNET, CSNET và NASA Science Internet đã liên kết trong một mạng khu vực NSFNET và ARPANET giải tán và ngày càng có nhiều mạng khác thêm vào... Ngày nay để thực hiện việc truyền thông qua mạng phải thông qua trình duyệt Web và ta cũng cần một giao thức để thực hiện công việc này. Mặc dù hiện nay cũng đang có rất nhiều giao thức để truyền thông tin nhưng nhìn chung có hai giao thức thường được các lập trình viên sử dụng đó là: TCP/IP (IP: là giao thức Internet, TCP: giao thức truyền tải) và giao thức UDP (giao thức gói dữ liệu người dùng). Giao thức TCP/IP: Application Layer Telnet, FPT, SMTP, DNS Transport Layer TCP/IP, UDP Network Layer IP Physical Layer EthernetX.25, Token Ring Hình 2: Mô hình mạng TCP/IP. TCP/IP là một giao thức hướng kết nối (connection) thiết lập một kết nối truyền thông giữa địa chỉ cổng IP. Liên kết này đảm bảo việc truyền dữ liệu trên mạng là không mất thông tin từ máy nguồn đến máy đích, các gói dữ liệu đến đích phải tuân theo đúng thứ tự đã được gởi và các máy tính chạy trên mạng Internet truyền thông với nhau dùng các Protocol TCP, UDP. Do đó ta sử dụng mô hình mạng TCP/IP gồm bốn lớp được mô tả bằng hình 2. Application layer: chứa các ứng dụng mạng. Lớp này tương ứng với hai lớp trên cùng (application và presentation layer) của mô hình OSI. Transport layer: cung cấp các dịch vụ truyền nhận dữ liệu giữa các quá trình với nhau. Các quá trình này có thể trao đổi thông tin với nhau thông qua địa chỉ của máy tính gửi/nhận và cổng thông tin. Cấp này tương ứng với hai cấp kế tiếp (session và transport layer) của mô hình OSI. Network layer: đảm nhận việc xác định, tìm đường và phân phối các gói thông tin với địa chỉ đích. Network layer trong mô hình TCP/IP tương ứng với hai lớp network và data link của mô hình OSI. Physical layer: sử dụng các giao tiếp chuẩn hiện có như Enthernet, Tokenring,... để phục vụ cho việc gởi và nhận dữ liệu. Các máy tính trên mạng liên lạc với nhau bằng địa chỉ IP. Để gởi gói dữ liệu từ máy nguồn tới máy đích, nó phải có một số cách nhận diện những máy này. Trên mạng được nhận dạng bằng cách dùng một hay nhiều địa chỉ IP. Một máy tính có thể có nhiều hơn một địa chỉ IP nếu nó có nhiều hơn một Card mạng. Các địa chỉ IP là một số 32 bit rất khó nhớ để giải quyết việc này các nhà quản lý mạng đã chọn một hệ thống tên vùng (DNS) để quản lý. Các địa chỉ IP được duy trì bởi một hệ thống máy phục vụ tên vùng. Các máy phục vụ này có khả năng tìm kiếm địa chỉ IP tương ứng với tên vùng. Tuy nhiên liên lạc qua lại giữa các máy tính chỉ là một vấn đề truyền thông tin trên mạng. Để một chương trình ứng dụng như Mail, Chat, E-mail liên lạc với một ứng dụng khác như máy Server phục vụ thì máy Server này phải có cách gửi dữ liệu đến các chương trình riêng bên trong một máy tính. Địa chỉ cổng là địa chỉ 16 bit nằm bên trong một máy tính thường kết hợp với một giao thức đặc biệt như TCP/IP, UDP. Một máy Server phải cài đặt chương trình ứng dụng phục vụ lắng nghe các yêu cầu đến. Trong việc truyền nhận thông tin dựa trên TCP/IP, một ứng dụng thiết lập một connection với một ứng dụng khác bằng cách gắn một socket cho mỗi port number. Do đó sẽ không thể có hai ứng dụng dùng chung một port. Bộ protocol TCP/IP bao gồm: TCP (Transmission Control Protocol): đây là loại protocol có cầu nối connection oriented) cung cấp khả năng truyền dòng dữ liệu không lỗi, 2 chiều (full duplex) cho các quá trình cho người sử dụng. UDP(User Datagram Protocol): loại protocol không thiết lập cầu nối (connectionless) cho các quá trình của user. Không giống như TCP, nó không đảm bảo dữ liệu khi truyền đi có đến nơi chính xác hay không. ICMP (Internet Control Message Protocol): protocol xử lý lỗi và điều khiển thông tin giữa các gateway và các host. IP (Internet Protocol): IP là protocol cung cấp dịch vụ phân phối các package cho TCP, UDP và ICMP. ARP (Address Resolution Protocol): Protocol ánh xạ 1 địa chỉ Internet thành địa chỉ phần cứng(MAC address). RAPR(Address Resolution Protocol): Protocol ánh xạ một địa chỉ phần cứng thành địa chỉ IP. Mạng Internet sử dụng giao thức TCP/IP: TCP/IP được thiết kế để có thể kết nối các thiết bị máy tính khác nhau, là ngôn ngữ chung để các hệ máy tính khác nhau có thể trao đổi, liên lạc, chuẩn này được sử dụng rộng rãi trong hầu hết các hệ thống máy tính bởi những đặc điểm ưu việt của nó và chức năng phụ trợ có thể cài đặt thêm vào. Mạng Internet bao gồm rất nhiều kênh kết nối khác nhau mà các gói dữ liệu sẽ được lưu chuyển trên đó, các kênh được giao tiếp với nhau bằng chuẩn TCP/IP. Nhờ đó tất cả các máy tính trên mạng Internet có thể kết nối với nhau. Ngoài ra TCP cung cấp khả năng truyền không lỗi từng gói dữ liệu gởi đi đến máy nhận, giao thức này phải có trách nhiệm thông báo và kiểm tra xem dữ liệu có đến đủ hay chưa, có lỗi hay không có lỗi. Trước khi chuyển dữ liệu bao giờ cũng có việc thiết lập kênh truyền giữa hai máy. Do phải duy trì mối kết nối và kiểm tra dữ liệu nên sử dụng TCP phải đòi hỏi chiếm thêm một số tài nguyên và cách lập trình cho giao thức này hơi khó (phải thực hiện các bước kiểm tra dữ liệu theo yêu cầu của TCP). Truyền dữ liệu theo giao thức TCP thường áp dụng cho các dịch vụ như truyền tập tin, các dịch vụ trực tuyến trên Internet đòi hỏi có độ chính xác cao. Hình 3: Mô hình kết nối TCP/IP Start App Server Client Create the socket Create the server socket Accept New Connection Acquire Stream and Conduct Conversation Acquire Stream and Conduct Conversation Close Stream and Socket Close Stream and Socket Start App Continue? yes no Disconnect Connect attempt Exchange data Địa chỉ IP: Để có thể thực hiện truyền tin giữa các máy tính trên mạng, mỗi máy trên mạng Internet đều có một tên riêng và một địa chỉ dạng số tương ứng gọi là địa chỉ IP. Tên được thiết kế để giúp cho việc truy cập được dễ dàng cho người sử dụng. Địa chỉ IP dùng cho các máy tính và các thiết bị mạng liên lạc với nhau. Tất cả các máy trong hệ thống mạng (LAN, WAN, Internet) đều có ít nhất 2 địa chỉ: địa chỉ vật lý và địa chỉ Internet. Ðịa chỉ vật lý còn được gọi là Ethernet address là một dãy bit gồm 48 bit được gán bởi các nhà sản xuất, địa chỉ này được biểu diễn dưới dạng số thập lục phân (hecxa). Như thế mỗi card mạng (interface card) có một địa chỉ duy nhất địa chỉ này được quy định từ nhà sản xuất card mạng. Tuy nhiên địa chỉ vật lý không thể hiện khả năng xác định vị trí của hệ thống trên mạng. Ðể giải quyết vấn đề đó người ta đưa ra địa chỉ IP(IP Address). Ðịa chỉ IP phải là duy nhất trên mạng và có một dạng thống nhất, mỗi địa chỉ IP gồm có 4 byte và có 2 thành phần: địa chỉ đường mạng (Network ID) và địa chỉ host (Host ID). Network ID Host ID 32 bits(4 byte) Địa chỉ IP Class ID Phân loại địa chỉ IP: Có tất cả 5 lớp địa chỉ IP nhưng hiện nay có 3 lớp được sử dụng là lớp A, B, và C. Lớp A: Dùng cho hệ thống mạng có số lượng địa chỉ host rất lớn, số lượng này có thể lên đến 16 triệu địa chỉ host. Ðể có thể nhận biết địa chỉ thuộc lớp nào người ta căn cứ vào bit đầu tiên trong phần network ID Lớp B: Dùng cho hệ thống mạng trung bình số lượng Host ID lên đến khoảng 65 ngàn. Ðịa chỉ lớp B được nhận biết qua bit đầu tiên trong phần Network ID bit đầu tiên có giá trị 1. Phần Network ID có 16 bit và phần Host ID có 16 bit. Lớp C: Ðịa chỉ lớp C dùng cho mạng nhỏ có số lượng máy không vượt quá 254 máy. Có thể nhận biết địa chỉ lớp C thông qua 2 bit đầu tiên trong phần Network ID, hai bit này được bật lên 1. I.1.4. CÁC DỊCH VỤ KẾT NỐI ĐẾN INTERNET Muốn truy nhập Internet bạn phải đăng ký kết nối. Có nhiều phương pháp để có thể đăng ký kết nối. Ba phương pháp phổ biến nhất hiện nay là: Dịch vụ trực tuyến, nhà cung cấp dịch vụ Internet (ISP) và truy cập trực tuyến. Dịch vụ trực tuyến (online service) Là một doanh nghiệp: như AOL, CompuServe, Microsoft Network (MSN),...cung cấp nhiều dịch vụ truyền thông, trong đó có truy cập Internet. Khi sử dụng dịch vụ trực tuyến, bạn chạy chương trình kết nối của họ để đăng nhập dịch vụ do họ cung cấp, đến lúc kết nối để chạy Internet Explorer. Dịch vụ trực tuyến thu cước phí hàng tháng (chưa áp dụng cho người ở Việt Nam). Nhà cung cấp dịch vụ Internet (ISP) Là một công ty nhỏ hơn, chuyên dụng hơn, cung cấp tùy chọn không nhiều bằng dịch vụ trực tuyến. ISP cho phép truy nhập Internet theo giờ với cước phí thấp hoặc truy cập không giới hạn với cước phí cao hơn. Họ còn cấp cho khách một tài khoản E-mail. Ở Việt Nam hiện có ba dịch vụ ISP đang hoạt động: VNN, FTP và NetNam. Truy nhập trực tuyến (direct access) Khả dụng ở nhiều học viện giáo dục hoặc công ty lớn. Thay vì sử dụng Modem, những tổ chức này thuê bao một đường truyền chuyên dụng để cung cấp truy nhập Internet 24/24 giờ. I.2. CÁC DỊCH VỤ THÔNG TIN TRÊN INTERNET I.2.1. DỊCH VỤ MIỀN (DNS: Domain Name System) Việc định danh các phần tử của liên mạng bằng các con số như trong địa chỉ IP rõ ràng là không làm cho người sử dụng hài lòng, bởi chúng khó nhớ, dễ nhầm lẫn. Vì thế người ta đã xây dựng hệ thống đặt tên (name) cho các phần tử của Internet, cho phép người sử dụng chỉ cần nhớ đến các tên chứ không cần nhớ đến các địa chỉ IP nữa. Ta có thể biết thêm thông tin cách hoạt động của dịch vụ này thông qua RFC 1035. Hệ thống này được gọi là DNS (Domain Name System). Ðây là một phương pháp quản lý các tên bằng cách giao trách nhiệm phân cấp cho các nhóm tên. Mỗi cấp trong hệ thống được gọi là một miền (domain), các miền được tách nhau bởi dấu chấm. Số lượng domain trong một tên có thể thay đổi nhưng thường có nhiều nhất là 5 domain. Domain có dạng tổng quát là local-part@domain-name. trong đó : + Local-part thường là tên của một người sử dụng hay nhóm người sử dụng do người quản lý mạng nội bộ qui định. + Còn domain-name được gán bởi các Trung tâm thông tin mạng (NIC) các cấp. Domain cấp cao nhất là cấp quốc gia, mỗi quốc gia được gán một tên miền riêng biệt gồm hai chữ cái. Ví dụ vn (Việt Nam), us (Mỹ), ca (Canada), fr (Pháp), v.v...Trong từng quốc gia lại được chia thành 6 domain cao nhất và tiếp tục đi xuống các cấp thấp hơn. Domain Phạm vi sử dụng gov các tổ chức chính phủ (phi quân sự) edu các cơ sở giáo dục com các tổ chức kinh doanh, thương mại mil các tổ chức quân sự org các tổ chức khác net các tài nguyên mạng I.2.2. ĐĂNG NHẬP TỪ XA (TELNET) Là một chương trình dùng giao thức Telnet. Nó là một phần của bộ giao thức TCP/IP. Nó cho phép người sử dụng từ một trạm làm việc của mình có thể đăng nhập vào một mạng ở xa qua mạng và làm việc với hệ thống y như một trạm cuối, nói trực tiếp với trạm ở xa đó. Telnet là một giao thức tương đối đơn giản so với các chương trình phỏng tạo của trạm cuối phức tạp hiện nay. Máy tính ở xa, còn được gọi là Telnet, sẽ chấp nhận nối kết Telnet từ một máy tính trên một hệ thống TCP/IP. Bởi vì Internet là một mạng TCP/IP, Telnet sẽ làm việc một cách hài hoà giữa các máy tính nối đến nó nếu như dịch vụ Telnet được cài đặt trên máy tính của bạn. Các thành phần Telnet và Server thỏa thuận trong cách mà chúng sẽ dùng kết nối. Vì thế mặc dù các hệ thống không cùng loại chúng vẫn tìm thấy một ngôn ngữ chung. Telnet cũng có những giới hạn của nó, nếu lưu thông trên mạng kết nối từ xa có thể khiến cho sự cập nhật từ màn hình trở nên chậm hơn. Telnet thường dùng cho các mục đích công cộng và thương mại, cho phép những người dùng ở xa tìm kiếm các cơ sở dữ liệu lớn, phức tạp và nó cũng là nguồn tài nguyên có giá trị trong giáo dục giúp cho việc nghiên cứu của bạn trở nên hấp dẫn hơn. Ðể khởi động Telnet, từ trạm làm việc của mình người sử dụng chỉ việc gõ: telnet I.2.3. TRUYỀN TỆP (FTP: File Transfer Protocol) Là dịch vụ truyền tập tin (tệp) trên Internet. FTP cho phép dịch chuyển tập tin từ trạm này sang trạm khác, bất kể trạm đó ở đâu và sử dụng hệ điều hành gì, chỉ cần chúng đều được nối với Internet và có cài đặt FTP. FTP là một chương trình phức tạp vì có nhiều cách khác nhau để xử lý tập tin và cấu trúc tập tin và cũng có nhiều cách lưu trữ tập tin khác nhau. Để khởi tạo FTP từ trạm làm việc của mình người sử dụng chỉ gõ: FTP FTP sẽ thiết lập liên kết các trạm xa và bạn sẽ đăng nhập vào hệ thống (login/password). Vì FTP cho phép truyền tập tin theo cả hai chiều. Để chuyển tập tin của mình đến trạm ở xa dùng lệnh put và ngược lại dùng lệnh get để lấy thông tin về. Ngoài ra trong một số trường hợp nó có thể đổi tên, tạo, xoá thư mục….FTP Client sử dụng dịch vụ để lấy (get) các tập tin từ FTP Server về máy của mình (download) hoặc gởi (put) các tập tin lên FTP server (upload). ftp>put source-file destination-file ftp>get source-file destination-file FTP theo nghĩa tiếng việt là nghi thức truyền tập tin giữa các máy tính này đến máy tính khác thông qua mạng. Nếu như nghi thức TCP/IP gồm có các lớp Application, TCP, IP, Network, Datalink và Physical thì FTP thuộc lớp ứng dụng (Application). WWW là một dịch vụ hấp dẫn, nó thay thế hầu hết những chức năng của FTP. Tuy nhiên chỉ có FTP mới cho phép sao chép tập tin từ máy tính Client đến Server. Nếu một người dùng từ xa muốn làm điều này thì chắc chắn họ phải dùng FTP. Những loại tập tin có thể truyền được bằng FTP rất phong phú, từ các tập tin tư liệu (Document) cho đến các tập tin Multimedia như tập tin hình ảnh, âm thanh. I.2.4. THƯ ĐIỆN TỬ (Electronic Mail) Là dịch vụ được sử dụng nhiều nhất và có hiệu quả nhất. Người gởi chỉ cần soạn thảo thư (giống như soạn thảo văn bản). Khai báo địa chỉ E-mail của người nhận trên Internet rồi thực hiện một số thao tác theo mẫu hướng dẫn. Bức thư điện được chuyển đi và cuối cùng lưu trữ trong máy của người nhận. Người nhận cũng chỉ thực hiện một số thao tác đơn giản để lấy thư, đọc thư và nếu cần thì cho in ra. Cách liên lạc này thuận tiện hơn nhiều so với gởi thư thông thường qua bức điện hoặc Fax, lại rẻ và nhanh hơn. Cách thực hiện việc chuyển thư không cần phải kết nối trực tiếp với nhau để chuyển thư, thư có thể được chuyển từ máy này đến máy khác cho tới máy đích. Giao thức truyền thống sử dụng cho hệ thống thư điện tử của Internet là SMTP (Simple Mail Transfer Protocol). Cơ chế hoạt động của thư điện tử (E-mail): Trạm E-mail 1 Trạm E-mail 2 Trạm E-mail N SMTP Service POP3 Service SMTP Service POP3 Service SMTP Service POP3 Service E-mail Client E-mail Client E-mail Client Hình 4: Sơ đồ hoạt động của mạng E-mail Giao thức SMTP (Single Message Transfer Protocol) đặt tả trong hai chuẩn là trong RFC 822 (định nghĩa cấu trúc của thư ) và RFC 821(đặt tả giao thức trao đổi thư giữa hai mạng). Là giao thức cơ bản để chuyển thư giữa các máy Client, SMTP có một bộ gởi thư, một bộ nhận thư và một tập hợp lệnh dùng để gởi thư từ người gởi đến người nhận. Cứ mỗi trạm E-mail thường bao gồm hai dịch vụ: POP3 (Post Office Protocol Version 3) có nhiệm vụ nhận/trả thư từ/tới e-mail client và dịch vụ SMTP (Simple E-mail Transfer Protocol) có nhiệm vụ nhận/phân phối thư từ/đến POP3 đồng thời trao đổi thư với các trạm e-mail trung gian. Mỗi người dùng đều phải kết nối với một E-mail Server gần nhất (đóng vai trò bưu cục địa phương) phải có một tên (E-mail account) trên một trạm E-mail và sử dụng chương trình E-mail client (ví dụ như Eudora, Netscape...). Sau khi soạn thảo xong thư và đề rõ địa chỉ đích (người nhận) rồi gửi thư tới E-mail Server của mình. E-mail Server này có nhiệm vụ sẽ tự động kiểm tra và định hướng chuyển thư tới đích hoặc chuyển thư tới một E-mail Server trung gian khác. Thư chuyển tới E-mail Server của người nhận và được lưu ở đó. Đến khi người nhận thiết lập tới một cuộc kết nối tới E-mai Server đó thì thư sẽ chuyển về máy người nhận, nếu không thì thư vẩn tiếp tục giữ lại ở Server đảm bảo không bị mất. Phần khác của ứng dụng thư điện tử là cho phép người sử dụng đính kèm (attachments) theo thư một tập tin bất kỳ (có thể dạng nhị phân chẳng hạn chương trình chạy). E-mail đã và đang hết sức thành công đến nỗi những người sử dụng Internet phục vụ dùng nó đối với hầu hết các trao đổi của họ. Một lý do làm E-mail Internet phổ biến là vì việc thiết kế nó rất cẩn thận: giao thức làm cho việc "phát thư" có độ tin cậy cao. Không chỉ hệ thống thư tín trên máy của người gởi  tương tác trực tiếp trên máy của người nhận mà giao thức còn đặt tả một thông điệp không thể bị xoá bởi người gởi cho đến khi người nhận đã thật sự có một phiên bản của thông điệp trên bộ lưu trữ (đĩa cứng chẳng hạn) của họ. Như vậy để gởi/nhận thư người sử dụng chỉ cần quan tâm tới cách sử dụng chương trình E-mail Client. Hiện nay có nhiều chương trình E-mail Client như Microsoft Outlook Express, Eudora Pro, Peagasus mail,.... I.2.5. TÌM KIẾM TỆP (Archie) Phát triển tại đại học McGill ở Canada, Archie là một loại thư viện khổng lồ sẽ tự động và đều đặn tạo ra một số lớn các thông tin gởi đến máy chủ trên Internet và lập chỉ mục các tập tin của chúng để tạo ra một cơ sở dữ liệu duy nhất có thể tìm kiếm được. CSDL này còn là mục lục của dữ liệu danh mục, một sự biên dịch các tập tin có sẵn trên mọi máy chủ. Archie quét qua các máy chủ Internet một cách thường xuyên, và CSDL này thường xuyên được cập nhật. Thực sự thì Archie không phải là một hệ thống độc lập, thay vì vậy nó là một nhóm các máy chủ. Mỗi máy chủ Archie đáp ứng cho sự tra hỏi các máy chủ Internet của chính nó để tạo nên cơ sở dữ liệu cho chính nó. I.2.6. GOPHER Hệ thống Gopher phát triển bởi đại học Minnesota và được miễn phí cho các hoạt động phi lợi nhuận. Gopher có thể được dùng trên một số hệ thống máy tính như: UNIX, DOS, Microsoft Windows, Macintosh, OS/2...Phần mềm Client chạy trên máy tính của bạn có thể chạy trên bất kỳ máy nào của Gopher. Với Gopher bạn có thể đi xuyên qua Internet và đi đến những nơi mà không có người dùng nào đã từng đi đến, cách mà nó thực hiện bởi tổng hợp các công cụ Internet như: Telnet, FTP để khi bạn tìm ra một đề mục tương quan đến những gì bạn đang tìm kiếm, bạn có thể đi trực tiếp đến nó mà không cần một trình tiện ích, hãy nhập vào địa chỉ của mục tiêu việc tìm kiếm....Gopher sẽ lấy tất cả điều này cho bạn. I.2.7. TÌM KIẾM THÔNG TIN THEO CHỈ SỐ (WAIS) WAIS - Wide Area Information Server: nó là một trong những chương trình đầu tiên dựa vào tiêu chuẩn Z39.50( tiêu chuẩn của American National Standard). Nó là hệ thống đầu tiên dùng tiêu chuẩn này, nó trở thành một dạng thức tìm kiếm phổ biến, WAIS có thể nối đến bất kỳ CSDL hoặc máy Client có dùng Z39.50. WAIS cho phép truy tìm kiếm và truy nhập thông tin trên mạng mà không cần biết chúng đang thực sự nằm ở đâu. WAIS cung hoạt động theo mô hình client/server. Ngoài ra còn có WAIS Indexer thực hiện việc cập nhật dữ liệu mới, sắp xếp theo chỉ số để tiện tìm kiếm. Nó không chỉ cho phép hiển thị tập tin văn bản mà còn những tập tin đồ họa. Nó là nguồn quan trọng giúp cho các nguồn thông tin trên Internet có thể truy xuất được. I.2.8. TÌM KIẾM THÔNG TIN DỰA TRÊN SIÊU VĂN BẢN (WWW: World Wide Web) Là dịch vụ thông tin mới nhất và hấp dẫn nhất trên Internet. Nó ra đời năm 1989 và ngày nay nó cấu thành phần lớn nhất của Internet hiện nay dựa trên kỹ thuật biểu diễn thông tin gọi là siêu văn bản, trong đó các từ được chọn trong văn bản có thể được mở rộng bất cứ lúc nào để cung cấp đầy đủ hơn thông tin về từ đó. Sự mở rộng ở đây theo nghĩa là chúng có thể liên kết tới các tài liệu khác: văn bản, hình ảnh, âm thanh hay hỗn hợp các loại….có chứa thông tin bổ sung. Nói cách khác World Wide Web là phần đồ họa của Internet. Lúc đầu, Internet là hệ thống truyền thông dựa trên văn bản, việc liên kết với những site khác có nghĩa là phải gõ những địa chỉ mã hóa với độ chính xác 100%. Công nghệ World Wide Web xuất hiện như là một vị cứu tinh. Khả năng đặt hình ảnh lên Web Site bất ngờ làm cho thông tin trên Web trở nên hấp dẫn hơn, lôi cuốn hơn. Ngoài ra HTTP (Hypertext Transfer Protocol) cho phép trang Web kết nối với nhau qua các siêu liên kết (hyperlink). Nhờ vậy mà người dùng dễ dàng "nhảy" qua các Web site nằm ở hai đầu trái đất, World Wide Web chỉ là một phần cấu thành nên Internet ngoài ra còn có rất nhiều thành phần khác như: E-mail, Gopher, Telnet, Usenet... Web site là gì? Web hình thành từ hàng triệu Web site trên Internet. Web site là tập hợp trang Web do cá nhân hoặc công ty đăng ký hiển thị trên Web. Một Web site tiêu biểu thường gồm nhiều trang Web, bắt đầu bằng trang chủ (home page), liệt kê nội dung của Site. Một Web site tiêu biểu còn chứa siêu liên kết dẫn đến những trang Web còn lại trong phạm vi site và đến các web site khác. Các Web site có thể chỉ gồm một trang do cá nhân tạo thành hoặc là một sản phẩm của công ty và chứa vài trăm trang. Mỗi trang Web có một địa chỉ Internet không trùng lặp gọi là URL (Uniform Resource Locator). Bạn có thể tạo một Web site bằng HTML (Hypertext Markup Language), DHTML, XML... HTML là ngôn ngữ lập trình cho phép mọi máy tính kết nối với Web để truy cập và xem trang Web, định hướng di chuyển qua chúng bằng siêu liên kết. Web site được các máy tính - gọi là máy phục vụ Web (Web Server) - gởi lên Web. Máy phục vụ và máy tính cho phép các máy khách truy cập trên mạng. Máy phục vụ thường chia sẻ tập tin với máy khách nào đăng nhập nó. Máy phục vụ Web sử dụng phần mềm máy phục vụ HTTP để cung cấp tài liệu HTML khi nhận được yêu cầu từ chương trình trên máy khách kết nối với Web, chẳng hạn như trình duyệt Web. Trình duyệt Web (Web Brower) là chương trình cho phép bạn định vị, yêu cầu và hiển thị tài liệu trên World Wide Web. Cơ chế hoạt động của Web server Máy server Web dùng giao thức HTTP để lấy tài nguyên Web xác định thông qua URL. HTTP là một giao thức mức ứng dụng được thiết kế sao cho truy cập tài nguyên Web nhanh chóng và hiệu quả. Giao thức này dựa vào mô hình request-reponse. Dịch vụ Web xây dựng theo mô hình client/server, trong đó Web browser đóng vai trò là Client gởi các yêu cầu dưới dạng URL đến Web server. Web server trả lời bằng cách trả về một trang HTML (Hypertext Markup Language). Trang HTML có thể là một trang tĩnh, tức là nội dung của nó đã có dạng xác định và được lưu trên Web site hoặc một trang Web động (nội dung không xác định trước) mà Server tạo ra tại thời điểm Client yêu cầu để trả lời cho yêu cầu của Client hoặc một trang liệt kê các tập tin và thư mục trên Web site. Mỗi trang trênIntranet hoặc trên Internet có một URL (Uniform Resource Location) duy nhất định vị chúng. Web browser yêu cầu một trang bằng cách gửi một URL đến một Web server. Web server sẽ dùng các thông tin trong URL để định vị và tổ chức một trang HTML để gửi về cho Web browser. Một chuỗi URL nói chung có dạng sau: :/// Trong đó: Tiền tố chỉ ra giao thức được sử dụng cho dịch vụ. Ví dụ giao thức HTTP (Hypertext Transport Protocol) được dùng cho dịch vụ Web, giao thức FTP, gopher,... là tên DNS (Domain Name System) của máy Web server. là đường dẫn đến thông tin được yêu cầu trên Server. Web server sẽ trả một trang HTML về cho Web browser, các trang HTML thuộc một trong 3 kiểu sau: Trang Web tĩnh (Static webpage): là những trang HTML được chuẩn bị sẵn. Web server chỉ đơn giản là lấy trang này gởi về cho Web browser mà không gọi thi hành một chương trình hay một script nào khác. Người dùng yêu cầu một trang Web tĩnh bằng cách nhập vào một chuỗi URL hoặc click chuột vào một siêu liên kết trỏ tới URL. Trang Web động (Dynamic web page): là những trang Web được tạo ra tại thời điểm Client gửi yêu cầu để đáp ứng yêu cầu của người sử dụng máy Server có thể sẽ gọi chạy một chương trình khác, sử dụng các API của Server, các ngôn ngữ kịch bản CGI script, query cơ sở dữ liệu ... tùy theo các thông tin mà Web browser cung cấp. Danh sách liệt kê (Directory listing): Nếu user gửi yêu cầu mà không mô tả một tập tin cụ thể, thì có thể tạo một trang mặc nhiên cho Web site hay cho một thư mục hoặc cấu hình Server cho phép duyệt thư mục. Nếu sử dụng trang HTML mặc nhiên cho thư mục thì trang này sẽ được gửi cho Web browser, còn nếu không có thì một Directory listing (phiên bản HTML của Windows Explorer hay File Manager chạy trên trình duyệt) được trả về cho người sử dụng dưới dạng một trang HTML, trong đó mỗi tập tin và thư mục thể hiện như một siêu liên kết. Sau đó người sử dụng có thể nhảy đến một file bất kỳ bằng cách click vào siêu liên kết tương ứng trong Directory listing. I.2.9. DỊCH VỤ CHAT Chat là tài nguyên được mọi người sử dụng trên Internet ưa chuộng nhất. Nó cho phép bạn thiết lập các cuộc đối thoại thông qua máy vi tính với người dùng khác trên Internet. Sau khi bạn đã thiết lập được hệ thống này, những gì bạn gõ trên máy tính của bạn gần như tức thời được gởi đến máy tính kia và ngược lại. Những cuộc trao đổi thông qua chương trình Chat là sự đối thoại giữa hai người với nhau thông qua ngôn ngữ viết nên sẽ chậm hơn so với đối thoại trực tiếp bằng lời nói nhưng có lợi ích nhất là với những người không cùng ngôn ngữ vì gõ-đọc dễ hơn nghe-nói và trong một số trường hợp khác thì gõ (viết) dễ hơn là nói. I.2.10. INTERNET PHONE Internet phone là một dịch vụ mới được phát triển tại Việt Nam, nó cho phép người dùng máy tính có kết nối Internet và được trang bị card âm thanh, microphone để đàm thoại với người dùng máy điện thoại ở bất cứ nơi đâu. Chương II. TÌM HIỂU CƠ SỞ DỮ LIỆU ORACLE II.1. TỔNG QUAN VỀ ORACLE II.1.1. ORACLE LÀ GÌ? Oracle là một hệ quản trị cơ sở dữ liệu quan hệ client/server. Để đi sâu vào nghiên cứu cơ sở dữ liệu Oracle cần có một số khái niệm cơ bản về hệ quản trị cơ sở dữ liệu quan hệ. 1. Hệ quản trị cơ sở dữ liệu quan hệ. (RDBMS Relation Database Management system) Mỗi cơ sở dữ liệu quan hệ là một tập hợp dữ liệu được tổ chức trong những bảng hai chiều có quan hệ với nhau. Mỗi bảng bao gồm các cột có tên và các hàng. Mỗi cột là một thuộc tính của quan hệ, mỗi hàng là một bộ (tuple) các giá trị của những thuộc tính của quan hệ. Một RDBMS có nhiêm vụ: Lưu trữ và tạo dữ liệu sẵn có trong các bảng. Duy trì quan hệ giữa các bảng trong cơ sở dữ liệu. Bảo đảm tích hợp dữ liệu bằng cách tạo các qui tắc quản lý giá trị dữ liệu. Khôi phục mọi dữ liệu trong trường hợp hệ thống có sự cố. 2. Kiến trúc client / server - Client là một thành phần của hệ thống yêu cầu dịch vụ hoặc tài nguyên từ những thành phần hệ thống khác. - Server là một thành phần của hệ thống cung cấp dịch vụ hoặc tài nguyên cho những thành phần hệ thống khác. 3. Các yếu tố của một client / server data based system Server: Một tập hợp các mục dữ liệu và đối tượng trợ giúp được tổ chức và trình bày để thuận tiện phục vụ như: tìm kiếm, sắp thứ tự, khôi phục, cập nhật và phân tích dữ liệu. CSDL bao gồm bộ nhớ dữ liệu vật lý và các dịch vụ CSDL. Mọi dữ liệu đều được truy cập qua hệ phục vụ, không bao giờ được truy xuất trực tiếp. Client: Một chương trình có thể tác động qua lại với con người hoặc một quá trình tự động. Nó bao gồm tất cả những phần mềm có liên quan đến server, yêu cầu dữ liệu từ CSDL hoặc gửi dữ liệu đến CSDL. Truyền nhận giữa client và server: Sự truyền nhận này phụ thuộc nhiều vào client và server thực thi như thế nào. Mọi sự thực thi hệ thống CSDL đều thuộc một trong ba loại sau: File_based system: Các hệ thống này dùng ứng dụng truy xuất trực tiếp các file dữ liệu trên một đĩa cứng cục bộ hoặc một hệ phục vụ file mạng. Các hệ thống này thực hiện các dịch vụ CSDL và truyền nhận logic như một phần của ứng dụng client. Trong việc thực thi này, ứng dụng client đóng vai trò client và vai trò hệ phục vụ. Host_based system: Hệ thống này thường dùng trong các mainframe và mini_computer. Những hệ thống này thực thi tất cả hoặc hầu hết dịch vụ CSDL và chức năng của client trên một máy tính trung tâm lớn. Người dùng xem và tác động đến ứng dụng client bằng cách dùng một thiết bị đầu cuối từ xa. Truyền nhận giữa client và CSDL thực thi thực hiện trên một host computer và host computer đóng vai trò của client và server. Client / server system: Hệ thống này được thiết kế từ dịch vụ CSDL riêng lẻ đến client bằng cách cho phép truyền nhận giữa chúng là mở và linh hoạt hơn. Dịch vụ CSDL được thực thi trên một máy tính mạnh, cho phép quản trị tập trung, bảo mật và dùng chung tài nguyên. Do đó, hệ phục vụ trong client / server là CSDL và hệ phục vụ của chính nó. Những ứng dụng client được thực thi trên các nền khác nhau bằng cách dùng nhiều công cụ khác nhau. Quá trình này cho phép linh hoạt hơn và các ứng dụng của người sử dụng có tính chất rất cao. Hiện nay, nhiều tổ chức kết hợp sử dụng cả ba hệ thống này. Ưu, nhược điểm của chúng có thể được tóm tắt qua bảng sau: Đặc điểm File_based Host_based Client / Server Giá cả Rẻ Đắt Biến động Độ tin cậy Kém Cao Từ trung bình đến tốt Tính bảo mật Kém Tốt Từ trung bình đến tốt Phát triển ứng dụng Đòi hỏi kỷ năng Phải có nhân viên lành nghề Phải có nhân viên lành nghề CSDL Trung bình(~ 50MB) Rất lớn(hàng GB) Rất lớn (hàng GB) Quản trị tập trung Minimal Excellent Excellent Giao diện với người sử dụng Rất linh hoạt Không linh hoạt Linh hoạt Sử dụng mạng Không hiệu quả Hiệu quả Có thể hiệu quả Vendor look_in Từ thấp đến trung bình Cao Trung bình 4. SQL SQL (Structured Query Language) - Ngôn ngữ truy vấn có cấu trúc là phương tiện chính để làm việc với cơ sở dữ liệu Oracle. 5. PL/SQL Trong Oracle có một ngôn ngữ đặc biệt cho phép kết hợp ngôn ngữ thủ tục truyền thống với sự truy xuất các đối tượng cơ sở dữ liệu thông qua ngôn ngữ SQL, đó là ngôn ngữ PL/SQL. II.1.2. MỘT SỐ CÔNG CỤ CỦA ORACLE Oracle cung cấp cho các nhà lập trình rất nhiều công cụ lập trình phát triển ứng dụng liên quan đến cơ sở dữ liệu và phát triển Internet. Trong phiên bản Oracle 8i có khoảng 150 công cụ chạy trên các môi trường hệ điều hành khác nhau, các công cụ hỗ trợ giao tiếp cho các CSDL từ xa, phát triển ứng dụng CSDL từ xa thông qua môi trường Internet,…Một số công cụ dùng để phát triển thông dụng nhất như: Oracle8i Enterprise Edition 8i. SQL * Plus 8.0: Một phần mềm giao tiếp kiểu dòng lệnh, cho phép tương tác với Oracle thông qua hai ngôn ngữ SQL và PL/SQL. Oracle Net8 : Một phần mềm kết nối CSDL dùng để cung cấp các thông tin CSDL xác thực, tối ưu trên mọi thủ tục mạng thông dụng. Oracle Enterprise Manager: Một phần mềm có giao diện rất tốt hỗ trợ cho việc quản lý các đối tượng của cơ sở dữ liệu Oracle. Develper 6.0, Developer/2000, Jdeveloper for Oracle 8i: gồm Oracle Form Builder, Oracle Report Builder, Oracle Procedure Builder, Oracle Project Builder được tích hợp vào môi trường phát triển. Designer 2000: phát triển các ứng dụng Oracle. Power Object: cung cấp môi trường phát triển ứng dụng nhanh với các đặc trưng kéo thả và quản lý CSDL. Oracle Names: Tạo các liên kết CSDL chứa các thông tin nút mạng trên một mạng bằng cách sử dụng từ điển toàn cục chung Oracle Names. Multi-protocol Interchange: cung cấp một nhu cầu giao tiếp trên các thủ tục khác biệt bằng cách gửi thông điệp SQL* Net từ thủ tục này sang thủ tục khác. Oracle Network Manager: Quản lý cấu hình và quản lý mạng CSDL phân tán được thực hiện dễ dàng với Network Manager. Network Manager được sử dụng không chỉ để quản lý từ điển Oracle Names mà còn tạo ra các file cấu hình cho các thành phần Client/Server của SQL*Net và định nghĩa cho các đường kết nối cho các nút Multi-Protocol Interchange. II.2. GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU ORACLE II.2.1. LỚP VẬT LÝ VÀ LỚP LOGIC CỦA CSDL ORACLE CSDL Oracle gồm có hai lớp: lớp vật lý và lớp logic. a. Lớp vật lý Lớp vật lý của CSDL Oracle là một số tập tin nằm trên đĩa. Vị trí vật lý của những tập tin này không liên quan đến chức năng của CSDL nhưng có thể liên quan đến hiệu năng của CSDL. Dữ liệu trong những tập tin này thường được truy xuất bởi các công cụ của Oracle thông qua ngôn ngữ truy vấn có cấu trúc SQL. Lớp vật lý bao gồm ba loại tập tin: các tập tin dữ liệu (data file), các tập tin điều khiển (control file) và các tập tin phuc hồi (Redo log files). Data files: đây là các tập tin quan trọng nhất trong ba loại tập tin và là nơi chứa dữ liệu thật sự của CSDL. Các tập tin dữ liệu có kích thước lớn từ vài megabytes đến hàng gigabytes. Chúng lưu trữ các thông tin chứa trong CSDL. Một CSDL nhỏ có thể có vài tập tin dữ liệu và có hàng trăm tập tin dữ liệu cho những CSDL lớn. Phân bố lưu trữ thông tin trên nhiều tập tin dữ liệu có thể làm tăng hiệu năng cho CSDL. Số tập tin dữ liệu có thể được giới hạn bằng tham số MAXDATAFILES khi tạo ra một CSDL mới. Control files: một CSDL cần có một hay nhiều tập tin điều khiển, các tập tin điều khiển lưu trữ thông tin cấu trúc của CSDL. Redo log files: là các tập tin được sử dụng để lưu giữ các thông tin ban đầu và toàn bộ quá trình thay đổi của CSDL sau khi nó được tạo ra, phục vụ cho mục đích phục hồi lại CSDL trong trường hợp hệ thống bị sự cố. b. Lớp logic Lớp logic của Oracle gồm các nguyên tố sau: Một hay nhiều không gian bảng (tablespace). Các schame cơ sở dữ liệu gồm các đối tượng như table, view, index, cluster, stored procedure, trigger, sequence, … Mỗi schame CSDL thuộc sở hữu một user được xác định bởi một username và password duy nhất đối với CSDL. Sau khi đăng nhập vào CSDL với username và password hợp lệ user có thể thao tác trên CSDL với quyền được cấp phát cho user đó ở cấp độ nào. Không gian bảng là một khái niệm trừu tượng, vậy không gian bảng có liên quan như thế nào đến CSDL và các tập tin dữ liệu. II.2.2. TABLESPACE VÀ CÁC TẬP TIN DỮ LIỆU CSDL được chia thành một hay nhiều mẩu logic gọi là không gian bảng (tablespace). Một tablespace bao gồm một hay nhiều tập tin dữ liệu vật lý, việc phân bố nhiều hơn một tập tin dữ liệu trên một tablespace, có thể phân bổ dữ liệu trên nhiều đĩa vật lý khác nhau để phân tán truy xuất vào ra và cải thiện khả năng thi hành. Khi tạo ra một CSDL, Oracle tự động tạo ra một tablespace SYSTEM, tablespace này là nơi chứa tự điển dữ liệu. Tự điển dữ liệu chứa thông tin về các table, index, cluster,…Tablespace SYSTEM là vị trí mặc định của tất cả các đối tượng khi một CSDL được tạo ra. Thông thường, người ta tạo nhiều tablespace để phân hóa các đối tượng khác nhau của CSDL đồng thời dành riêng tablespace SYSTEM cho từ điển dữ liệu, đây cũng là một phương pháp hữu hiệu để bảo đảm cơ sở dữ liệu luôn khỏe mạnh. Có thể mở rộng không gian một CSDL theo 3 cách sau: Thêm một tập tin dữ liệu vào một tablespace. Cú pháp: ALTER TABLESPACE TABLESPACE_NAME ADD DATAFILE ‘DATAFILE.ORA’; Thêm một tablespace mới. Cú pháp: CREATE TABLESPACE TABLESPACE_NAME DATAFILE ‘DATAFILE.ORA’; Tăng kích thước tập tin dữ liệu. ALTER DATABASE DATAFILE ‘DATAFILE.ORA’ AUTOEXTENT ON NEXT MIN_NUMBER MB MAXSIZE MAX_NUMBER MB; Kích thước của tablespace là tổng kích thước của các tập tin dữ liệu tạo nên tablespace và kích thước của CSDL là tổng kích thước của các tablespace trong CSDL đó. II.2.3. SCHAME CƠ SỞ DỮ LIỆU Một schame CSDL là một tập hợp các cấu trúc logic các đối tượng hay schame objects. Schame objects này bao gồm tables, indexes, clusters, views, stored procedures, database triggers and sequences. 1. Table Một bảng là một đơn vị cơ sở lưu trữ vật lý trong CSDL Oracle, mà nó bao gồm một tên bảng và các hàng, các cột của dữ liệu trong đó mỗi cột có một kiểu dữ liệu với chiều dài xác định cho cột đó. Tạo Table Cú pháp: CREATE TABLE tênbảng (tên_cột kiểu_dữ_liệu(độdài) [,…n]); - Tạo ràng buộc khóa chính cho bảng: Cú pháp: CONSTRAINT PRIMARY KEY ; - Tạo ràng buộc khóa ngoại cho bảng: Cú pháp: CONSTRAINT FOREIGN KEY (tên cột là khóa chính của bảng cha) REFERENCES tên_bảng_cha(tên cột là khóa chính của bảng cha); - Tạo ràng buộc unique cho cột trong bảng: Ràng buộc unique bảo đảm không có hai hàng của một bảng dữ liệu có giá trị trùng nhau trên cột có áp đặt ràng buộc này. Cú pháp: CONSTRAINT UNIQUE (tên_cột); - Tạo ràng buộc Check Condition cho cột trong bảng: Cú pháp: CONSTRAINT CHECK(tên_cột toán_tử_so_sánh giá_trị); - Tạo ràng buộc NOT NULL cho cột trong bảng: Thêm cụm từ NOT NULL theo sau tên cột khi tạo bảng. Ví dụ: TênTỉnh VARCHAR2(20) NOT NULL, Thêm, xóa và bổ sung độ dài dữ liệu một cột - Thêm một cột: Cú pháp: ALTER TABLE tên_bảng ADD (tên_cột kiểu_dữ_liệu (độ dài)); - Xóa một cột: ALTER TABLE tên_bảng DROP COLUMN (tên_cột); - Bổ sung độ dài dữ liệu một cột: ALTER TABLE tên_bảng MODIFY (tên_cột kiểu_dữ_liệu(độ dài)); Xóa bảng Xóa một bảng nghĩa là hủy mọi dữ liệu của bảng và quyền sở hữu đối với bảng đó. Cú pháp: DROP TABLE tên_bảng; Chú ý: Trước khi xóa một bảng, phải hủy bỏ mọi quan hệ phụ thuộc giữa bảng và các đối tượng khác. 2. View View là một đối tượng CSDL nó lưu trữ một query đã định nghĩa trước. Công dụng của view là hiển thị dữ liệu trong một hay nhiều bảng và xử lý như một bảng ảo nghĩa là có thể nhập dữ liệu vào nhiều bảng cùng một lúc thông qua view. Tạo view Cú pháp: CREATE VIEW tên_view AS (SELECT FROM ; Xóa view Ta có thể xóa view với cú pháp: DROP VIEW tên_view; 3. Cluster Cluster là một nhóm các bảng có cùng chung cột lưu trữ vật lý như một bảng để chia sẻ cột chung cho các bảng trong nhóm đã tạo nên cluster. Cluster giúp giảm nhập/xuất đĩa và cải thiện thời gian truy cập nhờ nối các bảng cluster đồng thời cũng làm giảm không gian lưu trữ các bảng góp phần thu gọn không gian cho CSDL. Có thể tạo cluster theo cú pháp: CREATE CLUSTER tên_cluster(); Tương tự như các đối tượng khác của Oracle ta có thể xóa Cluster theo cú pháp: DROP CLUSTER tên_cluster; 4. Index Index là cấu trúc tùy chọn kết hợp với các table và các cluster. Ta có thể tạo ra các index tường minh để tăng tốc độ thực hiện các lệnh SQL trên các bảng. Một index đơn thuần chỉ là một đường truy xuất nhanh đến dữ liệu, nó trỏ trực tiếp vào vị trí của hàng chứa giá trị index đó. Index độc lập về mặt logic và vật lý với dữ liệu trong các bảng kết hợp. Ta có thể tạo ra hay xóa một index bất cứ lúc nào mà không ảnh hưởng đến bảng gốc và các index khác. Khi ta tạo ra các bảng với các ràng buộc khóa chính, khóa ngoại, unique thì Oracle tự động tạo ra index tương ứng cho các bảng đó. Có thể tạo Index theo cú pháp: CREATE INDEX tên_index ON tên_bảng(tên_cột); Xóa Index theo cú pháp: DROP INDEX tên_index; 5. Sequence Sequence là một đối tượng CSDL đặc biệt tạo ra các số nguyên theo quy luật đặc trưng lúc sequence được tạo ra. Các sequence có thể dùng cho nhiều mục đích trong các hệ CSDL, nhưng thường người ta dùng nó để tạo ra các khóa chính của bảng một cách tự động. Có nhiều quy luật tạo ra các sequence theo các từ khóa sẵn có của Oracle: Start with n: sequence được tạo ra với giá trị chỉ định ban đầu trong Start with khi đó cột ảo NEXTVAL của sequence được tham trỏ. Increment by n: Định nghĩa số tăng của sequence mỗi lúc cột ảo NEXTVAL được tham trỏ. Minvalue n: giá trị tối thiểu có thể tạo bởi sequence nếu từ khóa nominvalue chưa được sử dụng. Maxvalue n: giá trị tối đa có thể tạo bởi sequence nếu từ khóa nomaxvalue chưa được sử dụng. Cycle: cho phép sequence tạo lại giá trị ban đầu khi đạt đến maxvalue hay minvalue nếu từ khóa nocycle chưa được sử dụng. Cache n: cho phép sequence dùng bộ nhớ cache để tăng hiệu năng, nếu từ khóa nocache chưa được sử dụng. Order: cho phép gán các giá trị theo thứ tự yêu cầu, nếu không sử dụng order từ khóa nocache có thể sử dụng . 6. Trigger Trigger là một đối tượng CSDL được chạy tự động khi một sự kiện INSERT, UPDATE, DELETE trên bảng hay view có mốc nối với trigger. 7. Stored procedure và function Một stored procedure hay function là một đối tượng CSDL gồm một tập các lệnh SQL hay PL/SQL tạo thành một tập tin thực thi để thực hiện một tác vụ đặc biệt nào đó. Stored procedure và function cho phép ta kết hợp dễ dàng và linh động chức năng có tính thủ tục với một ngôn ngữ lập trình có cấu trúc SQL. Các procedure và các function gần như giống nhau chỉ khác là function luôn trả về một hay nhiều giá trị, còn procedure thì không trả về giá trị nào. II.2.4. DATA BLOCKS, EXTENTS VÀ SEGMENTS 1. Quan Hệ Giữa Segments, Extents và Data Blocks Oracle định vị không gian CSDL logic cho tất cả dữ liệu trong một CSDL. Các đơn vị của không gian CSDL là các data block, extent và segment. Đơn vị không gian logic nhỏ nhất của CSDL Oracle là data block. Một data block tương ứng với một số byte vật lý trên đĩa nhất định. Mức kế của không gian CSDL logic gọi là extent. Một extent là một số xác định các data block liên tục được định vị để chứa một loại thông tin xác định. Mức lưu trữ CSDL trên extent là segment. Một segment là một tập các extent được định vị cho một loại cấu trúc CSDL đặt biệt. Oracle định vị các segment theo đơn vị một extent. Khi các extent đang có của một segment đầy, Oracle định vị thêm một extent mới khác cho segment đó. Do các extent mới được định vị thêm khi cần thiết nên các extent của một segment có thể không nằm liên tục trên đĩa. Một segment được lưu trữ trong một tablespace. Trong một tablespace một segment có thể trải trên nhiều tập tin dữ liệu (datafile). 2. Data Block Oracle quản lý không gian lưu trữ các tập tin dữ liệu của CSDL trong các đơn vị gọi là các khối dữ liệu, một khối dữ liệu là đơn vị xuất/nhập nhỏ nhất được sử dụng trong một CSDL. Ở mức vật lý, mức hệ điều hành tất cả dữ liệu được lưu trữ bằng byte. 3. Extent Một extent là đơn vị không gian lưu trữ dữ liệu được tạo thành bởi một số data block liên tục. Một hay nhiều extent tạo thành một segment. Khi không gian trong segment đã chứa đầy Oracle định vị một extent mới cho segment. 4. Segment Một segment là một tập các extent chứa tất cả các dữ liệu cho một cấu trúc lưu trữ logic nhất định trong một tablespace. CSDL Oracle sử dụng bốn loại segment sau: a. Segment dữ liệu (data segment) Mọi bảng không cluster, các patition và các cluster trong một CSDL Oracle đều có một segment dữ liệu đơn để giữ tất cả các dữ liệu của nó. Oracle tạo ra các segment dữ liệu khi tạo ra các bảng với lệnh CREATE. b. Index Segment Mọi index trong một CSDL Oracle có một segment index đơn để giữ tất cả các dữ liệu của nó. Oracle tạo ra các segment index cho index khi ta phát lệnh CREATE INDEX. Ta có thể chỉ định các thông số lưu trữ cho các extent của segment index vào một tablespace chứa segment index. c. Temporary Segment Khi xử lý các query, Oracle thường yêu cầu không gian làm việc tạm cho các chặn trung gian của quá trình phân tích cú pháp và thực hiện lệnh SQL. Oracle tự động định vị không gian đĩa đó chính là các temporary segment. d. Segment Rollback. Một CSDL chứa một hay nhiều segment rollback. Một segment rollback ghi các giá trị cũ của dữ liệu thay đổi bởi một chuyển tác. Các segment rollback được sử dụng để cung cấp tính nhất quán khi đọc, phục hồi chuyển tác và phục hồi CSDL. II.2.5. BẢO MẬT CƠ SỞ DỮ LIỆU ORACLE Oracle cho phép truy xuất cơ sở dữ liệu bằng cách sử dụng một tên đăng nhập và mật khẩu. Mô hình bảo mật cơ sở dữ liệu Oracle cần sự xác nhận mật khẩu của tất cả các người sử dụng trong cơ sở dữ liệu. Sự điều khiển đối tượng cơ sở dữ liệu của một người sử dụng có thể truy xuất, mức độ truy xuất của người sử dụng có thể có trên đối tượng và quyền đặt các đối tượng mới vào cơ sở dữ liệu Oracle,…ở một mức cao, những sự điều khiển này được gọi là các đặc quyền (privilege). Các người sử dụng trong cơ sở dữ liệu Oracle được tạo ra bằng lệnh create user. Cú pháp: CREATE USER tên_user IDENTIFIED BY password; Gán các đặc quyền hệ thống cho user Các đặc quyền hệ thống cấp cho user khả năng tạo ra, biến đổi hay xóa các đối tượng cơ sơ dữ liệu, lưu trữ dữ liệu cho ứng dụng trong Oracle. Một user muốn làm được một điều gì đó trong CSDL Oracle thì ít nhất user đó phải có đặc quyền gọi là connect. Có hai phân loại trong phạm vi đặc quyền hệ thống của CSDL Oracle: - Các đặc quyền hệ thống liên quan đến việc quản lý các đối tượng. Các đối tượng này bao gồm table, index, triger, …Ba hành động trên các đối tượng được quản lý bởi đặc quyền hệ thống là định nghĩa hay tạo ra đối tượng, thay đổi đối tượng đã tạo hay xóa đối tượng. - Một đặc quyền liên quan đến khả năng một user quản lý các hoạt động toàn cục đặt biệt. Những hoạt động này bao gồm các chức năng như giám sát hoạt động CSDL, tạo thống kê để hỗ trợ sự tối ưu hóa dựa trên giá thành,…những hoạt động này chỉ có user có đặc quyền restricted session là làm được. Gán đặc quyền hệ thống được thực hiện bằng lệnh grant. Để gán một đặc quyền hệ thống, người gán hoặc cần có đặc quyền tự gán with admin option hoặc user được gán grant any privilege. Sử dụng role để quản lý truy xuất cơ sơ dữ liệu Khi CSDL lớn lên các đặc quyền trở nên cồng kềnh và khó quản lý. Người quản trị hệ thống có thể đơn giản hóa việc quản lý các đặc quyền bằng cách sử dụng một đối tượng CSDL gọi là role. Các role hoạt động theo hai tư cách trong cơ sở dữ liệu. Đầu tiên, role có thể hoạt động như một điểm tập trung để nhóm các đặc quyền thực hiện một số tác vụ nhất định. Tư cách thứ hai là hoạt động như một user ảo của cơ sơ dữ liệu được cấp tất cả các đặc quyền đối tượng yêu cầu để thực hiện một chức năng, công việc nhất định. Để sử dụng role, cần phải có hai hành động sau xảy ra: - Người quản trị cần phải nhóm logic các đặc quyền nhất định với nhau. Nhóm các đặc quyền này được gán cho một role có thể được bảo vệ bằng mật khẩu. - Người quản trị cần phải nhóm logic các user của một ứng dụng CSDL với nhau theo nhu cầu tương tự nhau. Cuối cùng là gán các role cho các user đặc quyền tương tự trong cơ sở dữ liệu. Các role có thể được thay thế để hỗ trợ yêu cầu mật khẩu bằng cách sử dụng lệnh alter role identified by. Việc xóa một role được thực hiện bằng lệnh drop role. Hai tùy chọn này chỉ có thể thực hiện bởi những user có các đặc quyền create any role, alter any role, drop any role hay bởi người tạo ra các role đó (owner). Chương III. TÌM HIỂU NGÔN NGỮ LẬP TRÌNH PHP III.1. PHP LÀ GÌ? PHP là một ngôn ngữ kịch bản phía máy phục vụ, mã nguồn mở được sử dụng rộng rãi vào các mục đích chung mà đặc biệt thích hợp cho phát triển Web và có thể nhúng vào trang HTML. Khi mới giới thiệu, PHP được viết tắt từ một nhóm từ tiếng Anh là Personal Home Page và bây giờ được tái viết tắt cho cụm từ: PHP Hypertext Preprocessor. PHP được giới thiệu vào năm 1994 bởi Rasmus Lerdorf, như một bộ sưu tập của một ngôn ngữ chưa chặt chẽ dựa vào Perl. Đến năm 1998, phiên bản 3 của PHP được công bố, từ đây PHP mới chính thức phát triển theo hướng tách riêng của mình. PHP trở thành ngôn ngữ lập trình có cấu trúc và tính năng đa dạng, chính vì thế được các nhà lập trình Web ưa dùng. Ngôn ngữ kịch bản PHP có thể nhúng vào HTML nên đây chính là điểm khác của nó với các ngôn ngữ khác như Perl hoặc C, thay vì một chương trình được viết với nhiều dòng lệnh để xuất ra trang HTML, bạn viết một kịch bản HTML trong đó gắn mã nguồn PHP để làm một vài việc. Mã nguồn PHP thực hiện trên máy phục vụ và trả về máy khách yêu cầu nó kết quả dưới dạng các trang HTML. Khối mã nguồn PHP được bao quanh giữa các thẻ đặc biệt mà nó cho phép nhảy vào hay ra khỏi chế độ PHP. Có thể sử dụng bốn cách tổ chức các thẻ để biểu thị các khối của mã nguồn PHP: Ví dụ: Ví dụ: Ví dụ: echo “Cách thứ ba”; Ví dụ: Tuy nhiên cách đầu tiên được ưa chuộng và dùng phổ biến hơn. III.2. PHP CÓ THỂ LÀM GÌ? PHP chủ yếu đặt trọng tâm trên kịch bản phía máy phục vụ vì thế bạn có thể làm bất cứ điều gì mà các chương trình CGI khác có thể làm được, như tập hợp dữ liệu hình thức, tạo ra nội dung các trang động hoặc gửi và nhận các cookie. Nhưng PHP có thể làm được nhiều hơn thế. Cụ thể là kịch bản PHP có thể sử dụng trên ba nền chính sau: Kịch bản phía máy phục vụ: đây là nền mục tiêu chính và truyền thống nhất đại diện cho PHP. Bạn cần phải có ba thứ để làm việc ở nền này, đó là bộ phân tích cú pháp PHP (CGI hoặc môđun máy phục vụ), một máy phục vụ Web và một trình duyệt Web. Bạn cần phải chạy máy phục vụ Web với một kết nối đến PHP đã được cài đặt. Bạn có thể truy cập chương trình PHP xuất ra với trình duyệt Web để nhìn trang PHP trả về từ máy phục vụ. Kịch bản dòng lệnh: bạn có thể tạo một kịch bản PHP để chạy nó mà không cần bất cứ máy phục vụ hoặc trình duyệt Web nào. Bạn chỉ cần sử dụng bộ phân tích cú pháp PHP trong cách này. Viết các ứng dụng GUI phía máy khách: PHP thì không có khả năng để viết rất tốt các ứng dụng windows nhưng nếu PHP của bạn tuyệt vời và có thể sử dụng những đặc trưng thuận lợi của PHP trên các ứng dụng phía máy khách bạn cũng có thể sử dụng PHP-GIK để viết các chương trình. PHP có thể sử dụng trên tất cả các hệ điều hành chính, bao gồm Linux, nhiều hệ Unix khác nhau, Microsoft Windows, Mac OS X, RISC OS, …PHP cũng hỗ trợ cho hầu hết các máy phục vụ Web hiện nay như là Apache, Microsoft Internet Information Server, Personal Web Server, … Vì thế với PHP, bạn có thể tự do chọn lựa một hệ điều hành và một máy phục vụ Web. Hơn thế nữa, bạn cũng có thể chọn cách lập trình thủ tục hoặc lập trình hướng đối tượng hoặc trộn lẫn cả hai. PHP không hạn chế trong việc xuất ra trang HTML. PHP có khả năng bao gồm xuất ra các dạng hình ảnh, các tệp PDF và thậm chí cả phim ảnh dưới dạng Flash. Bạn cũng có thể dễ dàng xuất ra mọi kiểu văn bản như là XHTML và bất kỳ tệp XML khác. PHP có thể tự động sinh ra các tệp dạng này và lưu chúng trong hệ thống tệp thay vì in nó ra, nội dung động được định dạng nhanh từ phía máy phục vụ. Một đặc trưng mạnh và quan trọng nhất trong PHP là nó hỗ trợ nhiều hệ cơ sơ dữ liệu. Viết một trang Web cho phép cập nhật cơ sở dữ liệu thì đơn giản đến lạ thường. Các cơ sở dữ liệu được hỗ trợ gồm: MySQL, MS-SQL, Oracle(OCI7 và OCI8), PostgreSQL, mSQL,…PHP hỗ trợ ODBC vì thế bạn có thể kết nối bất kỳ cơ sở dữ liệu nào hổ trợ tiêu chuẩn quốc tế này. PHP còn hỗ trợ cho việc giao tiếp với các dịch vụ sử dụng các giao thức như là POP3, HTTP, COM, SNMP, NNTP,… Khi sử dụng PHP trong nền thương mại điện tử, bạn sẽ tìm thấy nhiều hàm hữu dụng cho các chương trình thanh toán trên mạng. Cuối cùng nhưng không kém phần quan trọng, chúng ta có được nhiều mở rộng thú vị khác, các hàm cho bộ máy tìm kiếm mnoGoSearch, các hàm cổng IRC, nhiều tiện ích nén, chuyển đổi, thông dịch,… III.3. CÁC KIỂU DỮ LIỆU III.3.1. KIỂU BOOLEAN Đây là kiểu đơn giản nhất, nó có thể có hai giá trị TRUE hoặc FALSE. Ví dụ: <? $foo=True; ?> III.3.2. KIỂU SỐ NGUYÊN (INTEGER) Số nguyên là một số thuộc tập hợp Z = {…,-2,-1,0,1,2,…}. Số nguyên có thể xác định trong hệ thập phân, hệ bát phân, hệ thập lục phân, số có dấu (- hoặc +). Nếu bạn sử dụng hệ bát phân thì phải ký hiệu thêm phía trước số là 0 (zero), hệ thập lục phân thì phải ký hiệu thêm phía trước số là 0x. Ví dụ: <? $a = 1234; //số thập phân. $b = -123; // số âm $c = 0123; // số viết dưới hệ bát phân (giá trị thập phân là 83) $d = 0x1A; // số viết dưới hệ thập lục phân (giá trị thập phân là 26) ?> III.3.3. KIỂU SỐ THỰC (FLOAT POINT NUMBERS) Ví dụ: <? $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> III.3.4. KIẺU CHUỖI (STRINGS) Một chuỗi là một nhóm các ký tự. Có ba cách khác nhau để xác định một chuỗi trong PHP: - Dùng dấu nháy đơn (single qouted): Đây là cách dễ nhất để xác định một chuỗi là nó bao quanh trong hai dấu nháy đơn (‘’). Ví dụ: <? echo ‘Dấu nháy đơn.’; ?> - Dùng dấu nháy kép (double qouted): Chuỗi được bao quanh trong hai dấu nháy kép (“ ”). Ví dụ: <? echo “Dấu nháy kép.”; ?> - Dùng Heredoc. Một cách khác để giới hạn chuỗi là sử dụng cú pháp Heredoc (“<<<”). Ví dụ: <? $str = <<<EOD Sử dụng Heredoc là cách thứ ba. EOD; echo $str; ?> Các chuỗi có thể được nối với nhau bằng cách sử dụng toán tử chấm ‘.’. III.3.5. KIỂU MẢNG (ARRAY) Có thể tạo mảng trong PHP với hàm array(). Cú pháp: array([Từ khóa =>] giá trị,…) Từ khóa: có thể là một số nguyên hay một chuỗi. Ví dụ: <? $arr = array(“foo” => “bar”, 12 => true); echo $arr[“foo”]; //bar echo $arr[12]; //1 ?> Có thể thêm một phần tử vào mảng đã khai báo với cú pháp: $arr[từ khóa] = giá trị; $arr[] = giá trị; Đồng thời cũng có thể xóa một phần tử ra khỏi mảng hay thậm chí xóa cả mảng đã tạo bằng cách sử dụng hàm unset(). Ví dụ: <? $arr = array(“foo” => “bar”, 12 => true); $arr[] = 56; // sẽ được PHP hiểu như $arr[13] = 56; $arr[“x”] = 24; // thêm một phần tử vào mảng với từ khóa là “x” unset($arr[“foo”]); // xóa phần tử có từ khóa là “foo”. unset($arr); Xóa mảng $arr ?> PHP còn hỗ trợ cả mảng hai chiều và ba chiều. Ví dụ: $two_dimen = array( array(“a”, “b”, 10), array(“c”, “d”, 15), array(“e”, “f”, 20) ); // mảng hai chiều. $three_dimen = array(array(array(“a”, “b”, 10), array(“c”, “d”, 15), array(“e”, “f”, 20) ), array(array(“a”, “b”, 25), array(“c”, “d”, 30), array(“e”, “f”, 35) ), array(array(“a”, “b”, 40), array(“c”, “d”, 45), array(“e”, “f”, 50) ) ); // mảng ba chiều. III.4. BIẾN PHP quy định một biến được biểu diễn bắt đầu bằng dấu $, theo sau là tên biến. Tên biến hợp lệ phải bắt đầu bằng một ký tự hoặc dấu gạch dưới ( _ ), theo sau nữa là bất kỳ ký tự hay số. Ví dụ: <? $var = “Dang”; $Var = “Trinh”; echo “$var, $Var”; // Dang, Trinh ?> III.4.1 MỘT SỐ BIẾN TOÀN CỤC ĐƯỢC TẠO SẴN TRONG PHP $GLOBALS: chứa một tham chiếu đến mỗi biến mà nó có giá trị hiện hành trong phạm vi toàn cục của kịch bản. Các từ khóa của mảng này là tên của các biến toàn cục. $GLOBALS tồn tại từ PHP 3. $_SERVER: tập hợp các biến bởi máy phục vụ Web. Giống như mảng $HTTP_SERVER_VARS cũ. $_GET: các biến cung cấp đến kịch bản hiện tại bằng HTTP GET. Giống như mảng $HTTP_GET_VARS cũ. $_POST: các biến cung cấp đến kịch bản hiện tại bằng HTTP POST. Giống như mảng $HTTP_POST_VARS cũ. $_COOKIE: các biến cung cấp đến kịch bản hiện tại bằng HTTP cookies. Giống như mảng $HTTP_COOKIE_VARS cũ. $_FILES: các biến cung cấp đến kịch bản hiện tại bằng HTTP post file uploads. Giống như mảng $HTTP_POST_FILES cũ. $_ENV: các biến cung cấp đến kịch bản môi trường hiện tại. Giống như mảng $HTTP_ENV_VARS cũ. $_REQUEST: các biến cung cấp đến kịch bản hiện tại của bất kỳ người sử dụng nhập vào máy, mà bởi vậy không thể tín nhiệm nó. Giống như mảng $HTTP_ENV_VARS cũ. $_SESSION: các biến mà nó được đăng ký phiên làm việc của kịch bản hiện hành. Giống như mảng $HTTP_SESSION_VARS cũ. III.4.2 PHẠM VI BIẾN PHP coi một biến có một giới hạn. Để sử dụng một biến toàn cục (global) trong hàm ta cần khai báo lại. Nếu không giá trị của biến sẽ được coi như biến cục bộ trong hàm. Ví dụ: <? $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a +$b; } Sum(); echo $b; ?> Khi có khai báo globlal trong hàm, hai biến $a, $b được hiểu là những biến toàn cục, nếu không nó chỉ được coi là biến bên trong hàm Sum(). Điểm này khác với ngôn ngữ C. Một cách khác để dùng biến toàn cục trong một hàm là ta dùng mảng $GLOBAL, ví dụ trên được viết lại như sau: <? $a = 1; $b = 2; function Sum() { $GLOBAL[“b”] = $GLOBAL[“a”] + $GLOBAL[“b”] ; } Sum(); echo $b; ?> Một đặc trưng quan trọng khác của phạm vi biến là khai báo biến với từ khóa static. Một biến được khai báo static chỉ tồn tại trong phạm vi cục bộ của hàm. Ví dụ: <? Function Test() { static $a = 0; echo $a; $a++; } ?> Biến $a sẽ không mất đi giá trị sau khi thực hiện lời gọi hàm Test() mà sẽ được tăng lên 1 sau mỗi lần gọi hàm Test(). III.4.3 CÁC BIẾN BÊN NGOÀI PHẠM VI PHP -HTML Forms: Một form được viết bằng HTML, hành động của form này gọi một script PHP, thông tin trên form sẽ có giá trị trong script. Có nhiều cách để truy cập các thông tin này. Ví dụ: Form HTML đơn giản: Name: Script PHP có thể lấy giá trị trong trường Name của Form HTML bằng các cách sau: <? // có giá trị từ PHP 4.1.0. print $_POST[‘name’]; print $_REQUEST[‘name’]; // có giá trị từ PHP 3. print $HTTP_POST_VARS[‘name’]; //Nếu khai báo register_globals = on trong tập tin php.ini thì cách sau đây sẽ có giá trị. print $name; ?> Ngoài ra cũng còn một số cách khác để lấy các thông tin trong form HTML như sử dụng hàm addslashes(),… - Các biến trong IMAGE SUBMIT: Khi dùng một ảnh để thực hiện submit thay vì sử dụng nút submit như trên. Ví dụ: Khi người dùng click chuột lên ảnh, form tương ứng sẽ truyền đến máy phục vụ thêm hai biến là sub_x và sub_y. Những biến này sẽ lưu giữ tọa độ mà người dùng click chuột trên ảnh. - HTTP Cookies. PHP hỗ trợ HTTP Cookies trông suốt như định nghĩa của Netcape’s Spec. Cookie lưu trữ thông tin máy vận hành của trình duyệt ở xa để theo dõi hoặc nhận biết khi người sử dụng truy cập trở lại. Có thể thiết lập cookie bằng cách sử dụng hàm SetCookie(). III.5. HẰNG SỐ PHP định nghĩa sẵn một số hằng số sau: _FILE_: Tên của tệp script đang được thực hiện. _LINE_: Số dòng của mã script đang được thực hiện trong tệp script hiện tại. _PHP_VERSION_: Phiên bản của PHP. TRUE, FALSE E_ERROR: Báo hiệu có lỗi. E_PARSE: Báo lỗi sai khi biên dịch. E_NOTICE: Một vài sự kiện có thể là lỗi hoặc không. E_ALL: Tất cả lỗi và cảnh báo Có thể định nghĩa một hằng số bằng hàm define(). Ví dụ: <? define(“CONSTANT”, “Hello World.”); echo CONSTANT; // Hello World. ?> III.6. BIỂU THỨC Biểu thức là một phần quan trọng trong PHP. Phần lớn mọi thứ bạn viết đều được coi là một biểu thức. Điều này có nghĩa là mọi thứ đều có giá trị. Một dạng cơ bản nhất của biểu thức là bao gồm các biến và hằng số. PHP hỗ trợ ba kiểu giá trị cơ bản nhất: số nguyên, số thực, và chuỗi. Ngoài ra còn có mảng và đối tượng. Mỗi kiểu giá trị này đều có thể gán cho các biến hay làm giá trị trả về cho các hàm. Có thể thao tác với các biến trong PHP tương tự như trong ngôn ngữ C. Ví dụ: $b = $a = 5; $c = $a++; $e = $d = ++$b; $f = double($d++); $g = double(++$e); $h = $g += 10; III.7. CẤU TRÚC ĐIỀU KHIỂN Cũng giống như trong các ngôn ngữ lập trình khác, PHP cũng có các cấu trúc điều khiển. III.7.1. CÂU LỆNH IF If (điều kiện) { các lệnh thực hiện; } III.7.2. CÂU LỆNH IF …ELSE If (điều kiện) { các lệnh thực hiện; } else { các lệnh thực hiện; } III.7.3. CÂU LỆNH IF …ELSEIF If (điều kiện 1) { các lệnh thực hiện; } elseif (điều kiện 2) { các lệnh thực hiện; } else { các lệnh thực hiện; } III.7.4. VÒNG LẶP WHILE while (điều kiện) { các lệnh thực hiện; } hoặc while (điều kiện): các lệnh thực hiện; endwhile; III.7.5. VÒNG LẶP DO .. WHILE do { các lệnh thực hiện; } while (điều kiện) Vòng lặp loại này thực hiện ít nhất một lần. III.7.6. VÒNG LẶP FOR for (biểu thức 1; biểu thức 2; biểu thức 3) { các lệnh thực hiện; } III.7.7. VÒNG LẶP FOREACH Vòng lặp foreach được hỗ trợ từ PHP 4. foreach (biểu_thức_kiểu_mảng as $value) { các lệnh thực hiện; } hoặc foreach (biểu_thức_kiểu_mảng as $key => $value) { các lệnh thực hiện; } III.7.8. BREAK VÀ CONTINUE - break: kết thúc thực hiện cấu trúc lặp hiện thời (for, foreach, while, do ..while và switch ). - continue: Bỏ qua vòng lặp hiện tại và tiếp tục thực hiện vòng lặp tiếp theo. III.7.9. CÂU LỆNH SWITCH switch (biến) { case trường hợp 1: … break; case trường hợp 2: … break; case trường hợp 3: … break; default: } III.8. HÀM Một hàm có thể được định nghĩa bằng cách sử dụng có pháp sau: function Tên_hàm (đối_số_1, đối_số_2, … đối_số_n) { Các công việc; } III.8.1. TRUYỀN THEO THAM TRỊ Ví dụ: function takes_array ($input) { echo “$input[0] + $input[1] = ”. $input[0] + $input[1]; } III.8.2. TRUYỀN THEO THAM BIẾN Ví dụ: function add_some_extra (&$string) { $string .= ‘and something extra.’ } $str = ‘This is a string,’; add_some_extra ($str) ; echo $str; // ‘This is a string, and something extra.’ III.8.3. ĐỐI SỐ CÓ GIÁ TRỊ MẶC ĐỊNH Ví dụ: function makecoffee ($type= “cappucino”) { return “Making a cup of $type.\n”; } echo makecoffee(); echo makecoffee(“espresso”); Kết quả thu được: Making a cup of cappucino. Making a cup of espresso. Chú ý: Khi sử dụng hàm có nhiều đối số và có đối số có giá trị mặc định, các đối số này phải nằm về phía bên phải nhất trong danh sách các đối số. III.8.4. HÀM CÓ GIÁ TRỊ TRẢ VỀ Giá trị được trả về bằng cách sử dụng lệnh tùy chọn trả về return. Có thể trả về bất kỳ giá trị nào, không thể trả về nhiều giá trị riêng lẻ nhưng có thể trả về một mảng các giá trị. Ví dụ: function small_numbers() { return array(0,1,2); } Để trả về một tham trỏ, bạn cần có dấu & ở cả khai báo hàm lẫn ở giá trị trả về. function &return_reference() { return &$someref; } $newref = &return_reference() ; III.8.5. HÀM BIẾN PHP hỗ trợ khái niệm hàm biến. Nghĩa là nếu tên một biến có gắn kèm theo dấu ngoặc đơn, PHP sẽ tìm hàm có cùng tên với giá trị của biến đó và thực hiện hàm đó. Ví dụ: <? Function foo() { echo “In foo()\n”; } function bar($arg = ‘’) { echo “In bar(); argument was ‘$arg’.\n”; } function echoit($string) { echo $string; } $func = ‘foo’; $func(); // Câu lệnh này gọi hàm foo() $func = ‘bar’; $func(‘test’); // Câu lệnh này gọi hàm bar() $func = ‘echoit’; $func(‘test’); // Câu lệnh này gọi hàm echoit() ?> III.8.6. CÁC TOÁN TỬ Các toán tử số học: + - * / % Các toán tử logic: And (&&), Or ( || ), Not ( ! ) , Xor Các toán tử thao tác với bit: And (&), Or ( | ), Not ( ~ ) , Xor ( ^ ), dịch trái (>). Các toán tử so sánh: Mô tả Ký hiệu Bằng = = Bằng và cùng kiểu (1) = = = Không bằng ! = Không bằng Không bằng và không cùng kiểu (2) ! = = Nhỏ hơn < Lớn hơn > Nhỏ hơn hoặc bằng < = Lớn hơn hoặc bằng > = Hai toán tử (1), (2) ở trên chỉ có trong phiên bản PHP 4. Toán tử điều khiển lỗi: @ - khi đứng trước một biểu thức trì các lỗi của biểu thức sẽ bị bỏ qua và lưu trong $php_errormsg. Toán tử thực thi: ` ` - PHP sẽ thực hiện nội dung nằm trong hai dấu ` như một lệnh shell. Trả về giá trị là kết quả trực hiện lệnh. III.9. LỚP VÀ ĐỐI TƯỢNG Lớp là tập hợp các biến và các hàm làm việc với các biến này. Một lớp được định nghĩa sử dụng cú pháp như sau: Ví dụ: <?php class Cart { var $items; //số mặt hàng trong giỏ mua hàng function add_item ($artnr, $num) //Thêm mặt hàng vào giỏ mua hàng { $this->items[$artnr] += $num; } function remove_item ($artnr, $num)//Loại bỏ mặt hàng ra khỏi giỏ mua hàng { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?> Lớp là một kiểu dữ liệu, vì vậy có thể tạo một biến có kiểu này bằng cách sử dụng toán tử new. Ví dụ: <?php $cart = new Cart; $cart->add_item("10", 1); $another_cart = new Cart; $another_cart->add_item("0815", 3); ?> Lớp có thể được mở rộng bằng những lớp khác. Lớp mới thu được có tất cả các biến và hàm của lớp thành phần. Thực hiện kế thừa lớp bằng cách sử dụng từ khóa extends. Ví dụ: class Named_Cart extends Cart { var $owner; function set_owner ($name) { $this->owner = $name; } } Hàm khởi tạo lớp (contructors) của lớp được gọi tự động khi tạo mới một biến kiểu lớp bằng từ khóa new.Tuy nhiên, các hàm khởi tạo của lớp cha sẽ không được gọi khi hàm khởi tạo của lớp con được gọi. III.10. THAM CHIẾU Trong PHP, tham chiếu có nghĩa là truy cập nội dung của biến giống nhau bằng tên biến khác nhau. Không giống với con trỏ trong ngôn ngữ C, con trỏ thì tượng trưng cho bảng các bí banh. Trong PHP, tên biến và nội dung của biến là khác nhau, vì vậy cùng một nội dung có thể có nhiều tên khác nhau. Tham chiếu trong PHP cho phép bạn tạo ra hai biến có cùng nội dung. Ví dụ: $a = & $b; Tham chiếu truyền giá trị bằng tham chiếu. Thực hiện bằng cách tạo một hàm cục bộ và truyền cho hàm giá trị được tham chiếu. Vídụ: function foo (&$var) { $var++; } $a=5; foo ($a); Kết quả: biến $a bằng 6. Giá trị trả về của một hàm bằng tham chiếu rất tiện khi bạn muốn sử dụng hàm để tìm một giá trị trong một phạm vi nào đó. Ví dụ: function foo (&$var) { $var =& $GLOBALS[“baz”]; } foo($bar); Khi muốn loại bỏ mối liên kết giữa tên biến và giá trị của biến thì có thể sử dụng hàm unset(). Ví dụ: $a = 1; $b =& $a; unset ($a); III.11. MỘT SỐ HÀM TRONG PHP HỔ TRỢ CHO CƠ SƠ DỮ LIỆU ORACLE Như đã đề cập ở trên, PHP là một ngôn ngữ lập trình hỗ trợ rất nhiều hệ cơ sở dữ liệu. Tuy nhiên, trong khuôn khổ của đồ án chỉ có thể trình bày các vấn đề của PHP liên quan đến hệ quản trị cơ sơ dữ liệu Oracle. PHP hỗ trợ từ phiên bản Oracle 7 trở về sau. Nhằm đáp ứng theo yêu cầu của đồ án, hệ cơ sở dữ liệu Oracle được sử dụng ở đây là Oracle 8i. PHP có sự hỗ trợ mở rộng cho phiên bản Oracle 8i nhờ nó sử dụng Oracle8 Call-Interface. Sự mở rộng này thì linh hoạt hơn nhiều so với sự mở rộng trong Oracle chuẩn. Nó hỗ trợ thêm về các vấn đề ràng buộc các biến cục bộ và toàn cục trong PHP đến liên quan đến Oracle, hỗ trợ đầy đủ các kiểu dữ liệu LOB, FILE và ROWID của Oracle và cho phép sử dụng các biến định nghĩa từ người dùng. PHP cung cấp cho người lập trình với hệ cơ sở dữ liệu Oracle một số lượng lớn các hàm định nghĩa sẵn, phần sau đây sẽ đề cập đến một số hàm thường xuyên sử dụng. OCILogon(): thiết lập một kết nối với Oracle. Cú pháp: int OCILogon ( string username, string password [, string db]) Hàm này trả về một đặc điểm nhận dạng kết nối cần thiết cho hầu hết các cuộc gọi OCI khác. Tùy chọn tham số thứ ba có thể chứa tên thể hiện của Oracle cục bộ hoặc tên khai báo trong tệp tnsnames.ora mà bạn muốn kết nối. Nếu tham số thứ ba không được xác định PHP sử dụng các biến môi trường ORACLE_SID hoặc TWO_TASK để xác định cơ sở dữ liệu để kết nối. OCINLogon(): thiết lập một kết nối mới với Oracle. Cú pháp: int OCINLogon ( string username, string password [, string db]) OCIPLogon(): kết nối đến cơ sở dữ liệu Oracle sử dụng một kết nối bền bỉ. Cú pháp: int OCIPLogon ( string username, string password [, string db]) OCILogoff(): ngắt kết nối với Oracle. Cú pháp: bool OCILogOff ( int connection) OCIParse(): Phân tích cú pháp một truy vấn và trả về một lệnh. Cú pháp: int OCIParse ( int conn, string query) Hàm này trả về nhận dạng lệnh nếu query hợp lệ hoặc FALSE nếu query sai. Đối số query trong hàm có thể là bất kỳ câu lệnh SQL nào hoặc khối PL/SQL. OCIExecute(): Thực thi một lệnh Cú pháp: int OCIExecute ( int statement [, int mode]) OCIExecute thực thi lệnh sau khi nó được phân tích cú pháp bằng hàm OCIParse(). Tùy chọn mode cho phép nhận biết kiểu thực hiện (mặc định là OCI_COMMIT_ON_SUCCESS). Nếu không muốn lệnh tự động commit thì nhận dạng là OCI_DEFAULT. Hàm này trả về TRUE nếu thành công hoặc FALSE nếu thất bại. OCICommit(): Hoàn thành các giao dịch chưa hoàn tất. Cú pháp: bool OCICommit ( int connection) Hàm này trả về TRUE nếu thành công hoặc FALSE nếu thất bại. OCIRollback() Cú pháp: bool OCIRollback ( int connection) Quay lại các thao tác đã đi qua. Hàm này trả về TRUE nếu thành công hoặc FALSE nếu thất bại. OCIFetch() Hàm này mang hàng kế tiếp vào trong vùng nhớ đệm kết quả (cho câu lệnh SELECT). Cú pháp: bool OCIFetch ( int statement) OCIFetchInto() Cú pháp: int OCIFetchInto ( int stmt, array &result [, int mode]) Hàm này mang hàng kế tiếp vào trong mảng result (cho câu lệnh SELECT). Nó sẽ ghi đè lên nội dung trước đó trong result. Tham số mode cho phép thay đổi đối xử mặc định. Bạn có thể nhận biết nhiều hơn một cờ bằng cách đơn giản là cộng thêm vào nó vào. Ví dụ: OCI_ASSOC+OCI_RETURN_NULLS Một vài cờ cần biết: OCI_ASSO: trả về một mảng liên kết. OCI_NUM: trả về một mảng số bắt đầu với số 0 (zero). OCI_RETURN_NULLS: trả về các cột rỗng. OCI_RETURN_LOBS: : trả về giá trị của một LOB. OCIFetchStatement() Cú pháp: int OCIFetchStatement ( int stmt, array & variable) Hàm này mang tất cả các hàng từ kết quả vào trong mảng được định nghĩa. Nó còn trả về số hàng đã lấy được. OCIResult() Cú pháp: mixed OCIResult ( int statement, mixed column) Hàm OCIResult() trả về giá trị cột của hàng đã lấy. Nó còn trả về mọi thứ như chuỗi ngoại trừ các kiểu trừu tượng (như FILEs, LOBs và ROWIDs). OCIRowCount() Cú pháp: int OCIRowCount ( int statement) Hàm này trả về số hàm làm ảnh hưởng, ví dụ như thực hiện lệnh cập nhật. Đây là hàm không báo cho bạn biết số hàng mà bạn đã chọn lựa (select). OCINumCols(): trả về số cột trong lệnh. Cú pháp: int OCINumCols ( int stmt) OCIFreeStatement() Cú pháp: bool OCIFreeStatement ( int stmt) Hàm này có chức năng giải phóng tài nguyên liên kết với các lệnh. Hàm này trả về TRUE nếu thành công hoặc FALSE nếu thất bại. OCIError() Cú pháp: array OCIError ( [int stmt|conn|global]) Hàm này trả về lỗi cuối cùng mà nó tìm thấy. Nếu không có lỗi hàm sẽ trả về giá trị FALSE. Hàm sẽ trả về lỗi như một mảng liên kết. Trong mảng này, code chỉ ở chỗ mã nguồn bị lỗi của oracle và message là chuỗi lỗi của oracle. Phần II. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG Chương I. PHÂN TÍCH YÊU CẦU ĐỀ TÀI I.1. CHỨC NĂNG Web site hổ trợ kinh doanh Thuốc thú y và thủy sản của Công ty TNHH Quốc Minh là một web site nhằm mục đích giới thiệu rộng rãi thông tin các mặt hàng thú y và thủy sản đến người sử dụng với các thông tin chi tiết mặt hàng cũng như giá cả một cách chính xác. Nó còn phải giúp ban quản lý công ty quản lý phần lớn công việc kinh doanh thông qua mạng Internet, các nhân viên của công ty có thể làm việc từ xa. Khách hàng là đại lý của công ty phải được đặt mua các mặt hàng thông qua Web site này. Web site phải có những chức năng sau: - Quản lý thông tin khách hàng, nhà cung cấp nguyên liệu, nguyên liệu, thuốc do công ty sản xuất ra. - Hiển thị danh sách các mặt hàng thú y và thủy sản theo từng loại (gồm hình ảnh, giá cả, …). - Hổ trợ khách hàng đặt mua hàng qua mạng. - Quản lý phiếu nhập nguyên liệu, phiếu xuất nguyên liệu cho sản xuất thuốc và lập hóa đơn cho khách hàng. - Cung cấp khả năng tìm kiếm theo nhu cầu của khách hàng như theo tên thuốc, công dụng của thuốc,… - Cho phép quản lý đơn đặt hàng, quản lý hóa đơn và thanh toán các khoản của khách hàng. - Thống kê doanh số, công nợ, tình hình nhập nguyên liệu, tình hình sản xuất, tình hình bán thuốc. - Thống kê tồn kho nguyên liệu và thuốc theo từng loại. - Cho phép quản trị hệ thống từ xa. I.2. YÊU CẦU ĐẶT RA CHO HỆ THỐNG I.2.1. VỀ MẶT THIẾT BỊ VÀ PHẦN MỀM Một máy tính làm phục vụ. Hệ điều hành hỗ trợ cho chương trình là Windows 2000 server. Hệ quản trị cơ sở dữ liệu được dùng là Oracle 8i. Web site được thiết kế bằng ngôn ngữ lập trình PHP 4. Các phần mềm khác dùng để lập trình và thiết kế Web site. I.2.2. YÊU CẦU WEB SITE Web site gồm có hai phần: Phần dành cho khách hàng Mục tiêu của Web site kinh doanh thuốc thú y và thủy sản là tạo ra thêm một cầu nối giữa công ty và các đại lý của công ty nên đa số những khách hàng truy cập vào Web site là có nhu cầu mua hàng. Vì thế trang web phải thỏa mãn các yêu cầu sau: - Hiển thị danh mục các mặt hàng của công ty để khách hàng có thể xem, lựa chọn và đặt mua. - Cung cấp chức năng tìm kiếm thông tin các mặt hàng theo tên và công dụng của mặt hàng từ hệ thống để đặt mua các mặt hàng dễ dàng, nhanh chóng. - Sau khi khách hàng lựa chọn xong những mặt hàng cần đặt mua thì hệ thống phải có chức năng hiển thị đơn đặt hàng để khách hàng nhập vào những thông tin cần thiết, tránh những đòi hỏi hay yêu cầu những thông tin quá nhiều từ phía khách hàng, tạo cảm giác thoải mái, riêng tư cho khách hàng. Nếu khách hàng không là đại lý của công ty thì hệ thống sẽ cung cấp thông tin giới thiệu các mặt hàng. Nếu khách hàng thực sự muốn mua các mặt hàng của công ty thì hệ thống sẽ cung cấp cho khách hàng giao diện liện hệ với công ty. Tùy theo số lượng mua các mặt hàng mà khách hàng có thể được công ty cung cấp hay được giới thiệu một đại lý của công ty ở cùng địa bàn của khách hàng (nếu khách hàng mua lẻ) để mua hàng. Phần dành cho nhân viên của công ty Là những người làm chủ ứng dụng, có quyền kiểm soát mọi hoạt động của hệ thống. Nhân viên của công ty được cấp một tên đăng nhập và mật khẩu để đăng nhập vào hệ thống thực hiện những chức năng của mình. Nếu như quá trình đăng nhập thành công thì nhân viên có thể thực hiện những chức năng phù hợp với chức vụ và địa vị của họ trong công ty. Những chức năng chính của hệ thống dành cho nhân viên của công ty như sau: - Quản lý cập nhật (thêm, xóa, sửa) các mặt hàng thú y và thủy sản, nguyên liệu, nhà cung cấp, cấp phát người dùng cho các khách hàng là đại lý của công ty. - Tiếp nhận đơn đặt hàng và xuất hóa đơn cho khách hàng theo đơn đặt hàng hay xóa bỏ đơn đặt hàng. - Quản lý các phiếu nhập nguyên liệu nhận về từ nhà cung cấp, quản lý tồn kho nguyên liệu và thuốc. - Quản lý các phiếu xuất nguyên liệu cho sản xuất thuốc, thống kê tình hình sản xuất thuốc của công ty. - Thống kê thông tin các mặt hàng, khách hàng, nhà cung cấp, nguyên liệu, thống kê công nợ, doanh số của khách hàng theo mốc thời gian. - Thống kê doanh thu của công ty theo mốc thời gian cần thiết như tháng, quý, năm. Ngoài các chức năng nêu trên thì trang web phải được trình bày sao cho dễ hiểu, giao diện mang tính dễ dùng, đẹp mắt và làm sao cho khách hàng dễ dàng tìm thấy được những thông tin cần tìm, cung cấp những thông tin thật chính xác, hấp dẫn nhằm thu hút sự quan tâm về công ty và tạo ra uy tín trong hoạt động sản xuất kinh doanh nhằm thu hút thêm nhiều đại lý tiêu thụ các mặt hàng của công ty trên thị trường trong và ngoài nước. Điều quan trọng là trang web phải đảm bảo an toàn tuyệt đối đối với dữ liệu và những thông tin liên quan đến người dùng trong quá trình đặt mua hay thanh toán trên mạng Internet. Đồng thời trang web còn phải có tính dễ nâng cấp, bảo trì, sửa chữa khi cần bổ sung, cập nhật những tính năng mới. Chương II. PHÂN TÍCH HỆ THỐNG II.1. KHẢO SÁT HIỆN TRẠNG Cơ cấu tổ chức của công ty Trong công ty TNHH Quốc Minh, hệ thống tổ chức của công ty có sự hỗ trợ lẫn nhau. Công ty gồm có các phòng, ban sau: Ban điều hành, Phòng kinh doanh, Phòng kế toán - kế hoạch, Phòng kỹ thuật - sản xuất, bộ phận kho. Ban điều hành Quản lý hoạt động của công ty. Quản lý và điều hành hoạt động của nhân viên. Quyết định giá chính thức cho từng mặt hàng. Yêu cầu báo cáo từ phòng kế toán, phòng kinh doanh,...từ đó nắm bắt được tình hình của công ty, tình hình thị trường để có kế hoạch định hướng, phát triển nhằm đáp ứng yêu cầu khách hàng và tiến triển cho công ty. Phòng kinh doanh Lập kế hoạch tiếp thị, mở rộng thị trường. Chịu trách nhiệm quản lý khách hàng trong kinh doanh. Trực tiếp tiếp xúc giải quyết các vấn đề liên quan khách hàng, thị trường. Lập kế hoạch tiêu thụ sản phẩm gửi cho phòng kế toán - kế hoạch. Quản lý bán hàng cho khách hàng. Quản lý doanh số, công nợ tổng hợp ở các khu vực trong tháng, quý, năm. Phòng kỹ thuật - sản xuất Nghiên cứu chế tạo ra các loại thuốc mới, tìm cách nâng cao hiệu năng của các loại thuốc cũ, tìm ra các phương án để sản xuất ra các loại thuốc có giá thành hạ, đặc tính tốt, hiệu quả cao. Trực tiếp điều hành sản xuất, pha chế, kiểm tra chất lượng các loại thuốc sản xuất ra. Trong trường hợp thuốc bán cho khách hàng bị trả về do hư hỏng hóa học (như kết tủa, đổi màu,…), phòng này có trách nhiệm kiểm tra, thông báo cho phòng kế toán - kế hoạch tìm xem lô hàng này đã xuất bán cho các đại lý nào, phối hợp các phòng ban để có hướng giải quyết thỏa đáng. Phòng kế toán - kế hoạch Tiếp nhận đơn đặt hàng, kế hoạch tiêu thụ từ phòng kinh doanh. Lập hóa đơn theo đơn đặt hàng và chuyển sang bộ phận kho. Quản lý chi tiết doanh số, công nợ của khách hàng. Quản lý tình hình thu, chi cho các hoạt động của công ty. Lập kế hoạch nhập nguyên liệu gởi cho phòng kinh doanh, kế hoạch sản xuất gởi cho phòng kỹ thuật - sản xuất Thực hiện thống kê tình hình mua, bán, sản xuất của công ty. Lập các báo cáo theo nghiệp vụ kế toán để báo cáo cho cấp trên và các ban, các ngành liên quan. Các nghiệp vụ khác. Bộ phận kho Chức năng chính của bộ này là quản lý nhập nguyên liệu, xuất nguyên liệu cho phòng kỹ thuật và sản xuất, xuất thuốc theo hóa đơn của phòng kế toán. Bộ phần này phải thường xuyên kiểm tra để biết được tình hình tồn kho của nguyên liệu và thuốc để thông báo cho phòng kế toán và phòng kỹ thuật và sản xuất. Đặt tả hệ thống thông tin quản lý Công ty sản xuất kinh doanh thuốc thú y và thủy sản Quốc Minh cần tự động hóa trong việc quản lý kinh doanh. Qua quá trình thực tập khảo sát tại công ty, em nắm được các hiện trạng sau: Quản lý khách hàng: Khách hàng của công ty cần phải quản lý những thông tin chính sau: Họ tên, mã số thuế, số điện thoại, số fax, E-mail, địa chỉ. Quản lý nhà cung cấp nguyên liệu: Nhà cung cấp của công ty cần phải quản lý những thông tin: Họ tên, số tài khoản ngân hàng, số điện thoại, số fax, E-mail, địa chỉ. Địa chỉ của khách hàng và nhà cung cấp cần quản lý đầy đủ để thuận tiện cho việc liên lạc. Địa chỉ bao gồm: số nhà, đường, phường, quận, thành phố đối với đối tác ở thành thị; ấp, xã, huyện, tỉnh đối với đối tác ở nông thôn. Nguyên liệu: Mỗi nguyên liệu cần quản lý thông tin: Tên nguyên liệu, nguồn gốc xuất xứ (nhà cung cấp, nước ), đơn vị tính, số lượng từng lô nhập về kho, số lượng tồn theo lô của từng loại nguyên liệu. Thuốc: quản lý các thông tin sau về thuốc của công ty sản xuất ra: tên thuốc, qui cách, giá, đơn vị tính, số lượng lô sản xuất ra, số lượng tồn của từng loại thuốc theo lô. Quy trình quản lý Công ty nhập nguyên liệu từ nhà cung cấp trong nước hoặc nước ngoài, nguyên liệu vận chuyển về công ty kèm hóa đơn xuất hàng từ nhà cung cấp nguyên liệu, công ty cần quản lý hóa đơn nhập này với các thông tin: mã hóa đơn, tên nguyên liệu nhập, số lượng nhập, đơn giá, ngày nhập. Nguyên liệu được nhập vào kho nguyên liệu theo từng khu, mỗi nguyên liệu trong hóa đơn sẽ được gán cho một số lô đồng thời quản lý thêm số lượng, ngày nhập của lô nguyên liệu này, hạn dùng do nhà cung cấp ấn định trên bao bì chứa nguyên liệu, sau đó được cho vào khu nguyên liệu với tên tương ứng. Nguyên liệu được xuất theo lô với hình thức FIFO (vào trước ra trước) để sản xuất thuốc, cần quản lý số lượng nguyên liệu sử dụng theo từng lô để sản xuất thuốc. Thuốc được sản xuất ra theo từng lô với số lô được quy định theo chuẩn quốc gia quy định cho số lô của thuốc Thú y như sau: Số lô : dài 8 ký số : hai số đầu là thứ tự lô được sản xuất ra trong ngày, 6 số sau là ngày tháng năm sản xuất (ví dụ : 01040403 : lô thứ nhất của loại thuốc nào đó sản xuất ra trong ngày 4 tháng 4 năm 2003). Lô thuốc được quản lý thêm số lượng của lô với đơn vị tính và qui cách dự kiến của thuốc mới, ngày sản xuất, hạn dùng của lô thuốc sản xuất ra. Sau đó thuốc được cho vào kho thuốc với khu tương ứng của loại thuốc đó. Khách hàng của công ty là các đại lý cấp I của công ty, khi khách hàng cần phân phối hàng của công ty, khách hàng được ký hợp đồng có thời hạn và được đặt hàng của công ty. Khi đặt hàng thì khách hàng làm một đơn đặt hàng theo mẫu in sẵn bao gồm: Phần đầu gồm những thông tin đầy đủ về khách hàng. Phần thứ hai là danh sách các mặt hàng đặt mua, số lượng, từng loại và đề nghị ngày nhận hàng. Đơn đặt hàng được đưa đến bộ phận kinh doanh để xem xét, nếu khách hàng còn nợ quá nhiều thì bộ phận kinh doanh từ chối bán hàng. Nếu hàng tồn kho đủ thì cung cấp cho khách hàng theo đơn đặt hàng, ngược lại, bộ phận kinh doanh hẹn lại khách hàng ngày nhận hàng đồng thời thông báo cho phòng kế toán - kế hoạch để chuẩn bị sản xuất thuốc theo đơn đặt hàng của khách hàng. Hàng ngày phòng Kinh doanh xem xét các đơn đặt hàng để chuyển đến phòng kế toán-kế hoạch xuất hàng cho khách hàng. Phòng kế toán-kế hoạch so sánh tồn kho để làm giấy báo gửi cho khách hàng nhận hàng, giấy báo nợ cho khách hàng và cho nhà cung cấp khi cần nhập nguyên liệu. Mỗi lần xuất hàng đều phải làm một phiếu xuất gồm thông tin: thông tin đầy đủ về khách hàng, danh sách thuốc, số lượng, đơn giá, ngày xuất. Nhân viên của bộ phận kinh doanh được chia thành các tổ bán hàng phụ trách bán hàng theo từng khu vực tỉnh thành, hàng tháng vào ngày cuối của tháng các tổ báo cáo, quyết toán tình hình thanh toán của khách hàng cho phòng kế toán-kế hoạch. Phòng kế toán-kế hoạch lập phiếu thanh toán cho khách hàng. Định kỳ hàng tháng phải báo cáo xuất nhập tồn kho nguyên liệu và thuốc trong tháng theo mẫu đã định. Tại bất kỳ thời điểm nào, nếu được yêu cầu của người có thẩm quyền phải báo cáo tình hình tồn kho của nguyên liệu và thuốc, tình hình doanh số, công nợ và khuyến mãi (nếu có) của khách hàng. II.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG II.2.1. SƠ ĐỒ PHÂN RÃ CHỨC NĂNG Quản lý Kho Nguyên liệu, Thuốc thú y và thủy sản Quản lý mua Nguyên liệu Quản lý bán Thuốc Quản lý Sản Xuất Thống kê Quản lý Doanh số, Công nợ Quản lý Nhà cung cấp Quản lý Nguyên liệu Lập hóa đơn nhập Quản lý Kho NLiệu Nhập N.Liệu vào kho Quản lý Khách hàng Lập Đơn đặt hàng Lập Hóa đơn xuất Lập Phiếu thanh toán Lập Phiếu xuất NL Quản lý Thuốc Quản lý Kho Thuốc Nhập Thuốc vào kho Cập nhật NCC Tra cứu NCC Cập nhật NLiệu Tra cứu NLiệu Cập nhật Kho NL Tra cứu Kho NL Cập nhật Khách hàng Tra cứu Khách hàng Cập nhật Thuốc Tra cứu Thuốc Cập nhật Kho Tra cứu Kho Quản lý Doanh số Quản lý Công nợ Thống kê tình hình mua Thống kê tình hình bán Thống kê tồn kho Thống kê TH sản xuất II.2.2. BIỂU ĐỒ LUỒNG DỮ LIỆU MỨC KHUNG CẢNH BLD MỨC 0 Yêu cầu cung cấp nguyên liệu Nguyên liệu được cung cấp Y/c lập phiếu xuất NL cho sản xuất Y/c lập phiếu nhập nguyên liệu Phiếu nhập nguyên liệu Yêu cầu xuất hàng Hàng và hóa đơn Y/C thống kê Kết quả thống kê Y/c nhập thuốc vào kho Thuốc được nhập vào kho Chấp nhận or không Khách hàng Ban quản trị Quản lý kho nguyên liệu, thuốc thú y và thủy sản Nhà cung cấp Phiếu xuất nguyên liệu Đặt hàng Hóa đơn được lập Y/C lập hóa đơn II.2.3. BIỂU ĐỒ LUỒNG DỮ LIỆU MỨC ĐỈNH BLD MỨC 1 Bảng TK tồn kho, TH sản uất Thông tin nguyên liệu mới Thông tin nhà cung cấp Nhà Cung Cấp Khách Hàng Ban Quản Trị Quản lý mua hàng 1 Quản lý bán hàng 2 Quản lý sản xuất 3 Quản lý doanh số, công nợ 5 Thống Kê 4 Đơn đặt hàng Thông tin khách hàng Nguyên liệu và phiếu nhập nliệu Y/c nhập nguyên liệu Phiếu xuất hàng được lập Y/c lập phiếu xuất hàng Thông tin mặt hàng Số lượng thuốc sản xuất ra Nguyên liệu cần cho sxuất Ttin thuốc, số lượng cần sản xuất Y/c TK tồn kho, TH sản xuất Bảng TK TH mua nguyên liệu Y/c TK TH mua nguyên liệu Bảng TK TH bán thuốc Y/c TK TH bán thuốc Bảng thống kê công nợ Bảng thống kê doanh số Y/c thống kê công nợ Y/c thống kê doanh số II.2.4. BIỂU ĐỒ LUỒNG DỮ LIỆU MỨC DƯỚI ĐỈNH BLD MỨC 2 Phân Rã Quản Lý Mua Nguyên Liệu Nguyên liệu + Hóa đơn nhập nguyên liệu Lập hóa đơn nhập Hóa đơn nhập nguyên liệu Thông tin kho nguyên liệu Y/c thông tin kho nguyên liệu Hóa đơn nhập nguyên liệu Y/c lập hóa đơn nhập nliệu Thông tin về kho nguyên liệu Y/c thông tin về kho nguyên liệu Thông tin về nguyên liệu Yêu cầu thông tin về nguyên liệu Thông tin về nhà cung Y/c thông tin về nhà cung Thông tin nguyên liệu mới Thông tin nhà cung cấp Quản lý Nhà cung cấp Nhà Cung Cấp Quản lý Nguyên liệu 1.2 1.1 Nguyên liệu Nhà cung cấp Ban quản trị 1.5 Nhập Nliệu vào Kho 1.3 Kho Nguyên liệu Nhà Cung Cấp Hóa đơn nhập Quản lý Kho NLiệu 1.4 2) Phân Rã Quản Lý Bán Hàng Số tiền thanh toán Hóa đơn xuất Y/c lập hóa đơn xuất Phiếu thanh toán được lập Y/c lập phiếu thanh toán Hàng và Hóa đơn xuất Lập hóa đơn xuất 2.4 Lập Phiếu thanh toán 2.3 Lập Đơn đặt hàng Thông tin về khách hàng Yêu cầu thông tin về khách hàng Thông tin về đơn đặt hàng Y/c thông tin về đơn đặt hàng Thông tin về khách hàng Thông tin đơn đặt hàng Khách Hàng Quản lý Khách hàng 2.2 2.1 Khách hàng Đơn đặt hàng Ban quản trị Kho Thuốc Phiếu thanh toán Khách Hàng Hóa đơn xuất 3) Phân Rã Sản Xuất Thuốc Y/c thông tin kho thuốc Phiếu xuất nguyên liệu Y/c lập phiếu xuất nliệu Thuốc được nhập vào kho Thông tin về thuốc Phiếu xuất Nguyên liệu Ban Quản Trị Lập Phiếu xuất 3.1 Y/c nhập thuốc vào kho Kho Nguyên liệu Quản lý Thuốc 3.3 Nhập Thuốc vào Kho 3.2 Thuốc Kho Thuốc Thông tin kho thuốc Quản lý Kho Thuốc 3.4 4) Phân Rã Thống Kê Tình Hình Mua Bán Và Tồn Kho Thống kê tình hình mua Bảng TK tình hình bán hàng Bảng TK tình hình mua nguyên liệu Yêu cầu TK tình hình bán hàng Yêu cầu thống kê tình hình mua nguyên liệu Ban Quản Trị Thống kê tình hình bán 4.4 4.1 Phiếu Xuất Hàng Phiếu Nhập Hàng Yêu cầu thống kê tồn kho Bảng hống kê tồn kho Thống kê tồn kho 4.2 Kho Yêu cầu thống kê tình hình sản xuất Bảng hống kê tình hình sản xuất Thống kê TH sản xuất 4.3 Phiếu xuất NLiệu 5) Phân Rã Thống Kê Doanh Số Và Công Nợ Thống kê Công Nợ Bảng TK tình hình bán hàng Bảng thống kê tình hình thanh toán Yêu cầu TK tình hình bán hàng Y/c thống kê tình hình thanh toán Ban Quản Trị Thống kê doanh số 5.2 5.1 Phiếu xuất hàng Phiếu thanh toán BLD MỨC 3 Phân Rã Chức Năng 1.1 Yêu cầu thông tin về nhà cung cấp Thông tin về nhà cung cấp Thông tin về nhà cung cấp Nhà Cung Cấp Tra cứu Nhà cung cấp 1.1.2 Cập nhật Nhà cung cấp 1.1.1 Nhà cung cấp Ban Quản Trị Phân Rã Chức Năng 1.2 Yêu cầu thông tin về nguyên liệu Thông tin về nguyên liệu Thông tin về nguyên liệu mới Nhà Cung Cấp Tra cứu Nguyên liệu 1.2.2 Cập nhật Nguyên liệu 1.2.1 Nguyên liệu Ban Quản Trị Phân Rã Chức Năng 1.4 Y/c thông tin về kho nguyên liệu Thông tin về kho nguyên liệu Thông tin về kho nguyên liệu Tra cứu Thuốc 1.4.2 Cập nhật Kho NLiệu 1.4.1 Kho Nguyên liệu Ban Quản Trị Phân Rã Chức Năng 2.1 Yêu cầu thông tin về khách hàng Thông tin về khách hàng Thông tin về khách hàng Khách Hàng Tra cứu Khách hàng 2.1.2 Cập nhật Khách hàng 2.1.1 Khách hàng Ban Quản Trị Phân Rã Chức Năng 3.3 Yêu cầu thông tin về thuốc Thông tin về thuốc Thông tin về thuốc Tra cứu Thuốc 3.3.2 Cập nhật Thuốc 3.3.1 Thuốc Ban Quản Trị Phân Rã Chức Năng 3.4 Yêu cầu thông tin về kho thuốc Thông tin về kho thuốc Thông tin về kho thuốc Tra cứu Kho Thuốc 3.4.2 Cập nhật Kho Thuốc 3.4.1 Kho Thuốc Ban Quản Trị Đặc Tả Các Chức Năng Hệ Thống 1) Xử lý 1.1.1: Cập nhật nhà cung cấp Đầu đề Tên chức năng: CẬP NHẬT NHÀ CUNG CẤP Đầu vào: Thông tin về nhà cung cấp Đầu ra: Thông tin nhà cung cấp Thân Nếu kiểm tra chưa có thông tin nhà cung cấp trong CSDL thì Thêm thông tin của nhà cung cấp vào bảng dành cho nhà cung cấp trong cơ sở dữ liệu. Có thì Thông báo: “Thông tin nhà cung cấp này đã tồn tại.” Hết nếu 2) Xử lý 1.1.2: Tra cứu nhà cung cấp Đầu đề Tên chức năng: TRA CỨU NHÀ CUNG CẤP Đầu vào: Yêu cầu thông tin nhà cung cấp Đầu ra: Thông tin về nhà cung cấp Thân Tạo một câu lệnh SQL truy vấn thông tin của nhà cung cấp từ bảng lưu trữ thông tin nhà cung cấp trong cơ sở dữ liệu. 3) Xử lý 1.2.1: Cập nhật nguyên liệu Đầu đề Tên chức năng: CẬP NHẬT NGUYÊN LIỆU Đầu vào: Thông tin về nguyên liệu Đầu ra: Thông tin nguyên liệu Thân Nếu kiểm tra chưa có thông tin nguyên liệu trong CSDL thì Thêm thông tin của nguyên liệu vào bảng dành cho nguyên liệu trong cơ sở dữ liệu. Có thì Thông báo: “Thông tin nguyên liệu này đã tồn tại.” Hết nếu 4) Xử lý 1.2.2: Tra cứu nguyên liệu Đầu đề Tên chức năng: TRA CỨU NGUYÊN LIỆU Đầu vào: Yêu cầu thông tin nguyên liệu Đầu ra: Thông tin về nguyên liệu Thân Tạo một câu lệnh SQL truy vấn thông tin của nguyên liệu từ bảng lưu trữ thông tin nguyên liệu trong cơ sở dữ liệu. 5) Xử lý 1.4.1: Cập nhật kho nguyên liệu Đầu đề Tên chức năng: CẬP NHẬT KHO NGUYÊN LIỆU Đầu vào: Thông tin về kho nguyên liệu Đầu ra: Thông tin kho nguyên liệu Thân Nếu kiểm tra chưa có thông tin kho nguyên liệu trong CSDL thì Thêm thông tin của kho nguyên liệu vào bảng dành cho kho nguyên liệu trong cơ sở dữ liệu. Có thì Thông báo: “Thông tin kho nguyên liệu này đã tồn tại.” Hết nếu 6) Xử lý 1.4.2: Tra cứu kho nguyên liệu Đầu đề Tên chức năng: TRA CỨU KHO NGUYÊN LIỆU Đầu vào: Yêu cầu thông tin kho nguyên liệu Đầu ra: Thông tin về kho nguyên liệu Thân Tạo một câu lệnh SQL truy vấn thông tin của kho nguyên liệu từ bảng lưu trữ thông tin kho nguyên liệu trong cơ sở dữ liệu. 7) Xử lý 2.1.1: Cập nhật khách hàng Đầu đề Tên chức năng: CẬP NHẬT KHÁCH HÀNG Đầu vào: Thông tin về khách hàng Đầu ra: Thông tin khách hàng Thân Nếu kiểm tra chưa có thông tin khách hàng trong CSDL thì Thêm thông tin của khách hàng vào bảng dành cho khách hàng trong cơ sở dữ liệu. Có thì Thông báo: “Thông tin khách hàng này đã tồn tại.” Hết nếu 8) Xử lý 2.2.2: Tra cứu khách hàng Đầu đề Tên chức năng: TRA CỨU KHÁCH HÀNG Đầu vào: Yêu cầu thông tin khách hàng Đầu ra: Thông tin về khách hàng Thân Tạo một câu lệnh SQL truy vấn thông tin của khách hàng từ bảng lưu trữ thông tin khách hàng trong cơ sở dữ liệu. 9) Xử lý 3.3.1: Cập nhật thuốc Đầu đề Tên chức năng: CẬP NHẬT THUỐC Đầu vào: Thông tin về thuốc Đầu ra: Thông tin thuốc Thân Nếu kiểm tra chưa có thông tin thuốc trong CSDL thì Thêm thông tin của thuốc vào bảng dành cho thuốc trong cơ sở dữ liệu. Có thì Thông báo: “Thông tin thuốc này đã tồn tại.” Hết nếu 10) Xử lý 3.3.2: Tra cứu thuốc Đầu đề Tên chức năng: TRA CỨU THUỐC Đầu vào: Yêu cầu thông tin thuốc Đầu ra: Thông tin về thuốc Thân Tạo một câu lệnh SQL truy vấn thông tin của thuốc từ bảng lưu trữ thông tin thuốc trong cơ sở dữ liệu. 11) Xử lý 3.4.1: Cập nhật kho thuốc Đầu đề Tên chức năng: CẬP NHẬT KHO THUỐC Đầu vào: Thông tin về kho thuốc Đầu ra: Thông tin kho thuốc Thân Nếu kiểm tra chưa có thông tin kho thuốc trong CSDL thì Tạo một câu lệnh SQL chèn thông tin của kho thuốc vào bảng dành cho kho thuốc trong cơ sở dữ liệu. Có thì Thông báo: “Thông tin kho thuốc này đã tồn tại.” Hết nếu 12) Xử lý 3.4.2: Tra cứu kho thuốc Đầu đề Tên chức năng: TRA CỨU KHO THUỐC Đầu vào: Yêu cầu thông tin kho thuốc Đầu ra: Thông tin về kho thuốc Thân Tạo một câu lệnh SQL truy vấn thông tin của kho thuốc từ bảng lưu trữ thông tin kho thuốc trong cơ sở dữ liệu. 13) Xử lý 1.5: Lập hóa đơn nhập nguyên liệu Đầu đề Tên chức năng: LẬP HÓA ĐƠN NHẬP NGUYÊN LIỆU Đầu vào: Yêu cầu lập hóa đơn nhập nguyên liệu, phiếu nhập nguyên liệu. Đầu ra: Hóa đơn nhập nguyên liệu Thân Tạo một câu lệnh SQL chèn thông tin của hóa đơn nhập nguyên liệu vào bảng dành cho hóa đơn nhập nguyên liệu trong cơ sở dữ liệu. 14) Xử lý 1.3: Nhập nguyên liệu vào kho Đầu đề Tên chức năng: NHẬP NGUYÊN LIỆU VÀO KHO Đầu vào: Hóa đơn nhập nguyên liệu, nguyên liệu. Đầu ra: Thân Tạo một câu lệnh SQL chèn thông tin lô nguyên liệu nhập về vào bảng dành cho lô nguyên liệu trong khu tương ứng của kho nguyên liệu trong cơ sở dữ liệu. 15) Xử lý 3.1: Lập phiếu xuất nguyên liệu Đầu đề Tên chức năng: LẬP PHIẾU XUẤT NGUYÊN LIỆU Đầu vào: Yêu cầu lập phiếu xuất nguyên liệu, phiếu xuất nguyên liệu. Đầu ra: Phiếu xuất nguyên liệu Thân Tạo một câu lệnh SQL chèn thông tin của phiếu xuất nguyên liệu vào bảng dành cho phiếu xuất nguyên liệu trong cơ sở dữ liệu. Tạo một câu lệnh SQL cập nhật lại số lượng tồn của nguyên liệu trong bảng lô nguyên liệu đã lấy trong khu nguyên liệu tương ứng của kho nguyên liệu. 16) Xử lý 3.2: Nhập thuốc vào kho Đầu đề Tên chức năng: NHẬP THUỐC VÀO KHO Đầu vào: Thông tin thuốc sản xuất ra. Đầu ra: Thân Tạo một câu lệnh SQL chèn thông tin lô thuốc sản xuất ra vào bảng dành cho lô thuốc trong khu tương ứng của kho thuốc trong cơ sở dữ liệu. 17) Xử lý 2.1: Lập đơn đặt hàng Đầu đề Tên chức năng: LẬP ĐƠN ĐẶT HÀNG Đầu vào: Thông tin đơn đặt hàng, đơn đặt hàng. Đầu ra: Đơn đặt hàng Thân Tạo một câu lệnh SQL chèn thông tin đơn đặt hàng vào bảng dành cho đơn đặt hàng trong cơ sở dữ liệu. 18) Xử lý 2.4: Lập hóa đơn xuất Đầu đề Tên chức năng: LẬP HÓA ĐƠN XUẤT Đầu vào: Yêu cầu lập hóa đơn xuất, đơn đặt hàng, hóa đơn xuất. Đầu ra: Hóa đơn xuất Thân Tạo một câu lệnh SQL chèn thông tin của hóa đơn xuất hàng vào bảng dành cho hóa đơn xuất trong cơ sở dữ liệu. Tạo một câu lệnh SQL cập nhật lại số lượng tồn của thuốc trong lô thuốc đã xuất trong khu thuốc tương ứng của kho thuốc. 19) Xử lý 2.3: Lập phiếu thanh toán Đầu đề Tên chức năng: LẬP PHIẾU THANH TOÁN Đầu vào: Yêu cầu thanh toán, thông tin hóa đơn xuất hàng, số tiền thanh toán. Đầu ra: Phiếu thanh toán Thân Tạo một câu lệnh SQL chèn thông tin phiếu thanh toán vào bảng dành cho phiếu thanh toán trong cơ sở dữ liệu. 20) Xử lý 4.1: Thống kê tình hình mua hàng Đầu đề Tên chức năng: THỐNG KÊ TÌNH HÌNH MUA HÀNG Đầu vào: Yêu cầu thống kê tình hình mua nguyên liệu. Đầu ra: Bảng thống kê tình hình mua nguyên liệu. Thân Tạo một câu lệnh SQL truy vấn tổng các số lượng trong bảng của hóa đơn nhập hàng nằm trong yêu cầu cần thống kê. 23) Xử lý 4.2.a: Thống kê tồn kho nguyên liệu Đầu đề Tên chức năng: THỐNG KÊ TỒN KHO NGUYÊN LIỆU Đầu vào: Yêu cầu thống kê tồn kho nguyên liệu. Đầu ra: Bảng thống kê tồn kho nguyên liệu. Thân Tạo một câu lệnh SQL truy vấn tổng các số lượng tồn trong bảng lô nằm trong khu tương ứng của kho nguyên liệu. 24) Xử lý 4.2.b: Thống kê tồn kho thuốc Đầu đề Tên chức năng: THỐNG KÊ TỒN KHO THUỐC Đầu vào: Yêu cầu thống kê tồn kho thuốc. Đầu ra: Bảng thống kê tồn kho thuốc. Thân Tạo một câu lệnh SQL truy vấn tổng các số lượng tồn trong bảng lô nằm trong khu tương ứng của kho thuốc. 21) Xử lý 4.3: Thống kê tình hình sản xuất Đầu đề Tên chức năng: THỐNG KÊ TÌNH HÌNH SẢN XUẤT Đầu vào: Yêu cầu thống kê tình hình sản xuất. Đầu ra: Bảng thống kê tình hình sản xuất. Thân Tạo một câu lệnh SQL truy vấn tổng các số lượng trong bảng của phiếu xuất nguyên liệu nằm trong yêu cầu cần thống kê. 22) Xử lý 4.4: Thống kê tình hình bán hàng Đầu đề Tên chức năng: THỐNG KÊ TÌNH HÌNH BÁN HÀNG Đầu vào: Yêu cầu thống kê tình hình bán hàng. Đầu ra: Bảng thống kê tình hình bán hàng. Thân Tạo một câu lệnh SQL truy vấn tổng các số lượng trong bảng của hóa đơn xuất hàng nằm trong yêu cầu cần thống kê. 25) Xử lý 5.1: Thống kê công nợ Đầu đề Tên chức năng: THỐNG KÊ CÔNG NỢ Đầu vào: Yêu cầu thống kê công nợ. Đầu ra: Bảng thống kê công nợ. Thân Công nợ đầu kỳ của tháng này thì bằng công nợ cuối kỳ của tháng trước. Công nợ đến thời điểm hiện tại thì bằng công nợ đầu kỳ cộng phát sinh tăng trừ phát sinh giảm. Tìm số dư đầu kỳ: Tạo một câu lệnh SQL truy vấn số dư cuối kỳ của tháng trước trong bảng phiếu thanh toán. Tính phát sinh tăng: Tạo một câu lệnh SQL truy vấn tổng của tích hai trường số lượng và đơn giá trong bảng hóa đơn của khách hàng trong mốc thời gian cần thống kê. Tính phát sinh giảm: Tạo một câu lệnh SQL truy vấn số tiền trả của khách hàng trong bảng phiếu thanh toán. 26) Xử lý 5.2: Thống kê doanh số Đầu đề Tên chức năng: THỐNG KÊ DOANH SỐ Đầu vào: Yêu cầu thống kê doanh số. Đầu ra: Bảng thống kê doanh số. Thân Tạo một câu lệnh SQL truy vấn tổng của tích hai trường số lượng và đơn giá trong bảng hóa đơn xuất hàng của khách hàng. II.3. PHÂN TÍCH HỆ THỐNG VỀ DỮ LIỆU II.3.1. MÔ HÌNH THỰC THỂ / LIÊN KẾT Mô hình thực thể / liên kết là sự mô tả dữ liệu của hệ thống thông tin độc lập với các lựa chọn môi trường cài đặt, là công cụ cho phép thể hiện dữ liệu của hệ thống ở mức quan niệm. Đây là một hệ thống thực hiện quản lý thông tin các đối tượng như nguyên liệu, thuốc, khách hàng, nhà cung cấp đồng thời cũng là một hệ thống thương mại điện tử, cho nên trong mô hình thực thể / liên kết giữa các đối tượng này có các mối liên hệ n

Các file đính kèm theo tài liệu này:

  • docndt-xdw.doc
Tài liệu liên quan