Bài giảng Tổng quan về cơ sở dữ liệu

Tài liệu Bài giảng Tổng quan về cơ sở dữ liệu

pdf7 trang | Chia sẻ: hunglv | Lượt xem: 1530 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Tổng quan về cơ sở dữ liệu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 1 Chæång 1: TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU 1 Chæïc Nàng Cuía Mäüt Hãû Quaín Trë Cå Såí Dæî Liãûu 1.1. Caïc Khaïi Niãûm Vãö Cå Såí Dæî Liãûu Âãø dãù daìng cho viãûc giaíi thiïch caïc khaïi niãûm vãö Cå Såí Dæî Liãûu, træåïc hãút ta xem xeït hãû thäúng baïn veï may bay bàòng maïy tênh. Dæî liãûu læu træî trong maïy tênh bao gäöm caïc thäng tin vãö haình khaïch, chuyãún bay, âæåìng bay ... Moüi thäng tin vãö mäúi quan hãû naìy âæåüc biãøu diãùn trong maïy tênh thäng qua viãûc âàût chäø cuía khaïch haìng. Váûy laìm thãú naìo âãø biãøu diãùn âæåüc dæî liãûu âoï vaì âãø âaím baío cho khaïch haìng âi âuïng chuyãún bay. Táûp håüp dæî liãûu trãn âæåüc læu træî trong maïy tênh theo mäüt quy âënh naìo âoï vaì âæåüc goüi laì Cå Såí Dæî Liãûu( Database - CSDL) 1.2. Hãû quaín trë Cå Såí Dæî Liãûu 1.2.1. Âënh nghéa: Pháön Chæång trçnh coï thãø xæí lyï, thay âäøi dæî liãûu goüi laì hãû quaín trë Cå Såí Dæî Liãûu (Database management System - viãút tàõt DBMS) 1.2.2 Nhæîng khaí nàng cuía Hãû quaín trë Cå Såí Dæî Liãûu Coï hai âàûc tênh âãø phán biãût DBMS våïi caïc hãû thäúng láûp trçnh khaïc, âoï laì: 1. Khaí nàng quaín lyï nhæîng dæî liãûu cäú âënh 2. Khaí nàng truy xuáút coï hiãûu quaí mäüt khäúi læåüng dæî liãûu låïn Âiãøm (1) khàón âënh ràòng coï mäüt CSDL täön taûi thæåìng xuyãn ; näüi dung cuía Cå Såí Dæî Liãûu naìy laì nhæîng dæî liãûu âæåüc DBMS truy xuáút vaì quaín lyï. Âiãøm (2) phán biãût mäüt DBMS våïi mäüt hãû thäúng táûp tin cuîng quaín lyï dæî liãûu nhæng noïi chung khäng cho pheïp truy xuáút nhanh choïng caïc thaình pháön tuìy yï cuía dæî liãûu . Nhæîng khaí nàng cuía mäüt DBMS seî ráút cáön thiãút khi säú læåüng dæî liãûu ráút låïn. Hai âàûc tênh trãn laì hai âàûc tênh cå baín cuía mäüt DBMS, ngoaìi ra mäüt DBMS thæåìng coï caïc khaí nàng sau: - Häù tråü êt nháút mäüt mä hçnh dæî liãûu (Data model) nhåì âoï ngæåìi sæí duûng coï thãø xem âæåüc dæî liãûu. - Häù tråü mäüt säú ngän ngæî báûc cao cho pheïp ngæåìi sæí duûng âënh nghéa caïc cáúu truïc dæî liãûu, truy xuáút vaì thao taïc dæî liãûu . - Quaín lyï giao dëch, nghéa laì cho pheïp nhiãöu ngæåìi sæí duûng truy xuáút âäöng thåìi vaì chênh xaïc âãún mäüt Cå Såí Dæî Liãûu . - Âiãöu khiãøn caïc quaï trçnh truy xuáút, laì khaí nàng giåïi haûn caïc quaï trçnh truy xuáút dæî liãûu cuía nhæîng ngæåìi khäng âæåüc pheïp , vaì khaí nàng kiãøm tra âäü tin cáûy cuía dæî liãûu Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 2 - Caïc âàûc tênh tæû thêch æïng, laì khaí nàng tæû phuûc häöi laûi dæî liãûu do sæû cäú cuía hãû thäúng maì khäng laìm máút dæî liãûu 1.3 Caïc mä hçnh dæî liãûu Mäüt DBMS cáön phaíi cung cáúp êt nháút mäüt mä hçnh træìu tæåüng qua âoï ngæåìi sæí duûng coï thãø tháúy âæåüc dæî liãûu khäng phaíi bàòng caïc bit “thä” maì bàòng caïc daûng dãù hiãøu, dãù nháûn biãút hån. Trong thæûc tãú caïc Cå Såí Dæî Liãûu coï thãø coï mäüt vaìi mæïc træìu tæåüng , trong âoï mæïc tháúp nháút laì táûp håüp caïc file dæî liãûu ( Mæïc váût lyï) Vê duû: Xeït mäüt täøng cäng ty coï nhiãöu cäng ty con vaì häö så vãö caïc nhán viãn cuía täøng cäng ty coï thãø âæåüc læu træî trong mäüt file dæî liãûu gäöm caïc træåìng MNV( maî nhán viãn), HOTEN, LUONG_NV, ÂIACHI... âãø âån giaín ta giaí thiãút cáúu truïc baín ghi gäöm 2 træåìng sau: TEN_NV: hoü tãn nhán viãn NGUOI_QL: Hoü tãn giaïm âäúc cäng ty nåi nhán viãn laìm viãûc. Khi âoï cáúu truïc baín ghi nhæ sau: Record TEN_NV: char[30]; NGUOI_QL: char[30]; end; Khi âoï file dæî liãûu laì táûp caïc baín ghi vaì mäùi baín ghi chæïa thäng tin vãö mäüt nhán viãn cuía cäng ty. Trong nhiãöu mä hçnh Cå Såí Dæî Liãûu ngæåìi ta sæí duûng caïc quan hãû thay cho caïc file Quan hãû : NHAN_VIEN(TEN_NV,NGUOI_QL) Ta cáön phán biãût giæîa file vaì quan hãû Trong file caïc baín ghi khäng nháút thiãút phaíi phán biãût Trong quan hãû, caïc baín ghi(bäü) cáön phaíi phán biãût nhau. 1.4 Hiãûu quaí truy cáûp dæî liãûu Caïc hãû âiãöu haình âãöu coï khaí nàng täø chæïc vaì læu træî caïc táûp tin vç váûy viãûc læu træî caïc táûp tin dæî liãûu âäúi våïi DBMS laì khäng âaïng chuï yï. Hiãûu quaí cuía caïc DBMS trong viãûc xæí lyï trãn caïc táûp tin laì täø chæïc caïc táûp tin phuû hoàûc caïc cäng cuû häù tråü âãø truy cáûp dæî liãûu nhanh choïng, këp thåìi . Chàón haûn caïc file INDEX, hoàûc caïc haìm HASH. 1.5 Quaín lyï giao dëch Ngaìy nay do sæû phaït triãøn cuía maûng maïy tênh maì caïc Cå Såí Dæî Liãûu låïn coï thãø âæåüc sæí duûng båíi nhiãöu ngæåìi trãn caïc maïy tênh khaïc nhau vç váûy caïc DBMS cáön phaíi cung cáúp mäüt khaí nàng quaín lyï sæû truy cáûp dæî liãûu cuía nhiãöu ngæåìi sæí duûng. Chàón haûn caïc dæî liãûu vãö taìi khoaín cuïa ngán haìng âæåüc sæí duûng båíi haìng vaûn khaïch haìng trãn caïc maïy tênh khaïc nhau hoàûc trãn caïc maïy âäøi tiãön tæû âäüng; Cå Såí Dæî Liãûu phuûc vuû cho viãûc âàût chäø cho mäüt haîng haìng khäng âæåüc sæí duûng båíi haìng ngaìn âaûi lyï cuía haîng haìng khäng âoï trãn khàõp thãú giåïi. Viãûc truy cáûp âäöng thåìi thæåìng xaíy ra hiãûn tæåüng xung âäüt Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 3 giao dëch giæîa caïc khaïch haìng trãn cuìng mäüt haûng muûc dæî liãûu , vç váûy DBMS cáön phaíi cung cáúp mäüt khaí nàng khoïa dæî liãûu (clock data) khi coï ngæåìi sæí duûng truy cáûp âãún haûng muûc dæî liãûu âoï. 1.6 An toaìn dæî liãûu Mäüt DBMS cáön phaíi coï khaí nàng phuûc häöi laûi dæî liãûu khi coï sæû hoíng hoïc xaíy ra, âäöng thåìi vaì ráút quan troüng laì baío vãû sæû truy cáûp cuía caïc ngæåìi sæí duûng khäng âæåüc pheïp . Âãø thæûc hiãûn cäng viãûc naìy caïc DBMS cho pheïp taûo ra caïc khung nhçn (View) maì ngæåìi sæí duûng chè âæåüc pheïp quan saït dæî liãûu trãn caïc view. Chàón haûn chuïng ta coï mäüt file dæî liãûu laì NHAN_VIEN gäöm caïc træåìng TEN ( Hoü tãn nhán viãn) DIA_CHI(âëa chè nhán viãn) TEN_CTY( tãn cäng ty) LUONG(læång nhán viãn) nãúu sæí duûng mä hçnh Quan hãû ta coï Quan hãû sau: NHAN_VIEN(TEN, DIA_CHI, TEN_CTY,LUONG) Âãø moüi ngæåìi coï thãø truy cáûp vaìo file dæî liãûu naìy nhæng khäng âæåüc biãút læång cuía nhán viãn. Trong ngän ngæî SQL khung nhçn âæåüc taûo ra nhæ sau: CREAT VIEW L_NHAN_VIEN SELECT TEN, DIA_CHI,TEN_CTY FROM NHAN_VIEN; Khi âoï khung nhçn âæåüc taûo ra nhæ mäüt quan hãû våïi tãn L_NHAN_VIEN(TEN, DIA_CHI, TEN_CTY). Khung nhçn naìy khäng täön taûi váût lyï nhæ táûp tin , nhæng coï thãø váún tin noï giäúng nhæ táûp tin. 2. Kiãún truïc mäüt Hãû quaín trë Cå Såí Dæî Liãûu Mäüt Hãû quaín trë Cå Såí Dæî Liãûu âæåüc mä taí båíi 3 mæïc træìu tæåüng sau Âæåüc viãút bàòng ngän ngæî âënh nghéa dæî liãûu Cå Såí Dæî Liãûu khaïi niãûm CSDL váût lyï Khung nhçn 1 Khung nhçn 2 Khung nhçn n . . . Nhoïm UESR 1 Nhoïm UESR 2 Nhoïm UESR n . . . Âæåüc viãút bàòng ngän ngæî âënh nghéa dæî liãûu læåüc âäö con Âæåüc caìi âàût trãn thiãút bë váût lyï Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 4 2.1 Mæïc Cå Såí Dæî Liãûu váût lyï( physical level) Laì mäüt táûp caïc táûp tin (file) vaì caïc file chè muûc (Index) hoàûc caïc cáúu truïc læu træî khaïc duìng âãø truy xuáút chuïng mäüt caïch coï hiãûu quaí , goüi laì Cå Såí Dæî Liãûu váût lyï. Cå Såí Dæî Liãûu váût lyï täön taûi thæåìng xuyãn trong thiãút bë læu træî nhæ âéa tæì. 2.2 Mæïc Cå Såí Dæî Liãûu khaïi niãûm (Concept level ) Cå Såí Dæî Liãûu khaïi niãûm laì sæû træìu tæåüng hoïa cuía thãú giåïi thæûc khi noï dæåüc gàõn våïi ngæåìi sæí duûng Cå Såí Dæî Liãûu. Caïc DBMS cung cáúp ngän ngæî âëng nghéa dæî liãûu (data definition language DDL), âãø mä taí læåüc âäö khaïi niãûm (conceptual scheme)vaì noï seî âæåüc caìi âàût bàòng læåüc âäö váût lyï (physical scheme). DDL cho chuïng ta mä taí Cå Såí Dæî Liãûu khaïi niãûm nhåì caïc thuáût ngæî cuía “Mä hçnh dæî liãûu “ , chàón haûn nhæ trong mä hçnh quan hãû dæî liãûu âæåüc trçnh baìy qua caïc baíng våïi caïc cäüt laì caïc thuäüc tênh caïc haìng laì caïc “bäü” tæång tæû nhæ caïc máùu tin. 2.3 Khung nhçn(VIEW) Khung nhçn(view) hay læåüc âäö con (Subscheme)laì mäüt pháön cuía Cå Såí Dæî Liãûu khaïi niãûm hoàûc laì sæû træìu tæåüng hoïa mäüt pháön Cå Såí Dæî Liãûu khaïi niãûm . háöu hãút caïc DBMS âãöu cung cáúp phæång tiãûn âãø khai baïo khung nhçn , âæåüc goüi laì ngän ngæî âënh nghéa dæî liãûu læåüc âäö con( subscheme data definition language) vaì caïc phæång tiãûn âãø thao taïc vaì váún tin trãn khung nhçn goüi laì ngän ngæî thao taïc dæî liãûu læåüc âäö con (subscheme data manipulation language) Thê duû1 Chuïng ta thæí phán têch caïc khaïc biãût giæîa caïc mæïc váût lyï, khêa niãûm, khung nhçn nhåì vaìo tênh tæång tæû cuía chuïng våïi caïc ngän ngæî láûp trçnh. Cuû thãø ta seî noïi vãö maíng: - ÅÍ mæïc khaïi niãûm maíng coï thãø khia baïo nhæ sau: Integer array A[1..n,1..m] Coìn åí mæïc váût lyï, maíng A âæåüc læu træî trong mäüt vuìng liãn tuûc bàõt âáöu tæì âëa chè a0 theo thæï tæû hãút cäüt âãún doìng. Pháön tæí A[i,j] seî åí vë trê a0 +4(m(i-j)+j-1) ÅÍ mæïc khung nhçn, ta coï thãø taûo ra nhiãöu khung nhçn tuìy yï. Chàón haûn f(i)=å = m 1j ]j,i[A cho biãút täøng caïc pháön tæí trãn doìng thæï i. Læåüc âäö vaì thãø hiãûn Ngoaìi viãûc phán chia mæïc træìu tæåüng nhæ trong pháön (2) chuïng ta coìn coï mäüt caïch hiãøu khaïc vãö Cå Såí Dæî Liãûu . Khi thiãút kãú chuïng ta quan tám âãún nhæîng hoaûch âënh (plan) trãn Cå Såí Dæî Liãûu ; nhæng khi sæí duûng chuïng ta laûi quan tám âãún nhæîng dæî liãûu thæûc sæû täön taûi trong Cå Såí Dæî Liãûu . Cáön phaíi hiãøu ràòng dæî liãûu trong Cå Såí Dæî Liãûu thæoìng xuyãn thay âäøi , trong khi caïc plan váùn nhæ cuî. Näüi dung hiãûn thåìi cuía Cå Såí Dæî Liãûu goüi laì thãø hiãûn (instance) cuía Cå Såí Dæî Liãûu .Thuáût ngæî Læåüc âäö (Scheme) âæåüc duìng âãø noïi âãún caïc hoaûch âënh naìy vç váûy khi noïi âãún læåüc âäö khaïi niãûm laì noïi vãö hoaûch âënh cho Cå Såí Dæî Liãûu khaïi niãûm , vaì chuïng ta goüi hoaûch âënh Cå Såí Dæî Liãûu váût lyï laì læåüc âäö váût lyï. Thê duû 2 Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 5 Chuïng ta tiãúp tuûc våïi maíng trong vê duû 1. Mä taí maíng vaì haìm âæåüc âæa ra trong thê duû âoï thæûc sæû laì thäng tin kiãøu læåüc âäö. 1. Læåüc âäö váût lyï laì mãûnh âãö: Pháön tæí A[i,j] seî åí vë trê a0 +4(m(i-j)+j-1), khàón âënh ràòng maíng A âæåüc læu taûi vë trê bàõt âáöu laì a0 vaì pháön tæí a[i,j] âæåüc læu åí vë trê a0 +4(m(i-j)+j-1) 2. Læåüc âäö khaïi niãûm laì khai baïo Integer array A[1..n,1..m]; A laì mäüt maíng säú nguyãn våïi n haìng vaì m cäüt. 3. Læåüc âäö con laì âënh nghéa cuía haìm f, nghéa laì f(i)=å = m 1j ]j,i[A Âãø âæa ra mäüt thê duû vãö mäüt thãø hiãûn cuía læåüc âäö khaïi niãûm naìy , chuïng ta coï thãø cho n=m=3 khi âoï A laì mäüt ma phæång: 8 1 6 3 5 7 4 9 2 Khi âoï thãø hiãûn váût lyï (Physical instance)seî laì 9 word khåíi âáöu tæì vë trê a0 theo thæï tæû chæïa 8 1 6 3 5 7 4 9 2. Cuäúi cuìng thãø hiãûn khung nhçn view laì haìm f(1)=f(2)=f(3)=15 Tênh Âäüc láûp dæî liãûu . Så âäö vãö caïc mæïc træìu tæåüng trong pháön (2) chè roî âi tæì khung nhçn qua Cå Såí Dæî Liãûu khaïi niãûm âãún Cå Såí Dæî Liãûu váût lyï âæa ra hai mæïc âäüc láûp dæî liãûu (data independence). - Âäüc láûp dæî liãûu váût lyï (physcal data independence) : Chuïng ta coï thãø thay âäøi læåüc âäö váût lyï maì khäng laìm aính hæåíng âãún læåüc âäö khaïi niãûm hay phaíi âënh nghéa laûi caïc læåüc âäö con. Noï khàón âënh ràòng viãûc sæía âäøi vãö täø chæïc vãö Cå Såí Dæî Liãûu váût lyï coï thãø aính hæåíng âãún tênh hiãûu cuía caïc chæång trçnh æïng duûng , nhæng khäng bao giåì phaíi viãút laûi nhæîng chæång trçnh naìy. - Âäüc láûp dæî liãûu logic (logical data independence) âæåüc âæa ra båíi mäúi quan hãû giæîa khung nhçn vaì Cå Såí Dæî Liãûu khaïi niãûm. Khi sæí duûng Cå Såí Dæî Liãûu cuîng coï thãø cáön phaíi sæía âäøi læåüc âäö khaïi niãûm, coï nhiãöu sæía âäøi læåüc âäö khaïi niãûm khäng laìm aính hæåíng âãún caïc læåüc âäö con hiãûn coï, vaì cuîng coï mäüt säú sæía âäøi khaïc seî cáön phaíi âënh nghéa laûi caïc aïnh xaû tæì læåüc âäö con âãún læåüc âäö khaïi niãûm . træåìng håüp naìy khäng cáön thay âäøi chæång trçnh æïng duûng . Mäüt laoüi thay âäøi duy nháút trong læåüc âäö khaïi niãûm buäüc phaíi thay âäøi læåüc âäö con laìviãûc xoïa caïc thäng Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 6 tin tæång æïng våïi caïc thäng tin âang täön taûi trong læåüc âäö con . Nhæîng thay âäøi naìy âoìi hoíi phaíi thay âäøi chæång trçnh æïng duûng. 3. Caïc ngän ngæî cuía Cå Såí Dæî Liãûu Trong caïc ngän ngæî láûp trçnh caïc chè thë mä taí vaì caïc chè thë thæûc hiãûn laì 2 bäü pháûn cuía mäüt ngän ngæî, trong caïc Hãû quaín trë Cå Såí Dæî Liãûu hai chæïc nàng mä taí vaì xæí lyï noïi chung âæåüc chia thaình 2 ngän ngæî khaïc nhau. 1. Ngän ngæî âënh nghéa dæî liãûu(data definition language - DDL) Âáy khäng phaíi laì ngän ngæî thuí tuûc maì chè laì mäüt hãû thäúng kyï hiãûu âãø mä taí caïc loaûi âäúi tæåüng vaì quan hãû giæîa chuïng . Vê duû 3 Chuïng ta coï thãø âënh nghéa mäüt quan hãû mä taí mäüt chuyãún bay thæûc hiãûn båíi mäüt haîng haìng khäng våïi âënh nghéa dæî liãûu nhæ sau: CREAT TABLE FLIGHT(NUMBER: INT, DATE CHAR(6), SEAT:INT, FROM : CHAR(3), TO : CHAR(3)) Âoaûn maî trãn laì mäüt thê duû vãö ngän ngæî âënh nghéa dæî liãûu SQL , noï mä taí quan hãû vaì caïc thuäüc tênh cuìng våïi viãûc caìi âàût váût lyï cuía chuïng laì caïc säú nguyãn vaì chuäøi coï âäü daìi cäú âënh. 2. Ngän ngæî thao taïc dæî liãûu Caïc thao taïc trãn Cå Såí Dæî Liãûu âäöi hoíi phaíi coï mäüt ngän ngæî âàûc biãût goüi laì ngän ngæî thao taïc dæî liãûu (data manipulation language- DML) hay coìn goüi laì ngän ngæî váún tin (Query language). Vê duû 4 Våïi Cå Såí Dæî Liãûu caïc chuyãún bay FLIGHT âæåüc âënh nghéa bàòng ngän ngæî SQL trong vê duû 3, trong ngän ngæî SQL ta coï thãø thæûc hiãûn caïc thao taïc sau: a. Giaím 4 chäø ngäöi coìn träúng trãn chuyãún bay 123 ngaìy 31 thaïng taïm UPDATE FLIGHT SET SEAT=SEAT-4 WHERE NUMBER=123 AND DATE=’AUG 31’ b. nháûp vaìo chuyãún bay 456 våïi 100 chäø ngäöi tæì haì näüi âi âaì nà ông ngaìy 21 thaïng taïm INSERT INTO FLIGHT VALUE(456, ‘AUG 21’, ‘HANOI’, ‘DANANG’) c. Tçm xem trong Cå Såí Dæî Liãûu coï bao nhiãu chäø ngäöi coìn träúng trong chuyãún bay säú 999 ngaìy 24 thaïng 7 SELECT SEAT FROM FLIGHT WHERE NUMBER=999AND DATE=’JUL 24’ Chæång 1. TÄØNG QUAN VÃÖ CÅ SÅÍ DÆÎ LIÃÛU Baìi soaûn män Cå såí dæî liãûu Nguyãùn Vàn Chæïc Trang 7 3. Ngän ngæî chuí Caïc chè thë cuía caïc ngän ngæî thao taïc dæî liãûu thæåìng laì âån giaín hay noïi caïch khaïc laì thæûc hiãûn nhæîng pheïp xæí lyï âån giaín, nhæng trong trong quaï trçnh thæûc hiãûn cäng viãûc trãn Cå Såí Dæî Liãûu coï thãø phaíi xæí lyï caïc cäng viãûc phæïc taûp hån nhæ soaûn thaío vàn baín baïo caïo , in áún ... vç váûy caïc Hãû quaín trë Cå Såí Dæî Liãûu cáön phaíi coï sæû häø tråü cuía caïc ngän ngæî thuáûn tiãûn cho viãûc láûp trçnh nhæ C hay COBOL ... goüi laì caïc ngän ngæî chuí( host language). Caïc lãûnh cuía DMLb âæåüc nhuïng vaìo ngän ngæî chuí theo hai caïch a. Caïc lãûnh cuía DML âæåüc kêch hoaût bàòng viãûc goüi caïc thuí tuûc âæåüc cung cáúp båíi Hãû quaín trë Cå Såí Dæî Liãûu b. Caïc lãûnh naìy laì caïc chè thë trong ngän ngæî chuí âæåüc måí räüng

Các file đính kèm theo tài liệu này:

  • pdfChuong 1.pdf
Tài liệu liên quan