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

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


A hivatkozott adatmodell megegyezett a gyakorlatokon használttal.

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?

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 adat 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, beszédfelismerés,...
  • Felbontás független: Nincs pixel
  • Hardveres gyorsítás: D3D-re épülve harveresen 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.