20 - 04 - 2024
Main Menu
Who's online

We have 159 guests and no members online

Latest articles
Visitors
26942082
Today
Yesterday
This Week
This Month
Last Month
All days
2163
9587
55624
182930
315056
26942082

Old stories

Databasemotor i AgetoAge4

User Rating:  / 0

Vi vil nå se på diverse alternativer for å implementere en databasemotor. En databasemotor kan man tenke på som et selvstendig program som håndterer forespørseler om data fra et annet program.  I vårt tilfelle vil ATA da sende en forespørsel til databasemotor programmet om å finne en bestemt person, familie, etc. 

ATA vil få innebygget databasemotor med tid og stunder, hvor lang tid dette vil ta er litt usikkert pga. at det finnes mange løsninger, skal vi bruke MS SQL 2005, MySQL, Access, eller andre? Vi trenger litt tid til å utforske dette litt. Når vi har fått til dette vil dette gjøre at det ikke blir noe ventetid for å ATA til å lese filer. Man velger enten en lokal database på sin egen maskin eller en external database (på et nettsted, eller annen datamaskin på et privat nettverk) og ATA behøver ikke ha alle data i hukommelsen, ATA vil hente data fra databasen ved behov.

Det er siikkert mange av dere som har prøvd Microsoft Access til å lage noen databaser, jeg har selv prøvd det, og husker det var morro å lage alle tabellene som måtte til, for ikke å snakke om oppretting av relasjoner og få tabellene til å samarbeide. Dette kan bli en realitet i ATA, man vil kunne lage sine egne tabeller...... tenk litt på det.... man blir mindre avhengig av hvordan jeg har programmert dette, man kan lage nye tabeller og fylle disse med data fra standardtabellene under kriterier som man selv setter. Bare et lite helt enkelt eksempel: man ønsker seg en tabell over personer man vil jobbe mer med (finne forfedre osv.) Man går da til SQL vinduet og lager en ny tabell, navnet kan være hva som helst, hvis dette navnet finnes allerede for en eksisterende tabell vil man ikke få lov å lage den, men må da velge et annet navn. Man kan skrive en SQL setning som lager denne tabellen med de feltene og datatypene man ønsker. Er man ekspert på SQL kan brukeren skrive den selv...hvis man er usikker på hvordan det gjøres vil man kunne få ATA til å gjøre dette. Etter at tabellen er laget kan man så bruke SQL setninger for å fylle den med de personer man ønsker.

Jeg vil nå utforske mer i MySQL som ble utviklet i Sverige og har vært uavhengig helt til i år da det ble kjøpt opp av Sun Microsystems som har mer enn 34 000 arbeidere.

Om data strukturen

User Rating:  / 0

AgetoAge4 bruker ikke databasemotor, men kolleksjoner av objecter, disse blir laget og lest inn fra en fil i ASCII format og dette er effektivt så fremt datamengden ikke er altfor stor. En datamengde på 50 000 personer har blitt testet, og det går med vanlige datamaskiner for hjemmebruk, med standard mengde RAM. Jeg vurderer nå å bruke databasemotor i neste versjon av ATA fordi det er interessant å sette dette systemet opp og vil utvikle en ny versjon for dette. Jeg var inne på tanken å implentere dette i gjeldende versjon men tror jeg vil la AgetoAge4 være som den er og heller lage ny versjon.

Hvilke tabeller er nødvendige for et slektsprogram?

Hvis man bare ønsker å lage et program som kan vise hvordan personene henger sammen er det ikke mange tabeller man trenger.  Her er de tabeller som blir brukt i AgetoAge4:

TABELL PERSONER
 int ID
 string firstname
 string lastname
 int sex
 int fatherID
 int motherID
 string birthdate
 string birthplace
 string baptismdate
 string baptismplace
 string deathdate
 string deathplace
 string occupation
 string address
 string phone
 string mailaddress
 string http
 string photo
 string registerdate
 string source
 TABELL MARRIAGES
     int PID
 END TABELL
 TABELL COMMENTS
    string comment
  END TABELL

END TABELL

TABELL FAMILIES
 int ID
 int male
 int female
 string marriagedate
 string marriageplace
 string empty
 string empty
 string photo
 int x
 int y
  TABELL COMMENTS
    string comment
  END TABELL
  TABELL CHILDREN
    int PID
  END TABELL
END TABELL


TABELL LOCATIONS
 string text
 double latitude
 double longitude
 string comment
 bool isactive
END TABELL

TABELL SOURCES
 string name
 datetime date
 string description
 string filename
END TABELL

TABELL BIRTDAYREMINDER
 int ID
END TABELL

Som man ser er det ikke så mye som skal til for å kunne vise hvordan personene er relatert og den siste tabellen er helt unødvendig som man sikkert skjønner. Men det er mange tabeller man kan trenge etterhvert som man skrider frem.....og ved å bruke databasemotor kan man faktisk lage disse mens programmet kjører. Jeg planlegger nå to nye versioner av AgetoAge4, en som vil være et klient program for databasen vår her på agetoage4.com og en annen versjon som vil bruke en lokal database.

 

Nytt design i AgetoAge

User Rating:  / 0

Jeg er allerede igang med ny versjon med integrert database. Her er et forslag til hvordan hovedvinduet kan være.

Register to read more...

Mer om databaser

User Rating:  / 0

Jeg har nå sett litt på MS SQL Server 2005 og MySQL og jeg er nesten helt sikker på at vi vil velge MySQL for AgetoAge.

For brukere som vil kjøre lokal database på sin egen maskin må man ha en server installert og jeg har nå prøvd å installere to alternativer MySQL og MS SQL Server 2005. 

MySQL serveren er forholdsvis grei å innstallere (45MB) og man kan også installere et Administrator program som gir en full kontroll over alle databaser man ønsker og der kan man opprette brukere osv. Og de versjonene vi trenger er gratis. Det samme gjelder forsåvidt MS SQL Server 2005 men denne serveren er tung og stor å innstallere, for Vista brukere skal man også installere en update pack på langt over 200MB.

Så jeg vil satse på MySQL og denne typen er veldig utbredt og populær. Brukere av AgetoAge vil måtte sette seg litt inn i hvordan man oppretter databaser og brukere med rettigheter, men jeg tror dette vil være svært interessant for mange også og dem som slett ikke vil sette seg inn i dette kan fortsette å bruke AgetoAge4 som før.

 

MySQL Community Server (gratis) kan lastes ned her: http://dev.mysql.com/downloads/mysql/5.0.html

Disse verktøyene finnes i en installasjon som kan lastes ned her: http://dev.mysql.com/downloads/gui-tools/5.0.html

  • MySQL Administrator 1.2
  • MySQL Query Browser 1.2
  • MySQL Migration Toolkit 1.1

Query Browser kan brukes til å jobbe med dataene uavhengig av AgetoAge, det er også en god dokumentasjon på syntaksen og funksjoner slik at man kan bygge opp spørringer mot databasen selv om man er nybegynner. Man kan også definere nye funskjoner, f.eks kan man lage sin egen funksjon som returnerer alle ancestorer for en person om man vil og funksjonen kan man lagre som et script som man laster inn ved behov.

Det viktigste med databaser er vel kanskje det at man kan definere nye felter i tabellene hvis behovet skulle oppstå uten at man trenger å revidere lagringen av dataene. (Dette håndteres av databasen).

Et annet verktøy som jeg nettopp har installert er MySQL Workbench http://dev.mysql.com/downloads/workbench/5.0.html
Dette ser ut til å være et ideelt verktøy for å utføre vedlikehold på databasene. 

Grensesnitt i AgetoAge4

User Rating:  / 0

Her er et eksempel på hvordan vi kan organisere modulene, jeg tenker meg et grensesnitt som lager person og famiie objecter fra data hentet fra MySQL og sender disse til AgetoAge ved forespørsel. Dette grensesnittet vil gjøre at ingenting bortsett fra hvordan dataene kommer inn blir forandret i AgetoAge.

Det finnes helt sikkert en masse "freeware tools" som kan brukes til å lage rapporter fra data i MySQL baser og har nå fått overført alle data fra familiefila vår til en MySQL database og det er utrolig interessant å søke i dataene i MySQL Query, det vil ikke by på store problemer å integrere MySQL i AgetoAge4.

Fant forresten en nyttig introduksjons artikkel om MySQL her