11 cs17006

Upload: doxuanphiht

Post on 30-May-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 11 CS17006

    1/11

    90

    Abstract: In this paper, we research the transformation

    from Object- Oriented Database schemas (OODB) to

    nested relational database schemas, which base for the

    translation of Object- Oriented Queries OQL. We advance

    and improve completely the translation of OODB queries

    to relational queries algorithms.

    I. MU

    Vn ti u ho truy vn i tng trn CSDLhng i tng kh phc t p v ny sinh nhiutrng h p kh khn trong tin trnh xc nh ccphng n thc thi truy vn, iu ny xut pht tng ngha ca m hnh CSDL hng i tng, ls phong ph trong biu din cc i tng phc, sk tha v tnh ng gi. Trong khi , cc k thut

    ti u ho truy vn quan h c nghin cu honchnh v rt hiu qu. Do , vic nghin cu bindch cc truy vn i tng thnh cc truy vn quanh, sau p dng cc k thut ti u ho truy vnquan h thc hin ti u truy vn - phng php nys mang li cc gii php c tnh ng dng cao trongthc t x l truy vn i tng trn cc h thngCSDL hng i tng.

    1. Mt s khi nim mu

    Mt s khi nim v quan h nhng [5] c s

    dng trong phn (II) thc hin chuyn i lc CSDL hng i tng v quan h.

    nh ngha 1 .Quan h nhng c biu din hnhthc nh sau: (a1, , an,R1, ,Rm)

    trong , ai(i = 1,, n)l cc thuc tnh c gi trnguyn thu, Rj(j = 1,, m)l cc quan h c dng:

    Rj = (b1, , bk,Rjl).

    V d 1.Xt lc i tng,TypeNguoi = (maso, hoten, diachi, ngay_sinh)

    TypeSinhVien = Nguoi {dtb, makhoa}

    TypeNhanVien = Nguoi {}

    c biu din bng quan h nhng nh sau:SinhVien(dtb,makhoa, Nguoi(maso,hoten,diachi,

    ngay_sinh)) l mt quan h nhng hai cp. SinhVienc haithuc tnh v mt quan h nhng Nguoi. NhanVien(cong_viec,co_quan, thu_truong, luong, Nguoi(maso,hoten, diachi,

    ngay_sinh))

    nh ngha 2. Cho trc mt quan h R. Thuctnh nh danh b (TID) l a ch tham chiu ca R-b, c k hiu l &R. nh danh i tng duynht (OID) l gi trc dng xc nh duy nhti tng, do h thng to lp, c k hiu l #R.

    Thuc tnh &R l mt thuc tnh ca quan h nhngR hoc l thuc tnh (lu tr) trong mt quan h khc(vi vai tr l trng lin kt m t vic lu tr ccb cha mt tham chiu n mtR-b).

    V d 2. Cho cc lp SinhVien v NguoiTypeSinhVien = Nguoi {dtb:Double,sv_khoa : Khoa}

    TypeNguoi = (maso: Integer, hoten: String,dia_chi: String,ngay_sinh: Date)

    Lc , quan h nhng SinhVienc khi to nhhnh 1.

    2. Cc ng gp v t chc ca bi boT chc bi bo: mc (I) a ra mt snh ngha

    cbn ca quan h nhng, mc (II) xut cc bcchuyn i lc CSDL hng i tng sang lc CSDL quan h nhng; mc (III) trnh by cc thutton bin dch truy vn i tng OQL sang truy vn

    Phng php bin dch truy vn tng ng ttruy vn i tng OQL sang truy vn quan h SQL

    The Approach for Equivalent Translation of Queries from ObjectOriented Queries OQL to Relational Queries SQL

    L Mnh Thnh, Hong Bo Hng

  • 8/14/2019 11 CS17006

    2/11

    91

    quan h SQL v cui cng l a ra biu tch hpcc m un chuyn i lc , bin dch truy vn vti u ho truy vn quan h trn CSDL i tng -quan h.

    SinhVien

    dtb sv_khoaRef

    #Khoa &Khoa

    Nguoi

    maso hoten dia_chi ngay_sinh

    #SinhVien

    #Nguoi

    Hnh 1. Biu din quan h nhng SinhVien di dng cy

    Cc ng gp chnh ca bi bo:

    + Nghin cu v xut cc bc chuyn i lc gia CSDL hng i tng v CSDL quan hnhng (thut ton 1 v 2).

    + gii quyt bi ton chuyn i truy vn i

    tng sang truy vn quan h theo hai chiu tngng, chng ti b sung cc thut ton 3, 4 nhmchuyn i cc mnh select, from v ci tin ccthut ton trong [7] (thut ton 5, 6) chuyn imnh where t truy vn OQL sang truy vn SQL;

    + Gii thiu m hnh CSDL i tng - quan h ctch h p cc m un chuyn i lc , bin dchtruy vn v ti u ho truy vn, y l mt trongnhng hng pht trin cc h CSDL nhm gii quytcc xung t gia m hnh d liu quan h v m hnhd liu hng i tng.

    II. CHUYN I LC CSDL HNG ITNG SANG LC QUAN H NHNG

    Hin nay c hai hng tip cn ci t m hnhd liu hng i tng: (i) Chuyn i tt c thnhphn ca m hnh d liu hng i tng sang mth CSDL quan hmc lu tr vt l; (ii) Ci tmt cu trc lu tr m rng v ch p nhn cc cutrc lu tr phc tp hn nhiu so vi cc quan h.

    i vi hng tip cn th nht, bng k thut

    CSDL quan h, t cc cu trc phc ca lc CSDL hng i tng chng ta phi phn tch a vo theo trt tc lu tr trong cc quan h.Cc truy vn trn lc hng i tng c nhx vo cc truy vn c kt ni ln trong CSDL quanh. Hng tip cn th hai phc tp hn l phi ci

    t mt h thng qun tr lu tr mi vi cc khnng mnh hn cho d liu c cu trc phc, iu nyi hi mt s thay i ln trong thit k v k thutlu tr.

    Trong phn ny, chng ta a ra mt phng phpci t cc i tng trong CSDL hng i tngtrn m hnh lu tr quan h nhng - cu trc d liu phn c p m gi tr ca cc thuc tnh c th lnguyn thu hoc c th l cc quan h (quan h con).

    1. Tin trnh tng qut

    Chng ta a ra quy trnh thc hin chuyn ilc hng i tng sang lc quan h nhsau:

    Bc 1: Chuyn i lc hng i tng sanglc quan h nhng

    Bc 2: Bin dch cc cu truy vn i tng OQLtrn CSDL hng i tng sang truy vn quan h

    Bc 3: Ti u ho truy vn quan h SQL (bc2) bng cc phng php truyn thng [6];

    2. Chuyn i lc hng i tng sang lc quan h nhng

    a) c t cc tham chiu i tng v chmc ktni

    Gi s hai quan hR v Squan h vi nhau qua tnt P, cc lc quan h nhng c m t nh sau:

    Lp khng c quan h ktha: Cc quan hR v Sc lu tr mt cch c lp:R (#R, ... cc thuc tnh ...)S (#S, ... cc thuc tnh ....)

    Tham chiu nhng: Gi s miR-b c quan h vinhiu nht l mt S-b, ta s lu tra ch ca S-bvi miR-b tng ng. Tc l, trong php chn voR-b, chng ta nh gi tn t Ptrn quan hSi viR-b, tm S-b tng ng v lu tr cc a ch vtl ca n (&S), hoc nh danh i tng duy nht ca

    n (#S), hoc c hai trongR-b.S(S#, ... cc thuc tnh ...) v R(#R, #S, ... cc thuc tnh...) hoc R(#R, &S, ... cc thuc tnh ...) hoc R(#R, #S,&S, ... cc thuc tnh ...)

    Trong trng hp tn t P l mt hm c kiu itng, chng ta phi t chc lu tr t nht l nhdanh i tng duy nht ca i tng tham chiu.

  • 8/14/2019 11 CS17006

    3/11

    92

    Tham chiu nhng kiu tp: Tng t, nu mt R-b c quan h nhiu hn mt S-b, ta c th lu trmt tp cc tham chiu (OIDs v/hoc TIDs) i vimiR-b trong mt quan h con nhng SRef(i vitham chiu n S).S(S#, ... cc thuc tnh ...) v R(#R, SRef(#S), ... ccthuc tnh ...) hoc R(#R, SRef(&S), ... cc thuc tnh ...)hoc R(#R, SRef(#S, &S), . .. cc thuc tnh ...)

    Chmc kt ni: Cc con tr lin kt cc i tnglin quan cng c lu tr thnh cc quan h ringbit i vi cc i tng b:

    R(#R, ... mt vi thuc tnh ....) S(#S, ... mt vi thuctnh ....) JI1(&R, SRef(&S)) v JI2(&S, SRef(&R))

    Nh vy, chng ta nhm mt t p cc a chtrong mi cp ch mc kt ni.

    b) Chuyn i cc thnh phn trong CSDL hngi tng

    Qu trnh nh x cc lc CSDL hng itng t mc khi nim ln cc quan h nhng sc tin hnh theo tng bc qua cc khi nim csca m hnh i tng v a ra mt s phng nla chn cho tin trnh chuyn i. T vic la chns biu din cho mi khi nim, ta c mt khng gianquyt nh kh ln t cscho vic thit k v xydng lp bng cng c thit k CSDL vt l.

    i tng

    Mt i tng c c t bng mt nh danh duynht v c khi to bi h thng. Mi d liu linquan n i tng s tham chiu n nh danh ny.Gi s kiu i tng l Tth cc quan h nhng chanh danh i tng duy nht ca cc i tng ckiu Tl #T.

    Phng thc ca lp

    V mt nguyn l, chng ta c th biu din mtphng thc nh l mt quan h nh nguyn, vi mtthuc tnh cho tham snh danh i tng duy nht

    v mt thuc tnh khc cho gi tr kt qu. Trnghp cc phng thc c gi tr tp th thuc tnh thhai s l mt quan h con thc s ca cc b con n

    nguyn. V vy, hm n trfs: T1 T2v hm a tr

    fm: T1 set(T3) c biu din bng hai quan h nhnguyn tng ng nh sau: fs (#T1, #T2) v fm (#T1,

    T3Ref(#T3))

    Tham chiu lgic v tham chiu vt l: Hm chokt qu l mt i tng (tp i tng), c ci tbng cch lu trnh danh i tng duy nht (thamchiu lgic) ca cc i tng kt qu hoc cha nhdanh b (TID). Cc hm n tr trthnh cc quan h3 - thuc tnh v cc hm a tr trthnh cc quan hc cha cc quan h con. Quan h c cha cc thamchiu vt l i vi hai hm fsv fm, s cho kt qunh sau: T

    1(#T

    1, fs#, fs&, fm#Set(#T3

    , &T3)).

    Ci t kiu, lp v sktha

    T s phn cp k tha kiu, chng ta c hai lachn: th nht, i vi cc hm gi, chng ta ci ts k tha cc hm trong kiu bng tng ng vi cckiu con. Th hai, cc i tng s c biu din

    tng ng vi mt b - i tng trong bng ca kiucon c trng nht hoc trong nhiu b - i tng,mi b cha trong mi siu kiu.

    Chng ta xt phn cp gia cc kiu (cu trc, s ktha phng thc) v phn c p gia cc l p (miquan h bao hm).

    Kiu: Mi kiu i tng Tc nh xn mtkiu bng T cha t nht mt thuc tnh #T. Ccthuc tnh b sung trong bng Tdo cc hm (phngthc) ng gi trong kiu Tv cc hm tr vT- i

    tng.Lp: Mi lp Cc chuyn i thnh mt khung

    nhn trn c skiu bng. Nu lp c nh nghabi mt lng t forall, lng t ny c dngnhiu kin la chn trn l p. Nu l p c mt si tng thnh vin c xc nh bi forsome thkiu bng c sc m rng bng mt thuc tnhlgicB c gi trtrue nu v ch nu i tng l mtthnh vin ca lp C.

    Sk tha: L p con c chuyn i tng ng

    vi mt kiu bng. Chng ta xt hai trng hp:Siu lp gc (lp c trng nht) c lu tr trong

    bng (bng cs). Cc hm trong siu lp gc (bngcs) cng thuc v cc bng ca cc lp con.

    L p con c k tha t cc siu l p, mi siu lpc to thnh mt quan h con, c cha thuc tnh

  • 8/14/2019 11 CS17006

    4/11

    93

    nh danh i tng ca lp.

    Thut ton chuyn i lc i tng sang lc quan h nhng

    Da trn nhng phn tch v ci t trn chng ta

    c thut ton chuyn i lc i tng sang lc quan h nhng nh sau:

    Gi s lc i tng c biu din thnh dyS= (s1,s2, ,sn),si l cc lp trong lc .

    Thut ton 1: Chuyn i lc i tng sanglc quan h nhngVo: Lc i tng S(s1, s2, , sn)

    Ra: Lc quan h nhng NR.

    Phng php:(1) Khi to NR=

    (2) for mi siSdo

    (3) if sil siu lp gc then(4) Khi to quan hrcha cc thuc tnh c gi tr

    nguyn thu trong si(5) B sung thuc tnh #sivo r

    (6) NR= NRr

    (7) elseifsi l lp c k tha t cc siu lp sjthen

    (8) Khi to quan h nhng ri=

    (9) for mi siu lp sjdo(10) To quan h con rjcha cc thuc tnh ca

    lp sj(11) B sung thuc tnh #sjvo rj(12) B sung rjvo ri

    (13) for mi thuc tnh si.aksido

    (14) if ak l nh danh i tng then(15) B sung thuc tnh #sivo ri

    (16) if (ak l thuc tnh n tr, c gi tr nguyn

    thu) then(17) B sung thuc tnh ak tng ng trong quan

    hri

    (18) elseifak l thuc tnh a trthen(19) To quan h con ritng ng vi ak(20) B sung thuc tnh #ak trong ri(21) B sung rivo ri

    (22) elseifak l cc thuc tnh tham chiu

    then

    (23) if (ak l tham chiu nhng kiu tp

    n lp sl) then(24) To quan h con akRef(#sl, &sl)(25) B sung quan hakRefvo quan hri

    (26) else B sung hai thuc tnh {#sl, &sl}vo ri

    (27) NR= NRri

    Thut ton 1 tp trung x l trn cc lp cha ccthuc tnh a tr, cc tham chiu (khng to thnh chutrnh) v mi quan h k tha gia cc lp. Thut toncho kt qu l lc quan h nhng ca lc itng. Gi n l s cc lp trong lc i tng, kl s thuc tnh trong mi lpsi, m = max(n, k) th phc tp tnh ton ca thut ton 1 l O(m3).

    i vi cc phng thc ca l p, chng ta schuyn i chng thnh cc quan h nh nguyn, clu trc l p v c lin kt n l p qua cc thamchiu lgic (tham chiu vt l).

    Thut ton 2: Chuyn i phng thc ca lp

    Vo: Lc i tng S(s1, s2, , sn) v Lc quan

    h nhng NR(r1, r2, , rj)

    Ra: Lc quan h nhng NR.

    Phng php:

    (1) for mi lp siSdo

    (2) for mi phng thc fkca lp sido

    (3) if fk l hm n trthen // Hm n trfk: T1

    T2

    (4) To quan hfk(#T1, #T2)

    (5) B sung cc thuc tnh {fk#, fk&} vo quan hrk

    (6) else To quan hfk(#T1, T3Ref(#T3)) // Hm a

    tr fk: T1 set(T3)

    (7) B sung quan hfk#Set(#T3 , &T3) vo rk

    (8) B sung fkvo NR

    c) V d tng qut: Cho lc i tngVienDaihocnhsau:

    class NhanSu

    type tuple (maso: int, hoten: string, pho: string, tpho: string, matinh:

    int, ngaysinh: tuple (ngay: int, thang: int, nam:int))

    class SinhVien inherits NhanSu

    type tuple (gvhd: string, dtb: float, hocbong: float,

    tenkhoa: Khoa)

    class GiangVien inherits NhanSu

    type tuple (bomon: string, mabomon: int, chucvu: string,

    tenkhoa: Khoa, luong: int, con: set(NhanSu))

    class Khoa

    type tuple (makhoa: int, tenkh: string, diadiem: string,

    ngansach: float, cbgd: set(GiangVien))

    Lc CSDL quan h nhng c chuyn itng ng l:

  • 8/14/2019 11 CS17006

    5/11

    94

    NhanSu

    maso hoten ...NgaySinh#NhanSu

    ngay thang nam#NhanSu SinhVien

    tenkhoaRef

    #Khoa &Khoa

    #SinhVien

    ...

    NhanSu

    maso hoten NgaySinh#NhanSu

    ngay thang#NhanSu namGiangVien

    tenkhoaRef con-1

    Set

    #Khoa &Khoa NhanSu#NhanSu&

    #GiangVien NhanSu

    maso hoten ...NgaySinh#NhanSu

    ngay thang nam#NhanSu

    Khoa

    makhoa tenkh diadiem cbgd-1Set

    GiangVien# GiangVien&

    #Khoa ngansach

    Hnh 2. Biu din cc quan h nhng tngngdi dng cy

    Vic nghin cu bin dch cc truy vn itng thnh cc truy vn quan h v p dng cc kthut ti u ho truy vn quan h trong bi bo smang li cc gii php c tnh ng dng cao trongthc t khi x l cc truy vn i tng trn cc hthng CSDL hng i tng.

    III. BIN DCH CC TRUY VN HNG I

    TNG THNH CC TRUY VN QUAN H

    Ngn ng truy vn SQL c s dng l ngn ngtruy vn trong CSDL quan h v OQL l ngn ngtruy vn c s dng trong cc truy vn ca CSDLhng i tng. Trong phn ny, chng ta nghincu v xut qu trnh bin dch mt cch honchnh cc truy vn t OQL v SQL. Qu trnh chuyni cc truy vn i tng OQL c thc hin quacc bc chuyn i mnh select, from v mnh where thnh cc mnh ca truy vn quan h.

    chuyn i mnh where, chng ta s dng thtn t biu din v thc hin vic chuyn i trn th tn t [7].

    Chng ta biu din hnh thc lc i tng S=(s1, , sn),si l cc lp trong Sv truy vn i tng

    QE= (s1, , sm,Res,p1, , pk), visiS(i = 1,,

    m) l cc l p tham gia truy vn, Res l lp/kiu ktqu ca truy vn v pj (j = 1, , k) l cc biu thciu kin mnh where.

    1. Bin dch mnh select OQL sang mnh

    select SQLThut ton 3: Bin dch mnh select t OQL

    sang SQL.

    Vo: Mnh select ca truy vn i tng (Res)

    Ra: Truy vn quan h SQL.

    Phng php:

    {Res l lp kt qu ca truy vn; rl quan hcchuyn i tng ng tRes}(1) for mi thuc tnh kt quaResdo

    (2) ifa l nh danh i tng then

    (3) ac thay bng #r // ac xem nh khoca quan h

    r

    (4) elseifa l thuc tnh n trthen(5) c.ac thay bng r.a

    (6) ifa l thuc tnh tp then

    (7) - Khi to quan hs vi thuc tnh a // #s lkho ca s

    (8) - B sung kho lin kt #s vo r(9) - B sung s vo mnh from ca truy vn

    quan h (nu n cha tn ti)(10) - B sung r.#r= s.#s vo mnh where ca

    SQL

    2. Bin dch mnh from ca truy vn OQLsang mnh from SQL

    Vic chuyn i mnh from ca OQL, chnh lchuyn i cc l p tham gia truy vn sang cc quanhmnh from ca truy vn quan h. Gi s cclp c cc thuc tnh phc l cc thuc tnh c gi trtp v qu trnh chuyn i c thc hin trn ngngha lc CSDL. i vi s k tha, khi xt mtl p c k tha t cc siu l p, chng ta to lp tmthi gm cc thuc tnh c nh ngha trong lp vcc thuc tnh k tha t cc siu lp, sau , to lpquan h tng ng vi lp tm thi c cha kho lin

    kt n siu lp (lp cha).Thut ton 4: Bin dch mnh from ca OQL

    sang SQLVo: Truy vn i tng QE= (s1, , sm, R,p1, ,pl)

    Ra: Tp cc quan hFR= {r1, , rk} (km) tham giamnhfrom ca truy vn SQL.

  • 8/14/2019 11 CS17006

    6/11

    95

    Phng php:(1) FR:= // Cha tp cc quan hc chuyn i t

    mnh from ca OQL(2) V:= (s1, , sm)

    (3) for mi lp siVdo

    (4) if (si l siu lp gc) then(5) B sung thuc tnh #sivo ri(6) To quan hric tp cc thuc tnh tng ng ca si(7) else for (mi lp sj l siu lp ca si) do(8) To quan h con tm thi rjc cc thuc tnh t lp k

    tha sj(9) B sung thuc tnh #sjvo rj(10) To quan hri t cc quan h con rj

    (11) FR:= FRri

    Cc thut ton 3 v 4 dng sau mt s hu hnbc, v tp cc thuc tnh v cc lp tham gia trongmnh select, from l hu hn. phc tp tnh ton

    ca cc thut ton c thi gian a thc.3. Bin dch mnh where ca truy vn OQLsang mnh where SQL

    Qu trnh chuyn i mnh where OQL sangmnh where SQL c thc hin qua ba bc:bc th nht, khi lp th tn t hng i tng(OPG) t mnh where ca truy vn i tng. Bcth hai, th tn t hng i tng c bin dchthnh th tn t quan h (RPG). Bc th ba, mnhwhere ca truy vn quan hc to lp t thtn t quan hbc th hai [7].

    nh ngha 3.Cho mnh where ca truy vn itng trong OQL c k hiu l OW. Chng ta nhngha th tn t i tng ca OW nhsau:OPG(OW) = OPG(OV, OE1, OE2)

    vi OV l tp nh, OE1 l tp cc cnh nh hngv OE2 l tp cc cnh v hng.

    Mi nh v trong OV tng ng vi mt bin thhin lp ca mt l p (c th c hai hoc nhiu nhtrong th OPG tng ng vi cng mt lp). Minh v trong OV c gn nhn bng cc biu thc

    iu kin trn cc bin th hin lp tng ng vi v.Hn na, nh vc gn nhn l LS nu n l binth hin lp u tin trong v tri (k hiu l VT) catn t. Tng t, nh vc gn nhn l RS nun l bin th hin lp u tin trong v phi (k hiul VP) ca tn t.

    Cnh nh hng e trong OE1 tnh v1n nhv2c gn nhn Attr biu din ng i t thuctnh phc Attr ca lp c1 tng ng vi v1 n lpmin caAttrtng ng vi v2 (mt cnh nh hngbiu din kt ni n). Nu Attr tng ng vi thuctnh kiu tp ca lp c1 v c c lng bng mtlng tforall hoc exists, lng t ny s l nhntrn cnh e.

    Cnh v hng trong OE2 biu din kt ni hingia v tri (VT) v v phi (VP) ca mt tn t. Micnh v hng c gn nhn bng php kt ni hingia cc bin th hin lp tng ng.

    nh ngha 4. Cho mnh where ca truy vnSQL trong m hnh quan h c k hiu l RW.Chng ta nh ngha th tn t quan h ca RW:RG(RW) = RG(RV, RE1, RE2)

    vi RV l tp nh, RE1 l tp cc cnh nh hngv RE2 l tp cc cnh v hng.

    nh v trong RV l bin b quan h v c nh

    sn (n 0), n l cp ca truy vn con m cc

    bin bc nh ngha. Truy vn ngoi cng c cpbng khng (0). Cnh nh hng e tnh v1nnh v2 trong RE1 biu din mt php ton nh in,notin, v.v. Cc php ton ny c gn nhn trncnh. Cnh v hng e2 gia nh v1 v v2 trong RE2

    biu din kt ni hin.a) Xy dng th tn thngi tng tmnhwhere ca truy vn OQL

    Cc lut xy dng th tn t hng i tng(OPG) t mnh where ca truy vn OQL:

    (R1) Biu thc ng dn c dng c1.A2.A3An.v,

    vi c1 l lp gc,Aici-1 l i tng da trn bin

    th hin c xc nh trong lp ci-1 (vi min ca lp

    ci, 2 in) (nh ngha 1.1). Chuyn i biu thc

    ng dn nh sau:

    (a) Vi mi ci-1.Ai (i = 3, , n) c bin dchthnh mtnh v c gn nhn vi iu kin trnAi. nh tng ng vi A2 c gn nhn l LShoc RS nu A2 l im btu ca VT hoc VPca mt tn t.

    (b) To lp cnh c hng vi nhn l tn ca

  • 8/14/2019 11 CS17006

    7/11

    96

    thuc tnh phc A i+1 tnh tngng vi c i-1.Ainnh tngng vi c i.Ai+1, nu iu kin trn l Ai llng t exists (forall), Ai l thuc tnh kiu t p thlng texists (forall) l nhn trn cnh c hng.

    (R2) Nu c nhiu biu thc ng dn trong mnhwhere, chng ta thc hin vic trn cc cnh chng biu din cc biu thc ng dn nh sau:Cho P1 v P2 l cc cnh c hng ca cc biu thcng dn tng ng EXP1 v EXP2.

    (a) Tm biu thc con chung di nht EXP caEXP1 v EXP2 vi cng bin thhin lp u tin lv. To lp cnh c hng ca EXP v cc cnh chng ca cc biu thc con cn li ca EXP1, EXP2sau khi tch biu thc con chung di nht.

    (b) Ln lt trn hai cnh c hng ca cc biu

    thc con vo cnh c hng ca biu thc con chungnht. Nu c cc iu kin trn cc nh tngngtrong cc ng dn gc th chng ta to lp iukin mi AND gn chocc nh trn.

    (c) Khng c thay i trong cc phn khng thchin trn ca P1 v P2.

    (R3) Vi tn t c c hai v VT v VP, kt ni hingia VT v VP c thc hin trn cc thuc tnhnguyn thu: Attr1 Attr2. Cho v1v v2 l cc nh c bin dch t cc bin th hincui ca VT v VP l O1 v O2. Lc , kt ni giaVT v VP c chuyn i thnh mt cnh v hnggia nh v1 v v2 vi nhn O1.Attr1 O2.Attr2

    V d 3: Chng ta xt lc i tng trong v dtng qut (2.4), b sung cc lp Oto, ThanhPho,CongTy:

    class Oto

    type tuple (maso_xe: int, kieu_xe: string, mausac: string,

    dong_co: string, noi_sx: string, ten_cty: string)

    class ThanhPho

    type tuple (maso_tp: int, ten_tpho: string, thi_truong: string,danso: int)

    class CongTy

    type tuple (maso_cty: int, ten_cty: string, maso_xe: int)

    vi cc bin th hin lp tng ng ca cc lp lOto1, Oto2, NhanSu1, NhanSu2, ThanhPho1, ThanhPho2.

    Chng ta xt truy vn: Tm tt c cc xe t c mu, m ch xe c nh thnh ph c dn s bng vidn s ca cc thnh ph m cc ch xe c t muxanh v cng ty sn xut loi xe c mu t tithnh ph c Th trng tn l Thanh. Ta c truyvn i tng sau:select Oto1.maso_xe from Oto1, Oto2

    where (Oto1: mausac = ).(forall NhanSu.maso:).(existsmaso_tp: ThanhPho) = (Oto2: mausac = xanh).(forall

    NhanSu.maso:).(exists maso_tp: ThanhPho) and

    (Oto1:).(ten_cty:).(maso_tp: thi_truong = Thanh)

    S dng cc lut R1 R3, chng ta c th tn ti tng ca mnh where nh hnh 3.

    RSOto2

    mausac = xanh

    forallNhanSu.maso

    LS

    Oto1

    mausac =

    NhanSu1

    exists maso_tp

    NhanSu1 ThanhPho1

    ThanhPho2

    CongTyThanhPho

    ten_ctymaso_tp

    forall NhanSu.maso exists maso_tp

    thi_truong = Thanh

    Hnh 3. th tn thngi tngca mnh where v d 3

    b) Chuyn i th tn ti tng sang th tntquan h

    Chng ta dng mt ngn x p Vet1 lu vt ca

    cc nh thm trong th tn ti tng v tht chng c thm sut trong qu trnh chuyn i.Mi thc th trong Vet1 c cu trc gm hai trng:tn ca bin b quan h v cp ca n. S ny sckhi to v hiu chnh sut trong qu trnh chuyn iv dng xc nh truy vn con khi n lng trongmt truy vn con khc. nh c gi l nh kchhot nu n l nh lin kc thm trong qu trnhchuyn i. Khi u, khng c nh no c kchhot v ngn xp Vet1 rng

    Thut ton 5: Chuyn i th tn t OPG nRPG.

    Vo: th tn t hng i tng OPG(OV, OE1, OE2)

    Ra: th tn t quan h RPG(RV, RE1, RE2)

    Phng php:

    /* Bc 1: Chuyn i cc nh trong OV */(1) for vi mi nh vtrong OV tng ng vi mt bin

  • 8/14/2019 11 CS17006

    8/11

    97

    th hin lp Odo

    (2) To mt bin quan h mi rv(O) vi quan hr(O)

    (3) a nh (rv(O), 0) vo th tn t quan h RPG(4) Sao chp nhn trn vn nh (rv(O), 0) gm nhn

    LS hoc RS nu c;

    /* Bc 2: Chuyn i cc cnh trong OPG */(5) repeat(6) Bc 2.1:

    if c mt nh kch hot trong OPG then goto Bc 2.2

    elseif Vet1 then

    Chn nh th tn t OPG l pop(Vet1, top)

    else Chn nh bt k v gn nhn LS;

    (7) Bc 2.2: Vi mi cnh c hng e1 tnh kch hot

    v1n nh v2, e1 OE1. Chng ta c ba trng hp, phthuc vo nhn trn e1, k hiu l Nhan_canh (trng hp 4p dng cho cnh v hng e).

    Trng hp 1: Nhan_canh =Attr,Attrl thuc tnh

    phc, khng phi kiu tp ca c.O1 vi min c.O2. Lc, r(O1) v r(O2) l cc quan h tng ng vi cclp c.O1 v c.O2. Cc bin quan hrv(O1) v rv(O2)c to lp tO1 v O2. Trong trng hp ny, tcnh u tin l cnh v hng gia nh (rv(O1), n)

    v nh (rv(O2), m), cnh c nhn PKey l kho chnhca quan hr(O2). t n = m. Biu din cnh nh sau:

    PKey(rv(O1), n) (rv(O2), m)

    Trng h p 2: Nhan_canh = exists Attr, Attr lthuc tnh kiu tp ca c.O1 vi min c.O2. Trongtrng h p ny, tn ti quan h r(O

    1,2) lin kt vi

    r(O1) v r(O2) trong lc quan h gc. Vi cnh chng e1 ta thc hin:

    (i) To lp bin quan h mi rv(O1,2) i vi quanh r(O1,2)

    (ii) To mt cnh v hng gia nh (rv(O1 ), n)v nh (rv(O1,2 ), k), cnh c nhn PKey1 l khochnh ca quan h r(O1).t k = n;

    (iii) To mt cnh v hng gia nh (rv(O1,2), n)v nh (rv(O2 ), m), cnh c nhn PKey2 l khochnh ca quan h r(O2). t m = n; Biu din cccnh nhsau:

    PKey1(rv(O1), n)

    PKey2(rv(O1,2), n) (rv(O2), m)

    Trng h p 3: Nhan_canh = forall Attr, Attr lthuc tnh kiu tp ca c.O1 vi min c.O2. Tng t,ta c quan hr(O1,2) lin kt vi r(O1) v r(O2) trong

    lc quan h gc.

    (i) To lp bin quan h mi rv(O1,2) i vi quanh r(O1,2)

    (ii) Ly mt cnh c hng tnh (rv(O1), n) n

    nh (rv(O1,2), k), cnh c nhnPKey1 not in, PKey1kho chnh ca quan h r(O1).t k = n + 1;

    (iii) Ly mt cnh c hng tnh (rv(O1,2), n +1) n nh (rv(O2 ), m), cnh c nhn PKey2 not in,PKey2 l kho chnh ca quan h r(O2).t m = n +2; Biu din cc cnh nhsau:

    PKey1 not in(rv(O1), n) (rv(O1,2), n+1) (rv(O2), n+2)

    PKey2 not in

    Trng h p 4: Nhan_canh = O1.Attr1 O2.Attr2, c gn cng vi cnh v hng egia v1 v v2. Vi e ly mt cnh v hng egia

    (rv(O1), n) v nh (rv(O2), m), c nhn rv(O1).Attr1 rv(O2).Attr2. i vi cnh v hngkhc gia v1 v v2 c cng dng nhn, b sung nhnca n vo nhn ca cnh e. Biu din cnh nh sau:

    (rv(O1), n) (rv(O2), m)rv(O1).Attr1 rv(O2).Attr2

    (8) Bc 2.3:(a) Xo cnh x l t th tn t hng i tng

    OPG.

    if (nh v1 khng phn lp) v (rv(O1) khng nh ca

    Vet1) then

    push(Vet1, (rv(O1), n), top);

    if (nh v1

    phn lp) v (rv(O1

    ) nh ca Vet1) then

    pop(Vet1, top) /* Ly (rv(O1), n) ra khi ngn xp

    Vet1;

    (b) Xo thit lp nh kch hot (rv(O1), n);(c) i vi cc trng hp 1, 2 v 3, nu nh v2 khngphn lp trong OPG, thit lp nh v2 l nh kch hot.Trong trng hp 4, t nh v c nhn RS v kt ni viv2 l nh kch hot. Gn s cp ca v l s cp ca rv(O1).

    (9) until (tt c cc cnh trong th tn t hng i

    tng b loi b).

    V d 4: Xt th tn t hng i tng OPGtrong hnh 3. Chng ta c chuyn i th tn tquan h tng ng nh sau:

  • 8/14/2019 11 CS17006

    9/11

    98

    ThanhPho 1.danso =

    ThanhPho2.danso

    RS(Oto2, 2)

    mausac = xanh

    masoxe not in

    LS(Oto1, 0)

    mausac =

    (Oto_Nguoi2, 3)

    maso_tpho

    (Oto_Nguoi1, 1 )(ThanhPho1, 2)

    (ThanhPho2, 4)

    Thi_truong = Thanh(CongTy, 0)(ThanhPho, 0)

    ten_cty

    (Nguoi2, 4) (Nguoi_Thanhpho 2, 4)

    (Nguoi1, 2) (Nguoi_ThanhPho1, 2)

    maso_nhansumaso_nhansu not in

    maso_tpho

    masoxe not in maso_tphomaso_nhansumaso_nhansu not in

    Hnh 4. Chuyn i th tn thngi tngn th tn tquan h

    Chng ta thc hin chuyn i cnh t Oto1 n Nguoi1. Trong trng h p ny, Nhan_canh =forallmaso_nhansu, tng ng vi trng hp 3 trong thutton 5. Quan h kt hp gia quan h Nguoi v Oto lOto_Nguoi trong lc quan h. Do , chng ta bsung mt bin quan h b mi Oto_Nguoi1 vi cp

    tng ng trong th tn t quan h. Sau , chngta to cnh c hng t nh Oto1 n nh

    Oto_Nguoi1 v cnh c gn nhn masoxenot in,masoxe l kho chnh ca quan h Oto. Tng t,chng ta to cnh c hng tnh ca Oto_Nguoi1

    n nh Nguoi1 vi nhn maso_nhansunot in.c) Xy dng mnh where quan h t th tn tquan hThut ton 6: To lp mnh where t th tn tquan h.

    Vo: th tn t quan h RG(RV, RE1, RE2)

    Ra: Mnh where ca truy vn quan h tngng.

    Phng php:

    {Chng ta dng ngn x p Vet2, cu trc ca miphn t trong ngn xp c hai trng: tn ca bin bquan h v cp ca n. Khi u, khng c nh noc kch hot v ngn xp Vet2 rng}(1) repeat

    /* Bc 1: Chn mt nh kch hot */

    (2) if Vet2 then

    Chn nh kch hot l pop (Vet2, top)(3) else Chn nh bt k c nhn l LS;

    /* Bc 2: X l nh kch hot */(4) (a) Kim tra nu bin quan h b tng ng vi nhkch hot xut hin trong mnh from ca truy vn conhin thi su nht SQ hoc trong truy vn con bt k m SQlng trong n. Nu SQ khng xut hin trong c hai trnghp trn, th b sung thnh phn r(rv) rt vo trong mnh

    from ca SQ, rtl bin vng ca quan hr(rv).(b) Nu tn ti kiu kin Nhan_canh(j) ti nh kch

    hot,j= 1, , kth ktn trt.Nhan_canh(j) c kt nibng php ton and, b sung n vo mnh where quanh v loi bkNhan_canh(j);

    (c) Nu nh kch hot ni vi nhiu hn mt cnh, th

    y nh kch hot vo ngn xp Vet2;(d) Nu nh kch hot (rv, n) c lin kt vi cnh no

    , chuyn n Bc 3cn khng, nu n l nh phn lp cui mt truy vn

    con, th b sung q du ngoc phi ) vo mnh wherequan h. Nu ngn xp Vet2 l rng th q = n, cn khng q= n p,p l cp ca phn tnh ca ngn xp Vet2.Xo nh kch hot (rv, n) trong th tn t quan h RG vquay li Bc 1.

    /* Bc 3: X l cnh lin kt vi nh kch hot */(5) Trng hp 1: /* Cnh c hng . Nhn cnh c dng:

    Attr */

    Gi s cnh c hng ni tnh kch hot (rv, n) n nh(rv1, n + 1). Lc , chng ta b sung mt truy vn con vomnh where ca truy vn con hin thi.

    rv.Attr

    (select rv1.Attrfrom r(rv1) as rt1 where )

    Trng hp 2: /* Cnh v hng */Gi s cnh v hng ni tnh kch hot (rv, n) n nh(rv1, m).

    - Trng hp 2.1: Nu n < m, c ngha rng bin quan hb ca nh lin k (rv1, m) cha c xc nh v s cpca nh lin k ln hn cp ca nh kch hot. Chng takhng chuyn i cnh ny cho n khi nh (rv1, m) cxc nh. Lc , nh kch hot tip theo c chn tnhbt k c nhn RS v kt ni vi nh (rv, n) qua ngdn trong th tn t quan h. Quay li Bc 2;

    - Trng hp 2.2: nm: /* c ba kh nng ca trng hp

    ny. Nu n > m, th (rv, n) l nh cui cng ca VP ca tn ti tng. Nu n = m v nhn c dng nhan_canh = rv.Attr rv1.Attr1 th (rv, n) l nh cui cng ca mtVT. Trong trng hp ny, (rv1, m) khng c lng t forall.Cui cng, nu n = m v nhan_canh =Attr, cnh s thuctrong VT hoc VP ca tn t hng i tng */

    Khi nm, c hai bin quan h b tng ng vi nh kch

    hot v nh lin k vi n c xc nh. Lc , nu nhntrn cnh c dng Attr, b sung rv.Attr= rv1.Attr vomnh where ca truy vn con hin thi; cn khng, nunhn c dng rv.Attr rv1.Attr1, th b sungcc kt ni quan h trong nhn trn cnh ny trong mnh where ca truy vn con hin thi, nu c nhiu hn mt tnt trong truy vn con th s dng php ton and lin ktgia cc biu thc./* Bc 4: Xo cc nh chuyn i */

    (6) Nu cp nm: Nu nh kch hot l nh phn lp thxo nh kch hot (rv, n) trong th tn t quan h.nh

  • 8/14/2019 11 CS17006

    10/11

    99

    (rv1, m) c chn l nh kch hot k tip. Quay li Bc2.

    Nu n > m: (trng hp ny chxut hin vi kt ni hingia VT v VP, v c t nht mt lng t forall).t mts du ngoc phi ) trong mnh where (s dng bc1.(d)); xo (rv, n). Nu (rv1, m) l nh phn lp, xo nhkhi th tn t quan h. Quay li Bc 1 chn nhkch hot tip theo;

    (7) until RG = ;

    IV. TCH HP CC M UN BIN DCHLC V TRUY VN TRONG H CSDLIU I TNG - QUAN H

    Vn pht trin mt h thng CSDL hng itng vi cc chc nng c trng v h thng kiui tng c cu trc phc l rt phc tp. Mt hngnghin cu c xut gii quyt cho vn xung t gia cc h thng CSDL quan h v CSDLhng i tng, l xy dng CSDL i tng -quan h trn csca h qun tr CSDL quan h. Vicch tip cn ny, chng ta tn dng c cc uim vt tri ca c hai m hnh d liu: tnh chtch, lgic v t p cc k thut CSDL xy dng khhon chnh trn CSDL quan h;kh nng linh hot, mm do trong phn tch, thit k lc CSDLv s c t phong ph cc thc

    th th gii thc trong CSDLhng i tng.

    Trong CSDL i tng quanh, chng ta ci t cc giao dinhng i tng mc ngidng nh DataBlade ca Informixv Data Cartridge ca Oracle. S dng m hnh khung ci t giao din hng i tng, vi giao dinny chng ta khng thay i h thng tn ti (mhnh quan h) v c th d dng hiu chnh m hnhvi nhiu trng hp pht sinh khc nhau. N c dng

    nh mt siu d liu trong sut qu trnh bin dchlc v c thc kin trc li nh mt giao dinchng trnh ng dng. Hn na, n cho php ngithit k phi hp cc lut vi nhau trong mt lp v kth p cc l p trong m hnh khung. Ngi s dng cth p dng cc tnh nng hng i tng mt cch d

    dng trong h thng quan h.

    Hnh 5 l s ca h thng CSDL i tng -quan hc tch hp cc m un bin dch lc v cc truy vn hng i tng sang truy vn quan

    h. Ngoi ra, chng ta b sung m un ti u truyvn vi tp cc k thut ti u ho truy vn quan h,qu trnh ti u ho truy vn hng i tng thchin qua giao din hng i tng c thc hinqua cc giai on: th nht, bin dch truy vn hngi tng thnh truy vn quan h trn lc itng c chuyn i tng ng; tip theo, chng tas dng m un ti u truy vn thc hin ti u hotruy vn cho; cui cng, truy vn kt qu scdch ngc sang truy vn hng i tng v xut ktqu qua giao din hng i tng.

    V. KT LUN

    Ti u ho truy vn hng i tng trn CSDLhng i tng l lnh vc c nhiu tc gi quantm nghin cu, mc d c kh nhiu cc kt qumi vi nhng phng php c xut p dng

    trc ti p trn CSDL hng i tng, nhng nhnchung kh nng ci t v tnh thc thi ca mt sphng php qu phc t p khi p dng trn cc itng phc trong lc hng i tng; hoc lph thuc (hay gii hn khi xem xt ti u truy vn)

    nhiu vo tng m hnh d liu c th v c trngno c ci t trong m hnh . Do , vic sdng CSDL quan h nhng lm nn trong lu tr vtl v cc thao tc d liu c thc hin qua giao dinhng i tng l gii php ng dng h p l CSDL i tng - quan h trn h qun tr CSDL

    Ngi dng

    Lc i tng

    Lc quan h

    CSDL quan h

    Xut kt qu

    OQL

    Giao din hng

    i t

    ng

    Trch xut cccu trc i tng

    Php ton nh nghalc i tng

    Module tin x lbin dch lc

    Bin dch phngthc th tc

    Ngn ngOQL

    Ngn ngSQL

    Module bin dchtruy vn

    Module ti utruy vn

    M hnh

    khung

    Hnh 5. S tch hp ca h thng CSDL i tng quan h

  • 8/14/2019 11 CS17006

    11/11

    100

    quan h, v vy vic gii quyt trn vn bi tonchuyn i lc v bin dch truy vn gia mhnh quan h v m hnh hng i tng l cn thit.

    TI LIU THAM KHO[1] J. Fong, Converting Relational to Object-Oriented

    Databases, SIGMOD Record, 26(1), March 1997, pp.

    53-64

    [2] J. Fong and S. Cheung, Translating OODB Method to

    RDB Routine, International Journal of Software

    Engineering 11(3), 329 - 355, 2001.

    [3] Ramanathan C. and Hodges J. , Extraction of Object-

    Oriented Structures from Existing Relational

    Databases, ACM SIGMOD Record, 26(1), 1997.

    [4] L Mnh Thnh, Hong Bo Hng, Mt phng php

    chuyn i dliu tcsdliu quan h sang cs

    d liu hngi tng, Tp ch khoa hc, (11), i

    hc Hu, 2002, tr. 35 - 44.[5] L Mnh Thnh, on Vn Ban v Hong Bo Hng,

    Sdng kthut lu trquan h lng trong thit kc

    sd liu vt l cho h thng csd liu hngi

    tng, Hi tho Nghin cu cbn v ng dng Cng

    ngh thng tin (FAIR),Nh xut bn Khoa hc v K

    thut, H ni, 2004, tr.305314.

    [6] Ullman, Jeffrey D. ,Nguyn l cc h csdliu v c

    s tri thc, T p 1, 2, Trn c Quang bin dch, Nh

    xut bn Thng k, 1999.[7] C. Yu, Y. Zhang, W. Meng, W. Kim, G. Wang, T.

    Pham and S. Dao, Translation of Object-Oriented

    Queries to Relational Queries, 11th

    IEEE International

    Conference on Data Engineering, Proc. of IEEE on

    Data Engineering, 1995, pp. 90-97.

    Ngy nhn bi: 24/04/2006

    SLC TC GI

    L MNH THNH

    Sinh nm 1953 ti QungTr.

    Tt nghip i hc Bchkhoa H Ni nm 1977. Nhnbng Tin s nm 1993 tiHungari, chuyn ngnh mbo ton hc cho my tnh int.

    Hin ang cng tc tiTrng i hc Khoa hc, i hc Hu.

    Hng nghin cu: Csd liu suy dn v csd liu hng i tng.

    HONG BO HNG

    Sinh nm 1971 ti Hu.

    Tt nghip i hc S phmHu nm 1993, i hc Bchkhoa H Ni nm 1995. Ttnghip Thc snm 2002 ti ihc Bch khoa H Ni, chuynngnh Cng ngh thng tin, angl nghin cu sinh ti Vin Cng

    ngh thng tin, Vin Khoa hc Cng ngh Vit Nam.

    Hin ang cng tc ti SBu chnh Vin thngtnh Tha Thin Hu

    Hng nghin cu: Csd liu hng i tng.

    Email: [email protected]