Kodulehed
Valitud koduleht: [368] - Andmebaasid I (IDU0220) (kevad 2018)
Üldist
Ülesanded
Materjalid
Vaated materjalidele
Tudeng
Abi
Mitmesugust
HELPDESK - teemad:

                         
Erki Eessaar:
Teeme projekti töövihiku järgi. Meil on andmebaasis järgmise kontseptuaalse andmemudeli järgi loodud tabelid:

[Treening]-1----------0..*-[Treeningu_kategooria_omamine]-0..*---------1-[Treeningu_kategooria]

[Treening]-1----------0..*-[Treeningu_põhimõttelise_toimumise_asukoht ]-0..*---------1-[Ruum]

Milliste välisvõtmete puhul tuleks kasutada ON DELETE CASCADE ja milliste puhul mitte?

Vastus: Teie andmebaasis on kaks sarnast (mitu-mitmele seost realiseerivat) tabelit.

Treeningu_kategooria_omamine
Treeningu_põhimõttelise_toimumise_asukoht

Nendes on kokku neli välisvõtit. ON DELETE CASCADE kasutamise üle otsustamisel tuleks mõelda, milline oleks primaartabelist ühe rea kustutamise mõju sõltuvale tabelile.

Analüüsin ükshaaval kõiki välisvõtmeid mõttega, et nende puhul oleks määratud "ON DELETE CASCADE".

1.
Primaartabel: Treening
Sõltuv tabel: Treeningu_kategooria_omamine

Kui kustutan rea tabelist Treening, siis kustuvad ainult selle konkreetse treeningu kategooria omamised. Muudatus mõjutab ainult neid, kes kasutavad selle ühe treeningu andmeid. Kustutamine ei sega ega takista teistele treeningutele kategooriate määramist. Võib öelda, et muudatuse mõju on lokaalne. ON DELETE CASCADE toetaks kasutusjuhu Unusta treening läbiviimist.

2.
Primaartabel: Treening
Sõltuv tabel: Treeningu_põhimõttelise_toimumise_asukoht

Sama, mis esimene.

3.
Primaartabel: Ruum
Sõltuv tabel: Treeningu_põhimõttelise_toimumise_asukoht

Kui kustutan rea tabelist Ruum, siis mõjutab see kõiki treeninguid, millele see ruum on asukohaks märgitud (võib olla kümneid või isegi sadu). Võibolla mõni treening jääks üldse ilma ruumita. Kui treeningute haldur on treeningule märkinud ruumi ja siis selgub, et seda ruumi polegi tegelikult olemas või see kaob kasutusest, siis korrektne asjaajamine dikteerib, et treeningute haldurit tuleb sellest informeerida ning temaga koos leida lahendus, millist ruumi ikkagi treeningute jaoks kasutada. Äkki tuleb välja, et mõne treeningu läbiviimiseks ei olegi ühtegi sobivat ruumi ja seda treeningut ei saagi läbi viia (treening tuleb lõpetada või unustada). Võib öelda, et muudatuse mõju on globaalne. ON DELETE CASCADE ei peaks kasutama. Selle asemel sobib ON DELETE NO ACTION. Kui süsteemis on kasutusjuht Unusta ruum, siis ON DELETE NO ACTION aitab jõustada reegli, et kasutuses ruume ei saa unustada (andmeid kustutada), vaid need tuleb lõpetada ja vajadusel lõpetatavale ruumile sobiv asendus leida.

4.
Primaartabel: Treeningu_kategooria
Sõltuv tabel: Treeningu_kategooria_omamine

Kui kustutan rea tabelist Treeningu_kategooria, siis mõjutab see kõiki treeninguid, mis on sellesse kategooriasse määratud (võib olla kümneid või isegi sadu). Võibolla peale seda ei kuulugi enam mõni aktiivne treening ühtegi kategooriasse. See läheb aga vastuollu analüüsi dokumendis seisundidiagrammis väljendatud reegliga, et iga aktiivne treening peab olema seotud vähemalt ühe kategooriaga. Kategooriaid kasutatakse treeningute otsimiseks. Kui treening pole üheski kategoorias, siis ei saa kliendid selle andmeid vaadata (vt kasutusjuhtu "Vaata aktiivseid treeninguid"). Võib öelda, et muudatuse mõju on globaalne.ON DELETE CASCADE ei peaks kasutama. Selle asemel sobib ON DELETE NO ACTION. Kui süsteemis on kasutusjuht Unusta klassifikaator, siis ON DELETE NO ACTION aitab jõustada reegli, et kasutuses klassifikaatori väärtuseid ei saa unustada (kustutada), vaid need tuleb lõpetada ja vajadusel lõpetatavale väärtusele sobiv asendus leida.

Kommentaarid
Sellele küsimusele/vastusele pole kommentaare



1.Erki Eessaar:
2.Erki Eessaar:
3.Erki Eessaar:
4.Erki Eessaar:
5.Erki Eessaar:
6.Erki Eessaar:
7.Erki Eessaar:
8.Anonüümne:
9.Erki Eessaar:
10.Erki Eessaar:
11.Erki Eessaar:
12.Erki Eessaar:
13.Erki Eessaar:
14.Erki Eessaar:
15.Anonüümne:
16.Erki Eessaar:
17.Erki Eessaar:
18.Erki Eessaar:
19.Erki Eessaar:
20.Erki Eessaar:
21.Anonüümne:
22.Erki Eessaar:
23.Erki Eessaar: