GIỚI THIỆU : Công việc quản lý xảy ra trong mọi lĩnh vực , mọi lúc , mọi nơi như các bàitoán :quản lý nhân sự ,quản lý vật tư ,quản lý tài chính …Trong lĩnh vực quản lý, việc xử lý các t
Trang 1PHẦN 1 : TỔNG QUAN
1 GIỚI THIỆU :
Công việc quản lý xảy ra trong mọi lĩnh vực , mọi lúc , mọi nơi như các bàitoán :quản lý nhân sự ,quản lý vật tư ,quản lý tài chính …Trong lĩnh vực quản lý, việc xử lý các thông tin nhận được là một vấn đề hết sức phức tạp vì lượngthông tin nhận được ngày càng lớn và thường xuyên thay đổi , nó luôn luôn làmột bài toán phức tạp , nhất là trong việc tổ chức ,sắp xếp cơ sở dữ liệu sao chophù hợp ,tìm ra những phương pháp tính toán tối ưu ,vấn đề bảo mật dữ liệu …Tuy nhiên sự ra đời của máy tính , cùng với sự phát triển của công nghệ thôngtin đã đưa ra một giải pháp hoàn toàn mới giúp giải quyết được những rắc rốiấy một cách nhanh chóng và hiệu quả
Và nếu như bạn có dịp ngồi tổng kết ,tính toán và in báo cáo cho công ty dulịch ,khi không có sự trợ giúp của máy tính thì công việc đó không dễ chútnào Hàng ngàn những con số ,giấy tờ ,sổ sách …Điều quan trọng là những đốitượng đó thì luôn luôn lại cập nhật và thay đổi theo từng thời điểm ,mỗi lầnthay đổi thì phải lục lại những giấy tờ liên quan và sửa lại Cho nên việc quảnlý thông tin như vậy là không khoa học chút nào
Chính vì lý do đó mà những người làm tin học phải có nhiệm vụ mô hình và tổchức những thông tin ở thế giới thực đưa vào máy tính , để có thể thực hiệnviệc tính toán dễ dàng ,nhanh chóng và chính xác hơn
2 MỤC ĐÍCH – Ý NGHĨA ĐỀ TÀI :
Đề tài “Xây dựng chương trình quản lý tour du lịch” đã giải quyết các vấnđề khó khăn đó Hệ thống thông tin quản lý tour du lịch này có thể giúp choviệc quản lý các tour một cách chính xác với các thông tin được dễ dàng cậpnhật thường xuyên về chi phí ,thời gian ,nguồn nhân lực …thông qua một quitrình định sẳn và giúp cho người quản lý có thể nắm bắt được đầy đủ thông tinđể dễ dàng xử lý kịp thời , mọi lúc ,mọi nơi
Chương trình được xây dựng nhằm giúp cho các nhà quản lý :
- Trong việc ghi nhận dữ liệu : nhập vào một tour mới một cách hệ
thống , có tổ chức định sẳn trong chương trình
- Trong việc tính toán : tính toán được tổng doanh thu của các tour
hằng tháng,hằng năm…
- Trong việc tra cứu : tra cứu tour ,tra cứu địa điểm …
- Trong việc thống kê : thống kê tour theo loại tour ,thống kê theo
chi phí …Chương trình được xây dựng nhằm giúp cho các nhà quản lý ,quản lý được cáctour mà mình đang theo dõi nhằm : đánh giá và kết luận về kết quả các quá
Trang 2trình hoạt động của tour trước và sau khi hoạt động ; thu thập đầy đủ các thôngtin quản trị ,ra quyết định quản trị kịp thời ,chính xác ,hợp lý trên cơ sở cácthông tin được xác định dù với số lượng thông tin và dữ liệu lớn
Trang 3PHẦN 2 : GIỚI THIỆU ASP.NET
I ASP.NET – GIỚI THI Ệ U S Ơ L ƯỢC
1
ASP L À GÌ ?
ASP.NET là Active Server Pages NET (.NET ở đây là NET framework).Nĩi đơn giản, ASP.NET là một cơng nghệ cĩ tính cách mạng dùng để pháttriển các ứng dụng về mạng hiện nay cũng như trong tương lai (ASP.NET is arevolutionary technology for developing web applications) Bạn lưu ý ở chổASP.NET là một phương pháp tổ chức hay khung tổ chức (framework) để thiếtlập các ứng dụng hết sức hùng mạnh cho mạng dựa trên CLR (CommonLanguage Runtime) chứ khơng phải là một ngơn ngữ lập trình
Tuy mang họ tên gần giống như ASP cổ điển nhưng ASP.NET khơng phải
là ASP Tuy nhiên ASP.NET được thiết kế tương thích với các phiên bản ASPtrước đĩ Ta chỉ cần thay đổi rất ít khi chuyển ứng dụng sẵn cĩ từ ASP sangASP.NET Và một điều thú vị nửa là ta cĩ thể cài đặt bộ ASP.NET chung vớiASP 3.0 chạy trên máy chủ Windows 2000 hay Windows XP mà khơng cầnthay đổi cấu hình của ứng dụng ASP cũ ASP và ASP.NET hoạt động độc lậpvới nhau Vì vậy ta sẽ tận dụng được những ưu điểm mới của ASP.NET màkhơng cần phải sửa đổi nhiều Mặc dù Microsoft chỉ them vào đuơi NETnhưng kiến trúc của ASP.NET so với ASP hầu như đổi mới rất nhiều
2 KHÁC BIỆT GIỮA ASP.NET VÀ ASP:
ASP.NET được phác thảo (re-design) lại từ số khơng, nĩ được thay đổi tậngốc rễ và phát triển (develop) phù hợp với yêu cầu hiện nay cũng như vạch mộthướng đi vững chắc cho tương lai Tin Học Lý do chính là Microsoft đã quáchán nãn trong việc thêm thắt và kết hợp các cơng dụng mới vào các kiểu mẫulập trình hay thiết kế mạng theo kiểu cổ điển nên Microsoft nghĩ rằng tốt nhất
là làm lại một kiểu mẫu hồn tồn mới thay vì vá víu chổ này chổ nọ vào ASP
Ðĩ là chưa kể đến nhiều phát minh mới ra đời sau này dựa trên các khái niệmmới mẽ theo xu hướng phát triển hiện nay của cơng nghệ Tin Học (InformationTechnology) cần được đưa vào kiểu mẫu phát triển mới đĩ Nhờ vậy, ta mới cĩthể nĩi ASP.NET khơng phải là ASP Thật vậy , ASP.NET cung cấp mộtphương pháp hồn tồn khác biệt với phương pháp của ASP
Trang 43 NHỮNG THAY ÐỔI CƠ BẢN:
ASP đã và đang thi hành sứ mạng được giao cho nó để phát triển mạngmột cách tốt đẹp như vậy thì tại sao ta cần phải đổi mới hoàn toàn? Lý do đơngiản là ASP không còn đáp ứng đủ nhu cầu hiện nay trong lãnh vực phát triểnmạng của công nghệ Tin Học ASP được thiết kế riêng biệt và nằm ở tầng phiátrên hệ điều hành Windows và Internet Information Server, do đó các côngdụng của nó hết sức rời rạt và giới hạn
Trong khi đó, ASP.NET là một cơ cấu trong các cơ cấu của hệ điều hànhWindows dưới dạng nền hay khung .NET (.NET framework), như vậyASP.NET không những có thể dùng các object của các ứng dụng cũ mà còn cóthể sử dụng tất cả mọi tài nguyên mà Windows có
Ta có thể tóm tắc sự thay đổi như sau:
• Tập tin của ASP.NET (ASP.NET file) có extension là ASPX, còn
tập tin của ASP là ASP
• Tập tin của ASP.NET (ASP.NET file) được phân tích ngữ pháp
(parsed) bởi XSPISAPI.DLL, còn tập tin của ASP được phân tíchbởi ASP.DLL
• ASP.NET là kiểu mẫu lập trình phát động bằng sự kiện (event
driven), còn các trang ASP được thi hành theo thứ tự tuần tự từ trênxuống dưới
• ASP.NET xử dụng trình biên dịch (compiled code) nên rất nhanh,
còn ASP dùng trình thông dịch (interpreted code) do đó hiệu suất vàtốc độ phát triển cũng thua sút hẳn
• ASP.NET yểm trợ gần 25 ngôn ngữ lập trình mới với NET và chạy
trong môi trường biên dịch (compiled environment), còn ASP chỉchấp nhận VBScript và JavaScript nên ASP chỉ là một scriptedlanguage trong môi trường thông dịch(in the interpreterenvironment) Không những vậy, ASP.NET còn kết hợp nhuầnnhuyễn với XML (Extensible Markup Language) để chuyển vận cácthông tin (information) qua mạng
• ASP.NET yểm trợ tất cả các browser và quan trọng hơn nữa là yểm
trợ các thiết bị lưu động (mobile devices) Chính các thiết bị lưuđộng, mà mỗi ngày càng phổ biến, đã khiến việc dùng ASP trongviệc phát triển mạng nhằm vươn tới thị trường mới đó trở nên vôcùng khó khăn
II BỘ DỊCH VỤ WEB THẾ HỆ KẾ TIẾP ( NGWSF) :
Trang 5Hệ điều hành được Microsoft xem là một tập hợp bao gồm nhiều đối tượnghoạt động tương tác lẫn nhau Chương trình của bạn cũng là một đối tượng.Microsoft gọi mô hình này với tên khá phổ biến là COM (Component ObjectModel) Tất cả mọi thứ điều quy về đối tượng với phương thức, thuộc tính và cácdịch vụ mà đối tượng có thể cung cấp Phát triển hơn nửa Microsoft mở rộngCOM thành COM+ cho phép các đối tượng COM mở rộng giao tiếp với nhau trênmọi nền Windows98 , NT/2000/XP, máy chủ Server và máy khách Client đâu đâucũng là đối tượng có thể giao tiếp và triệu gọi nhau một cách xuyên suốt
Với sự buøng nổ của Internet, Microsoft một lần nửa lại đưa ra kiến trúcCOM+ thành mô hình đối tượng cao hơn ảnh hưởng đến toàn bộ hệ điều hành.Kiến trúc mới này mang tên khung dịch vụ WEB thế hệ kế tiếp (Next GenerationWeb Service Framework hay NGWSG Tuy mang tên Web nhưng thực chất nó đã
ăn sâu trong hệ điều hành NGWSG bổ sung các dịch vụ mới cho các đối tượngứng dụng phân tán COM+ bao gồm:
• Một tập các thư viện lập trình phong phú và thống nhất
• Bộ thực thi chương trình đa ngôn ngữ (multi-language runtime
engine) và bảo vệ an toàn mã thực thi
• Đơn giản hoá quá trình tạo lập, phân phối và bảo trì ứng dụng
• Tăng tính mềm dẻo và khả chuyển cho các ứng dụng phân tán
• Bảo vệ các phần mềm hiện có và giảm đầu tư đào tạo
Sở dĩ có chữ NET trong ASP.NET là vì mọi chức năng ASP.NET có được
là hoàn toàn dựa vào NET framework, do đó ta cần phải hiểu thấu đáo kiến trúc
hạ tầng của NET framework để dùng ASP.NET một cách hiệu quả, trong đó quantrọng nhất là CLR và NET Framework Class
1 CLR (COMMON LANGUAGE RUNTIME):
CLR là môi trường được dùng để quản lý sự thi hành các nguồn mã(manage the execution of code) mà ta đã soạn ra và biên dịch (write andcompile code) trong các ứng dụng Tuy nhiên khi biên dịch nguồn mã, ta lại
biên dịch chúng ra thành một ngôn ngữ trung gian gọi là Microsoft Intermediate Language (MSIL) Chính MSIL trung gian này là ngôn ngữ
chung cho tất cả các ngôn ngữ NET hiện có, do đó chắc bạn cũng đoán ra làASP.NET cũng được biên dịch (compile) ra MSIL như mọi ai khác Trong khibiên dịch như vậy, các ứng dụng cũng sản xuất ra những thông tin cần thiết để
tự quảng cáo chính mình, ta gọi những thông tin này là metadata Ðến khi
ta chạy một ứng dụng, CLR sẽ tiếp quản (take-over) và lại biên dịch (compile)nguồn mã một lần nữa ra thành ngôn ngữ gốc (native language) của máy vitính trước khi thi hành những công tác đã được bố trí trong nguồn mã đó
Trang 62 .NET FRAMEWORK CLASSES
Ðiều quan trọng nhất mà ta cần phải nhớ là mọi thứ trong NET đều là
object, tỷ như các trang ASP.NET, các hộp thông điệp (message box) hay là
nút bấm (button), tất cả đều là object cả Các object đó được tổ chức lại thànhtừng nhóm riêng biệt như trong một thư viện để ta dễ dàng sữ dụng Ta gọi các
nhóm như vậy là namespaces, và ta sẽ dùng những namespace này để gọi hay
nhập cảng (import) các class cần thiết cho ứng dụng của mình
IV CÁC ĐỐI TƯỢNG TRONG ASP.NET :
1 ĐỐI TƯỢNG RESPONSE :
Là đối tượng liên quan đến công việc thông tin từ Server gửi đến trìnhduỵêt Web Response object cho phép Server đáp ứng, trả lời hay thông tin vớiClient
Phương pháp (Method) Write :
Ví dụ sau đây dùng phương pháp (method) Write của Response object để hiểnthị vài hàng chữ ở Client browser:
<%@ Page Language="VB" %>
<script runat="server">
sub Page_Load(obj as object, e as eventargs)
dim i as integer
'Dùng phương pháp (method) Write để hiển thị vài hàng chữ sau đây
Response.Write("Using Write method of Response object")
Response.Write("<HR width=100%\>")
Trang 7Response.Write("<font size=" & 3 & ">Hello Thanh<br></font>")
Ðể ý ký hiệu \> ở cuối mã sau đây Nếu ta không dùng ký hiệu \ để phân biệt100%\> và 100%>, ASP.NET sẽ tưởng ta dùng %> để chấm dứt phần scriptblock và sẽ tạo lỗi
ASP.NET dùng buffer để kiểm soát (control) khi nào gởi sản phẩm (output)tới browser Ðây cũng là kiểu mẫu chính (default method) ASP.NET dùng, khioutput được buffered, ASP.NET chờ cho tới khi nào tất cả nguồn mã được thihành mới gởi tới browser 'một lần rồi thôi' Trong kiểu unbuffered output,
mã sẽ gởi tới browser từng cụm hay từng phần một - ở đây muốn nói tới'output of each method'
Trang 8Nếu ta muốn tắt buffer (turn buffering off), bố trí mã Buffer = false trước khi
gởi đi browser:
Ðể vận dụng hay sử dụng buffer, ta dùng phương pháp (method):
Trang 92 ĐỐI TƯỢNG REQUEST :
Request object dùng để thông tin giữa Server và Client browser Browserdùng Request object để gởi thông tin cần thiết tới Server Giống như Response,Request object là instance của HttpRequest Như vậy, Request object đại diệncho Client khi yêu cầu trang Web, còn Server sẽ dùng vừa Response vừaRequest để đáp ứng yêu cầu hay đòi hỏi thông tin từ Client
Đối tượng Request cho phép truy xuất tới bất kỳ thông tin nào do user gởitới bằng giao thức HTTP như :
- Các thông tin chuẩn nằm trong biến Server
- Các tham số gởi tới bằng phương thức POST
- Các tham số gởi tới bằng phương thức GET
- Các Cookies
- Các Client Certificates
Nếu phương thức gửi từ Form là GET thì query String chứa toàn bộ thông tingởi tới như các tham số đi đằng sau dấu chấm hỏi (?) trong hộp địa chỉ
Nếu phương thức gửi tới là POST thì thông tin gửi đi sẽ dấu đi
Tuy vậy, object này không cần thiết vì ASP.NET đã lo lắng, đãm đương hầuhết trách nhiệm thông tin giữa Server và Client browser dùm ta
Một ứng dụng quan trọng của Request object là thu thập thông tin của Clientbrowser Thường, thông tin của Client browser được gởi đi dưới dạng form
Trang 10hay querystring (querystring: thông tin gởi kèm vào phần đuôi của requestURL).
Tóm lại, cả 2 kiểu đều được dùng để thu thập thông tin từ Client browser.Nhưng, ASP.NET dùng Web Form Framework để chăm nom, sắp đặt mọiyêu cầu (request) của Client browser cho ta
Cũng cần nhắc ở đây, ta có thể dùng Request để thu thập thông tin về
ServerVariables và Cookies ServerVariables chứa thông tin của Server tỷ như IP address hay HTTP protocol, Cookies (dưới hình thức 1 tập tin)
chứa thông tin cần thiết ở chính máy vi tính của user (Client's computer)
Dưới đây vài biến số (variables) thông dụng trong bộ ServerVariablesCollection:
SERVER_SOFTWARE Server, tỷ như Microsft-IIS/5.0Tên nhu liệu sử dụng cho Web
3 ĐỐI TƯỢNG SERVER :
Là đối tượng quan trọng cung cấp cho ta một vài sở hữu cơ bản và phươngpháp và được sử dụng trong tất cả mỗi trang ASP mà chúng ta tạo ra
Trang 11• Thuộc tính :
ScriptTimeout : Khoảng thời gian dành cho Scrip chạy Mặc định là 90 giây
• Các dạng thức :
- CreateObject : Tạo một instance của server component.
- HTMLEncode : Mã hoá một chuỗi theo dạng HTML
- MapPath : Ánh xạ đường dẫn ảo (là đường dẫn tuyệt đối trên Server
hiện hành hoặc đường dẫn tuyệt đối đến trang hiện tại) thành đườngdẫn vật lý (Physical path)
- URLLencode : mã hoá một chuỗi (kể cả kí tự Escape) theo quy tắc
mã hoá URL
4 ĐỐI TƯỢNG APPLICATION :
Là đối tượng có thể lưu trữ thông tin cho việc sử dụng cho tập tin văn bảnngay cả đáp lại sự kiện Thường dùng cho biến toàn cục ví dụ như việc đếm sốngười truy cập vào một trang Web
• Các dạng thức :
- Lock : Phương thức này cấm không cho Client khác thay đổi
property của đối tượng Application
Trang 12- Unlock : Phương thức này Client thay đổi property của đối tượng
Application
- Event : gồm có hai event được khai báo trong file Global.asa Ngoài
ra chúng ta có thể đặt các biến trong đối tượng Application để lưunhững thông tin toàn cục, hay các cờ báo hiệu
Application_OnStart : Xảy ra khi khởi động ứng dụng
Application_OnEnd : Xảy ra khi ưng dụng đóng, hay Server shutdown
5 ĐỐI TƯỢNG SESSION :
Là một đối tượng có thể sử dụng để lưu trữ cả giá trị dữ liệu đơn giản và cảkết nối dữ liệu Mỗi Client khi yêu câu truy xuất trang Web trong ứng dụng của
ta là được phân phát một đối tượng Session
Ta thường dùng đối tượng Session để xác định quyền có thể truy cập vàotrang Web nào đó Thường dùng vào những trang Login
• Các thuộc tính :
- SessionID : Trả về SessionID cho User Mỗi Session sẽ được server
cho một số định danh duy nhất khi nó được tạo ra
- Timeout : khoảng thời gian tồn tại của Session, tính bằng phút Mặc
định 20 phút
• Các dạng thức :
- Abandon : Xoá bỏ một Session, trả lại tài nguên cho hệ thống.
VI TRUY XUẤT CƠ SỞ DỮ LIỆU :
1 ADO+ HAY ADO.NET LÀ GÌ ?
Trong ADO (ActiveX Data Object) của VB6 ta dùng Connection để nối
chương trình áp dụng của mình với cơ sở dữ liệu và lấy ra một Recordset Cáiconnection ấy vẫn được giữ nguyên trong khi chương trình ta làm việc với
Recordset Trong ADO.NET của NET sau khi thiết lập connection với cơ sở
dữ liệu ta copy một hay nhiều Recordset vào Dataset Các Recordset nầy có thể
có mối liên hệ Master/Slave Relation với nhau Thí dụ như
Trang 13Invoice/InvoiceDetails, trong đó các InvoiceDetails liên hệ với Invoice quaInvoiceID chẳng hạn, tức là InvoiceID là Primary Key của Invoice và cũng làForeign Key của InvoiceDetails Sau đó ta chỉ làm việc với Dataset mà thôi.Cái connection coi như đã bị cắt đứt Do đó Dataset được xem như là
disconnected database nho nhỏ nằm trong bộ nhớ.Cái hay của ADO.NET là khi ta muốn Update Dataset, connection sẽ được tự
động nối lại và dataset sẽ được reconciled với cơ sỡ dữ liệu Chữ reconcile là
một từ kỹ thuật trong kế toán mà ta hay dùng để nói đến việc so sánh các chitiết tiền ra vô của một trương mục giữa sổ sách chúng ta giữ và bảng báo cáocủa nhà băng để điều chỉnh lại các con số trong sổ sách của chúng ta cho giốngnhư của nhà băng Nếu ta giữ sổ sách chính xác thì sự khác biệt chỉ là nhữngtransactions (món tiền ra, vô) nhà băng làm mà ta chưa biết như chi phí dịch vụcủa nhà băng, thuế tài chánh v.v Bên trong Dataset có chứa các trị số cũ củadatafields để dùng vào việc so sánh khi Reconcile các records Dataset của ADO.NET cho ta các lợi ích thực tiển như:
• Hoàn toàn trong bộ nhớ: Một Table trong Dataset là mộtArray of Rows, nên ta có thể dùng thẳng (direct access) mộtrecord bằng cách nói đến cái Row chứa nó, chớ không cầnphải dùng MoveNext, MovePrev,.v.v
• Làm nhẹ công tác của cơ sỡ dữ kiện chính: Vai trò củaDataset đối với cơ sỡ dữ kiện chính (Oracle, Informix,SQLServer v.v.) cũng giống như mười năm trước đây ta bắtđầu dùng Workstations để làm nhẹ công tác của Mainframecomputer Chuyện nào Workstation làm được thì ta giao cho
nó, vừa nhanh, vừa linh động, khỏi cần phiền đến Mainframe.Tất cả mọi công tác sửa đổi dữ kiện đều được thực hiện trongDataset
• Dataset có thể được biểu diển bằng một XML (eXtensible Marked Language): Ta có thể dùng các công cụ của XML
để làm việc với Dataset, trao đổi Dataset giữa các computerstrên mạng dưới dạng XML, thậm chí có thể chứa một cơ sở
dữ kiện nho nhỏ dưới dạng một XML
2 SỬ DỤNG ADO.NET :
Khai báo và sử dụng không gian tên (namespace) :
Trong ASP.NET để sử dụng một thư viện hay đối tượng nào đó ta cần khaibáo không gian tên (namespace) bằng chỉ thị Import Nếu không thì khi sửdụng đối tượng nào đó ta phải khai báo đầy đủ
Ví dụ: <%Import Namespace=”System.Data.ADO”%>
Trang 14Để xử lý dữ liệu trong ASP.NET ta có thể khai báo sử dụng các không gian tênnhư sau:
System.Data Các đối tượng và kiểu cơ bản phục
vụ ADO.NET
System.Data.ADO Quản lý các đối tượng chứa và truy
xuất dữ liệu theo OLE DB
System.Data.SQL Các đối tượng xử lý đặc thù cho
CSDL SQLSystem.Data.XML Đối tượng xử lý dữ liệu XMLSystem.Data.SQLTypes Các kiểu dữ liệu của SQL
3 CÁC ĐỐI TƯỢNG TRONG ADO.NET :
a Đối tượng Connection :
Dùng đối tượng này để kết nối đến CSDL
Cách khai báo :
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%Dim myConnection As SqlConnection
myConnection= New SqlConnection("server=yoursqlservername;database=Pubs;uid=sa" )myConnection.Open() %>
b Đối tượng Command : dùng để định nghĩa một câu lệnh hoặc 1 query
mà ta sẽ thực hiện trên data source
Cách khai báo
Dim myCommand As SqlDataAdapter
myCommand = new SqlDataAdapter("SELECT * FROM Authors",myConnection)
Trang 15c Đối tượng DataSet : dùng để sử lý dữ liệu lấy ra từ các nguồn chứa
(data store), đối tượng này cung cấp cách truy xuất đến danh sách các bảngcột và dòng dữ liệu thong qua những đối tượng con như DataSet ,DataRelationship, DataTable, DataColumn, DataRow, Datakey
d Đối tượng DataView : cho phép tuỳ biến cách nhìn dữ liệu chứa trong
các bảng DataSet Mục đích chính của DataView là hộ trợ cơ chế rang buộc
dữ liệu Ta có thể hình dung DataView tương tự như RecordSet trong môhình ADO cũ
Cách khai báo:
MyDataGrid.DataSource=ds.Table(“Authors”).DefaultView
Lưu Ý : Bạn nên nhớ, DataSet không phải là RecordSet Khái niệm tương
đương với RecordSet cũ là DataView
e Đối tượng DataReader :
Đối tượng này được xây dựng cho 2 môi trường Với môi trườngchuyên dụng SQL Server, ta có thể dùng SQLDataReader Với môi trườngCSDL tổng quát ta dùng ADODataReader Đối tượng DataReader cho phépđọc cụ thể từng dòng và cột dữ liệu trong bảng Chức năng DataReadertương tự như RecordSet trong ADO cũ, RecordSet cho phép ta lặp và duyệtqua tất cả các record trong bảng dữ liệu
Trang 16PHẦN 3 : GIỚI THIỆU SQL SERVER
I TỔNG QUAN :
1 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUAN HỆ (RDBMS):
SQL SERVER là một hệ thống quản lý cơ sở dữ liệu (RelationalDatabase Management System (RDBMS)) sử dụng Transact-SQL để traođổi dữ liệu giữa Client computer và SQL Server computer Một RDBMSbao gồm databases, database engine và các ứng dụng dùng để quản lý dữliệu và các bộ phận khác nhau trong RDBMS
SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớnlên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user SQLServer có các chức năng :
Có tính bảo mật dữ liệu
Hỗ trợ đa xử lý
Đảm bảo các ràng buộc toàn vẹn
2 CÁC THÀNH PHẦN QUAN TRỌNG TRONG SQL SERVER :
Trang 17SQL Server được cấu tạo bởi nhiều thành phần như Relational DatabaseEngine, Analysis Service và English Query… Các thành phần này khi phốihợp với nhau tạo thành một giải pháp hoàn chỉnh giúp việc lưu trữ và phântích dữ liệu một cách dễ dàng.
3 KIẾN TRÚC CLIENT/SERVER :
Server chứa dịch vụ cơ sở dữ liệu, bảo mật, quản lý
Client thông tin với cơ sở dữ liệu qua giao tiếp lập trình ứng dụng
(API- Application Programming Interface)
4 TẠI SAO PHẢI CHỌN SQL SERVER ?
Để chọn DBMS này chúng ta xét nó có phù hợp với ứng dụng không vàchúng tôi đưa ra các so sánh sau (đối với các DBMSs khác như Access,Oracle):
Đầu tiên chúng ta xét Access :
Trang 18Access :
Không có khả năng truy cập đồng thời
Kém bảo mật
Hạn chế về kích thước dữ liệu (nhỏ hơn 50 M)
Oracle :
Chi phí có được hệ quản trị cơ sở dữ liệu Oracle cao hơn SQLServer rất nhiều
Dùng cho những ứng dụng rất lớn
Những khuyết điểm trên của Access và Oracle chính là ưu điểm của SQLServer Ngoài ra SQL Server còn rất phổ biến ở nước ta, chương trình chínhxác và thân thiện với sử dụng
5
CẤU TRÚC VẬT LÝ CỦA MỘT SQL SERVER DATABASE :
Mỗi một database trong SQL Server đều chứa ít nhất một data filechính(primary), có thể thêm một hay nhiều data file phụ(Secondary) và mộttransaction log file
• Primary data file (thường có phần mở rộng mdf): đây là filechính chứa data và những system table
• Secondary data file(thường có phần mở rộng ndf): đây là filephụ thường chỉ sử dụng khi database được phân chia để chứatrên nhiều đĩa
• Transaction log file(thường có phần mở rộng ldf): đây là fileghi lại tất cả những thay đổi diễn ra trong một database và chứađầy đủ thông tin để có thể roll back hay roll forward khi cần Data trong SQL Server được chứa thành từng Page 8KB và 8 page liêntục tạo thành một Extent như:
Trang 19Trước khi SQL Server muốn lưu data vào một table nó cần phải dànhriêng một khoảng trống trong data file cho table đó Những khoảng trống đóchính là các extents Có 2 loại Extents: Mixed Extents (loại hỗn hợp) dùngđể chứa data của nhiều tables trong cùng một Extent và Uniform Exten (loạithuần nhất) dùng để chứa data của một table Đầu tiên SQL Server dànhcác Page trong Mixed Extent để chứa data cho một table sau đó khi datatăng trưởng thì SQL dành hẳn một Uniform Extent cho table đó.
6 NGUYÊN TẮC HOẠT ĐỘNG CỦA TRANSACTION LOG TRONG SQL SERVER :
Transaction log file trong SQL Server dùng để ghi lại các thay đổi xảy ratrong database Quá trình này diễn ra: đầu tiên khi có một sự thay đổi datanhư Insert, Update, Delete được yêu cầu từ các ứng dụng, SQL Server sẽ tảidata page tương ứng trên memory (vùng bộ nhớ này gọi là data cache), sauđó data trong data cache được thay đổi ( những trang bị thay đổi còn gọi là
dirty-pagr).Tiếp theo sự thay đổi đều được ghi vào transaction log file cho
Trang 20nên gọi là Write-ahead log Cuối cùng thì một quá trình gọi là Check Point
Process sẽ kiểm tra và viết tất cả những transaction đã được commited(hoàn tất) vào đĩa cứng
7 CHIẾN LƯỢC SAO LƯU VÀ PHỤC HỒI DỮ LIỆU :
Có một điều mà chúng ta phải chú ý là hầu như bất kỳ database nàocũng cần được sao lưu và phục hồi Là một người Database Administratorcần phải giảm tối đa số lần phục hồi dữ liệu, luôn theo dõi, và kiểm trathường xuyên để phát hiện các trục trặc trước khi xảy ra Phải dự phòng cácbiến cố có thể xảy ra và đảm bảo rằng có thể nhanh chóng phục hồi dữ liệutrong thời gian sớm nhất có thể được
Các dạng biến cố hay tai hoạ có thể xảy ra là:
• Đĩa chứa data file hay Transaction Log File hay System file bị
mất
• Server bị hư hỏng
• Những thảm hoạ tự nhiên như bão lụt, động đất, hỏa hoạn
• Toàn bộ server bị đánh cắp
Trang 21• Những lỗi vô ý của user như lỡ tay delete toàn bộ table chẳng
hạn
• Bị hacker (nếu server có kết nối với internet)
Cơ chế backup database:
Để có thể hiểu các kiểu phục hồi dữ liệu khác nhau chúng ta phải biết cácloại backup trong SQL Server
- Full Databse Backups : Copy tất cả data files trong một database
Tất cả những user data và database objects như tables, indexes,user-defined table đều được backup
- Differentinal Database Backups : Copy những thay đổi trong tất
cả data files kể từ lần backup gần nhất
- File Group backup : Copy một data file đơn hay một file group
- Transaction Log backup : Ghi nhận một cách thứ tự tất cả các
transactions chứa trong transaction log file kể từ lần transactionlog backup gần nhất Loại backup này cho phép ta phục hồi dữliệu trở ngược lại vào một thời điểm nào đó trong quá khứ màvẫn đảm bảo tính đồng nhất
Cơ chế Restore database:
Trước khi Restore database ta phải xác định được thứ tự file cần Restore.Các thông tin này được SQL Server chứa trong msdb database và sẽ cho tabiết backup device nào, ai backup vào thời điểm nào Sau đó tiến hành
Restore Để Restore ta phải Right-click -> All Tasks -> Restore database…
Nếu Restore từ một instance khác của SQL Server hay từ một server khác
ta chọn From device option và chọn backup device (file backup) tương ứng
8 QUYỀN TRUY CẬP :
Đây là những lệnh quản lý các quyền truy cập lên từng object (table,view, stored procedure…) Thường có dạng sau:
♦ Grant
♦ Revoke
♦ Deny
Trang 22II CÁC LỆNH SQL VÀ TRIGGER:
1 CÁC CÂU LỆNH DÙNG TRONG SQL SERVER :
1) Các câu lệnh DDL (Data Definition Language) :
Những lệnh dùng để quản lý các thuộc tính của một database nhưđịnh nghĩa các hàng hoặc cột của một table, hay vị trí data file của mộtdatabase thường có dạng
Lệnh Drop xoá hoàn toàn databse, table, view, stored procedure…
2) Các câu lệnh DML (Data Manipulation Language)
Cho phép người dùng truy vấn và thay đổi dữ liệu như lệnh :SELECT, INSERT, UPDATE, DELETE
3) Views
Định nghĩa một cách đơn giản thì View trong SQL Server tương tựnhư Query trong Access database View có thể xem như là một table ảomà data của nó được select từ một stored query Đối với người lập trìnhthì view không khác chi so với table và có thể đặt ở vị trí của table trongcác câu lệnh SQL Đặc điểm của View là ta có thể kết nối dữ liệu từnhiều table và trả về một recordset đơn
Nói chung câu lệnh SQL trong View có thể từ rất đơn giản như selecttoàn bộ data từ một table cho đến rất phức tạp với nhiều tính năng lậptrình của T-SQL
4) Các thành phần khác :
Biến cục bộ : tồn tại trong chính đơn thể chương trình mà nó khaibáo Ký hiệu bằng dấu “@”
Khai báo : DECLARE @varname type
Gán trị ban đầu : SET @varname=expression
Có thể dùng biến cục bộ trong câu SELECT
SELECT @varname=fieldvalue FROM table_name
Biến toàn cục : Ký hiệu bằng hai dấu “@@”, như
@@FETCH_STATUS
Trang 232 TRIGGERS :
1) Khái niệm :
Trigger là một loại stored procedure đặc biệt được tự động thực hiệnnhư là thành phần của câu lệnh thay đổi data Trigger được tạo trên mộtbảng và kết hợp với các hành động cập nhật data (insert, update, ordelete) Khi một trong những hành động này xuất hiện thì trigger tựđộng kích hoạt Trigger dùng để cài đặt cho các ràng buộc toàn vẹn.2) Đặc điểm của Trigger :
• Một trigger có thể làm nhiều công việc khác nhau và có thểđược kích hoạt bởi nhiều hơn một event nào như Update, Inserthay Delete và bên trong trigger ta sẽ viết code để giải quyếtcho từng trường hợp
• Trigger không thể được tạo ra trên temporary hay systemtable
• Trigger chỉ có thể được kích hoạt một cách tự động bởi mộttrong các event Insert, Update, Delete mà không thể chạymanually được
• Có thể áp dụng trigger cho View
• Khi một trigger được kích hoạt thì data mới vừa được inserthay vừa mới được thay đổi sẽ được chứa trong Inserted tablecòn data mới vừa được delete được chứa trong Deleted table.Đây là 2 table tạm chỉ chứa trên memory và chỉ có giá trị bêntrong trigger mà thôi ( nghĩa là chỉ nhìn thấy và được querytrong trigger mà thôi) Ta có thể dùng thông tin trong 2 tablenày để so sánh data cũ và mới hoặc kiểm tra xem data mớivừa thay đổi có hợp lê trước khi commit hay roll back
FOR {INSERT | UPDATE | DELETE [, ]}
AS Các câu lệnh sql
[RETURN]
Như vậy khi ta tạo ra một trigger ta phải chỉ rõ là tạo ra triggertrên table nào và được trigger khi nào Insert, Update hay Delete.Sau chử AS là các câu lệnh SQL xử lý công việc
Trang 24 Bảng Inserted và Deleted:
Bảng Inserted và Deleted thật sự là hai vùng nhìn (view) củamột nhật ký giao tác (transaction log) mà có cấu trúc giống nhưbảng mà trigger được tạo
Khi câu lệnh này thực hiện thì một bản sao của các dòng đãđược sửa đổi được lưu vào trong nhật ký cùng với một bản sao cácdòng sau khi thay đổi Những bản sao này luôn có sẵn cho mộttrigger dưới dạng bảng deleted và inserted
Hàm Update():
Hàm này chỉ có trong trigger với hành động insert hoặc delete.Nó cho phép một trigger xác định liệu một cột đã có thay đổi bởicâu lệnh insert hoặc update hay chưa Bằng cách kiểm tra như thếnày mà trigger tránh được việc thực hiện tác vụ không cần thiết.4) Xoá, thay thế trigger
Trigger không cho sữa đổi vì thế chúng ta phải xoá một đối tượngtrước khi tạo ra một trigger khác có cùng tên, để xoá triggerchúng ta sử dụng câu lệnh :
DROP TRIGGER trigger_nameTrigger sẽ được xoá tự động khi bảng mà nó tham chiếu bị xoá
Chúng ta không cần phải xóa trigger để thay thế nó, để thay thếmột trigger cho một tác động trên bảng thì cần phải tạo mớitrigger với một tên khác Trigger củ sẽ bị thay thế bởi trigger mớivà nếu nó không còn có trách nhiệm cho bất kỳ tác động nào nữatrên bảng thì nó sẽ tự động xoá
III STORED PROCEDURES :
2 TẠI SAO PHẢI DÙNG STORED PROCEDURE? :
Stored procedure cung cấp cho các ứng dụng cơ sở dữ liệu nhiều điểmthuận lợi qua việc thực thi các xử lý bó (batch) với các câu lệnh SQL lớn vàphức tạp ngay tại Database Server:
Trang 25 Thực thi nhanh Sau lần chạy đầu tiên, Stored procedures được lưutrong bộ nhớ do đó chúng không cần phải được phân tích lại, tối
ưu hóa lại và biên dịch cho các lần gọi chúng sau đó
Giảm thông xuất lưu thông trên mạng Stored procedures có thểbao gồm hàng trăm các câu lệnh SQL khác nhau, nhưng có thểthực thi chỉ với một câu lệnh duy nhất Điều này cho phép giảmkích thước các lời gọi từ Client đến Server
Lập trình module Procedures cung cấp một phương pháp để cắtcác đoạn mã SQL dài dòng thành những đoạn mã ngắn gọn để dễquản lý hơn
3 CƠ CHẾ THỰC THI STORED PROCEDURES :
Stored Procedures làm cho toàn bộ hệ thống ứng dụng có hiệu suất cao
vì các câu lệnh trong Stored Procedures chỉ được biên dịch và tối ưu một lầnvà được lưu trữ trong Database Server nên sự lưu thông trên mạng giảm.Khi Stored Procedures được thi hành lần đầu tiên thì Server phải có nhiệmvụ tối ưu và biên dịch nó Sơ đồ tối ưu và biên dịch đó thì được lưu trong bộnhớ cache và do đó nó luôn luôn ở trạng thái sẵn sàng khi có một lời gọiđến nó vào những lần sau
1 Định vị Stored Procedures trên đĩa
và nạp vào bộ nhớ cache
1 Định vị Stored Procedures trongcache
2 Thay thế các giá trị cho tham số 2 Thay thế các giá trị cho tham số
3 Phát triển sơ đồ tối ưu
4 Biên dịch sơ đồ tối ưu
5 Thi hành từ cache 3 Thi hành từ cache
4 TẠO STORED PROCEDURES :
Để viết một Stored Procedures, ta cần phải cung cấp một StoredProcedures với tên duy nhất và sau đó là các câu lệnh SQL
Cú pháp tổng quát:
CREATE PROC[EDURE]procedure_name [(parameter1,parameter2,…)]
Trang 26AS
Các câu lệnh SQL
[return[mã trạng thái]]
Các mã lệnh trong cặp dấu [] là tùy chọn (option) Tuy nhiên để cóphong cách lập trình tốt ta nên có câu lệnh return kết thúc StoredProcedures
Cú pháp tổng quát để thi hành procedure:
Mã trạng thái (status code) SQL Server cung cấp bảng mã trạng tháisao cho người dùng xử lý lỗi trong stong ored procedure
Mã trạng thái Ý nghĩa
-1 Thiếu đối tượng tham chiếu
-2 Lỗi do sai phạm kiểu dữ liệu
-4 Lỗi không được cho phép truy cập do bảo mật hoặc
không có quyền
-6 Lỗi do người dùng pha tạp (tự chế ra như
user-defined datatype)-7 Lỗi tài nguyên như hết bộ nhớ
-8 Các rối rắm bên trong hệ thống nhưng chưa có
nguy hiểm (bug)
Trang 27-9 Hệ thống hạn chế truy cập tới
-10 Lỗi bên trong hệ thống, nguy hiểm (bug)
-11 Lỗi bên trong hệ thống, nguy hiểm (bug)
-12 Bảng hoặc chỉ mục (index) bị hư hỏng
-13 Cơ sở dữ liệu bị hư
5 CURSORS TRONG STORED PROCEDURE :
Ta có thể khai báo cursors trong Stored Procedures (các cursors nàyđược gọi là server cursor) Khi một Stored Procedures trả giá trị về (kếtthúc) thì cursor tự động bị huỷ Trong hình minh họa, nếu Stored Proceduresđược lồng nhau thì chúng có thể truy cập các cursors được khai báo trongStored Procedures ở cấp cao hơn
return
Trang 28Database
Tại sao lại dùng cursor ?
Phần lớn các ứng dụng cơ sở dữ liệu, các lệnh SQL khả thi hànhthường trả về nhiều hơn một dòng (record) cho nên các ứng dụng cầncursor
Cách dùng các câu lệnh thao tác cursor
Khai báo cursor :
Declare tên_cursor CURSORFOR câu_lệnh_select [For Update[Delete] OF tên_field ]
Data21 Data22
Data31 Data32
Cập nhật bảng với cursor :
UPDATE tên_bảng SET field1 = value1,
field2 = value 2, …
WHERE CURRENT OF tên_cursor
Xóa các trường hợp trong cursor hiện hành :
DELETE [FROM] tên_bảng WHERE CURRENT OF tên_cursorĐóng cursor :
CLOSE tên_cursor
Hủy cursor :
DEALLOCATE tên_cursor
Fetch
Trang 29Chú thích :
@@FETCH_STATUS là một biến toàn cục của SQL Server cócác giá trị sau :
0 Lệnh FETCH đã thành công-1 Lệnh FETCH thực hiện thất bại-2 Hàng được FETCH có lỗi
Trang 30PHẦN 4 : KHẢO SÁT – PHÂN TÍCH – THIẾT KẾ
CÀI ĐẶT HỆ THỐNG
I KHẢO SÁT :
1 HIỆN TRẠNG :
Một công ty du lịch cần quản lý tour du lịch Hệ thống này gồm có :Một khách hàng khi tham gia vào hệ thống thì có thể tham quan các địađiểm du lịch Khách hàng có thể chọn tên tour,chương trình của tour,ngàykhởi hành,sốngày ,số đêm,số lượng khách.Mỗi tour có thể di chuyển bằngnhiều phương tiện Các loại phương tiện gồm có ba loại chính gồm xe ,tàulửa, máy bay Mỗi tour có thể được nghỉ ngơi tại một hay nhiều kháchsạn Khách hàng có thể chọn các loại hình du lịch khác nhau như : du lịchsinh thái , du lịch tìm hiểu , du lịch dã ngoại
Khi khách hàng đăng ký tour thì phải nhập thông tin về khách hàng Kháchhàng đến thanh toán tại công ty
Nhân viên của công ty chia làm ba loại :nhân viên thường , nhân viên quảntrị ,nhân viên là giám đốc Một nhân viên khi đăng nhập vào hệ thống vớiusername và password sẽ có các chức năng khác nhau Đối với nhân viênthường thì có chức năng xem thông tin về các tour Đối với nhân viên quảntrị thì có chức năng nhập , xem , xóa , sửa các tour đồng thời cũng có chứcnăng nhập thêm nhân viên mới Đối với nhân viên là ban giám đốc thì cóchức năng xem thống kê doanh thu và xem thông tin về nhân viên của mình
2 NỘI DUNG :
Các công việc trong quản lý tour du lịch :
- Thiết kế tour
- Lập hóa đơn
- Cho khách hàng đăng ký tour
- Thống kê tour theo định kỳ
• Thống kê doanh thu theo quý
• Thống kê doanh thu theo năm
• Thống kê doanh thu theo tour
3 MÔ TẢ YÊU CẦU :
a) CẬP NHẬT THÔNG TIN :
- Thêm , xóa , sửa tour một cách dễ dàng nhanh chóng
- Thêm , xóa , sửa địa điểm một cách dễ dàng nhanh chóng
- Thêm , xóa , sửa khách sạn một cách dễ dàng nhanh chóng
Trang 31- Thêm , xóa , sửa phương tiện một cách dễ dàng nhanh
chóng
- Thêm , xóa , sửa nhân viên một cách dễ dàng nhanh chóng
b) TÌM KIẾM THÔNG TIN :
- Tìm kiếm tour theo tên tour ,ngày khởi hành … một cách
c) THỐNG KÊ THÔNG TIN :
- Thống kê tour theo tên tour ,loại hình tour du lịch
- Thống kê doanh thu của tour theo định kỳ
- Thống kê doanh thu theo quý
- Thống kê doanh thu theo năm
- Tham quan các địa điểm du lịch
- Đăng ký tour du lịch được hiển thị sẳn
- Xem các phương tiện ,khách sạn
- Xem danh sách phiếu đăng ký
Nhân viên :
Có các chức năng cũng như quyền thao tác đối với hệ thống quản lý tour dulịch qua Web Browser như sau :
- Thay đổi mật khẩu
- Xem thông tin các tour
a) Đối với nhân viên thường :
- Xem thông tin cá nhân của các nhân viên khác
- Lập hóa đơn cho tourb) Đối với nhân viên quản trị hệ thống :
- Thêm ,xóa ,sửa nhân viên khác
- Thêm ,xóa ,sửa nội dung và các thông tin liên quan đến
tour
c) Đối với nhân viên là ban giám đốc :
Trang 32- Xem bảng thống kê theo định kỳ.
- Xem thông tin các nhân viên
2 SƠ ĐỒ CHỨC NĂNG CỦA CÁC ĐỐI TƯỢNG : a) KHÁCH HÀNG :
b) NHÂN VIÊN :
Trang 333 MÔ HÌNH QUAN NIỆM XỬ LÝ : a) Sơ đồ ngữ cảnh :
b) Sơ đồ phân rã chức năng :
- Mức 0 :
Trang 34- Mức 0 :
- Mức 1 :
Trang 35- Mức 1 :
- Mức 1 :
Trang 36- Mức 1 :
d) Sơ đồ thực thể kết hợp (ERD):
Trang 374 Xác định thực thể và quan hệ :
a) Phân loại các thực thể và thuộc tính :
Thực thể Khách hàng :
Khách hàng là một thực thể trong đó bao gồm các thông tin Tên thực thể : KHÁCH HÀNG
Tên viết tắt : KHACHHANG
Các thuộc tính của thực thể :
KHACHHANG(MAKH , HOTENKH , PASSWORD , DIACHI ,
DIENTHOAI , EMAIL)Mỗi khách hàng được quản lý theo mã khách hàng Mã kháchhàng là duy nhất , vì vậy ta chọn mã khách hàng làm khóa chính Khi có thay đổi về khách hàng thì sẽ cập nhật và lưu lại nhữngthuộc tính trên
Thực thể Nhân viên :
Nhân viên là một thực thể trong đó bao gồm các thông tin
Tên thực thể : NHÂN VIÊN
Tên viết tắt : NHANVIEN
Các thuộc tính của thực thể :
NHANVIEN(MANV , HOTENNV , PASSWORD , DIACHI ,
DIENTHOAI , LOAINV)
Trang 38Mỗi nhân viên được quản lý theo mã nhân viên Mã nhân viên làduy nhất , vì vậy ta chọn mã nhân viên là khóa chính Khi có thayđổi về nhân viên thì sẽ cập nhật và lưu lại những thuộc tính trên
Thực thể Phương tiện :
Phương tiện là một thực thể trong đó bao gồm các thông tin
Tên thực thể : PHƯƠNG TIỆN
Tên viết tắt : PHUONGTIEN
Các thuộc tính của thực thể :
PHUONGTIEN(MAPT , TENPT)
Mỗi phương tiện được quản lý theo mã phương tiện Mã phươngtiện là duy nhất , vì vậy ta chọn mã phương tiện là khóa chính Khi có sự thay đổi về phương tiện thì sẽ cập nhật và lưu lại nhữngthuộc tính trên
Thực thể Khách sạn :
Khách sạn là một thực thể trong đó bao gồm các thông tin
Tên thực thể : KHÁCH SẠN
Tên viết tắt : KHACHSAN
Các thuộc tính của thực thể :
KHACHSAN(MAKS , TENKS , DIACHI , DIENTHOAI)
Mỗi khách sạn được quản lý theo mã khách sạn Mã khách sạnlà duy nhất , vì vậy ta chọn mã khách sạn là khóa chính Khi cósự thay đổi về khách sạn thì sẽ cập nhật và lưu lại những thuộctính trên
Thực thể Tour :
Tour là một thực thể trong đó bao gồm các thông tin
Tên thực thể : TOUR
Tên viết tắt : TOUR
Các thuộc tính của thực thể :
TOUR(MATOUR , TENTOUR , LOAITOUR , CHUONGTRINH ,
SONGAY , SODEM , GIA)Mỗi tour quản lý theo mã tour Mã tour là duy nhất , vì vậy ta mãtour là khóa chính Khi có sự thay đổi về tour thì sẽ cập nhật vàlưu lại những thuộc tính trên
Thực thể Chuyến đi :
Chuyến đi là một thực thể trong đó bao gồm các thông tin
Tên thưcï thể : CHUYẾN ĐI
Tên viết tắt : CHUYENDI
Các thuộc tính của thực thể :
Trang 39CHUYENDI(MACD , TENCD , NGAYKHOIHANH , MATOUR ,
MANV)Mỗi chuyến đi quản lý theo mã chuyến đi Mã chuyến đi là duynhất , vì vậy ta chọn mã chuyến đi làm khóa chính Khi có sựthay đổi về chuyến đi thì sẽ cập nhật và lưu lại những thuộc tínhtrên
Thực thể Hóa đơn :
Hóa đơn là một thực thể trong đó bao gồm các thông tin
Tên thực thể : HÓA ĐƠN
Tên viết tắt : HOADON
Các thuộc tính của thực thể :
HOADON(MAHD , NGAYLAP , MAPDK)
Mỗi hóa đơn quản lý theo mã hóa đơn Mã hóa đơn là duy nhất ,
vì vậy ta chọn mã hóa đơn làm khóa chính Khi có sự thay đổi vềhóa đơn thì sẽ cập nhật và lưu lại những thuộc tính trên
Thực thể Phiếu đăng ký :
Phiếu đăng ký là một thực thể trong đó bao gồm các thông tin Tên thực thể : PHIẾU ĐĂNG KÝ
Tên viết tắt : PHIEUDANGKY
Các thuộc tính của thực thể :
PHIEUDANGKY(MAPDK , NGAYLAP , SOKHACH , MAKH ,
MACD)Mỗi phiếu đăng ký quản lý theo mã phiếu Mã phiếu là duynhất , vì vậy ta chọn mã phiếu đăng ký làm khóa chính Khi có sựthay đổi về phiếuđăng ký thì sẽ cập nhật và lưu lại những thuộctính trên
Thực thể Địa điểm :
Địa điểm là một thực thể trong đó bao gồm các thông tin
Tên thực thể : ĐỊA ĐIỂM
Tên viết tắt : DIADIEM
Các thuộc tính của thực thể :
DIADIEM(MADD , TENDD)
Mỗi địa điểm quản lý theo mã địa điểm Mã địa điểm là duy nhất, vì vậy ta chọn mã địa điểm làm khóa chính Khi có sự thay đổivề địa điểm thì sẽ cập nhật và lưu lại những thuộc tính trên
Thực thể Phiếu góp ý :
Phiếu góp ý là một thực thể trong đó bao gồm các thông tin
Tên thực thể : PHIẾU GÓP Ý
Trang 40Tên viết tắt : PHIEUGOPY
Các thuộc tính của thực thể :
PHIEUGOPY(MAPGY , MAKH , NGAY , NOIDUNG)
Mỗi phiếu góp ý quản lý theo mã phiếu góp ý Mã phiếu góp ýlà duy nhất , vì vậy ta mã phiếu góp ý làm khóa chính Khi có sựthay đổi về phiếu góp ý thì sẽ cập nhật và lưu lại những thuộc tínhtrên
b) Xác định các quan hệ :
Để xây dựng một cơ sở dữ liệu thì các thực thể này phải được kết nốichặt chẽ với nhau tạo thành một hệ thống thông tin liên quan
_ Thực thể TOUR và CHUYENDI :
Xét hai tập thực thể trên ta thấy mỗi tour sẽ có một hay nhiềuchuyến đi và mỗi chuyến đi chỉ thuộc một tour duy nhất Như vậyvới hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một– Nhiều
_ Thực thể TOUR và DIADIEM :
Xét hai tập thực thể trên ta thấy mỗi tour sẽ tham quan một haynhiều địa điểm và mỗi địa điểm sẽ có nhiều tour tham quan Nhưvậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệNhiều – Nhiều
_ Thực thể KHACHHANG và PHIEUDANGKY :
Xét hai tập thực thể trên ta thấy mỗi khách hàng sẽ có một hay nhiềuphiếu đăng ký và mỗi phiếu đăng ký chỉ thuộc một khách hàng duy