Voor een hobby project wil ik een soort dagboek maken, ala hoe Facebook met gebeurtenissen omgaat. Het idee is dat ik een gebeurtenis kan toevoegen en hieraan een locatie kan koppelen, maar een locatie is nog al dubbelzinnig. Zo kun je vandaag naar Amsterdam gaan om te shoppen en een andere dag met vrienden naar een bepaalde bar gaan om wat te gaan drinken. Met deze redenering kom ik al op twee entiteiten uit: (1) stad en (2) bedrijf. Deze twee entiteiten hebben al een overlap, namelijk lengte- en breedtegraad. Dus om redundantie in mijn database model te verminderen heb ik gepoogd om de tabellen zo in te richten dat deze niet dubbel worden opgeslagen.
Hierdoor ben ik tot het volgende model gekomen (niet volledig, maar even om probleem duidelijk te maken):

Als ik nu vanaf een stad en een bedrijf kijk welke gebeurtenissen hieraan zijn gekoppeld dan zijn de queries bouwen niet moeilijk, maar wanneer ik een gebeurtenis bekijk dan weet ik niet hoe ik het onderscheid moet bepalen of deze plaats heeft gevonden in een stad of een bedrijf. Vanaf event is het eenvoudig om bij location uit te komen, maar hier is het eigenlijk een T-splitsing en hier loop ik vast om de programmatuur te laten bepalen welke kant hij op moet gaan.
Door middel van meerdere queries zou ik het wel kunnen realiseren, door te kijken of LocationID voorkomt in de tabel City of Street en vanaf daar dan de rest van de informatie op te halen. Performance technisch gezien zou het mooiste zijn om dit met één query uit te kunnen voeren, maar is dit uberhaupt mogelijk of is mijn model hiervoor niet goed ingericht?
Hierdoor ben ik tot het volgende model gekomen (niet volledig, maar even om probleem duidelijk te maken):

Als ik nu vanaf een stad en een bedrijf kijk welke gebeurtenissen hieraan zijn gekoppeld dan zijn de queries bouwen niet moeilijk, maar wanneer ik een gebeurtenis bekijk dan weet ik niet hoe ik het onderscheid moet bepalen of deze plaats heeft gevonden in een stad of een bedrijf. Vanaf event is het eenvoudig om bij location uit te komen, maar hier is het eigenlijk een T-splitsing en hier loop ik vast om de programmatuur te laten bepalen welke kant hij op moet gaan.
Door middel van meerdere queries zou ik het wel kunnen realiseren, door te kijken of LocationID voorkomt in de tabel City of Street en vanaf daar dan de rest van de informatie op te halen. Performance technisch gezien zou het mooiste zijn om dit met één query uit te kunnen voeren, maar is dit uberhaupt mogelijk of is mijn model hiervoor niet goed ingericht?
