Adatvezérelt alkalmazások fejlesztése (AAF) - Kidolgozott feladatok
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
- DAL
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
- Select utasítás
- Implementációja (MSSQL!):
- 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ó
- Select utasítás
- Implementációja (Oracle!):
- 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
- B*
- 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
- Numerikus adatok zajszűrése:
- Hiányzó adat kezelése
- 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
- Rekord szintű:
- 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))
- Első menetben
- 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ó.
- Canvas
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.