„Háttéralkalmazások/Záróvizsgatételek” változatai közötti eltérés
a Táblázat helyes lezárása |
→3. ORM: Tétel kidolgozása |
||
| 133. sor: | 133. sor: | ||
=== Mi az O/R leképzés feladata, mire szolgálnak a shadow-információk? === | === Mi az O/R leképzés feladata, mire szolgálnak a shadow-információk? === | ||
... | Az ORM segítségével egy objektumorientált nyelv memóriájában tárolt objektumokat le lehet képezni egy relációs adatbázis sémájára (és fordítva). Ezzel hidat képez az adatbázis és az üzleti logika között, biztosítva utóbbi adatperzisztenciáját. | ||
A shadow-információk az adatbázisban szükséges, de az üzleti logika által nem használt kulcsokat, időbélyegeket és egyéb adatokat takarják. | |||
{| class="wikitable" | |||
|+egymásnak megfeleltethető adattípusok | |||
!üzleti logika | |||
!adatbázis | |||
|- | |||
|osztály | |||
|tábla | |||
|- | |||
|tagváltozó (primitive) | |||
|oszlop (attribútum) | |||
|- | |||
|tagváltozó (objektum) | |||
|oszlop (attribútum), mely egyben idegen kulcs is | |||
|- | |||
|osztálypéldány | |||
|sor (rekord) | |||
|} | |||
=== Az öröklési hierarchiát miképp lehet leképezni relációs sémára? === | === Az öröklési hierarchiát miképp lehet leképezni relációs sémára? === | ||
... | Tegyük fel, hogy van egy absztrakt <code>''Vehicle''</code> osztályunk. Ebből származik a <code>Tram</code> és a <code>Bus</code> osztály. Be akarunk vezetni egy új <code>ElectricBus</code> osztályt, mely a <code>Bus</code> leszármazottja. | ||
==== Egy táblába, gányul ==== | |||
{| class="wikitable" | |||
|+vehicle | |||
!🔑 id | |||
!lpn_or_car_number | |||
!is_tram | |||
!has_radio_point_switcher | |||
!is_bus | |||
!rear_engined | |||
|- | |||
|1 | |||
|V1448 | |||
|true | |||
|false | |||
|false | |||
|''<null>'' | |||
|- | |||
|2 | |||
|SGY811 | |||
|false | |||
|''<null>'' | |||
|true | |||
|true | |||
|} | |||
↓ | |||
{| class="wikitable" | |||
|+vehicle | |||
!🔑 id | |||
!lpn_or_car_number | |||
!is_tram | |||
!has_radio_point_switcher | |||
!is_bus | |||
!rear_engined | |||
!is_electric_bus | |||
!traction_battery_capacity_kwh | |||
|- | |||
|1 | |||
|V1448 | |||
|true | |||
|false | |||
|false | |||
|''<null>'' | |||
|false | |||
|''<null>'' | |||
|- | |||
|2 | |||
|SGY811 | |||
|false | |||
|''<null>'' | |||
|true | |||
|true | |||
|false | |||
|''<null>'' | |||
|- | |||
|3 | |||
|NLE848 | |||
|false | |||
|''<null>'' | |||
|false | |||
|true | |||
|true | |||
|170 | |||
|} | |||
==== Külön táblába a valós osztályokat ==== | |||
{| class="wikitable" | |||
|+tram | |||
!🔑 id | |||
!lpn_or_car_number | |||
!has_radio_point_switcher | |||
|- | |||
|1 | |||
|V1448 | |||
|false | |||
|} | |||
{| class="wikitable" | |||
|+bus | |||
!🔑 id | |||
!lpn_or_car_number | |||
!rear_engined | |||
|- | |||
|1 | |||
|SGY811 | |||
|true | |||
|} | |||
➕ | |||
{| class="wikitable" | |||
|+electric_bus | |||
!🔑 id | |||
!lpn_or_car_number | |||
!rear_engined | |||
!traction_battery_capacity_kwh | |||
|- | |||
|1 | |||
|NLE848 | |||
|true | |||
|170 | |||
|} | |||
==== Külön táblába az összes osztályt ==== | |||
{| class="wikitable" | |||
|+vehicle | |||
!🔑 id | |||
!lpn_or_car_number | |||
|- | |||
|1 | |||
|V1448 | |||
|- | |||
|2 | |||
|SGY811 | |||
|- | |||
|3 | |||
|NLE848 | |||
|} | |||
{| class="wikitable" | |||
|+tram | |||
!🔑 id | |||
!🔑 🇸🇨 vehicle_id | |||
!has_radio_point_switcher | |||
|- | |||
|1 | |||
|1 | |||
|false | |||
|} | |||
{| class="wikitable" | |||
|+bus | |||
!🔑 id | |||
!🔑 🇸🇨 vehicle_id | |||
!rear_engined | |||
|- | |||
|1 | |||
|2 | |||
|true | |||
|- | |||
|2 | |||
|3 | |||
|true | |||
|} | |||
➕ | |||
{| class="wikitable" | |||
|+electric_bus | |||
!🔑 id | |||
!🔑 🇸🇨 bus_id | |||
!traction_battery_capacity_kwh | |||
|- | |||
|1 | |||
|2 | |||
|170 | |||
|} | |||
==== Absztrakt struktúrába ==== | |||
Külön tábla az osztályoknak, örökléseknek, tagváltozóknak, azok típusainak és az értékeknek. Mindegyiknek van kapcsolata legalább egy másik táblával. | |||
=== Hogyan képezzük le az objektumok közötti kapcsolatokat? === | === Hogyan képezzük le az objektumok közötti kapcsolatokat? === | ||
.. | Csak a kapcsolatok számosságát lehet leképezni, azok irányát nem. A kapcsolatok akár azonos táblán belül is lehetnek (rekurzió). | ||
{| class="wikitable" | |||
|+kapcsolatszámossági mátrix | |||
! | |||
!egy | |||
!több | |||
|- | |||
|egy | |||
| colspan="2" |idegen kulccsal az egyik táblában | |||
|- | |||
|több | |||
|– | |||
|egy külön kapcsolótáblával | |||
|} | |||
=== Hogyan képezhetőek le a globális változók? === | === Hogyan képezhetőek le a globális változók? === | ||
. | |||
==== Gányul ==== | |||
Változónként külön táblában: | |||
{| class="wikitable" | |||
|+vat_hungary | |||
!🔑 id | |||
!vat | |||
|- | |||
|1 | |||
|0,27 | |||
|} | |||
{| class="wikitable" | |||
|+transaction_fee_hungary | |||
!🔑 id | |||
!bank_transaction_tax | |||
|- | |||
|1 | |||
|0,0045 | |||
|} | |||
Vagy akár ezeket osztályonként / teljesen összevonva. | |||
==== Szépen ==== | |||
Kulcs-érték páronként: | |||
{| class="wikitable" | |||
|+globals | |||
!🔑 id | |||
!class | |||
!key | |||
!value | |||
|- | |||
|1 | |||
|Hungary | |||
|vat | |||
|0,27 | |||
|- | |||
|2 | |||
|Hungary | |||
|bank_transaction_tax | |||
|0,0045 | |||
|} | |||
== 4. EF Core == | == 4. EF Core == | ||
| 149. sor: | 373. sor: | ||
... | ... | ||
=== Mikor használjuk, mikor nem? === | === Mikor használjuk, és mikor nem? === | ||
... | ... | ||