hulp gevraagd bij normalisatie

Status
Niet open voor verdere reacties.

ikselle

Gebruiker
Lid geworden
25 mei 2009
Berichten
198
Ik heb onlangs een omvangrijk excelbestand gekregen (meer dan 8000 records) waarin blijkbaar nogal wat gegevens verkeerd ingevoerd werden. Ik heb dit geïmporteerd in access en wil ze normaliseren. Ik post hierbij een minivoorbeeldje. Hierbij heb ik de volgende vragen :
1. Bestaat de mogelijkheid om na te gaan of elke "Wattoo, Danny" (let wel niet iedereen heeft foto) over één foto en bovendien dezelfde foto beschikt ?
2. Welke queries en in welke volgorde kan ik best maken om ervoor te zorgen dat ik uiteindelijk beschik over een ledentabel, een tussentabel ledenID-nummerplaatID en een nummerplaattabel ?
3. Zijn er andere tips om zoveel mogelijk fouten op te vangen ?
Kan er iemand een handje toesteken ?
Alvast bedankt !Bekijk bijlage Leden.zip
 
Op basis van je bestandje, waar natuurlijk niet zoveel records in zitten, kun je eens beginnen met een Group By (Totalen) query te maken op naam en foto. Dan zie je dat Danny Wattoo 2 unieke foto's heeft en de anderen allemaal 1. Als één persoon meerdere foto's kan hebben, dan zou ik daar ook een aparte koppeltabel voor maken. Anders, als één foto van een bepaalde bron leading is, zou ik de selectie daar op filteren. Maar ik zou eerst beginnen met een aparte tabel voor de foto's. Verder snap ik niet precies wat je met vraag 1 bedoelt, want niet iedereen beschikt over één foto, die dan dus ook niet dezelfde foto kan zijn.

Om een tabel te maken met unieke leden, moet je in ieder geval zorgen dat je een selectie hebt van de voor een lid unieke (combinatie van) gegevens. Dat doe je dus met een totalen query. Die gebruik je vervolgens om de ledentabel te maken (Tabelmaakquery dus). Daar zet je dan uiteraard ook een uniek sleutelveld in, wat in dit geval een Autonummerveld kan zijn.
Wat ik dan zelf doe, is in de brontabel een extra numeriek veld maken en dat vullen met het unieke ID dat je uit de nieuwe ledentabel haalt. Daartoe koppel je de twee tabellen op basis van dezelfde velden die je gebruikt hebt om de ledentabel te maken; die combinatie van (gegroepeerde) gegevens was immers uniek. Als je de links goed hebt gelegd, kun je het sleutelveld toevoegen aan de brontabel. En dat heb je vervolgens nodig om de koppeltabellen te maken.
 
Bedankt OctaFish,
De group by querie op naam en foto heb ikgeprobeerd maar deze maken me uiteindelijk niet veel wijzer. Wat die foto's betreft: de bedoeling moet zijn dat iedereen ofwel exact één foto heeft, ofwel geen en dan komt er een dummy op het scherm nl. no_pic.jpg.
De samensteller van het excelbestand heeft echter records gedupliceerd zonder de foto mee te dupliceren of heeft een tweede foto aangemaakt en die bij het tweede record gevoegd. Dus het kan zelfs dat één persoon twee vercshillende foto's meekreeg (waarvan ik uiteraard enkel de meest recente wil behouden). Dit komt gelukkig niet veel voor.
Ondertussen tracht ik het tweede gedeelte te realiseren. Die unieke lijst is in orde gekomen. Dat koppelen .... Als ik het goed begrijp was het geen goed idee reeds een brontabel te maken. Bovendien zal het nog wat ingewikkeld worden om die many-to-many relatie te leggen lid-lid<->nummerplaat-nummerplaat. Maar wie niet waagt niet wint.
 
Als een persoon meerdere foto's heeft, en de laatste de gewenste (meest actuele) is, dan kun je die in de Totalen query met Last uitfilteren. De hoeveelheid velden in een Totalenquery bepaalt het nut ervan: hoe meer variabele velden er in de query zitten, hoe meer unieke combinaties je krijgt. Met alleen groeperen op Naam en de laatste foto, zou je unieke records moeten overhouden.
 
@Octafish ondertussen heb ik kunnen nagaan dat elk persoon ofwel 1 ofwel geen foto heeft. Dus dat is al iets! Bedankt.

Pfff, hopelijk kunnen jullie me hier ook uithelpen. Is nu reeds de hele dag dat ik hier op zit te zwoegenBekijk bijlage Leden2.zip:
1. Heb de tbl_Leden die geïmporteerd werd uit excel.
2. Meen twee tabellen met unieke gegevens aangemaakt te hebben op basis van de sleutel naam+vnaam+pict (uit tbl_leden): nl tbl_personen en tbl_nummerplaten
3. Heb in beide tabellen een IDveld op basis van autonummering aangemaakt
4. Heb een deel van de junctiontabel persoon2nummerplaat aangemaakt op basis van de sleutel naam+vnaam+pict (uit tbl_personen) die nu bestaat uit twee velden expression (naam+vnaam+pict) en een IDpersonen (type integer dubbele precisie)
5. Heb in junctiontabel persoon2nummerplaat een bijkomend leeg veld gecreeerd IDnummerplaat
6. Heb ook geprobeerd zoals ik meende te begrijpen uit de reactie van Octafish in de tbl_Leden een veld bij aan te maken dat zou kunnen dienen om de junctiontabel te vervolledigen

Welke querie moet ik nu maken om deze IDnummerplaat ingevuld te krijgen? Thnx !!
 
Wat wil je precies? Want ik vind het nog niet helemaal helder. En ik ben geloof ik niet de enige :).
 
Heb net nog even naar de query [RotQuery die niet lukt] gekeken, waarvan ik, uitgaande van de naam, mag aannemen dat hij niet doet wat jij wilt, maar ik snap niet helemaal wat hij dan wél zou moeten doen.
 
Mijn excuses voor het lange wachten maar was er even een paar dagen tussenuit en platgeslagen door de hitte :eek:
Ondertussen heb ik alles kunnen normaliseren mits een tussenstap via excel. Dus wat dat normaliseren betreft : daar ben ik uit.
Ik zal voor eeh volgend probleem toch opnieuw moeten aankloppen bij jullie. Omdat het niet meer echt over normaliseren gaat zal ik een nieuw draadje openen. Bedankt allemaal !!:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan