Adatvezérelt alkalmazások fejlesztése (AAF) - Kidolgozott feladatok

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
← Vissza az előző oldalra – Adatvezérelt_alkalmazások_fejlesztése

A hivatkozott adatmodell megegyezett a gyakorlatokon használttal.

Tartalomjegyzék

2011 januári záróvizsga kérdések

A 2010-esből ami nem kellett, azt áttettem az egyéb kérdésekbe.

1. Ismertesse a háromrétegű architektúra elemeit, mutassa be az egyes rétegek szerepét! Milyen rétegfüggetlen szolgáltatások találhatók meg egy háromrétegű architektúrára épülő alkalmazásban?

Aaf 3reteg.png

A három réteg:

  • Megjelenítési réteg
    • Tipikusan MVC architektúra
    • Felület független a tranzakcióktól
    • Felhasználói input ellenőrzése
    • Egyszerű transzformációk (név <-> id)
    • Adatok megjelenítése
    • Lokalizáció
  • Üzleti réteg
    • Business Entities
    • Business Components
      • Összetett komponensek
      • Alapszolgáltatásokat implementál
      • Tranzakciók (része lehet)
    • Business Workflow
      • Összetett üzleti folyamatok
      • Komponensekből építkezik
      • Tranzakció határok
    • Service Interfaces (belső rétegek elrejtése)
  • Adatelérési réteg
    • DAL
      • Adatbázis hozzáférés
      • Elemi adatszolgáltatások
    • Service Agents
      • Szolgáltatások elérése
      • Külső szolgáltatások "adatbázisként" látszanak
      • Csomagolás

Rétegfüggetlen szolgáltatások:

  • Security
    • Authentication, Authorization, Secure Communication, Auditing, Profile management
  • Operational management
    • Exception management, Monitoring, Biz monitoring, Metadata, Configuration, Service Location
  • Communication
    • Synchronicity, Format, Protocol

2. Ismertesse a tranzakciók alaptulajdonságait! Mire szolgálnak a tranzakció izolációs szintek, milyen izolációs szinteket támogat az Oracle és az MS SQL Server?

A tranzakció a feldolgozás logikai egysége, olyan feldolgozási műveletek sorozata, melyek csak együttesen értelmesek. Alaptulajdonságok (ACID):

  • Atomicity (Atomicitás)
    • Vagy az összes művelet hatásos, vagy egyik sem
  • Consistency (Konzisztencia)
    • A rendszert konzisztens állapotból konzisztens állapotba viszi
    • Hiba esetén is képes konzisztens állapotba visszaállni (soft hiba: memória tartalom vész el, hard hiba: háttértároló sérül)
  • Isolation (Izoláció)
    • Tranzakciók hatásai egymástól függetlenek
    • Tranzakciók ütemezése
      • Mintha egymás után hajtódnának végre
      • Zárolás
  • Durability (Tartósság)
    • Hatása tartósan megmarad
    • Nemcsak memóriában történik meg a módosítás (hibákra figyelni)

Izolációs szintek: Az izoláció költséges, és legtöbb esetben nincs is rá szükség, ezért az izolációs szinteknek a feladata olyan megoldásokat választani, ami épp annyi megszorítást (overhead-et) visz a rendszerbe, amennyi még a tranzakciók helyes működéséhez feltétlen szükséges (lehetnek olyan problémák - a problémákat lást alább - amiket az adatbázis kezelő helyett az üzleti logika is meg tud oldani, ráadásul hatékonyabban az alap működésből adódóan).

Megfelelő izoláció hiányában előforduló problémák:

  • Elveszett módosítás: 2 tranzakció is módosítja az elemet, ekkor csak a később kommitált hatása marad meg
  • Piszkos olvasás: Nem kommitált tranzakció adatát kiolvassa egy másik tranzakció
  • Nem megismételhető olvasás: Olvasás eredménye függ attól, hogy a tranzakción belül mikor lett kiadva
  • Fantom rekord: Kurzoroknál előfordulhat, hogy olyan elem van benne, ami már törlődött, vagy olyan elem hiányzik, ami azóta jött létre

MSSQL:

  • Uncommitted read: mind a 4 probléma
  • Committed read: Nincs piszkos olvasás (csak kommittált adat olvasható)
    • Implementációja (MSSQL!):
      • Select utasítás
        • Megosztott zárakat használ
      • Rekord módosul
        • Más nem olvashatja
  • Repeatable read: nincs piszkos olvasás, nincs nem megismételhető olvasás
  • Serializable: Teljes izoláció -> egyik probléma sem fordulhat elő
  • Snapshot (szabványtól eltérő)
    • az Oracle Committed Read izolációs szint implementációjával kompatibilis

Oracle:

  • Committed read: Nincs piszkos olvasás (csak kommittált adat olvasható)
    • Implementációja (Oracle!):
      • Select utasítás
        • Nem helyez el zárakat
      • Rekord módosul
        • A commitált kép mindig olvasható
  • Serializable: Teljes izoláció -> egyik probléma sem fordulhat elő
  • Read only (szabványtól eltérő)
    • Serilazibale konzisztenciájú
    • Nem módosíthat
    • Tipikusan jelentésekhez

3. Ismertesse az adatbázisok szerver oldali programozásának előnyeit, hátrányait! Milyen programozási lehetőségei, sajátosságai vannak az Oracle Servernek?

Előnyök:

  • Adatbázis felelős a konzisztenciáért
  • Adatbiztonság
    • Adatmódosítás csak definiált interfészen keresztül
  • Zárt futtató környezet
  • Teljesítmény növelés
    • Csökkenő hálózati forgalom
    • Tárolt végrehajtási tervek
    • Cache
  • Termelékenység
    • Többkomponens hívhatja
    • Egyszerűbb karbantartás

Hátrányok:

  • Nem szabványos
    • Platformfüggő nyelvi elemek, megoldások
  • Interpretált
  • Növeli a szerver terhelését
  • Nem, illetve nehezen skálázható
  • Adatrétegbe nem illik bele az üzleti logika

Oracle Server:

  • Pascal jellegű szintax
  • Tárolt eljárások
    • Eltárolja a szerver a végrehajtási tervet, hivatkozott objektumokat és a státuszát
    • Ha érvénytelenné válik(pl valamely tábla struktúrája vagy jogosultsága megváltozik), akkor következő futtatásnál fordítja újra
    • Lehet külső, ekkor egy külső folyamat hajtja végre
    • Lehet függvény, ekkor van visszatérési értéke
  • Triggerek: Eseménykezelés
    • DML(táblához), DDL(sémához), rendszeresemény hatására
    • Instead of triggerrel lehet nézetekben is módosítást értelmezni
    • Lehet sor és utasítás szintű
    • :new és :old az új/eéőző érték
    • Lehet kaszkádosítani
    • Nem lehet rekurzió
    • Triggerek sorrendje megadható
    • DML-nél csatlakozik a tranzakcióhoz
    • DDL-nél és rendszereseménynél új tranzakciót indít
  • Csomagok: Eljárások gyűjteménye
    • Interface
    • Session kezelése
    • Használatkor betöltödik az egész
  • Interpretált
  • Zárt környezet

4. Ismertesse az adatbázisok szerver oldali programozásának előnyeit, hátrányait! Milyen programozási lehetőségei, sajátosságai vannak az MS SQL Servernek?

Lásd előző feladat

MSSQL Server:

  • Tárolt eljárások
    • Optimalizál, fordít
    • Újrafordít (pl új index bevezetésekor)
    • Külső eljárások .NET Assemblyk
    • Tárolt függvények: Nem módosíthatnak adatot
  • Triggerek
    • Inserted, Deleted az új/régi érték
    • Kaszkádosítás
    • Rekurzió
    • Teljes sorrend nem definiálható, csak az első és utolsó
    • Instead of triggerek
    • DDL trigger is a tranzakció része

5. Mi a lekérdezés optimalizáló feladata? Ismertesse az Oracle Server lekérdezés optimalizációjának sajátosságait!

Optimalizálás: Kevésbé használja a hardvert ugyanannak a hatásnak az eléréséhez

  • IO:
    • Korai beolvasás
    • Cilinder alapú szervezés (Egymás utáni adatok könnyen kiolvashatóak)
    • RAID
    • Liftezés
  • CPU
  • Memória

Optimalizáló:

  • Fizikai terv elkészítése
  • Táblák bejárása
  • Táblák összekapcsolása
  • Logikai tervet kap
  • Optimalizált tervet ad át a sorfordítónak, ami leképzi, majd a végrehajtó végrehajtja

Logikai optimalizálás:

  • Elemző fa kialakítása
    • Reláció
    • Művelet
    • Adat áramlása (lentről felfelé)
  • Relációs algebrai műveletek
  • Fa átalakítása
    • Kiválasztás lefelé
    • Vetítés felfelé
    • Join használata: Egyik attribútuma tábla

Fizikai tervek optimalizációja: IO-ra

  • Költségbecslés:
    • B(R): Az R reláció által elfoglalt blokkok száma
    • T(R): A reláció sorainak a száma
    • V(R,a): Az R reláció az 'a' attribútumainak a variáltsága

Oracle optimalizációja:

  • Módok:
    • Atbocsájtó képesség
    • Első n sor megtalálása
  • Nézetek:
    • Allekérdezésként vagy
    • Külön optimalizálja
  • Statisztikák:
    • Defaultértékek, majd mintavételezés
    • Adatszótárak
  • Táblaelérési módok:
    • Full table scan: Nincs index, sok rekord kell
    • Rowid scan: Index alapján
    • Unique index scan: Elsődleges kulcs alapján
    • Index range scan: Index szerint rendezett eredményhalmaz
    • Full index scan: Kulcs szerint rendezett eredményhalmaz
    • Fast full index scan: Ha csak az index elemei kellenek (nem kell a táblát elérni hozzá)
    • Index join: Összekapcsolt indexek attribútumaihoz
    • Bitmap index scan: Feltétel kiértékeléséhez
  • Indexek:
    • B*
    • Bitmap index
    • Index organized table: Blokkok sorrendje index szerint
  • SQL hint:
    • Preferált index
    • Index használatának tiltása
    • Join típus
    • Join sorrend
    • Táblaelérési mód
    • Párhuzamos végrehajtás

6. Mi a lekérdezés optimalizáló feladata? Ismertesse az MS SQL Server lekérdezés optimalizációjának sajátosságait!

Lásd: előző feladat

MSSQL optimalizációja:

  • Statisztikák alapján
  • Triviális terv: Szabály alapú
  • Nem triviális terv: Ha valamelyik fázis után elég kicsire becsüli a költséget, akkor nem megy tovább
    • 0. fázis: Egyszerű átalakítások
    • 1. fázis: Kibúvített átalakítások
    • 2. fázis: Párhuzamos végrehajtások vizsgálata
  • Táblaelérési módok:
    • Table scan
    • Clustered index scan: Nyalábolt adatolvasás, primary key mentén
    • Nonclustered index scan: = operátor kiértékelésére
    • Non/Clustered index seek: <, > operátorok kiértékelésére
  • Indexek:
    • B*
      • Egyszerű
      • Összetett
      • Clustered
  • SQL hint
  • Plan cache: A végrehajtási tervet eltárolja
  • Indexelt nézetek: Eltárolja a nézetek eredményeit
  • Included column: B* fa levelének bővítése oszlopokkal (a tényleges rekordot nem kell kiolvasni)
  • Clustered és nonclustered indexek együttes használata

7. Mi az adatelérési osztálykönyvtárak szerepe? Ismertesse a kapcsolat alapú ADO.Net adatelérést!

Adatelérési könyvtár szerepe: Absztrahálja az adatelérést

Kapcsolat alapú ADO.Net:

  • Előnyei
    • Konkurrencia kezelése egyszerűbb
    • Adatok mindig a legfrissebbek
  • Hátrányok
    • Folyamatos kapcsolat
    • Kevésbé skálázható
  • DataReader
  • SqlCommand
  • SqlConnection
  • Működés lépései:
    • Kapcsolat nyitás
    • Munka
    • Kapcsolat zárás
  • Pesszimista ütközéskezelés: Adatbázis zárak

8. Mi az adatelérési osztálykönyvtárak szerepe? Ismertesse a kapcsolat nélküli ADO.Net adatelérést! Hogyan működik az optimista konkurencia kezelés?

Lásd előző feladat

Kapcsolat nélküli ADO.Net:

  • Előnyei/Hátrányai: !kapcsolat alapú
  • DataSet: Adatbázis a memóriában
    • Felölthető, módosítható lokálisan, majd visszatölthető
    • Kapcsolatokat tud kezelni
    • Kulcsok, kényszerek
    • Lehet típusos
  • DataAdapter: DataSet-et illeszti az adatbázishoz. Feltölt, szinkronizál
  • DataView: Nézet egy tábla fölött. Adatkötés
  • Sor állapotai: Ez alapján vezeti át az Adapter
    • Unchanged
    • Added
    • Deleted
    • Modified
    • Detached: Nem része kollekciónak
  • Működés lépései:
    • Kapcsolat nyitás
    • DataSet feltöltése
    • Kapcsolat zárás
    • Munka
    • Kapcsolat nyitás
    • DataSet visszaírása
    • Kapcsolat zárás
  • Verziókövetés:
    • Original
    • Current
    • Default: State-től függ
    • Proposed: Szerkesztés alatt
  • Optimista ütközéskezelés: Tartalom vagy timestamp alapján vizsgáljuk

9. Mi az O/R leképzés feladata, mire szolgálnak a shadow információk? Az öröklési hierarchiát miképp lehet leképezni relációs sémára?

Feladata:

  • Üzleti objektumok leképezése relációs adatmodellre
  • Adattárolás és üzleti folyamatok összkötése

Shadow információk: Szükségesek a perzisztencia implementálásához

  • Kulcsok
  • Időbélyegek
  • Új vagy módosított objektum

Öröklés leképzése:

  • Egy táblába: Diszkriminátor attribútum
  • Minden valós osztály egy-egy táblába: Csak a példányosítható osztályoknak van saját táblájuk, melyek tartalmazzák az osztály összes tulajdonságát
  • Minden osztály egy-egy táblába: Absztrakt osztályoknak is lesz saját táblájuk, az ősök tulajdonságaihoz idegen kulcsok vannak
  • Általános struktúrába: Bárhogy kialakíthatjuk

10. Ismertesse a LinQ to SQL felépítését, működését! Miképp történik az öröklési hierarchia kezelése? Miképp történik az objektumok egyediségének biztosítása?

LinQ: nyelvi elem

  • ORM
  • Alkalmazás és SQL szerver között
  • Relációkat is kezel
    • Azonnali/késleltetett betöltés
  • Join
  • Öröklés: Csak 1 táblába
  • Objektumok egyedisége: Karbantart egy identitás táblát, így a többször lekért ugyanaz a sor ugyanarra az objektumra fog mutatni

11. ASP.Net környezetben miképp történik a böngészőnek küldött válasz előállítása? Mikor futnak le az egyes eseménykezelők? Milyen lehetőségünk van adatkötésre?

Válasz előállítása: Kliens küld HTTP kérést, majd az oldalon lévő vezérlők ezt feldolgozva előállítják a saját válaszukat, majd ez kerül vissza a klienshez HTTP válasz formájában.

Eseménykezelők: Feldolgozás során a változások és akciók résznél.

Adatkötés:

  • Egyszerű: Deklaratívan vagy DataBind() hívásával
  • Listás: Deklaratívan, kódból vagy DataBind() hívásával

12. Milyen elemekből építkezik az AJAX, mi az egyes elemek szerepe? Miképp történik az oldalak részleges frissítése? Mire szolgál az Update Panel?

AJAX:

  • XmlHttpRequest: Aszinkron kérés
  • Javascript: Kliens oldali program, amelyik kezeli az aszinkron kommunikációt
  • DOM: Kliens oldali dokumentum
  • XML: A kommunikációt leíró nyelv

Oldalak részleges frissítése: Csak az oldalnak egy bizonyos része kerül vissza a szervernek. A teljes oldalt legenerálja, de csak a kijelölt régiók tartalma lesz a kliensnek kiküldve

UpdatePanel: Az ebben lévő elemek lesznek részlegesen frissítve

13. Ismertesse az elosztott adatbázisok előnyeit, hátrányait! Hogyan működnek az elosztott nézetek?

Elosztott adatbázis: Logikailag egyetlen adatbázis, de több számítógépen van tárolva

  • Előnyei:
    • Skálázható
    • Nagyobb megbíhatóság
    • Helyi irányítás
    • Moduláris növekedés
    • Kisebb kommunikációs költség
    • Gyorsabb válaszidő
  • Hátrányai:
    • Komplexitás
    • Megnövekedett koordinálási feladat
    • Adatintegritás nehezebb

Elosztott nézetek:

  • Vízszintes particionálás
    • Egyes sorok egyik helyen
    • Más sorok másik helyen
    • Tranzakciók abban a fiókban, ahol a számla van
    • Előnyök
      • hatékonyság: adat közel a felhasználóhoz
      • helyi optimalizáció
      • biztonság: csak azok az adatok, amelyek érdekesek egy adott helyen
      • lekérdezés eredménye egyszerő unió
    • Hátrányok
      • inkonzisztens elérési idő
      • hiba esetén nem térhetünk át egy másik csomópontra
  • Függőleges particionálás
    • Oszlopok szerint osztjuk fel a relációt
    • Két részleg: mérnöki, gyártás
    • Előnyök
      • ugyanaz, mint vizszintesnél
      • de a lekérdezés eredménye: join
    • Hátrányok
      • ugyanaz, mint vízszintesnél

14. Ismertesse az elosztott adatbázisok előnyeit hátrányait! Mire szolgál a replikáció? Hogyan működik?

Lásd előző feladat

Replikáció: Adatokat elosztja a több adatbázis között

  • Ami változik egyik helyen, azt átvezetjük a többire is.

15. Ismertesse a két és háromrétegű adattárház építésének folyamatát! Mi a különbség az adatpiac és az adattárház között?

Architektúrák:

  • Kétrétegű: A felhasználók közvetlenül az adattárházhoz kapcsolódnak, ami az OLTP-ből nyeri az adatokat
  • Háromrétegű: A felhasználók adatpiacokhoz(data mart) férnek hozzá, ahol tematikusan kiválasztott részek és származtatott adatok vannak

Adattárház építésének lépései:

  • Adatok kinyerése: Milyen adatokra van szükség, hogyan érjük el(ha pl. nem relációs)
  • Tisztítása:
    • Hiányzó adat kezelése
      • Teljes rekord elvetése
      • A hiányzó adat bekérése.
      • A hiányzó adat helyettesítése
        • Konstans értékkel
        • Átlagértékkel
        • Csoportra jellemző átlagértékkel
        • Legvalószínűbb értékkel
    • Zajszűrés:
      • Numerikus adatok zajszűrése:
        • Binning: minden k számú elemcsoportot helyettesít az átlagával
        • Csoportképzés: Több attribútum együttes előfordulását vizsgálják, majd az egymás közelében elhelyezkedő adatokat a csoportot jellemző adatokkal helyettesítjük (csoport súlypontjával)
        • Regresszió: Ebben az esetben is több attribútum együttes előfordulását vizsgáljuk, az egyes attribútumok közt valamilyen függvénykapcsolatot keresünk (általában lineárisat), majd az egyes értékeket a regressziós függvény értékeivel helyettesítjük.
      • Szöveges adatok:
        • Szótár alapú
        • Klaszterező: Hash fv-vel számokká képezzük le
  • Transzformálása: Az adatok az adattárház egységes sémájára történő leképzés
    • Rekord szintű:
      • Kiválasztás
      • Összekapcsolás
    • Mező szintű: Típuskonverzió
      • Algoritmikus
      • Lekérdezéssel
  • Betöltése és indexelése: Pillanatkép és histórikus adatok

16. Ismertesse a multidimenzionális adatmodellt! Mikor nevezünk egy rendszert OLAP rendszernek? Mire szolgál az OLAP kocka?

Multidimenzionális adatmodell:

  • Alapelemei:
    • Dimenziós adatok: Ezen adatok mentén történik az elemzések végrehajtása
    • Hierarchia szintek: Felbontás
    • Tény adatok: Amit elemzünk
  • Sémák:
    • Csillag: A tény adatokat tartalmazó táblához idegen kulcsokkal csatlakoznak a dimenziós tánlák
    • Hópehely: A tény adatokhoz csak a legalacsonyabb hierarchia szint van csatolva, és ahhoz van a többi, így joinolni kell.

OLAP(Online Analytical Processing) rendszerek:

  • FASMI(Fast Analysis of Shared Multidimensional Information) teszt:
    • Fast: Gyors
    • Analysis: A felhasználó számára szükséges üzleti és statisztikai elemzések elkészítésére alkalmas.
    • Shared: Megosztott
    • Multidimensional
    • Information: Összes adat és származtatott adat elérhető

OLAP kocka:

  • Dimenzió: A kocka élei
  • Hierarhia: Elvégezhető elemzések mélysége
  • Aggregátum: Származtatott mennyiségek

OLAP kocka műveletek:

  • Szeletelés: 1 érték rögzítése, a diemnziószám csökken
  • Részkocka kiválasztása: Értékek megkötése
  • Lefúrás: Hierarhia szint csökkentése
  • Felfelé görgetés: hierarhia szint növelése
  • Forgatás: A megjelenített eredményt elforgatja

17. Milyen főbb újdonságokat hozott be a WPF?

WPF újdonságai:

  • Teljeskörű integráció: 2D,3D,...
  • Felbontás független: Nincs pixel
  • Hardveres gyorsítás: D3D-re épülve hardveresen gyorsított, ami nem, az szoftveresen
  • Deklaratív szemlélet: XAML
  • Testreszabhatóság: Nem csak szöveg, hanem bármilyen Control lehet egy gombban pl,template, skin
  • Egyszerű telepítés: Hagyományos, böngészőben

18. Mi a dependency property? Hogyan adható meg, hogyan használható?

Dependency property: Adatkötés

  • Változásról értesítés automatikus
  • Property érték öröklése lefelé
  • Regisztrálni kell

19. A vezérlők (pl. button) szintjén milyen újdonságokat hozott be a WPF? Mutasson konkrét példát XAML kóddal együtt!

WPF controllok:

  • Content control: Egyetlen gyerekük lehet
    • Button, RepeatButton, ToggleButton, CheckBox, RadioButton
    • Label, Tooltip, Frame
    • GroupBox, Expander
  • Items Control: Tetszőleges mennyiségű gyerekük lehet
  • Range Control: Előre megadott számérték közötti számértéket jelenítenek meg
  • Text Control: TextBox, RichTextbox, PasswordBox

Egyéb megválaszolt kérdések

Ismertesse a különböző join operátorok (nested loop, hash join, sort merge join) működését és tulajdonságait!

  • Nested Loops Join
    • Egymásba ágyazott kettős for ciklus
    • I/O költség
      • Nyalábolt esetben: O(B(R) * B(S))
      • Nem nyalábolt esetben: O(T(R) * T(S))
    • Tetszőleges méretű táblákra működik
      • Nagy méret esetén: a két tábla egy-egy blokkját tartja memóriában
      • Kis méret: a táblát bent lehet tartani
  • Hash Join
    • Első menetben
      • Kisebb (R) reláció beolvasása
      • Vödrös hash építése a memóriában (Kulcs a join operátorban szereplő oszlop)
    • Második menet
      • A nagyobbik (S) reláció beolvasása
      • Kapcsolódó rekordok keresése vödrös hashben
    • I/O költség
      • O(B(R) + T(S))
  • Sort merge Join
    • Mindkét relációt beolvassa a memóriába
    • Rendezi az összekapcsolási kulcs szerint
    • A két rendezett listát összefésüli
      • Listák közös bejárása
      • Egyszerű algoritmus
    • Kis méretű relációk esetén
    • Index a rendezés miatt
    • I/O költség
      • O(B(R) + T(S))

Mire valók a WPF-es panelek, mutass be hármat!

  • A különböző layoutokat a Panel osztályból származó containerekkel lehet megvalósítani.
    • Canvas
      • A legegyszerűbb container, abszolút pozicionálást tesz lehetővé.
      • A pozíciót a Canvas által definiált Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom attached propertykkel lehet megadni. Egyszerre csak kettő használható közülük, egy dimenzió mentén csak egy.
    • StackPanel
      • Ahogyan a neve is mutatja, a StackPanel egy stackként viselkedik, a belepakolt elemeket függőleges folytonosan helyezi el.
      • Az elrendezés iránya (függőleges vagy vízszintes) a StackPanel Orientation attached propertyjével adható meg (alapértelmezett : Vertical).
    • Wrappanel
      • A Wrappanel abban különbözik a StackPaneltől, hogy az elemeket folytonosan balról jobbra illetve eközben fentről lefelé kitöltve helyezi el.
      • A kitöltés iránya (hogy először fentről lefelé majd utána balról jobbra) helyezze el az elemeket az Orientation propertyvel állítható.
    • DockPanel
      • A DockPanelben elhelyezett elemeket a konténer egyes oldalaihoz dokkolhatjuk (illetve kitölttethetjük velük a rendelkezésre álló szabad területet).
      • A dokkolás iránya (Left, Top, Right, Bottom, Stretch) a DockPanel.Dock dependency propertyvel adható meg.
      • A végső elrendezésben szerepet játszik az elemek felvételének sorrendje is: az első felvett elem a teljes terület felett rendelkezik, a második már csak az első által szabadon hagyottal és így tovább.
    • Grid
      • Táblázatos megjelenítést tesz lehetővé.
      • A táblázat sorai a RowDefinitions kollekcióba felvett RowDefinition objektumokkal definiálhatók.
      • Az oszlopok hasonlóképpen a ColumnDefinitions kollekcióhoz hozzáadott ColumnDefinition objektumokkal.
      • Egy tartalmazott elem pozíciója (sor, oszlop) a Grid.Row ill. Grid.Column dependency propertykkel definiálható.

Objektumrelációs leképezés során miképp lehet leképezni az öröklődést (legalább 3 módszert mutasson be)? Térjen ki a többszörös öröklődés problémájára is.

  • Hierarchia leképezése egy közös táblába
    • Egyszerű hierarchiák leképezéséhez.
    • Megvalósítás
      • az objektum minden attribútumát (örököltekkel) felsoroljuk
      • objektumtípusok (osztályok) tárolása:
      • minden típushoz egyedi azonosító VAGY
      • !IsClass1, !IsClass2, … oszlopok
      • egyedi példányazonosító tárolása
      • bővítés kezelése: új attribútumok felvitele
    • Előnyök
      • egyszerű
      • könnyű új osztályt vinni a hierarchiába
      • könnyen követhető, melyik objektum milyen osztályok példánya
    • Hátrányok
      • helypazarló
      • egy osztály megváltozása az egész tárolást változtatja
      • nehezen áttekinthető
  • Minden valós osztály leképezése saját táblába
    • Ritkán változó struktúrák leképezéséhez.
    • Megvalósítás
      • minden valós osztálynak saját tábla
      • az osztály minden attribútumának eltárolása
      • egyedi példányazonosító tárolása
      • ha változik egy attribútum, csak a hierarchiaszint mentén kell végigvinni
    • Előnyök
      • átlátható
      • gyors adatelérés
      • jól illeszkedik az objektummodellhez
    • Hátrányok
      • osztály módosítása esetén hierarchiaszintek módosítása
      • több szerepet is betöltő példányok kezelése nehézkes
  • Minden osztály leképezése saját táblába
    • Absztrakt osztályok is
    • Komplex öröklési hierarchia és gyakran változó struktúrák leképezéséhez.
    • Megvalósítás
      • a táblák követik az osztályhierarchiát
      • szülő-gyerek viszony leképezése külső kulcsokkal
      • egyedi példányazonosító tárolása
    • Előnyök
      • osztályok struktúrája könnyen módosítható
    • Hátrányok
      • összetett DB-séma
      • egy példány adatai több táblában vannak (öröklés miatt)
      • összetett lekérdezés
  • Osztályok és hierarchiaszintek általános leképezése
    • Komplex alkalmazásokban, kis mennyiségű adat mellett, ahol akár futási időben is minden változhat.
    • Megvalósítás
      • metaadat-központú
      • általános séma: tetszőleges hierarchia leírható – hierarchia  metaadat, példányok  attribútumok
      • class, attribute, attributeType, value, inheritance, stb… táblák
    • Előnyök
      • perzisztencia-kezelő rendszerekhez illeszkedik
      • flexibilis, bármi leírható benne
    • Hátrányok
      • nehéz összeszedni egy példány adatait
      • sok adat esetén nem hatékony
  • Többszörös öröklés megvalósítása
    • C++ miatt még mindig szükséges
    • Ugyanazok a technológiák használhatók
    • Az általános megoldásban benne van

Tekintsük a mellékelt adatmodell LinQ leképzését! Készíts olyan C# nyelvű, LinQ-re épülő függvényt, mely a 10 legdrágább terméket átsorolja egy új kategóriába (a kategória lehet, hogy létezik, de az is lehet, hogy létre kell hozni), a kategória neve, és a DataContext bemenő paramétere a függvénynek!

public void function(String name, CustomDataContext sdc){
				var q1 = (from t in sdc.Termeks
							 orderby t.NettoAr descending
							 select t).Take(10);
				var q2 = from k in sdc.Kategorias
							where k.Nev == name
								 select k;
				Kategoria k2;
				if (q2.Count() == 0) {
					 k2 = new Kategoria();
					 k2.Nev = name;
				} else {
					 k2 = q2.First();
				}
				foreach (Termek t in q1) {
					 t.Kategoria = k2;
				}
				sdc.SubmitChanges();
		  }

Egyéb megválaszolatlan kérdések

ADO.NET kapcsolatnélküli modell bemutatása + példa

Mi a clustered index MSSQL-ben, mi történik, ha clustered és non clustered index is van egy táblára? Mi az included column?

Adott egy osztályhierarchia (Jármű, Gépjármű, Repülő, stb.). Milyen adattáblákba és C# osztályokba képezzük le?

A példaadatbázisba fel kell venni egy új oszlopot Vevo. OsszesVasarlas néven. Fel kell tölteni az értékét a !MegrendelésTétel tábla alapján scripttel + írni kell rá egy karbantartó triggert.

Tekintsük a mellékelt adatmodellt! Vegyünk fel a vevők táblába egy új oszlopot: OsszMegrendeles, mely jelentése, hogy a vevő mekkora értékben rendelt eddig. Készíts scriptet MS SQL Serverre, mely a kívánt módosításokat elvégzi, valamint készíts triggert/ triggereket, mely az OsszMegrendeles oszlopot karban tartja!

Ismertesse az MSSQL szerver a nem módosítható és módosítható replikációját.

Tekintsük a mellékelt adatmodellt. Vegyünk fel a vevők táblába egy új oszlopot: Inaktív, amely jelentése, hogy a vevő régen rendelt. Készíts tárolt eljárást Oracle szerveren, mely minden vevőnek beállítja az inaktív státuszát! Azokat tekintjük inaktívnak, akik már 180 napja nem rendeltek semmit.

Tekintsük a mellékelt adatmodell LinQ leképezését! Készítsen olyan C# nyelvű LinQ-re épülő függvényt, mely a paraméterül kapott DataContext -et, és a Megrendelés és !SzámlaKiállító objektumokra készít efy új számlát (beleértve a számlatételeket is).

ASP.NET alkalmazásokban miképp lehet megvalósítani az optimista konkurencia kezelést? Írjon mintaprogramot, amely az ÁFA táblán megvalósítja, amennyiben szükséges, módosítja a táblát.

C# függvényt kellett írni, linq to sql kód

C# de ado.netes, kapcsolat Alapú modell

Oracle sql lekérdezések és triggerírás

Ajax fogalma, milyen technológiát használ és mi a lényege

Ismertesse a két és háromrétegű adattárház architektúrát!

2 és 3 rétegű adattárház technológia. Miben különbözik az adattárház és az adatpiac?

Hasonlítsa össze az Oracle és MSSQL triggerkezelését

ASP.NET-ben hogyan történik a böngészőből jövő kérés kezelése(vagy vmi hasonló)? Mikor történik az események feldolgozása?

Készítésen tárolt eljárást MSSQL adatbázisra! Paraméterként egy megrendelés azonosítót kap. Adjon 10% kedvezményt azokra a termékekre a megadott megrendelésből, melyekből a vevő már legalább 20-at rendelt(és a státusza számlázva)!

Termék tábla eléréséhez kellett objektumkötéses menedzser objektumok létrehozni. Elég csak az Update műveletet megírni.

Tekintsük a mellékelt adatmodellt, mely O/R leképezés eredményeképp jött létre. Objektum típusú adatkötési feladatok megoldásához készítsen C# nyelven Manager objektumot a Termék táblában tárolt Termék egyedekhez, a konkurenciakezelést is oldja meg!


-- aldaris - 2009.06.07.
-- Cantor - 2009.06.07.
-- Velias - 2010.01.02
-- sashee - 2010.01.05.
-- molnarm - 2011.01.05.