CHƯƠNG 3 CHƯƠNG TRÌNH THỰC NGHIỆM
3.3.6 Chuẩn hoá lược đồ quan hệ thành dạng chuẩn
Dạng chuẩn 1NF:là dạng chuẩn mà tất cả các thuộc tính của lược đồ quan hệ đều là thuộc tính đơn . Đây là dạng chuẩn đơn giản nhất nó không chú ý đến các phụ thuộc hàm do đó có rất nhiều trùng lặp thông tin do các phụ thuộc hàm gây ra.
Dạng chuẩn 2NF:lược đồ quan hệ đạt 2NF nếu đạt 1NF và tất cả các thuộc tính không khoá phụ thuộc hàm đầy đủ vào khoá.
Dạng chuẩn 3NF:lược đồ quan hệ đạt 3NF nếu nó đạt 2NF và tất cả những thuộc tính không khoá không phụ thuộc hàm bắc cầu vào khoá.
Dạng chuẩn BCNF:lược đồ quan hệ đạt BCNF nếu đạt 1NF và mọi phụ thuộc hàm không hiển nhiên X Y Є F+ thì vế trái X là siêu khoá.
Vậy với mục đích là xây dựng một tập lược đồ quan hệ cho phép ta lưu trữ thông tin thuận lợi ,sao cho tránh những thông tin dư thừa không cần thiết và khai thác dữ liệu được dễ dàng .Cùng với mục đích đó ta sẽ xây dựng lược đồ quan hệ của cơ sở dữ liệu “Lấy tin tự động “ theo dạng chuẩn BCNF.Quá trình chuẩn hoá được thực hiện như sau:
*Xét quan hệ : Content_sources ( id, content_type_code, source_code, source_name, content, last_change, status) có khóa là chính id
Có tập phụ thuộc hàm
F1={id→source_code;idcontent_type_code;idsource_name;id,source_name
content; id,contentlast_change ,status}
Xét id,contentlast_change ,status Giả sử content dư thừa
TacóF11={id→source_code;idcontent_type_code;idsource_name;id,source_
namecontent; idlast_change ,status}
Kiểm tra idlast_change ,status F1+ ? (id)+F1
=id,source_code,content_type_code,source_name,content,last_change,status
last_change,status
→ idlast_change ,status F1+
Id,contentlast_change ,status F11 ?
(id,content)+F11=
id,source_code,content_type_code,source_name,content,last_change,status
last_changee,status
→ Id,contentlast_change ,status F+11
Vậy content dư thừa Fc =
F11={id→source_code;idcontent_type_code;idsource_name;id,source_name
content; idlast_change ,status}
Từ tập phụ thuộc hàm F11 trên ta thấy quan hệ content_sources chưa đạt chuẩn BCNF vì id, source_name không phải là siêu khóa.
Xét quan hệ id,source_namecontent Giả sử source_name dư thừa
→F12={id→source_code;idcontent_type_code;idsource_name;idcontent;
idlast_change ,status}
Kiểm tra idcontent F+12 ? (id)+F11=
id,source_code,content_type_code,source_name,content,last_change,status
content
→ id content F+11
id,source_namecontent F12? (id,source_name) =
id,source_code,content_type_code,source_name,content,last_change,status
content
id,source_namecontent F+12
Vậy source_name dư thừa Fc1=
F12={id→source_code;idcontent_type_code;idsource_name;idcontent;
idlast_change ,status}
Vậy từ tập phụ thuộc hàm F12 ở trên ta thấy id→source_code thì id lá siêu khóa
idcontent_type_code thì id lá siêu khóa idsource_name thì id lá siêu khóa idcontent thì id lá siêu khóa
idlast_change ,status thì id lá siêu khóa
Vậy quan hệ content_sources đạt dạng chuẩn BCNF với tập phụ thuộc hàm F12
*Xét quan hệ Crawler_contents ( id, type_code, name, description, last_crawler_time
Có tập phụ thuộc hàm
F2={idtype_code; id name; id, name description, last_crawler_time}
Xét id, name description, last_crawler_time Giả sử name dư thừa
→ F21={idtype_code; id name; id description, last_crawler_time}
Kiểm tra id description, last_crawler_time F+2 ?
(id)+F2= id,type_code,name,description,last_crawler_time description,last_crawler_time
→ id description, last_crawler_time F+2
id, name description, last_crawler_time F+21?
(id,name)+F21= id,type_code,name,description,last_crawler_time description,last_crawler_time
→ id, name description, last_crawler_time F+21
Vậy name dư thừa Fc2= F21={idtype_code; id name; id description, last_crawler_time}
Vậy từ tập phụ thuộc hàm F21 ở trên ta thấy idtype_code thì id lá siêu khóa
id name thì id lá siêu khóa
id description, last_crawler_time thì id lá siêu khóa
Vậy quan hệ crawler đạt dạng chuẩn BCNF với tập phụ thuộc hàm F21