Cơ sở dữ liệu - Chương 1: Hệ quản trị cơ sở dữ liệu quan hệ

pdf 23 trang vanle 2400
Bạn đang xem 20 trang mẫu của tài liệu "Cơ sở dữ liệu - Chương 1: Hệ quản trị cơ sở dữ liệu quan hệ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfco_so_du_lieu_chuong_1_he_quan_tri_co_so_du_lieu_quan_he.pdf

Nội dung text: Cơ sở dữ liệu - Chương 1: Hệ quản trị cơ sở dữ liệu quan hệ

  1. TRAÛ LÔØI BAØI TAÄP ORACLE Chöông 1 HEÄ QUAÛN TRÒ CÔ SÔÛ DÖÕ LIEÄU QUAN HEÄ 1. Heä quaûn trò cô sôû döõ lieäu laø gì? Moät cô sôû döõ lieäu (database) laø moät taäp hôïp caùc thoâng tin ñöôïc toå chöùc hôïp lyù ñeå coù theå truy xuaát nhanh khi caàn söû duïng. Moät heä quaûn trò cô sôû döõ lieäu (DataBase Management System – DBMS) laø moät coâng cuï cho pheùp quaûn lyù vaø töông taùc vôùi cô sôû döõ lieäu. 2. Caùc chöùc naêng cô baûn cuûa heä quaûn trò cô sôû döõ lieäu? Caùc chöùc naêng cô baûn cuûa heä quaûn trò cô sôû döõ lieäu: • Löu tröõ döõ lieäu • Taïo ra vaø duy trì caáu truùc döõ lieäu • Cho pheùp nhieàu ngöôøi duøng truy xuaát ñoàng thôøi • Hoã trôï tính baûo maät vaø rieâng tö • Cho pheùp laáy ra vaø xöû lyù caùc döõ lieäu löu tröõ • Cho pheùp nhaäp lieäu vaø naïp döõ lieäu • Cung caáp moät cô cheá chæ muïc (index) hieäu quaû ñeå laáy nhanh caùc döõ lieäu löïa choïn. • Cung caáp tính nhaát quaùn giöõa caùc baûn ghi khaùc nhau. • Baûo veä döõ lieäu khoûi maát maùt baèng caùc quaù trình sao löu (backup) vaø phuïc hoài (recovery). 3. Keå ra ba loaïi heä quaûn trò cô sôû döõ lieäu chính? Ba loaïi heä quaûn trò cô sôû döõ lieäu chính laø: Heä quaûn trò cô sôû döõ lieäu phaân caáp chöùa döõ lieäu trong moät caáu truùc nhö caây. Heä naøy thieát laäp moät quan heä cha-con trong döõ lieäu. ÔÛ ñænh cuûa caây, coøn goïi laø root, coù theå coù moät soá nuùt baát kyø. Caùc nuùt naøy laïi coù theå coù moät soá nuùt con baát kyø, v.v Caùc heä cô sôû döõ lieäu phaân caáp ngaøy nay ñaõ laïc haäu. Moät heä quaûn trò cô sôû döõ lieäu maïng chöùa döõ lieäu ôû daïng caùc baûn ghi vaø caùc lieân keát . Heä thoáng naøy cho pheùp nhieàu quan heä nhieàu-nhieàu hôn heä cô sôû döõ lieäu phaân caáp. Moät heä quaûn trò cô sôû döõ lieäu maïng löu tröõ coù hieäu quaû vaø raát nhanh, cho pheùp quaûn lyù caùc caáu www.Beenvn.com – Free Ebook Online
  2. TRAÛ LÔØI BAØI TAÄP ORACLE truùc döõ lieäu phöùc taïp. Tuy nhieân, chuùng laïi raát cöùng nhaéc vaø yeâu caàu naëng neà veà thieát keá. Moät heä thoáng ñaêng kyù veù maùy bay laø moät ví duï cuûa loaïi naøy. Heä quaûn trò cô sôû döõ lieäu quan heä coù leõ laø moät cô sôû döõ lieäu coù caáu truùc ñôn giaûn nhaát . Trong moät heä quaûn trò cô sôû döõ lieäu quan heä, döõ lieäu ñöôïc toå chöùc thaønh caùc baûng. Caùc baûng laïi bao goàm caùc baûn ghi vaø caùc baûn ghi chöùa caùc tröôøng. Moãi tröôøng töông öùng vôùi moät muïc döõ lieäu. Hai hay nhieàu baûng coù theå lieân keát neáu chuùng coù moät hay nhieàu tröôøng chung. 4. Theá naøo laø cô sôû döõ lieäu phaúng? Cô sôû döõ lieäu phaúng goàm moät baûng vôùi caùc baûn ghi coù ñuû coät ñeå chöùa taát caû caùc döõ lieäu caàn thieát. Thuaät ngöõ döõ lieäu phaúng baét nguoán töø söï kieän laø cô sôû döõ lieäu coù hai chieàu – soá tröôøng (field) cuûa baûng xaùc ñònh chieàu roäng cuûa cô sôû döõ lieäu, vaø soá löôïng caùc baûn ghi cuûa baûng xaùc ñònh chieàu cao. 5. Caùc tính chaát cuûa moät baûng quan heä trong moâ hình quan heä? Moät baûng quan heä trong moâ hình quan heä caàn coù thoûa caùc tính chaát sau: • Döõ lieäu chöùa trong caùc oâ caàn phaûi laø nguyeân toá. Moãi oâ chæ coù theå chöùa moät maåu döõ lieäu. Ñoù chính laø yeáu toá cô baûn cuûa thoâng tin. • Döõ lieäu trong moät coät naøo ñoù phaûi coù cuøng kieåu döõ lieäu. • Moãi haøng laø duy nhaát (khoâng coù caùc haøng truøng nhau). • Caùc coät khoâng coù thöù töï. • Caùc haøng khoâng coù thöù töï. • Caùc coät coù moät teân duy nhaát. www.Beenvn.com – Free Ebook Online
  3. TRAÛ LÔØI BAØI TAÄP ORACLE Chöông 2 ORACLE VAØ COÂNG NGHEÄ KHAÙCH/CHUÛ 1. Neâu ba öu ñieåm cuûa kieán truùc coâng ngheä khaùch/chuû so vôùi kieán truùc coâng ngheä maùy lôùn? Caáu truùc khaùch/chuû ñöa ra moät soá öu ñieåm so vôùi caùc kieán truùc cuõ: • Noù hoã trôï vieäc söû duïng nhieàu chuûng loaïi maùy client khaùc nhau. Trong moâi tröôøng ngaøy nay, ngöôøi söû duïng coù theå duøng Windows 3.11, Windows 95, Windows NT, moät maùy Mac, hay moät traïm UNIX, taát caû ñeàu coù theå noái vôùi cuøng moät server. • Traùch nhieäm tính toaùn ñöôïc phaân boå moät caùch hôïp leä giöõa client vaø server. Maùy client coù traùch nhieäm ñieàu khieån giao dieän ngöôøi duøng – hieån thò caùc thoâng tin, hôïp leä hoùa ñaàu vaøo vaø cung caáp söï phaûn hoài (feedback) hôïp lyù – trong khi maùy server ñöôïc duøng nhö moät server cô sôû döõ lieäu. • Noù ñoäc laäp vôùi thuû tuïc maïng, heä ñieàu haønh ôû maùy server vaø heä ñieàu haønh ôû maùy client. Söï ñoäc laäp naøy cho ta söï linh ñoäng lôùn trong vieäc löïa choïn caùc thaønh phaàn phaàn cöùng vaø phaàn meàm cuûa moät heä thoáng môùi khi hay khi hieän thöïc moät öùng duïng khaùch/chuû treân moät cô sôû phaàn cöùng ñaõ toàn taïi. 2. Öu ñieåm cuûa stored procedure so vôùi moät khoái leänh PL/SQL? Öu ñieåm cuûa stored procedure so vôùi moät khoái leänh PL/SQL laø: • Goïi moät stored procedure töø moät öùng duïng client giaûm ñaùng keå maät ñoä löu thoâng maïng. Thay vì öùng duïng gôûi moät khoái chöông trình PL/SQL töø client, chæ caàn moät leänh goïi ñôn ñeán thuû tuïc hay haøm vôùi moät danh saùch tham soá tuøy yù. • Caùc stored procedure cung caáp moät cô cheá baûo maät hieäu quaû vaø tieän lôïi. Moät trong nhöõng ñaëc tröng cuûa stored PL/SQL laø noù luoân thöïc hieän vôùi ñaëc quyeàn (privilege) cuûa chuû nhaân thuû tuïc (procedure). Ñieàu naøy ngaên caùc user khoâng ñaëc quyeàn duøng maõ thuû tuïc truy xuaát caùc ñoái töôïng ñaëc quyeàn. Ñaëc tính naøy thöôøng duøng ñeå giaûm löôïng giaùm saùt caáp phaùt quyeàn maø DBA phaûi laøm. • Caû hai daïng text vaø ñaõ bieân dòch cuûa caùc stored procedure ñeàu naèm trong cô sôû döõ lieäu. Do daïng bieân dòch cuûa thuû tuïc coù saün vaø saün www.Beenvn.com – Free Ebook Online
  4. TRAÛ LÔØI BAØI TAÄP ORACLE saøng thöïc hieän, nhu caàu phaân tích cuù phaùp vaø bieân dòch PL/SQL luùc thi haønh (run time) ñöôïc giaûm nheï. 3. Chöùc naêng cuûa Net8? Net8 laø moät phaàn meàm keát noái cô sôû döõ lieäu duøng ñeå cung caáp caùc thoâng tin cô sôû döõ lieäu xaùc thöïc, toái öu treân moïi thuû tuïc maïng thoâng duïng. Net8 ñöôïc thieát keá ñeå cung caáp tính trong suoát cuûa server cho baát kyø nuùt naøo beân trong moät öùng duïng maïng vaø söû duïng caùc thaønh phaàn naèm treân caû hai phía client vaø server cuûa moät öùng duïng. Ngoaøi vieäc cung caáp söï keát noái giöõa maùy traïm vaø server trong moâi tröôøng khaùch/chuû, server cuõng söû duïng Net8 ñeå giao dòch caùc chuyeån taùc phaân taùn (distributed transaction), caùc pheùp goïi thuû tuïc töø xa vaø sao löu baûng (replication) vôùi caùc server khaùc. Caùc server tham chieáu ñeán caùc server khaùc baèng caùch söû duïng caùc lieân keát cô sôû döõ lieäu (database link ) ñeåø ñònh nghóa teân cuûa caùc cô sôû döõ lieäu töø xa. Caùc lieân keát cô sôû döõ lieäu ñôn giaûn hoùa quaù trình phaân taùn baèng caùch cung caáp söï truy xuaát trong suoát caùc ñoái töôïng töø xa nhö caùc baûng vaø thuû tuïc, cho pheùp moät öùng duïng tham chieáu chuùng nhö theå chuùng naèm ôû cô sôû döõ lieäu cuïc boä cuûa öùng duïng. www.Beenvn.com – Free Ebook Online
  5. TRAÛ LÔØI BAØI TAÄP ORACLE Chöông 3 CAÁU TRUÙC CUÛA ORACLE 1. Nhöõng thaønh phaàn phaàn cöùng chính aûnh höôûng ñeán hieäu naêng? Caùc thaønh phaàn phaàn cöùng chính aûnh höôûng ñeán hieäu naêng laø: CPU, cache, boä nhôù (memory), bus, ñóa cöùng vaø maïng. 2. Ñieàu gì xaûy ra neáu caùc taäp tin redo log bò hö hoûng? Neáu thoâng tin taäp tin redo log bò maát, ta khoâng theå phuïc hoài laïi heä thoáng neáu noù bò hö hoûng. 3. Ñieàu gì xaûy ra neáu caùc taäp tin döõ lieäu bò hö hoûng? Neáu ta coù moät boä ñaày ñuû caùc taäp tin offline redo log töø laàn cuoái backup cô sôû döõ lieäu, khi caùc taäp tin döõ lieäu bò hö ta coù theå duøng baûn backup vaø caùc taäp tin redo log ñeå gaùn laïi nhöõng thay ñoåi cho baûn backup. 4. Caáu thaønh cuûa moät theå hieän cuûa Oracle? Moãi luùc moät cô sôû döõ lieäu ñöôïc taïo ra, moät system global area (SGA) ñöôïc ñònh vò vaø caùc quaù trình chaïy neàn (background) cuûa Oracle ñöôïc khôûi ñoäng. Söï keát hôïp giöõa caùc quaù trình background vaø caùc boä nhôù ñeäm goïi laø moät theå hieän cuûa Oracle. www.Beenvn.com – Free Ebook Online
  6. TRAÛ LÔØI BAØI TAÄP ORACLE Chöông 4 SQL 1. Ñieàu naøy ñuùng hay sai: “Caàn phaûi ñöa moät coät vaøo meänh ñeà SELECT neáu ta muoán saép thöù töï caùc keát quaû traû veà theo coät ñoù? Sai. Baïn coù theå chæ ñònh moät coät trong meänh ñeà ORDER khoâng naèm trong caùc coät choïn cuûa meänh ñeà SELECT ñeå saép thöù töï caùc keát quaû traû veà theo coät ñoù 2. Leänh naøy ñuùng hay sai: select First_Name from student order by Last_Name where Last_Name like ‘%ÒN’ Sai. Meänh ñeà order by phaûi ñöùng sau meänh ñeà where . 3. Baûng DUAL laø gì? Taïi sao noù ñöôïc söû duïng? Oracle cho pheùp user thöïc hieän moät soá leänh SQL ñaëc bieät ñeå hoaøn thaønh nhöõng baøi toaùn soá hoïc maø khoâng caàn truy xuaát döõ lieäu. Ñaëc tröng naøy lieân quan ñeán moät baûng ñaëc bieät goïi laø DUAL. DUAL laø moät baûng roãng ñöôïc duøng ñeå ñaùp öùng caáu truùc cuûa leänh select . SELECT 64+36 FROM DUAL; Keát quaû seõ cho ta: 64+36 100 Trong baûng DUAL khoâng coù döõ lieäu thöïc sö, noù chæ toàn taïi nhö laø moät caáu truùc SQL ñeå hoã trôï yeâu caàu chæ ñònh baûng trong meänh ñeà FROM. Baûng DUAL chöùa chæ moät coät vaø moät haøng vôùi giaù trò NULL. 4. Haøm nvl() duøng ñeå laøm gì? Caùch söû duïng noù? Haøm nvl() ñöôïc duøng ñeå bieán ñoåi moät coät sao cho khi giaù trò cuûa coät naøy laø NULL, noù seõ traû veå moät chuoãi maëc ñònh. Cuù phaùp cuûa noù laø: www.Beenvn.com – Free Ebook Online
  7. TRAÛ LÔØI BAØI TAÄP ORACLE NVL (teân_coät, giaù_trò_neáu_null) 5. Bí danh (Alias) coät laø gì? Noù höõu duïng trong nhöõng tröôøng hôïp naøo? Bí danh coät ñöôïc söû duïng ñeå chæ ñònh roõ nghóa caùc heading cho döõ lieäu trong output töø caùc query SQL. Caùc alias coù theå chæ ñònh theo hai caùch, hoaëc ñaët alias sau teân coät caùch baèng moät khoaûng troáng, hoaëc söû duïng töø khoùa as ñeå ñaùnh daáu alias roõ raøng hôn cho caùc ngöôøi ñoïc khaùc. 6. Kyù töï gì duøng ñeå noái caùc coät trong meänh ñeà select? Phöông phaùp ñöôïc söû duïng ñeå noái output cuûa moät soá coät vôùi nhau nhaèm taïo ra moät döõ lieäu môùi ñöôïc thöïc hieän baèng moät toaùn haïng ñaëc bieät goïi laø concatenation (gheùp). Toaùn haïn gheùp coù kyù hieäu nhö hai kyù töï | gheùp vôùi nhau: || . 7. Muïc ñích cuûa leänh decode()? Noù chaáp nhaän ñoái soá naøo? Haøm decode( ) cho pheùp chuyeån ñoåi döõ lieäu töø daïng naøy sang daïng khaùc moät caùch linh hoaït. Noù coù theå söû duïng thay theá haøm nvl() , tuy nhieân noù maïnh hôn nhieàu ôû khaû naêng chaáp nhaän baát cöù ñoái soá naøo. 8. Theá naøo laø moät haøm group? Keå ra vaøi haøm group? Moät haøm nhoùm cho pheùp user thöïc hieän moät thao taùc döõ lieäu treân moät vaøi giaù trò trong moät coät döõ lieäu nhö theå coät laø moät nhoùm taäp hôïp döõ lieäu. Nhöõng haøm naøy cuõng ñöôïc goïi laø caùc haøm group, bôûi vì chuùng thöôøng ñöôïc söû duïng trong moät meänh ñeà ñaëc bieät cuûa leänh select goïi laø meänh ñeà group by . Moät soá haøm group thoâng duïng laø: avg( x) Trung bình cuûa taát caû caùc giaù trò cuûa coät x traû veà bôûi leänh select count( x) Toång taát caû caùc haøng cuûa coät x traû veà bôûi leänh select max( x) Giaù trò lôùn nhaát trong coät x cuûa taát caû caùc haøng traû veà bôûi leänh select min( x) Giaù trò nhoû nhaát trong coät x cuûa taát caû caùc haøng traû veà bôûi leänh select 9. ROWID laø gì? www.Beenvn.com – Free Ebook Online
  8. TRAÛ LÔØI BAØI TAÄP ORACLE Moät ROWID laø moät giaù trò ñaëc bieät chæ ñònh duy nhaát moãi haøng. Moãi haøng trong moät baûng coù moät gía trò ROWID duy nhaát. ROWID khoâng phaûi laø moät phaàn thöïc söï cuûa baûng maø laø moät maãu thoâng tin tröõ trong Oracle. Vì vaäy, noù ñöôïc goïi laø moät coät giaû. 10. Töø khoùa distinct ñöôïc söû duïng ñeå laøm gì? Töø khoaù distinct duøng ñeå loïc laáy moät giaù trò duy nhaát khi boä loïc traû veà nhieàu keát quaû gioáng nhau. 11. Kyù töï ñaëc bieät naøo ñöôïc söû duïng ñeå chæ ñònh moät bieán runtime? Kyù töï & ñöôïc söû duïng ñeå chæ ñònh moät bieán runtime. 12. Neâu ra hai raøng buoäc taïo ra index? Hai raøng buoäc taïo ra index laø primary key vaø unique key. 13. Caùch taïo ra caùc baûng coù saün döõ lieäu? Ñeå taïo ra caùc baûng coù saün döõ lieäu töø caùc baõng khaùc, ta duøng meänh ñeà CREATE TABLE AS SELECT 14. Töï ñieån döõ lieäu laø gì? Töï ñieån döõ lieäu Oracle bao goàm caùc baûng chöùa thoâng tin veà cô sôû döõ lieäu ñöôïc löu tröõ, giuùp ngöôøi duøng theo doõi cô sôû döõ lieäu. 15. Leänh naøo ñöôïc söû duïng ñeå thay ñoåi ñònh nghóa moät baûng? Ñeå thay ñoåi ñònh nghóa moät baûng, ta duøng leänh ALTER TABLE www.Beenvn.com – Free Ebook Online
  9. Chöông 14 THIEÁT KEÁ CÔ SÔÛ DÖÕ LIEÄU 1. Quaù trình chuaån hoùa döõ lieäu laø gì? Quaù trình chuaån hoaù (normalization) laø moät kyõ thuaät ñöôïc söû duïng ñeå nhoùm caùc thuoäc tính theo caùch loaïi tröø dö thöøa döõ lieäu. 2. Neâu 4 daïng chuaån hoùa cuûa cô sôû döõ lieäu? Boán daïng chuaån hoùa cuûa cô sôû döõ lieäu • Daïng chuaån thöù nhaát raát deã ñaït. Yeâu caàu duy nhaát laø moãi “oâ” trong baûng coù moät giaù trò ñôn. Noùi caùch khaùc, daïng chuaån ñaàu tieân seõ bò xaâm phaïm neáu coù nhieàu giaù trò ñöôïc löu trong moät söï keát hôïp haøng vaø coät cuûa baûng. • Daïng chuaån thöù hai ñöôïc ñaït ñeán khi taát caû caùc phuï thuoäc moät phaàn bò thu hoài. Neáu khoâng coù caùc khoùa phöùc trong baûng, möùc chuaån hoùa naøy cuõng deã ñaït ñöôïc. • Daïng chuaån thöù ba yeâu caàu raèng taát caû caùc phuï thuoäc transitive ñöôïc thu hoài. Trong caùc töông quan maãu ñaõ ñöa ra tröôùc ñaây, coù ít nhaát hai phuï thuoäc transitive. Trong baûng Addresses, caû thaønh phoá vaø bang ñeàu phuï thuoäc vaøo zip code. (Cuõng noùi raèng coù söï phuï thuoäc nhieàu giaù trò giöõa zip code vaø thaønh phoá, bang). • Daïng chuaån thöù tö ñaït ñöôïc khi taát caû caùc söï phuï thuoäc nhieàu giaù trò ñöôïc thu hoài. 3. Khi naøo thì ta boû chuaån hoùa? Vieäc boû chuaån hoùa, ngöôïc vôùi quaù trình chuaån hoùa, coù theå söû duïng khi caàn caûi thieän hieäu naêng.
  10. CHÖÔNG 1 CHÖÔNG 16 SQL ÑOÄNG 1. Taïi sao phaûi söû duïng SQL ñoäng, so vôùi caùc leänh SQL thoâng thöôøng SQL ñoäng coù nhöõng ñieåm gì caàn löu yù? 2. Ñeå söû duïng ñöôïc leänh SQL ñoäng caàn phaûi coù ñieàu kieän gì? 3. Haõy cho ví duï veà söû duïng caùc leänh DDL (nhö DROP, CREATE) trong PL/SQL. 4. Haõy neâu caùch söû duïng caùc leänh SELECT, INSERT, UPDATE trong SQL ñoäng. 1.1. ÑAÙP AÙN 1. SQL ñoäng cho pheùp baïn xaây döïng caùc thuû tuïc mang tính toång quaùt cao, xöû lyù ñöôïc nhöõng thao taùc maø teân cuûa baûng hay ñoái töôïng muoán truy xuaát chæ xaùc ñònh ñöôïc vaøo luùc chaïy chöông trình. Chöông trình coù theå phaân tích vaø thöïc thi caùc leänh DML SQL (nhö INSERT, UPDATE ) hay caùc leänh DDL SQL (nhö CREATE TABLE, DROP ). SQL ñoäng cho pheùp khaéc phuïc haïn cheá cuûa ngoân ngöõ PL/SQL, PL/SQL khoâng cho pheùp baïn thöïc thi caùc leänh DDL SQL trong khoái leänh nhöng söû duïng leänh SQL ñoäng baïn coù theå thöïc hieän ñöôïc khaû naêng naøy 2.Muoán söû duïng SQL ñoäng baïn phaûi ñöôïc caáp quyeàn EXECUTE ñeå goïi caùc haøm trong Package DBMS_SQL Ñeå taïo vaø söû duïng ñöôïc caùc haøm trong Package DBMS_SQL baïn caàn keát noái vaøo user SYS ñeå chaïy caùc Script DBMSSQL.SQL vaø PRVTSQL.PLB . Hai script naøy seõ ñöôïc töï ñoäng goïi khi baïn chaïy script toång quaùt CATPROC.SQL . 3. Ví duï veà thöïc thi leänh DROP trong PL/SQL cursor_name INTEGER; www.Beenvn.com – Free Ebook Online
  11. ret INTEGER; SQLstring VARCHAR2(100); BEGIN cursor_name := DBMS_SQL.OPEN_CURSOR; SQLString:=’DROP TABLE EMP’; Leänh DDL ñöôïc thöïc thi bôûi thuû tuïc PARSE Sau quaù trình thöïc thi leänh COMMIT ngaàm ñònh seõ ñöôïc thöïc hieän DBMS_SQL.PARSE(cursor_name, SQLstring, DBMS_SQL.NATIVE); ret := DBMS_SQL.EXECUTE(cursor_name); DBMS_SQL.CLOSE_CURSOR(cursor_name); END; 4. Xem lyù thuyeát muïc 4 (chöông SQL ñoäng). www.Beenvn.com – Free Ebook Online
  12. TRAÛ LÔØI BAØI TAÄP ORACLE CHÖÔNG 19 TOÅNG QUAN VEÀ LAÄP TRÌNH ORACLE OLE 1. Oracle OLE Object laø gì? Moät chöông trình chaïy treân heä ñieàu haønh Windows muoán söû duïng ñöôïc OO40 caàn phaûi coù ñieàu kieän nhö theá naøo? Oracle OLE Server (OO4O) laø phaàn meàm trung gian (middleware) do Oracle xaây döïng cho pheùp truy caäp cô sôû döõ lieäu moät caùch tröïc tieáp (native access). OO4O chæ söû duïng ñöôïc trong moâi tröôøng Windows (9.x/NT/2000) cuûa Microsoft vôùi kieán truùc COM (hay OLE) cuûa heä ñieàu haønh. Baïn phaûi caøi ñaët caùc thö vieän caàn thieát do Oracle cung caáp . Moãi phieân baûn OO4O coù theå cung caáp theâm nhöõng chöùc naêng môùi do ñoù khi söû duïng OO4O baïn neân xem xeùt kyõ nhöõng thuoäc tính vaø phöông thöùc daønh cho moãi phieân baûn. Khoâng neân ñem nhöõng chöông trình söû duïng chöùc naêng cuûa OO4O trong Oracle 7 sang OO4O cuûa Oracle 8 hay ngöôïc laïi (maëc duø ñieàu naøy cuõng khoâng haún luoân luoân gaây ra loãi). 2. OO4O so vôùi ODBC coù nhöõng öu vaø khuyeát ñieåm gì? So saùnh OO4O vaø ODBC: OO4O cho pheùp truy caäp tröïc tieáp ñeán cô sôû döõ lieäu Oracle, toác ñoä truy caäp do ñoù seõ nhanh hôn ODBC. Tuy nhieân ODBC laø caàu noái ñöôïc duøng chung cho taát caû cô sôû döõ lieäu treân Windows trong khi OO4O chæ laø moät ñoái töôïng OLE ñôn thuaàn daønh rieâng cho vieäc truy xuaát ñeán moâi tröôøng cô sôû döõ lieäu Oracle. OO4O do Oracle cung caáp trong khi Oracle ODBC coù theå ñöôïc söï hoã trôï töø nhieàu haõng phaàn meàm khaùc. 3. Coù theå söû duïng OO4O töø caùc öùng duïng cuûa Microsoft (nhö Word, Excell, Access ) ñöôïc khoâng? OO4O ñöôïc xaây döïng döïa treân moâ hình COM cuûa Microsoft neân baïn coù theå söû duïng OO4O trong haàu heát caùc öùng duïng cuûa Microsoft nhö Word, Excell, Access hay SQL Server. 4. Laøm theá naøo ñeå keát noái vaø truy xuaát ñöôïc cô sôû döõ lieäu cuûa Oracle baèng OO4O töø moâi tröôøng laäp trình Visual Basic hay töø caùc öùng duïng cuûa Microsoft Office, cho ví duï. Truy xuaát cô sôû döõ lieäu Oracle baèng OO4O trong moâi tröôøng laäp trình Visual Basic cuõng nhö trong haàu heát caùc öùng duïng Microsoft Office khaùc hoaøn toaøn töông töï nhau (caùc öùng duïng Microsoft Office nhö Word, Excell söû duïng caùc Macro vôùi ngoân ngöõ Visual www.Beenvn.com – Free Ebook Online
  13. TRAÛ LÔØI BAØI TAÄP ORACLE Basic). Ví duï ñeå laáy thoâng tin veà moät nhaân vieân trong baûng EMP truy xuaát baèng OO4O ñöôïc thöïc hieän nhö sau: Sub Form_Load () Dim OraSession As Object 'Khai baùo ñoái töôïng OLE Objects Dim OraDatabase As Object Dim OraDynaset As Object ‘Taïo ñoái töôïng OO4O Set OraSession = CreateObject( "OracleInProcServer.XOraSession") ‘Keát noái vôùi cô sôû döõ lieäu Oracle Set OraDatabase = OraSession.DbOpenDatabase( "ExampleDB", "scott/tiger", 0&) MsgBox "Connected to " & OraDatabase.Connect & "@" & OraDatabase.DatabaseName 'Taïo ñoái töôïng OraDynaset vaø laáy keát quaû traû veà Set OraDynaset = OraDatabase.DbCreateDynaset("select empno, ename from emp", 0&) MsgBox "Employee " & OraDynaset.Fields("empno").value & ", #" & OraDynaset.Fields("ename").value End Sub 5. Laøm theá naøo ñeå keát noái vaø truy xuaát cô sôû döõ lieäu Oracle töø caùc moâi tröôøng laäp trình C++ hay Delphi baèng OO4O, cho ví duï. Keát noái vôùi Oracle baèng OO4O töø moâi tröôøng Delphi gaàn nhö hoaøn toaøn töông töï vôùi moâi tröôøng Visual Basic ví duï: Var OraSession :OleVariant; // Khai baùo ñoái töôïng OLE OraDatabase:OleVariant; OraDynaset:OleVariant; Begin //Taïo ñoái töôïng OLE OraSession:= CreateOLEObject( www.Beenvn.com – Free Ebook Online
  14. TRAÛ LÔØI BAØI TAÄP ORACLE ‘OracleInProcServer.XoraSession’); //Keát noái vôùi cô sôû döõ lieäu OraDatabase:=OraSession.OpenDatabase (‘ExampleDB’, ‘username’,’password’); //Truy xuaát döõ lieäu OraDynaset:= OraDatabase.DbCreateDynaset( ‘select empno, ename from emp’, 0) ShowMessage(‘Employee ‘ + OraDynaset.Fields(‘empno’).value + OraDynaset.Fields(‘ename’).value); End; Keát noái vôùi Oracle töø moâi tröôøng laäp trình C++ baèng OO4O ñöôïc söû duïng thoâng qua caùc lôùp Oracle Class Library nhö sau: #ifndef ORACL_ORACLE #include "oracl.h" #endif int main(void){ //Thöïc hieän keát noái vôùi cô sôû döõ lieäu OStartup(); ODatabase m_database(“ExampleDB”,”scott”,”tiger”); if (!m_database.IsOpen()) { printf("Connect error \n"); return 0; } /* Keát noái thaønh coâng */ //Truy xuaát döõ lieäu cuûa baûng EMP ODynaset m_dynaset; m_dynaset.Open(m_database, "select empno, ename from emp"); //In döõ lieäu ra maøn hình OValue data; m_dynaset.GetFieldValue(1,&data); printf("%s \n",(const char*)data); return 0; } www.Beenvn.com – Free Ebook Online
  15. CHÖÔNG 1 CHÖÔNG ORACLE OBJECT TYPE 1. Kieåu ñoái töôïng (Object type) laø gì? So vôùi caùc kieåu döõ lieäu khaùc kieåu ñoái töôïng coù gì ñaëc bieät? 2. Haõy taïo ñoái töôïng laø moät ñôn ñaët haøng PO (Purchase Order) vôùi caùc thuoäc tính sau: item_id NUMBER line_no NUMBER (3) part_no VARCHAR2 (20) price NUMBER (15,5) qty NUMBER (9,2) received NUMBER (9,2) Xaây döïng caùc phöông thöùc cho bieát soá löôïng haøng caàn ñaët, soá löôïng haøng ñaõ nhaän 3. Taïo moät baûng (table) löu ñoái töôïng PO (ñôn ñaët haøng) theo coät. 4. Taïo moät baûng (table) löu ñoái töôïng PO (ñôn ñaët haøng) theo doøng. 5. Thöïc hieän leänh INSERT cheøn caùc PO môùi vaøo baûng, SELECT xuaát caùc PO ñaõ nhaäp ra maøn hình, UPDATE caäp nhaät thoâng tin veà PO, DELETE xoùa caùc PO cuõ 6. So saùnh hai ñoái töôïng ñöôïc thöïc hieän nhö theá naøo? Phaân bieät phöông thöùc aùnh xaï (map method) vaø phöông thöùc phaân ngoâi (order method). 7. Tham chieáu vaø keát noái giöõa caùc ñoái töôïng töø hai baûng khaùc nhau ñöôïc thöïc hieän nhö theá naøo, cho ví duï. 8. Coù theå raøng buoäc moät thuoäc tính cuûa moät ñoái töôïng baèng caùc töø khoùa NOT NULL, CHECK hoaëc PRIMARY KEY hay khoâng? www.Beenvn.com – Free Ebook Online
  16. 1.1. ÑAÙP AÙN 1. Khoâng nhö caùc kieåu döõ lieäu khaùc, kieåu döõ lieäu Object laø moät kieåu döõ lieäu phöùc hôïp noù coù theå ñoùng goùi nhöõng kieåu döõ lieäu khaùc (ñöôïc bieåu dieãn döôùi daïng thuoäc tính) vaø caû nhöõng phöông thöùc ñeå xöû lyù döõ lieäu maø ñoái töôïng ñoùng goùi. Baïn coù theå taïo ra moät kieåu ñoái töôïng vaø chæ ñònh aùp duïng kieåu ñoái töôïng cho moät coät cuûa baûng hoaëc toaøn boä baûng. Vieäc truy xuaát caùc ñoái töôïng löu trong baûng cuõng thoâng qua caùc leänh SQL thoâng thöôøng. Söû duïng kieåu ñoái töôïng baïn seõ moâ taû döõ lieäu gaàn vôùi theá giôùi thöïc hôn. 2. Kieåu ñoái töôïng PO coù theå ñöôïc taïo ra nhö sau: /* Phaàn ñaëc taû */ CREATE TYPE po AS OBJECT( item_id NUMBER, line_no NUMBER (3), part_no VARCHAR2 (20), price NUMBER (15,5), qty NUMBER (9,2), received NUMBER (9,2), Phöông thöùc duøng ñeå laáy veà löôïng haøng chöa nhaän MEMBER FUNCTION Backlog RETURN NUMBER, Phöông thöùc duøng ñeå laáy veà soá tieàn cuûa PO MEMBER FUNCTION GetAmount NUMBER RETURN NUMBER ); /* phaàn thaân cuûa ñoái töôïng */ CREATE TYPE BODY po AS www.Beenvn.com – Free Ebook Online
  17. MEMBER FUNCTION Backlog RETURN NUMBER IS BEGIN RETURN (qty-received) END Backlog; MEMBER FUNCTION GetAmount RETURN NUMBER IS BEGIN RETURN (qty*price) END GetAmount; END; 3. Taïo moät baûng (table) löu ñoái töôïng PO theo coät: CREATE TABLE ALLPO(d DATE,SaleOrder PO); Baûng ALLPO seõ ñöôïc taïo ra vôùi noäi dung nhö sau: SQL> DESC ALLPO 4. Taïo moät baûng (table) löu ñoái töôïng PO theo doøng: CREATE TABLE ALLPO OF PO; Baûng ALLPO seõ ñöôïc taïo ra vôùi noäi dung nhö sau: SQL> DESC ALLPO 5. Cheøn PO (ñôn ñaët haøng) môùi vaøo baûng ALLPO www.Beenvn.com – Free Ebook Online
  18. 6. Xem lyù thuyeát. 7,8. Xem lyù thuyeát. www.Beenvn.com – Free Ebook Online
  19. TRAÛ LÔØI BAØI TAÄP ORACLE CHÖÔNG 26 ORACLE VAØ CAÁU HÌNH MAÏNG (ORACLE NETWORK CONFIGURATION) 1. Listener laø gì? Caùùc Service chính naøo ñöôïc duøng ñeå phuïc cho vieäc truy xuaát cô sôû döõ lieäu Oracle? Listener ñoùng vai troø tieáp nhaän caùc keát noái töø maùy client göûi ñeán Server, muoán maùy client vaø Server keát noái ñöôïc vôùi nhau baïn phaûi START (hay khôûi ñoäng) chöông trình listener treân Server. Moät khi chöông trình listener ñaõ hoaït ñoäng keát noái töø maùy client cuûa baïn göûi ñeán ñuùng ñòa chæ maùy Server seõ ñöôïc chuyeån cho listener kieåm tra neáu ñaït yeâu caàu maùy Server seõ chaáp nhaän cho client thöïc hieän noái keát vaøo caùc dòch vuï cuûa cô sôû döõ lieäu. Listener chæ laø chöông trình thöïc hieän keát noái, baïn phaûi khôûi ñoäng theâm caùc Service khaùc cuûa cô sôû döõ lieäu, thöôøng moãi cô sôû döõ lieäu seõ coù hai Service caàn phaûi khôûi ñoäng laø Oracle Service vaø Oracle Startup. 2. Net Service Name laø gì? Coù maáy caùch caáu hình Net Service Name? Ñeå keát noái vôùi Server maùy client seõ duøng Net Service Name laø moät chuoãi thoâng tin ñöôïc laáy töø taäp tin TNSNAMES.ORA (treân maùy client cuïc boä taäp tin naøy thöôøng ñöôïc Oracle löu trong thö muïc ORACLE_HOME\Net80\Admin ) hoaëc treân moät maùy Server khaùc (Oracle Names Server) trong tröôøng hôïp baïn coù nhieàu cô sôû döõ lieäu vaø caàn truy xuaát treân maïng dieän roäng vôùi quy moâ cô sôû döõ lieäu phaân taùn lôùn. Khi caáu hình cho maùy client (hay Server ñoùng vai troø client) chuùng ta caàn phaûi quan taâm ñeán nhöõng thoâng soá keát noái naøy. Toång quaùt ta coù hai moâ hình thieát laäp caáu hình cho Net Service Name ôû maùy client laø: • Caáu hình quaûn lyù cuïc boä (Localized management) • Caáu hình quaûn lyù taäp trung (Centralized management) www.Beenvn.com – Free Ebook Online
  20. TRAÛ LÔØI BAØI TAÄP ORACLE 3. Caáu hình ñeå keát noái giöõa maùy client vaø cô sôû döõ lieäu treân Server ñöôïc thöïc hieän nhö theá naøo? Giaû söû Server cuûa baïn coù ñòa chæ IP laø 172.16.11.10 cho ví duï veà caùch caáu hình file TNSNAMES.ORA treân maùy client vaø LISTENER.ORA treân maùy Server. A. Caáu hình Server Caáu hình cho service listener (file LISTENER.ORA) nhö sau: LISTENER = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 172.16.11.12) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP) (HOST = 127.0.0.1) (PORT = 1521)) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORCL) ) ) B. Caáu hình client Theâm vaøo file TNSNAMES.ORA noäi dung sau: EXAMPLEDB.WORLD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 172.16.11.12) (PORT = 1521) ) (CONNECT_DATA = ( SID = ORCL )) ) www.Beenvn.com – Free Ebook Online
  21. TRAÛ LÔØI BAØI TAÄP ORACLE 4. Oracle Name Server (ONS) laø gì? Caáu hình cho ONS ñöôïc thöïc hieän nhö theá naøo (giaû söû maùy ONS cuûa baïn coù ñòa chæ IP laø 172.16.11.2)? ONS laø moät chöông trình (hay Name Service) chaïy rieâng treân moät maùy (ñöôïc goïi laø ONS Server). Caùc listener hoaït ñoäng treân maùy chuû chöùa cô sôû döõ lieäu khi khôûi ñoäng seõ töï tìm ñeán maùy ONS ñeå ñaêng kyù caùc thoâng tin caàn thieát Xem lyù thuyeát veà caáu hình ONS 5. Laøm theá naøo ñeå chöông trình listener treân server (chöùa cô sôû döõ lieäu Oracle) coù theå töï ñoäng ñaêng kyù caùc dòch vuï giao tieáp vôùi maùy ONS? Xem chi tieát caáu hình ONS ôû muïc 6 (chöông caáu hình maïng). 6. Boä quaûn lyù keát noái Oracle Connection Manager (OCM) ñöôïc duøng ñeå laøm gì? Caùch caáu hình vaø thieát laäp proxy haïn cheá caùc maùy client truy xuaát vaøo cô sôû döõ lieäu. Oracle 8 cung caáp moâ hình keát noái taäp trung thoâng qua chöông trình quaûn lyù Oracle Connection Manager. Oracle Connection Manager (OCM) ñöôïc caøi treân moät maùy rieâng bieät, giaû söû baïn coù nhieàu cô sôû döõ lieäu ñaët treân caùc maùy chuû khaùc nhau, caùc maùy client khi keát noái vôùi cô sôû döõ lieäu ñeàu phaûi thoâng qua maùy quaûn lyù OCM naøy. OCM seõ ñoùng vai troø nhö moät caàu noái giöõa maùy client vôùi caùc maùy chuû chöùa cô sôû döõ lieäu. Baïn coù theå caáu hình vaø söû duïng OCM nhö moät Proxy duøng ñeå cho pheùp hay caám maùy client truy xuaát vaøo moät cô sôû döõ lieäu naøo ñoù. Xem theâm caáu hình cho OCM ôû muïc 7 (chöông Caáu hình maïng). www.Beenvn.com – Free Ebook Online