1. Trang chủ
  2. » Công Nghệ Thông Tin

NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP CHỌN TRÊN TÍCH VÀ PHƯƠNG PHÁP SẮP NỐI

21 325 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 47,18 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP CHỌN TRÊN TÍCH VÀ PHƯƠNG PHÁP SẮP NỐI, CODE NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP CHỌN TRÊN TÍCH VÀ PHƯƠNG PHÁP SẮP NỐI, CÁCH THỨC HOẠT ĐỘNG CỦA NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP CHỌN TRÊN TÍCH VÀ PHƯƠNG PHÁP SẮP NỐI

Trang 1

MỤC LỤC

3 Thuật toán tạo ngẫu nhiên 2 quan hệ R và S Trang 5

4 Cài đặt chương trình tạo ngẫu nhiên 2 flie R.DAT và S.DAT Trang 5

CHƯƠNG II: NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP CHỌN

4 Cài đặt và chạy thử chương trình chọn trên tích Trang 9

CHƯƠNG III: NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP SẮP NỐI Trang 12

4 Cài đặt chương trình tạo 2 quan hệ R2 và bằng cách sắp xếp

2 quan hệ R và S tăng dần theo thuộc tính B Trang 16

5 Cài đặt và chạy thử chương trình sắp nối Trang 18

CHƯƠNG IV: TÀI LIỆU THAM KHẢO Trang 22

Trang 2

PHÂN CÔNG CÔNG VIỆC

1 Nguyễn Trọng Nghĩa -Viết chương trình cài đặt

thuật toán bằng phương phápchọn trên tích

- Viết chương trình cài đặt thuật toán bằng phương phápphương pháp sắp nối

2 Dương Phú Nhân -Viết chương trình sắp xếp

R2 và S2 theo R và S-Viết chương trình cài đặt thuật toán bằng phương phápchọn trên tích

3 Huỳnh Ngọc Nam -Viết chương trình tạo ngẫu

nhiên R và S

- Viết chương trình cài đặt thuật toán bằng phương phápphương pháp sắp nối

4 Lý Giang San -Viết báo cáo

- Viết chương trình cài đặt thuật toán bằng phương phápchọn trên tích

5 Nguyễn Văn Phúc - Viết chương trình cài đặt

thuật toán bằng phương phápphương pháp sắp nối

Trang 3

LỜI MỞ ĐẦU

Cơ sở dữ liệu là một trong các môn cơ sở quan trọng của nghành Tin học, có thể nói rằng cơ sở dữ liệu là môn học về phương pháp tổ chức lưu trữ và khai thác dữ liệu Đây là môn học cực kì quan trọng, bởi vì không một ứng dụng tin học nào mà không chứa đựng vấn đề tổ chức lưu trữ và khai thác dữ liệu

Cơ sở dữ liệu trở thành một trong những môn học quan trọng nhất, không thể thiếuđược trong chương trình đào tạo tin học hiện đại Các chuyên viên hệ thống thông tin cần phải được trang bị kiến thức để phân tích các yêu cầu của cơ sở dữ liệu, có thể thiết kế và cài đặt cơ sở dữ liệu chính xác và hiệu quả

Hiệu năng thực hiện một yêu cầu xử lí dữ liệu là vấn đề tối quan trọng đối với một

hệ quản trị CSDL Xử lí vấn tin (query processor) là một đơn thể trong các hệ quản trị CSDL có nhiệm vụ xác định thứ tự thực hiện một câu vấn tin nhằm tối ưu hóa câu vấn tin, nâng cao hiệu năng xử lý, tiết kiệm chi phí

Các phép toán lấy nối và tích có chi phí rất cao so với các phép toán đơn ngôi như phép chọn hay phép chiếu Vì vậy trình tối ưu hóa vấn tin phải hạ thấp tối đa chi phí của phép nối và tích nếu có thể Một trong những chiến lược giảm chi phí nối là tận dụng chỉ mục hoặc tiền xử lí các quan hệ trước khi nối Phương pháp sắp nối là một trong những cách tiếp cận đó

Trang 4

CHƯƠNG I: BÀI TOÁN ĐẶT RA

Trường A,C là các số ngẫu nhiên từ 0 đến 999

Trường B là các số ngẫu nhiên từ 0 đến 99

-Đầu ra : quan hệ RS là nối tự nhiên của quan hệ R và S, RS(A,B,C)

Khai báo các quan hệ và kiểu dữ liệu

Cài đặt quan hệ R dưới dạng file có tên là R.DAT chứa các bản ghi kiểu R , các bản ghi

có trường B giống nhau được đặt liên tiếp nhau và được xếp chặt, có giá trị R.B

Trang 5

};

Cài đặt quan hệ S dưới dạng file có tên là S.DAT chứa các bản ghi có S.B giống nhau được đặt liên tiếp nhau và được sắp xếp Có 1 giá trị S.B ta giả định S.B R.B => J<1-Quan hệ RS: là nối tự nhiên của 2 quan hệ R và S

=> RS.A có kiểu int

Mmax là hằng chỉ số khối đểbộ nhớ trong tối đa Khi đọc R và S phải khai số bản ghi đọc

là 15.Khối bộ nhớ để ghi RS khai báo dạng mảng Struct RSbanghi MRSkhoi 10

Kết quả nối là file RS.DAT chứa các bản ghi kiểu RS

Vậy : đầu vào: hai quan hệ ngẫu nhiên R và S 2file : R.DAT và S.DAT

đầu ra: file RS.DAT

3/ Thuật toán tạo hai quan hệ ngẫu nhiên R và S:

-Mở hai file R.DAT và S.DAT

+ Tạo phần tử ngẫu nhiên các phần tử A là các số từ 0 đến 999, B là các số từ 0 đến 99.+Gán từng phần tử A trong quan hệ R cho rand()%1000

+Gán từng phần tử B trong quan hệ R cho rand()%100

-Ghi tất cả các phần tử A, B vào file R.DAT

-Tương tự đối với file S.DAT, ta có dữ liệu đầu vào C là các số ngẫu nhiên từ 0 đến 999,

Trang 7

CHƯƠNG II: NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP CHỌN TRÊN TÍCH

1/ Thuật toán nối 2 quan hệ bằng phương pháp chọn trên tích:

Cho quan hệ R(A,B) và S(B,C) Các đơn giản để tính nối RS là đọc R và S tính tích RxS theo (giả sử S là quan hệ nhỏ hơn R) nhưng chỉ kết xuất những bộ khớp với những thuộc tính chung R và S Giả sử bộ nhớ trong có M khối, thuật toán cụ thể như sau: Dành(M-1) khối bộ nhớ chính để chứa các khối của S và 1 khối bộ nhớ chính để chứa cáckhối của R

Chia S thành những đoạn dài M=1 khối Với mỗi đoạn D của S được đọc vào bộ nhớ chính, ta nạp lần lượt từng khối K của R vào 1 khối trong bộ nhớ chính và thực hiện:for mỗi bộ v trong D do

for mỗi bộ u trong D do

Nếu u(B)=v(B)

kết xuất bộ uv= (u(A),u(B),v(C))

2/ Chi phí nối hai quan hệ bằng phương pháp chọn trên tích:

Chiến lược trên sẽ cần BS, lần truy suất khối s để đọc quan hệ S và mỗi khối của R sẽ được truy xuất d lần,trong đó d là số đoạn M-1 khối của S , vì d xấp xỉ bằng B R

M−1 nên chi phí đọc dữ liệu sẽ là: BS + B R B S

M−1

Ta ước lượng số lượng các khối chứa kết quả phép nối Gọi IB là kích thước miền kích thuộc tính B chung trong R và S Vì số lượng bộ trung bình của nối RS bằng số bộ của tích Đề -Các chia cho IB nên số khối trung bình của RS cũng bằng số khối của tích Đề -Các chia cho IB chi phí xuất dữ liệu là:

Trang 8

S BC 1b 2e 1h 2d 4b 3a

Giả sử mỗi khóa chứa được 2 bản ghi, bộ nhớ trong M=3 Khi đó số khối của R và S là

BR= 4 và BS = 3 Ta dành M -1=2 khối, ký hiệu MS, để đọc S, 1 khối ký hiệu MR, để đọc R.Cấu trúc MR và MS như sau :

B

C

Thực hiện vòng nối như sau

Vòng 1: Đọc 2 khối của S vào MS, ta được:

Các bản ghi của MS và MR không nối được vs nhau R S rỗng

- Đọc khối thứ 2 của R vào MR ta có

Trang 9

So sánh các bản ghi của MS vs ác bản ghi của MR, ta thấy bản ghi (1,b) và (1,h) của MS nối được vs các bản ghi (e,1) của MR và bản ghi (2,e) và (2,d) của MS nối được vs bản ghi (f,2) của MR Ghi tiếp các nối vào R S ta nhân được:

Trang 10

d=(m-1)*15;

x=500/d;

y=x*d;

for(i=0;i<1000;i++)

fscanf(f1, "%d\t%d\n", &r[i].A, &r[i].B);

for(i=0;i<500;i++)

fscanf(f2, "%d\t%d\n", &s[i].B, &s[i].C);

for(t=0;t<(x+1);t++){

if(t==x) d=500-y;

for(i=0;i<d;i++){

ms[i].B = s[k].B;

ms[i].C = s[k].C;

k++;

}

l=0; for(u=0;u<67;u++){ if(u==66){ for(j=0;j<10;j++){ mr[j].A = r[l].A; mr[j].B = r[l].B; l++; }

for(i=0;i<d;i++){ for(j=0;j<10;j++){ if(mr[j].B==ms[i].B){ fprintf(f3, "%d\t%d\t %d\n", mr[j].A, ms[i].B, ms[i].C); n++; }

}

}

}

else{ for(j=0;j<15;j++){ mr[j].A = r[l].A; mr[j].B = r[l].B; l++; }

for(i=0;i<d;i++){

for(j=0;j<15;j++){

if(mr[j].B==ms[i].B){

fprintf(f3, "%d\t%d\t%d\ n", mr[j].A, ms[i].B, ms[i].C);

Trang 11

n++;

}

}

}

}

}

}

fclose(f1); fclose(f2);

fclose(f3); } int main(){ int m; Rbanghi r[1000]; Sbanghi s[500]; Rbanghi mr[15]; RSbanghi rs[10000]; printf("Nhap vao so khoi bo nho trong(1<M<34): M="); scanf ("%d",&m); while(m<2 || m>33){ printf("Nhap lai so khoi bo nho trong(M<34): M="); scanf ("%d",&m); }

Sbanghi ms[(m-1)*10];

noi(r,s,mr,ms,rs,m);

getch();

}

Trang 12

CHƯƠNG III: NỐI 2 QUAN HỆ BẰNG PHƯƠNG PHÁP SẮP NỐI

Nếu u(B) = v(B) bằng giá trị thuộc tính B của các bản ghi trong vùng nhớ M’

(kết xuất các nối trong M’ ra đĩa,ghi u,v vào M’)

Đọc tiếp bản ghi u R và v∈ S

 Nếu u(B) < v(B)

Nếu u(B) bằng giá trị thuộc tính B của các bản ghi trong vùng nhớ M’

(Ghi u vào M’)

Nếu u(B) khác giá trị thuộc tính B của các bản ghi trong vùng nhớ M’

(Kết xuất các nối trong M’ ra đĩa)

Đọc tiếp bản ghi uR

 Nếu u(B) > v(B)

Nếu v(B) bằng giá trị thuộc tính B của các bản ghi trong vùng nhớ M’

(Ghi v vào M’)

Nếu v(B) khác giá trị thuộc tính B của các bản ghi trong vùng nhớ M’

(Kết xuất các nối trong M’ ra đĩa)

Đọc tiếp bản ghi v ∈ S

Until đọc hết hoặc R hoặc S

Nếu S hoặc R còn bản ghi thì đọc và ghi các bản ghi có giá trị thuộc tính B bằng giá trị thuộc tính B trong M’ vào M’

Kết xuất các nối trong M’ ra đĩa

2/ Chi phí nối hai quan hệ bằng phương pháp sắp nối:

Như vậy,với phương pháp trên mỗi khối của R và S chỉ cần đọc một lần, nên chi phí đọc của thuật toán là:

BS+BR (1.5)

Trang 13

Vấn đề còn lại là chọn phương pháp và tính chi phí sắp xếp R và S.Một trong các phươngpháp sắp xếp ngoại phổ biến là phương pháp sắp xếp trộn đa dòng ta sẽ ước lượng chi phícủa phương pháp này:

Sắp xếp trộn đa dòng(multiway merge sort):

Sắp xếp trộn đa dòng hoạt động bằng cách xây dựng các dòng chạy(run).Mỗi dòng chạy

là một chuỗi các bản ghi kế tiếp nhau trong R đã được sắp xếp thứ tự Qua mỗi vòng lặp

số dòng chạy trong R lại được giảm và thuật toán kết thúc chỉ khi còn một dòng chạy tức

là R đã được sắp xếp Ý tưởng của thuật toán như sau:

Giả sử ta có M khối bộ nhớ trong để lưu các khối đọc từ R và ít nhất một khối, thứ M+1, dành riêng để lưu các bộ đã được sắp xếp chờ ghi ra bộ nhớ thứ cấp Ở vòng đầu ta đọc các khối của R vào bộ nhớ chính, mỗi lần M khối và sắp xếp các bộ trong M khối này bằng một thuật toán sắp xếp thích hợp( ở đây dùng Quicksort).Ta bỏ qua chi phí sắp xếp nối vì nó không đáng kể so với chi phí đọc các khối Kết quả là R được phân hoạch thành

BR/M dòng chạy, mỗi dòng dài M khối

Ta chia R thành các nhóm, mỗi nhóm có M dòng chạy, nghĩa là mỗi nhóm, trừ nhóm cuối,có tối thiểu MP khối Sau đó chúng ta trộn mỗi nhóm này thành một dòng chạy bằng thuật toán trộn sử dụng M khối bộ nhớ như sau: đọc lần lượt từng khối của mỗi dòng chạy vào khối bộ nhớ chính, dành riêng cho dòng chạy đó; so sánh và sắp xếp các bộ lưu vào khối bộ nhớ thứ M+1 chờ để ghi ra bộ nhớ thứ cấp

Sau [logMB] vòng các dòng chạy được tạo ra có chiều dài tối thiểu là BR Khi đó R chỉ cómột sòng chạy tức là đã được sắp xếp

Bây giờ ta sẽ tính chi phí sắp xếp quan hệ R của thuật toán này Mỗi vòng phải đọc BRkhối của R và ghi BR khối đã sắp xếp tức là cần 2.BR thao tác truy xuất khối.Vì vậy, tổng chi phí truy xuất khối để sắp xếp R là:

Trang 14

Nối RS có cấu trúc

RS

ABC

Ta thực hiện thuật toán 4.2 để nối R và S như sau:

Trang 15

C e F gu(B)<v(B) Đưa u vào M

Trang 21

CHƯƠNG IV: TÀI LIỆU THAM KHẢO

- Gíao trình Cơ Sở Dữ Liệu Nâng Cao -PGS-TSKH TRẦN QUỐC CHIẾN

CHƯƠNG V: KẾT LUẬN

Sau quá trình tìm hiểu,nghiên cứu và được sự quan tâm giúp đỡ của thầy cô,nhóm chúng

em đã hoàn thành Bài Báo Cáo của mình.Trong quá trình làm đề tài không thể tránh khỏi những sai sót, chúng em mong nhận được những ý kiến đóng góp từ phía thầy cô và bạn bè

Cuối cùng, nhóm chúng em chân thành cảm ơn các thầy cô và đặc biệt là là giảng viên hướng dẫn TRẦN QUỐC CHIẾN đã giúp đỡ nhóm chúng em thực hiện đề tài này

Chúc thầy và các bạn sức khỏe !

Ngày đăng: 15/06/2014, 23:23

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w