Đề tài Phân tích cơ sở dữ liệu quản lý cho cửa hàng thuốc tân dược

Viêc xây dựng hệ thống quản lý thông tin bằng máy tính phục vụ cho công tác quản lý việc bán thuốc cho cửa hàng thuốc tân dược là một bài toán thực tế và đươc áp dụng trong phạm vi rộng rãi. Đề tài này chỉ mang tính cục bố tuy nhiên hệ thống đã xây dựng và giải quyết được vấn đề của bài toán quản lý việc bán thuốc cho cửa hàng thuốc tân dược. Từ hệ thống căn bán này nếu được đầu tư về măt thời gian, công sức thì có thể phát triển thành chương trình tốt hơn so với yêu cầu thực tế và hệ thống mới chắc chắn sẽ giải quyết được vấn đề vướng mắc của công việc quản lý thuốc Qua thời gian học hỏi nghiên cứu cách thiết kế một chương trình ứng dụng thực tế hiện nay bằng máy tính đến nay em đã hoàn thành đề tài “quản lý việc bán thuốc cho cửa hàng thuốc tân dược”. Mặc dù chương trình chưa được hoàn hảo, song quá trình làm việc và tìm hiểu em đã học hỏi được nhiều điều bổ ích về phương pháp xây dựng một chương trình ứng dụng trong tin học. Biết được cách tổ dữ liệu chức sao cho hợp lý, phù hợp với yêu cầu của đề tài.

pdf39 trang | Chia sẻ: tuandn | Lượt xem: 3506 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Phân tích cơ sở dữ liệu quản lý cho cửa hàng thuốc tân dược, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 1 PHẦN I. CƠ SỞ DỮ LIỆU CHƯƠNG 1: KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU 1.1. Khái niệm cơ bản về hệ quản trị cơ sở dữ liệu. Từ trước đến nay trong giới tin học người ta thường nhắc về định nghĩa cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu là gì? Cơ sở dữ liệu bao gồm các thông tin được lưu trữ trong máy theo một quy định nào đó. Phần chương trình để có thể xử lý, thay đổi dữ liệu được gọi là hệ quan trị dữ liệu nó có nhiệm vụ rất quan trọng là một bộ diễn dịch với ngôn ngữ bậc cao nhằm giúp người sử dụng có thể dùng được hệ thống mà không cần quan tâm đến thuật toán chi tiết hoặc biểu diễn dữ liệu trong máy. 1.2. Kiến trúc một hệ cơ sở dữ liệu Một cơ sở dữ liệu được phân làm nhiều mức khác nhau. Ta có thể phân thành một cơ sở dữ liệu đơn giản và một hệ phần mềm QTCSDL. Phần CSDL vật lý: Là các tệp dữ liệu theo một cấu trúc nào đó được lưu trên các thiết bị nhớ thứ cấp (như đĩa từ, băng từ…). Phần CSDL mức khái niệm: Là một sự biểu diễn trừu tượng của CSDL vật lý. Các khung nhìn: Là cách nhìn, là quan niệm của từng người sử dụng đối với CSDL mức khái niệm. Sự khác nhau giữa khung nhìn và mức khái niệm thực chất là không lớn. User 1 User 2 Khung nhìn 1 Khung nhìn 1 User n Khung nhìn 1 CSDL mức khái niệm (logic) CSDL mức vật lý Hình 1- Sơ đồ kiến trúc một hệ CSDL TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 2 Thể hiện (instance). Khi CSDL đã được thiết kế, người ta thường quan tâm đến “bộ khung” hay còn gọi là “mẫu” của CSDL. Dữ liệu hiện có trong CSDL gọi là thể hiện của CSDL, khi dữ liệu thay đổi trong một chu kỳ thời gian nào đó thì “bộ khung” của CSDL vẫn không thay đổi. Lược đồ (Scheme). Thường “bộ khung” nêu trên bao gồm một số danh mục, hoặc chỉ tiêu hoặc một số kiểu của các thực thể trong CSDL. Giữa các thực thể có thể có mối quan hệ nào đó với nhau. Người ta sử dụng thuật ngữ “lược đồ” để thay thế cho khái niệm “bộ khung”. Lược đồ khái niệm là bộ khung của CSDL khái niệm, còn lược đồ vật lý dùng cho bộ khung của CSDL mức vật lý, khung nhìn được gọi là lược đồ con. Cơ sở dữ liệu vật lý. Mức thấp nhất của kiến trúc một hệ thống CSDL vật lý, CSDL vật lý có thể được xem là tổ chức ở nhiều mức khác nhau như bản ghi (record) và tệp (file). Lược đồ khái niệm và mô hình dữ liệu. Lược đồ khái niệm là sự biểu diễn thế giới thực bằng một loạt ngông ngữ phù hợp. QTCSDL cung cấp ngôn ngữ định nghĩa dữ liệu để xác định lược đồ khái niệm. Đây là ngôn ngữ bậc cao có khả năng mô tả lược đồ dữ liệu bằng cách biểu diễn của mô hình dữ liệu. Hiện có nhiều loại mô hình dữ liệu. Ba loại mô hình cơ bản đang được sử dụng là: 1. Mô hình phân cấp (hierachical model): Mô hình dữ liệu là một cây, trong đó các nút biểu diễn các tập thực thể, giữa nút con và nút cha được liên hệ theo một mối quan hệ xác định. 2. Mô hình dưới (Network model): Mô hình được biểu diễn là một đồ t hị có hướng. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 3 3. Mô hình quan hệ (Relational model): Mô hình này dựa trên cơ sở khái niệm lý thuyết tập hợp các quan hệ, tức là tập các k – bộ với k cố định. Tính độc lập dữ liệu. Tính độc lập dữ liệu là tính bất biến các hệ ứng dụng với các thay đổi trong cấu trúc truy nhập và chiến lược truy nhập. CHƯƠNG 2: MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ. 2.1. Các khái niệm cơ bản. Khái niệm toán học của mô hình quan hệ là quan hệ hiểu theo nghĩa lý t huyết tập hợp: Là tập con của tích Đề – Các của các miền. Miền (domain) là một tập các giá trị. Ví dụ: Tập các số nguyên, tập các xâu ký tự tạo thành tên người trong tiếng anh có độ dài không quá 30 ký tự, tập hai só {0,1} là một miền… Gọi D1, D2…, Dn là n miền. Tích Đề – Các của n miền là D1 x D2x…x Dn là tập tất cả n – bộ (n – tuples v1, v2…, vn) sao cho viDi với i = 1…n, v.v Ví dụ: n = 2, D1 = {0,1}, D2 = {a, b, c} khi đó. D1x D2 = {(0,a), (0,b), (0,c), (1,a),(1,b), (1,c)}. Quan hệ: Quan hệ là một tập hợp con của tích Đề – Các của một hoặc nhiều miền. Như vậy mối quan hệ có thể là vô hạn. Người ta giả thiết rằng, mối quan hệ là một tập hữu hạn. Mỗi hàng của quan hệ gọi là bộ. Quan hệ là tập con của tích Đề – Các D1 x D2 x…xDn gọi là quan hệ n – ngôi. Khi đó mỗi bộ của quan hệ có n thành phần (n cột). Các cột của quan hệ gọi là thuộc tính (attributes). Vậy người ta định nghĩa quan hệ như sau: Định nghĩa 2.1: Gọi R = {A1,…An} là một tập hữu hạn các thuộc tính, mỗi thuộc tính Ai với i=1 có miền giá trị tương ứng là dom (AI). Quan hệ trên tập thuộc tính R=(A1,…An) là tập con của tích Đề Các. rdom (A1)x…xdom (A2). TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 4 Khi đó ký hiệu là rđ hoặc r(A1,…,An). Ví dụ: Quan hệ NHAN _ VIEN bao gồm các thuộc tính HO_TEN, NAM_SINH, NOI_LAM_VIEC và LUONG là quan hệ 4 ngôi. NHAN_VIEN (Ho_ten Nam_sinh Noi_lam_viec Luong) T1 Le Van A 1960 Vien CNTT 425 T2 Hoang Thi B 1970 Truong DHBK 390 T3 Le Van son 1945 Vien CNTT 425 T1= (Le Van A, 1960, Vien CNTT, 425) là một quan hệ NHAN_ VIEN 2.2: Khoá Khoá (key) của một quan hệ r trên tập thuộc tính R = (A1,…,An) là tập con K  {A1,..,An} thoả mãn các tính chất sau đây: Với hai bộ {t1,t2  r đều tồn tại một thuộc tính AK sao cho T1 (A)  t2 (A). Nói một cách khác, không tồn tại hai bộ mà có giá trị bằng nhau trên mọi thuộc tính của K. Điều kiện này có thể viết t1 (K)  t2 (K). Do đó mỗi bộ giá trị của K là xác định duy nhất. Trong lược đồ quan hệ có thể có rất nhiều khoá. Việc tìm tất cả các khoá của lược đồ quan hệ là rất khó khăn. Để có thể định nghĩa khoá ta cần lưu ý rằng, nếu K’ là khoá của quan hệ r (A1,…, An) vì K’  K R, thì K cũng là khoá của r, nghĩa là bất kỳ t1, t2 r từ t1 (K’)  t2 (K’) luôn có t1 (K)  t2 (K). Định nghĩa 2.2: Khoá của quan hệ r trên tập thuôc tính R= { A1,…,An}là tập con KR sao cho bất kỳ bộ khác nhau t1,t2r luôn thoả t1 (K)  t2 (K) bất kỳ tập con thực sự K’  K nào đó đều không có tính đó. Tập K là siêu khoá của quan hệ r nếu K là khoá của quan hệ r. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 5 Ví dụ: Quan hệ HANG _HOA. HANG HOA (MSMH TEN _ HANG SO _ LUONG) 10101 Sắt phi 6 1000 10102 Sắt phi 8 2000 20001 Xi măng 1000 Trong đó mã số mặt hàng (MSMH) là khoá. Mỗi giá trị MSMH đều xác định duy nhất một mặt hàng trong quan hệ HANG _ HOA. 2.3. Các phép tính trên CSDL quan hệ a/ Phép chèn Phép chen thêm một bộ vào quan hệ R= {A1,…,An} có dạng r=r t INSERT (r; A1 = d1, A2= d2,…,An = dn) Trong đó Ai với i =1,…, n là tên các thuộc tính d1  dom (Ai) là các giá trị thuộc miền giá trị tương ứng của thuộc tính A1. Ví dụ: Thêm một bộ t4 = Vũ Văn Tần, 1960, trường ĐHBK, 425) vào quan hệ NHAN _ VIEN. INSERT(NHAN _ VIEN; HO_TEN = Vu Tan, NAM_ SINH = 1960, NOI _ LAM – VIEC = truong ĐHBK, LUONG = 425) Nếu xem thứ tự các trường là cố định, khi đó có thể biểu diễn phép chèn dưới dạng tường minh như sau: INSERT (r; d1, d2,…, dn) Mục đích của phép chèn là thêm một bộ phận vào một quan hệ nhất định kết quả của phép tính có thể gây nên một số sai sót với những lý do sau đây: 1. Bộ mới được thêm vào là không phù hợp với lược đồ quan hệ cho trước. 2. Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính đó. 3. Giá trị khoá của bộ mới có thể là giá trị đã cho trong quan hệ đang lưu trữ. Do vậy, tuỳ từng hệ cụ thể có những cách khắc phục riêng. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 6 b/ Phép loại bỏ (del) Phép loại bỏ (del) là phép xoá một bộ ra khỏi quan hệ cho trước. Phép loại bỏ có dạng như sau: r = r – t DEL (r;A1= d1, A2= d2,…,An) hoặc DEL (r,d1, d2,…dn) Ví dụ: Cần loại bỏ bộ t1 khỏi quan hệ NHAN _ VIEN DEL (NHAN _VIEN; Le Van A, 1960, Vien CNTT, 425) Tuy nhiên không phải lúc nào phép loại bỏ cũng cần đầy đủ thông tin về cả bộ cần loại. Nếu có giá trị về bộ đó tại các thuộc tính khoá K= {B1,B2,…, B1} khi đó phép loại bỏ chỉ cần viết: DEL (r; B1 = e1, B2 = e2,…, B1= e1) Ví dụ: Cần loại bỏ sắt phi 6 ra khỏi quan hệ HANG _ HOA, khi đó chỉ cần viết: DEL (HANG _ HOA; MSSMH = 10101). c/ Phép thay đổi (CH) Gọi tập (C1,…Cp)  {A1,..An} là tập các thuộc tính mà tại đó các giá trị của bộ cần thay đổi, khi đó phép thay đổi có dạng: R = r \ t U t’ CH(r;A1d1…,A2 = D2,…,An = Dn; C1 = e1, C2 = e2,…,Cp = ep). Nếu K = {B1,…Bm} là khoá của quan hệ khi đó cần viết: CH(r; B1 = d1, B2 = d2,…,Bm= dm, C1= e1, C2 = e2,…,Cp = ep). Ví dụ: Cần thay đổi số lượng của sắt phi 8 trong quan hệ HANG_HOA còn 150 tấn. Khi đó phép thay đổi có dạng: CH (HANG _ HOA; MSMH = 10102; SOLUONg = 150). Phép thay đổi là phép tính thuận lợi, hay dùng. Cũng có thể không dùng phép thay đổi mà dùng tổ hợp của phép loại bỏ và phép chèn một bộ mới. Do vậy những sai sót của phép thay đổi cũng sẽ xảy ra tương tự như phép chèn và phép loại bỏ. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 7 TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 8 CHƯƠNG 3: LÝ THUYẾT CƠ SỞ DỮ LIỆU QUAN HỆ 3.1. Phụ thuộc hàm. Khái niệm về phụ thuộc hàm (trong một quan hệ) là một quan niệm có tầm quan trọng hết sức đối với việc thiết kế mô hình dữ liệu. Năm 1970 EF Codd đã mô tả phụ thuộc hàm trong mô hình dữ liệu quan hệ, nhằm giải quyết việc phân rã không tổn thất thông tin. Sau đây là khái niệm một cách hình thức. Định nghĩa 3.1: Cho R(U) là một lược đồ quan hệ với U = {A1,…An} là tập thuộc tính X và Y là tập con của U. Nói rằng XY (X xác định hàm Y hay Y phụ thuộc hàm vào X) nếu r là một quan hệ xác định trên R (U) sao cho bất kỳ hai bộ t1, t2  r mà t1[X] = t2[X] thì t1[Y] = t2[Y]. Phụ thuộc hàm ký hiệu là FD. Chú ý: Phụ thuộc hàm chỉ xét các phụ thuộc hàm thoả mãn cho mọi quan hệ trên lược đồ tương ứng của nó. Không thể xem xét một phụ thuộc hàm thoả một quan hệ r đặc biệt (ví dụ quan hệ rỗng) của lược đồ R rồi sau đó quy nạp rằng phụ thuộc đó là thoả trên R. Ví dụ: Trong quan hệ S của hãng cung ứng, một trong số các thuộc tính SNAME, STATUS, CITY đều phụ thuộc vào thuộc tính S#. Mỗi giá trị S# tồn tại vừa đúng một giá trị tương ứng đối với từng thuộc tính SNAME, STATUS và CITY. Khi đó có thể viết: S# SNAME, S# STATUS, S# CITY. 3.1.1. Hệ tiên đề cho phụ thuộc hàm. Gọi F là tập tất cả các phụ thuộc hàm đối với lược đồ quan hệ R (U) và X Y là một phụ thuộc hàm, X, Y U. Nói rằng X Y được suy diễn logic từ F nếu mối quan hệ r trên R (U) đều thoả các phụ thuộc hàm của F thì cũng thoả X Y. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 9 Chẳng hạn F = {A B, BC] thì A C suy ra từ F. Gọi F+ là bao đóng của F, tức là tất cả các phụ thuộc hàm được suy diễn logic từ F. Nếu F = F+ thì F là họ đầy đủ của các phụ thuộc hàm. Để có thể xác định khoá của một lược đồ quan hệ và các suy diễn logic giữa các phụ thuộc hàm cần thiết phải tính được F+ từ F. Do đó đòi hỏi phải có các hệ tiền đề. Tập các quy tắc của hệ tiền đề được Armstrong đưa ra và được gọi là hệ tiên đề Armstrong. Gọi R(U) là lược đồ quan hệ U = {A1…,An} là tập các thuộc tính X, Y, Z, W R. Hệ tiên đề Armstrong bao gồm: 1. Phản xạ: Nếu Y  X thì XY. 2. Tăng trưởng: Nếu Z U và XY thì XZ YZ trong đó ký hiệu XZ là hợp của hai tập X và Y thay cho ký hiệu X Y. 3. Bắc cầu: Nếu X Y và Y Z thì X Z. * Bổ đề 3.1. Hệ tiên đề Armstrong là đúng. Có nghĩa F là tập các phụ thuộc hàm đúng trên quan hệ r. Nếu X Y là một phụ thuộc hàm được suy diễn từ F nhờ hệ tiên đề Armstrong thì XY là đúng trên quan hệ r. * Bổ đề 3.2. a. Luật hợp: Nếu X Y và X Z thì X YZ. b. Luật tựa bắc cầu: Nếu X Y và WYZ thì XW ZX. c. Luật tách: Nếu X Y và X Y thì X Z. 3.1.2. Sơ đồ quan hệ. Chúng ta gọi là sơ đồ quan hệ (SDQH)s là một cặp , ở đây R là tập hợp các thuộc tính và F là tập các phụ thuộc hàm trên R. Ký hiệu F+ là tập tất cả các phụ thuộc hàm dẫn xuất từ F bằng việc áp dụng các quy tắc trong hệ tiên đề Armstrong. Đặt A+ = {a: A{a}F+. A+ được gọi là bao đóng của A trên s. Có thể thấy rằng A BF+ nếu và chỉ nếu B A+. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 10 Tương tự chúng ta có thể đặt Ar + = {a: A{a}}. Ar+ được gọi là bao đóng của A trên r. Theo định nghĩa trên chúng ta thấy nếu s= là sơ đồ quan hệ thì có quan hệ r trên R sao cho Fr = F+. Quan hệ r như vậy chúng ta gọi là quan hệ Armstrong của s. Thuật toán tính bao đóng. Việc tính toán bao đóng F+ của tập các phụ thuộc hàm trong trường hợp tổng quát là rất khó khăn và tốn kém thời gian bởi vì các tập phụ thuộc hàm thuộc F+ rất lớn cho dù F có thể là nhỏ. Chẳng hạn F = {A B1, AB2,…ABn}. F+ khi đó cũng được tính cả những phụ thuộc hàm A B với Y {B1,…,Bn}. Như vậy sẽ có 2n tập con Y. Nhưng việc tính X+, bao đóng của tập thuộc tính X lại không khó. Theo bổ đề 3.3 việc kiểm tra (X Y) F+ không khó hơn việc tính X+. Tính bao đóng X+ sẽ được thể hiện qua bao đóng sau: Thuật toán: Tính bao đóng của tập các thuộc tính đối với một tập các phụ thuộc hàm. Vào: Tập U hữu hạn các thuộc tính, Tập các phụ thuộc hàm F trên U và X  U Ra: X+, bao đóng của X đối với F Phương pháp: Tính liên tiếp các thuộc tính X0,…, Xn theo quy tắc 1. X0 = X 2. Xi+1= X1  A sao cho  (Y Z) F, AZ,YXi Vì rằng X= X0 …U, U là hữu hạn cho nên sẽ tồn tại một chỉ số i nào đó mà Xi = X i+1 khi đó X+= Xi 3.1.3: Phủ của tập các phụ thuộc hàm Gọi F là G là tập các phụ thuộc hàm. Nói rằng F và G là tương đương nếu F+ = G+. Nếu Fvà G là tương đương đôi khi còn nói F phủ G ( và G phủ F). Nếu tồn tại một phụ thuộc hàm Y  Z mà thuộc F mà không thuộc G+ thì chắc chắn F+  G+. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 11 Nếu mỗi phụ thuộc hàm F cũng thuộc G+ thì mỗi phụ thuộc hàm V  W thuộc F+ cũng thuộc G+ Để kiểm tra mỗi phụ thuộc G là phụ thuộc F+ quá trình làm hoàn toàn tương tự. Do đó F và G là tương đương khi và chỉ khi mỗi phụ thuộc hàm F là thuộc G+ và mỗi phụ thuộc G là thuộc F+. Bổ đề 3.4 Mỗi các phụ thuộc hàm F đều được phủ bằng tập các phụ thuộc hàm G mà vế phải các phụ thuộc hàm đó không quá một thuộc tính Định lý 3.2 Mỗi tập phụ thuộc hàm F đều tương đương với một tập F+ tối thiểu. 3.2: Phép tách các lược đồ quan hệ Phép tách lược đồ quan hệ R{A1,…,An} là việc thay thế lược đồ quan hệ R bằng các tập lược đồ {R1,…,Rk }, trong đó Ri R,i=1,…, k và R= R1 R2…Rk. Ở đây không đòi hỏi các lược đồ Ri phải là phân biệt. Mục tiêu của phép tách chủ yếu là loại bỏ các dị thường dữ liệu gây ra. Ví dụ: Cho lược đồ quan hệ giươì cung cấp. S(SMANE,AĐ,PRO,PRICE) Và giả sử có các phụ thuộc hàm: SNAME  ADD; SNAME, PRO PRICE Lược đồ S có thể được thay bằng hai lược đồ khác. S1(SNAME,ADD) và S2 (SNAME,PRO, PRICE) Kết nối không mất mát thông tin. Nếu R là lược đồ quan hệ được tách thành các lược đồ con R1,R2,…, Rk và D là tập các phụ thuộc dữ liệu, nói rằng phép tách là - kết nối không mất mát thông tin đối với D nếu với mỗi quan hệ r trên R thoả D: R = R1 (r)* R2 (r)*… *Rk (r) tức là r được tạo nên từ phép kết nối tự nhiên của các hình chiếu của nó trên các Ri,i = 1,…, K Sau đây là một số tính chất của kết nối không mất mát thông tin. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 12 Tập các lược đồ: P= (R1,…,Rk) được thay thế cho lược đồ R. Gọi mp là ánh xạ xác định nhờ mp (r) = * Ri (r), có nghĩa là mp (r) là kết nối của các phép chiếu của r trên các lược đồ con trong p. Điều kiện để kết nối không mất mát thông tin đối với D được biểu diễn như sau: Với mọi r thoả D, r = mp (r) Bổ đề 3.5 Gọi R là lược đồ quan hệ p = (R1,…, Rk) là phép tách của R,r là quan hệ trên R và ri =  (r) thì: a. r  mp (r) b. Nếu s=mp (r) thì  Ri (s) ri c. mp (mp r))= mp (r) Trong trường hợp tách một lược đồ thành hai lược đồ con ta sẽ có định lý sau: Định lý: Nếu = (R1,R2) là một phép tách của R và F là tập phụ thuộc hàm thì là tách không mất mát thông tin đối với F khi và chỉ khi R1 R2  R1  R2 hoặc R1 R2 R2 R1 3.3: Chuẩn hoá lược đồ quan hệ Chuẩn hoá là quan hệ trong đó mỗi miền của thuộc tính chỉ chứa những giá trị nguyên tố tức là không phân nhỏ được nữa và do đó giá trị trong quan hệ cũng là nguyên tố. Chuẩn hoá là quan hệ trong đó mỗi miền của thuộc tính chỉ chứa những giá trị nguyên tố tức là không phân nhỏ được nữa và do đó mỗi giá trị trong quan hệ cũng là nguyên tố. Quan hệ có chứa các miền giá trị là không nguyên tố gọi là quan hệ chuẩn hoá. Mỗi quan hệ chuẩn hoá có thể thành một hoặc nhiều quan hệ chuẩn hoá khác và không làm mất mát thông tin. TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 13 Ví dụ: Trước Chưa chuẩn hoá S# PRO P# QTY 1 100 1 200 2 300 3 2 100 4 200 2 400 5 3 500 1 Hình – 2: Quan hệ không chuẩn hoá Sau Đã chuẩn hoá S# P# QTY 1 100 1 1 200 2 1 300 1 2 100 4 2 200 2 3 400 5 3 500 1 Hình – 3: Quan hệ chuẩn hoá TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 14 Trước khi mô tả chi tiết cac dạng chuẩn hoá cần thiết đưa ra một khái niệm sau đây. Cho một lược đồ quan hệ R trên tập thuộc tính U= {A1,…,}. Thuộc tính A U được gọi là thuộc tính khoá nếu A là thành phụ thuộc môt khoá nào đó của R, ngược lại A được gọi là thuộc tính không khoá. Định nghĩa: Cho lược đồ quan hệ R(U) trên tập thuộc tính U= {A1,…, Ak). X và Y là hai tập thuộc tính khác nhau X  U và Y  U. Y là phụ thuộc hàm đầy đủ vào X nếu Y là phụ thuộc hàm vào X những không phụ vào bất kỳ một tập họp con thực sự nào của X. Trong lý thuyết ban đầu Codd đưa ra có ba dạng chuẩn của quan hệ: Dạng không chuẩn hoá Dạng chuẩn thứ nhất (First Normal Form, viết tắt là 1NF) Dạng chuẩn thứ hai (2NF) Dạng chuẩn thứ ba (3NF) 3.3.1: Dạng chuẩn 1NF (First Normal Form) Dạng chuẩn 1NF chỉ áp dụng cho file dữ liệu chứ không áp dụng cho sơ đồ quan hệ hay nói cách khác chỉ liên quan đến dữ liệu chứ không liên quan đến cấu trúc. Cụ thể là: Định nghĩa 1NF: TR­êng ®¹i häc §HDL ph­¬ng ®«ng §å ¸n häc kú 6 Gi¸o viªn h­íng dÉn : TS- Lª Huy ThËp SV: Hoµng §øc V­¬ng 15 Một lược đồ quan hệ R được gọi là dạng chuẩm một (1NF) nếu và chỉ nếu toàn bộ các miền có mặt trong R đều chỉ chứa các giá trị nguyên tố. Định nghĩa này cho bất kỳ quan hệ chuẩn hoá nào cũng ở 1NF. 3.3.2: Dạng chuẩn thứ 2 (2NF) Định nghĩa 2NF: Lược đồ quan hệ R ở dạng chuẩn thứ hai nếu nó ở dạng chuẩn thứ nhất và nếu mỗi thuộc tính không khoá của R là phụ thuộc hàm đầy đủ vào khoá chính. Như vậy dạng chuẩn hai đòi hỏi một lược đồ quan hệ R trước tiên phải là dạng chuẩn 1NF và mọi thuộc tính thứ cấp đều phụ thuộc hàm hoàn toàn vào bất kỳ một khoá tối tiểu nào, như vậy tính chất của dạng chuẩn hai phụ thuộc vào 3 yếu tố; 1. Khoá tối tiểu 2. thuộc tính thứ cấp 3. Phụ thuộc hàm hoàn toàn 3.3.3: Dạng chuẩn thứ 3 (3NF) Định nghĩa phụ thuộc bắc cầu Để trình bày 3NF của các quan hệ, ở đây chúng ta đưa thêm vào khái niệm về phụ thuộc bắc cầu Cho một lược đồ quan hệ R(U); X là một tập con các thuộc tính X U,A là một thuộc tính thuộc U. A được gọi là phụ thuộc bắc cầu X trên R nếu tồn tại một tập con Y của R sao cho X Y, Y  A nhưngY  X (khô