Cho R={a1,a2,... ,an} là một tập hữu hạn và không rỗng các thuộc tính. Mỗi thuộc tính ai có miền giá trị là Da (các miền giá trị Da không nhất thiết phải khác
biệt nhau). Một quan hệ r trên R là các bộ {h1,h2,... ,hm} với mỗi hj (j=1,2,... , m) là một hàm:
hj :R -> sao cho hj (ai) ∈ Dai
Nói cách khác, một quan hệ r trên tập R là tập hợp con của tích Đề các của n miền giá trị Da1x Da2 x... x Dan
Giá trị n được gọi là bậc của r, giá trị M được gọi là lực lượng của r. Quan hệ r có thể biểu diễn dưới dạng bảng:
A1 a2 ... an
H1 H1(a1) H2(a2) ... h1(an) H2 H2(a1) H2(a2) ... h2(an)
... ... ... ... ...
hm hm(a1) hm(a2) ... hm(an)
2.1.2.4. Phụ thuộc hàm (Functional dependency )
Khái niệm phụ thuộc hàm là một khái niệm có tầm quan trong hết sức lớn đối với việc thiét kế CSDL quan hệ. Năm 1970 khái niệm này được E.F. Codd đề cập nhằm giả quyết vấn đề phân rã các quan hệ (khi chuẩn hoá quan hệ) mà không mất mát thông tin.
Có hai loại phụ thuộc hàm:
Phụ thuộc hàm trên quan hệ:
Cho R= {a1, a2, ..., an}là một tập hữu hạn không rỗng các thuộc tính, r={h1,h2, ..., hm} là một quan hệ trên R, và A,B ⊆ R. Khi đó ta nói A xác định hàm cho B hay B phụ thuộc hàm vào A trong r (ký pháp A -> B) nếu và chỉ nếu:
(∀hi,hj∈ r)( ∀a∈A)(hi(a)=hj(a)) ⇒ (∀b∈B)(hi(b)=hj(b)).
Phụ thuộc hàm trên tập thuộc tính:
thuộc hàm trên tập các thuộc tính R là một dãy ký tự có dạng A -> B với A,B ⊆ R.
2.1.2.5. Sơ đồ quan hệ (Relation schema)
Một sơ đồ quan hệ s là một cặp <R,F> trong đó R là một tập các thuộc tính, F là tập các phụ thuộc hàm trên R.
2.1.2.6. Khó
Giả sử r là một quan hệ trên R và K⊆ R. Khi đó K là một khó của r nếu K -> R. Gọi K là một khó tối thiểu của r nếu:
K là một khó của r.
Bất kỳ một tập con thực sự của K không là khó của r.
Các thuộc tính tham gia vào một khó được gọi là thuộc tính khó, các thuộc tính không tham gia vào một khó gọi là thuộc tính không khó (hay thuộc tính mô tả).
Từ định nghĩa của quan hệ và định nghĩa của khó dễ thấy rằng một quan hệ luôn có ít nhất một khó (tầm thường nhất là lấy R làm khó), có thể có nhiều khó và có thể có nhiều khó tối thiểu.
Từ định nghĩa của khó và định nghĩa của phụ thuộc hàm trên quan hệ ta có thể chứng minh rằng khó được dùng làm cơ sở để phân biệt hai bộ tuỳ ý trong một quan hệ. Trong thực tế khi cài đặt trên một hệ quản trị CSDL xét về mặt hiệu quả sử dụng thì người ta dựng khó tối thiểu để làm cơ sở nhận diện một bộ trong quan hệ, trong trường hợp có nhiều khó tối thiểu thì người ta chọn một khó tối thiểu và khó được chọn này gọi là khó chính (Primary key).
Ví dụ: xét quan hệ r trên bộ R={SCMT, Số thẻ, Họ và tên, chức vụ, Tên cơ quan chủ quản, địa chỉ} ta thấy quan hệ này ít nhất có các khó sau:
K= {Số thẻ}
K= {Số thẻ, Họ và tên}
K= {Số thẻ, Họ và tên, Tên cơ quan chủ quản} K= {SCMT}
K= {SCMT, Họ và tên, Tên cơ quan chủ quản}
Dễ thấy {Số thẻ} và {SCMT} là các khó tối thiểu. Nên khi cài đặt ta có thể chọn Số thẻ làm cơ sở để nhận diện các bộ và {Số thẻ} được gọi là khó chính.
2.1.2.7. Hệ tiên đề cho phụ thuộc hàm
Để xác định được khó của một quan hệ và các suy diễn logic giữa các phụ thuộc hàm đòi hỏi phải có các quy tắc suy diễn logic, muốn vậy phải xây dựng hệ tiên đề cho phụ thuộc hàm.
Cho R là một tập hữu hạn không rỗng các thuộc tính, ký pháp P(R) là tập các tập con của R, giả sử A,B,C ∈ P(R) ta có:
Tiên đề 1(Phản xạ): B ⊆ A thì A -> B
Tiên đề 2(Tăng trưởng): A -> B thì A∪B -> B ∪C Tiên đề 3: (Bắc cầu): A -> B và B -> C thì A -> C
Hệ tiên đề trên do W.W. Armstrong phát biểu đầu tiên năm 1974 nên còn được gọi là hệ tiên đề Armstrong.
2.4.3. Chuẩn hoá các quan hệ và sơ đồ quan hệ
Việc chuẩn hoá các quan hệ và sơ đồ quan hệ đống vai trò cực kỳ quan trọng trong việc thiết kế các CSDL, hệ quản trị CSDL trên CSDL quan hệ. Nhờ việc chuẩn hoá các quan hệ và các sơ đồ quan hệ mà chúng ta tránh được việc dư thừa dữ liệu, loại bỏ được các dị thường dữ liệu, giảm dung lượng lưu trữ và tăng tốc độ của các thao tác trên dữ liệu.
Vào năm 1970, tiến sĩ E.F.Codd của IBM đã đưa ra các định nghĩa về các dạng chuẩn của của quan hệ và các thuật toán đưa quan hệ về các dạng chuẩn.
2.4.3.1. Các định nghĩa về dạng chuẩn trong quan hệ
Để đơn giản trong việc đưa ra các định nghĩa về các dạng chuẩn của quan hệ ta đưa ra ba định nghĩa sau:
Giả sử r là một quan hệ trên tập thuộc tính R, gọi Kr là tập các khó tối thiểu của r. Ta nói rằng a là một thuộc tính cơ bản (Prime) của r nếu tồn tại một khó tối thiểu K∈ Kr để a là một phần tử của K. Nếu a không thoả mãn tính chất trên thì a được gọi là thuộc tính thứ cấp của r.
Định nghĩa về phụ thuộc hàm đầy đủ:
Giả sử r là một quan hệ trên tập thuộc tính R và A,B ∈ P(R), khi đó B được gọi là phụ thuộc hàm đầy đủ vào A nếu B phụ thuộc hàm vào A nhưng không phụ thuộc hàm vào bất kỳ một tập con thực sự nào của A.
Định nghĩa về phụ thuộc hàm bắc cầu:
Giả sử r là một quan hệ trên tập thuộc tính R và A,C ∈ P(R) khi đó C được gọi là phụ thuộc hàm bắc cầu vào A trên R nếu tồn tại B ∈ P(R)
Sao cho : A -> B, B -> C, nhưng B không xác định hàm A với C ⊄ A ∪B Điều kiện C ⊄ A ∪B cần để tránh trường hợp C ⊆ B ⊆ A khi đó theo tiên đề phản xạ ta luôn có A -> B -> C, còn điều kiện B không xác định hàm A để loại bỏ nhiều khó không cần thiết
Quan hệ ở dạng chuẩn một (First Normal Form –1NF):
Một quan hệ được gọi là ở dạng chuẩn một nếu mỗi miền giá trị của mọi thuộc tính chỉ chứa những giá trị nguyên tố (atomic) tức là không chia nhỏ hơn được nữa.
Quan hệ ở dạng chuẩn hai (Second Normal Form – 2NF) :
Một quan hệ được gọi là ở dạng chuẩn hai nếu: - Nó đã ở dạng chuẩn một
- Mọi thuộc tính thứ cấp phụ thuộc hàm đầy đủ vào khó chính
Quan hệ ở dang chuẩn ba (Third Normal Form – 3NF):
Một quan hệ được gọi là ở dạng chuẩn ba nếu: - Nó đã ở dạng chuẩn hai.
cách khác, tất cả các phụ thuộc hàm giữa khó chính và các thuộc tính khác của nó đều trực tiếp.
Ngoài ba chuẩn trên còn có các chuẩn 4NF, 5NF nhưng trong thực tế người ta chỉ áp dụng việc chuẩn hoá quan hệ về dạng chuẩn ba là chủ yếu.
2.4.3.2. Thực hiện chuẩn hoáĐưa quan hệ về dạng chuẩn một: Đưa quan hệ về dạng chuẩn một:
Thông thường các quan hệ vi phạm điều kiện của dạng chuẩn một theo các trường hợp sau:
Mọi giá trị xuất hiện trong một thuộc tính có thể chia thành một số phần nhất định. Ví dụ thuộc tính Cơ quan chủ quản có thể chia thành Trường, Khoa, lớp. Như vậy trong trường hợp này ta chỉ việc tách thuộc tính ấy thành các thuộc tính cụ thể hơn. Các giá trị xuất hiện trong một thuộc tính có thể chia nhỏ nhưng không thể chia thành cùng một số thành phần nhất định. Trong trường hợp này ta phải thêm các bộ mới.
Đưa quan hệ về dạng chuẩn hai:
Trước hết ta giả thiết là quan hệ đã ở dạng chuẩn một đối với tập R tất cả các thuộc tính. Tiếp đến vấn đề dặt ra là : Tập thuộc tính nào là khó chính của quan hệ (khó chính của quan hệ có thể xác định bằng ngữ nghĩa của các thuộc tính). Giả sử khó chính đã được xác định là K.
Sự vi phạm điều kiện của dạng chuẩn hai thể hiện ở chỗ tồn tại một tập thuộc tính Y chỉ phụ thuộc hàm vào mộy bộ phận của khó chính là K’ ⊂ K. Khi ấy ta thực hiện phân rã quan hệ bằng cách đưa các thuộc tính {K’,Y} sang một quan hệ và các thuộc tính R - Y sang một quan hệ khác. Rõ ràng, K là khó chính của quan hệ chứa các thuộc tính {R- Y}, còn K’ là khó chính của quan hệ chứa các thuộc tính {K’,Y}.
Đưa quan hệ về dạng chuẩn ba:
Để đưa quan hệ chưa ở dạng chuẩn ba về các quan hệ ở dạng chuẩn ba ta giả thiết nó đã ở dạng chuẩn hai và phải thực hiện các bước sau:
Tìm một khó chính của quan hệ
Nếu tìm thấy phụ thuộc hàm bắc cầu như vậy ta sẽ phân rã quân hệ thành hai quan hệ {X,Y} và R-Y.
Kiểm tra đối với các quan hệ vừa nhận được đẫ ở dạng chuẩn ba chưa, nếu chưa thì thực hiện phân rã tiếp như trên. Ta có thể hình dung các vị trí các dạng chuẩn như hình sau hình sau:
2.4.3.3. Liên kết các quan hệ
Xét một hệ thống thông tin, do quá trình thiết kế CSDL, chẳng hạn từ một quan hệ ban đầu ta có thể phân rã thành nhiều quan hệ khi tiến hành chuẩn hoá. Nhưng để cập nhật truy xuất thông tin ta phải liên kết các quan hệ có liên quan đến nhau. Thường có ba loại liên kết: Liên kết 1 - 1, Liên kết 1 - n, Liên kết móc xích; trong đó liên kết 1 - 1 là liên kết cơ bản còn hai liên kết còn lại thực chất là tổ hợp các liên kết 1 - 1. Để có thể liên kết được hai quan hệ với nhau, đối với mỗi quan hệ ta phải xác định được khó liên kết. Khó liên kết là tổ hợp thuộc tính của mỗi quan hệ, mà nhờ có tổ hợp này ta có thể liên kết quan hệ này với quan hệ kia bằng cách so sánh giá trị của tổ hợp này đối với các bộ của mỗi quan hệ, nếu mỗi quan hệ có ít nhất một bộ giá trị bằng nhau thì hai bộ này đặt tương ứng với nhau. Trong liên kiết 1-1 ta phải xác định quan hệ nào là chính, quan hệ còn lại sẽ là phụ. Khó liên kết ở quan hệ chính được gọi là khó ngoại (Foriengn key), còn khó liên kết ở quan hệ phụ là khó chính ở quan hệ phụ.
CHƯƠNG III
PHÂN TÍCH VÀ THIẾT KẾ WEBSITE ĐẶT VÉ HÀNG KHÔNG
1NF 2NF 3NF
Xây dựng Web site đặt vé hàng không chỉ là một phần nhỏ trong web site quản lý về vấn đề vé của hãng hàng không do thời gian có hạn nên trong đồ án em chỉ đề cập đến phần thiết kế Website cho việc đặt vé.
3.1. Phân tích yêu cầu của đề tài
Website này được xây dựng nhằm mục đích giới thiệu về hãng hàng không quốc gia Việt nam – Vietnam airline và giúp khách hàng đặt mua vé máy bay qua mạng. Website có những nội dung chính sau:
Giới thiệu về Vietnam airline trong lịch sử, hiện tại, các tin tức cập nhật về hãng hàng không quốc gia Vietnam.
Là nơi để khách hàng trao đổi, đóng góp ý kiến cho Vietnam airline, đồng thời bày tỏ những thắc mắc của mình đối với chúng tôi.
Cuối cùng, mục đích chính của website này chính là để khách hàng có thể đặt mua vé máy bay qua mạng, nhờ đó, khách hàng sẽ tiết kiệm được công sức và thời gian.
Đối tượng sử dụng website là các khách hàng của Vietnam airline và những người quan tâm đến Vietnam airline.
3.2. Các yêu cầu
Client
1. Đầu vào đối với client:
a. Đặt mua vé:
Để đặt mua vé, khách hàng phải nhập vào các thông tin sau:
Tân khách hàng đặt mua vé.
Điện thoại
Loại vé.
Số lượng vé Địa chỉ Email Ngày bay Thành phố đi Thành phố đến Các yêu cầu khác
Nếu là khàch hàng thường xuyên thì phải nhập thêm cả tên truy cập và mật khẩu để dễ nhận biết.
b. Xem thông tin:
Trang này sẽ giúp khách hàng tìm hiểu về các chuyến bay trong những ngày sắp tới. Để xem được các thông tin đó khách hàng chỉ cần cho biết ngày bay. Chúng tôi sẽ liệt kê các chuyến bay trong ngày đó
c. Hỏi đáp:
Phần này khách hàng sẽ đưa ra các ý kiến và thắc mắc cần giải đáp. Khách hàng sẽ phải đưa vào:
Họ và tên khách hàng
Câu hỏi
2.Xử lý:
c. Đặt vé:
Khách hàng nhập vào các thông tin cần thiết. Căn cứ vào ngày bay sẽ đưa ra danh sách các chuyến bay trong ngày để khách hàng chon. Sau đó khách hàng tiếp tục nhập các thông tin khác. Các thông tin này sẽ được đưa vào bảng dữ liệu tên là KHACHHANG và SOLUONGVE. Sau đó khách hàng sẽ được thông báo rằng việc đặt mua đã thành công. Nếu khách hàng là khách hàng thường xuyên thì thông tin chỉ cần đưa vào bảng SOLUONGVE là đủ.
b. Xem thông tin:
Sau khi khách hàng nhập vào ngày đi, thông tin sẽ được kết nối với cơ sở dữ liệu. Sau đó, những thông tin mà khách hàng quan tâm sẽ được hiển thị.
c. Hỏi đáp:
Những ý kiến đóng góp của khách hàng được lưu vào cơ sở dữ liệu. Các nhà quản trị sẽ trả lời các câu hỏi này. Khách hàng có thể xem các câu trả lời ở phần sau.
3. Đầu ra:
a. Đặt vé:
Hiển thị thông báo cho biết việc đặt hàng đã thành công. b. Xem thông tin:
Hiển thị thông tin mà khách hàng quan tâm ở dạng bảng, thông tin bao gồm: Các chuyến bay trong ngày, giờ bay, nơi đi, nơi đến...
c. Hỏi đáp:
Thông báo cho khách hàng biết câu hỏi đã được ghi nhận và sẽ được trả lời trong thời gian gần nhất. Phần trả lời đưa ra các câu hỏi đã được trả lời.
SERVER
1. Đầu vào đối với server:
a. Cập nhật thông tin:
Trang này sẽ cập nhật các thông tin cho website. Thông tin cần đưa vào:
Idadmin (để xác định người đã cập nhật thông tin)
Tiêu đề
Loại tin (thông báo hay là giải trí)
Tóm tắt tin
Nội dung tin tức b. Xoá đơn dặt hàng:
các đơn không hợp lệ. Tên của khách hàng được liệt kê, người quản trị chỉ cần chọn tên của khách hàng cần xoá.
c.Trả lời câu hỏi:
Trang này sẽ làm nhiệm vụ trả lời các câu hỏi đã được khách đưa vào Người quản trị chọn câu hỏi rồi sau đó trả lời
2. Xử lý:
a. Cập nhật thông tin:
Người quản đưa vào thông tin cần cập nhật. Chương trình sẽ lưu thông tin đó vào bảng Thông tin. Sau đó bảng này sẽ dựng để truy xuất dữ liệu ra trang Thongbao và giaitri.
b. Xoá đơn đặt hàng:
Người quản trị chọn khách hàng muốn xoá, khách hàng sẽ bị xoá trong bảng KHACHHANG
c.Trả lời câu hỏi:
Người quản trị chọn câu hỏi, sau đó trả lời. Câu trả lời và Idadmin được update vào bảng HOIDAP. Câu trả lời này sau đó sẽ được đưa ra để khách hàng xem.
3. Đầu ra:
a. Cập nhật thông tin:
In ra thông báo việc cập nhật thành công. b. Xoá đơn đặt hàng:
Thông báo đơn đặt hàng đã bị xoá. c. Trả lời câu hỏi:
Thông báo câu hỏi đã được trả lời
3.3. Biểu đồ phân cấp chức năng
Biểu đồ luồng dữ liệu
Các ký hiệu sử dụng:
Biểu đồ luồng dữ liệu mức ngữ cảnh
Website Giới thiệu TT Các dịch vụ