Avatar billede skizo_someone Nybegynder
29. februar 2008 - 23:17 Der er 4 kommentarer

Hvordan: søgefunktion til database med input fra checklister

Hej eksperter.

Jeg står foran et projekt hvor jeg skal udarbejde en simpel CV-Bank, hvor det er muligt for individer at specificere deres CV og hvor virksomheder har mulighed for at søge efter kvalificerede studerende på baggrund af de indstastede data.

Alt det grundlæggende med indtastning af CV og gemme det i en database har jeg styr på. Der hvor jeg begynder at komme på usikker grund er ved selve søgningen i databasen. Ved indtastning af sit CV kommer man bl.a. til at støde på en liste hvor det f.eks. er muligt at vælge de regioner/lande som man kunne tænke sig at arbejde i. Mit spørgsmål går så på, hvordan denne liste skal udarbejdes og hvordan disse data skal gemmes i databasen?

Det jeg søger information om er, hvordan dataene skal gemmes i databasen og hvordan selve søgefunktionen skal opbygges for at gøre det muligt at søge databasen. De fleste data i CV'et er ret statiske, men der bliver et par af disse checklister hvor det er muligt at udvælge f.eks. kompetencer, jobtype osv.

Håber på at I derude har nogle gode forslag eller links til gode artikler der kan gøre mig klogere på dette område.

På forhånd tak.
Christian
Avatar billede j4k0b Nybegynder
01. marts 2008 - 15:23 #1
Hvor meget erfaring har du med relationelle databaser og database normalisering? En normaliseret database kunne se sådan ud:


tblCountries (En liste over alle mulige lande at søge arbejde i, eller søge medarbejdere til)
    CountryID (primær nøgle)
    COuntryName

tblUsers (en bruger på dit website som kan oprette flere ansøgninger - se nedenfor)
    UserID (primær nøgle)
    Name
    Username
    Password
    Etc...

tblApplications (En ansøgning relatere sig til én person)
    ApplicationID
    UserID (refererer til tblUsers.UserID)
    Description
    Etc...

tblAppCountries (link mellem lande og ansøgninger)
    CountryID (refererer til tblCountries.CountryID)
    ApplicationID (refererer til tblApplications.ApplicationID)



Du kan gøre det samme med folks kompetencer.
Avatar billede j4k0b Nybegynder
01. marts 2008 - 15:28 #2
Derefter, for at finde alle jobs søgt i Danmark og Sverige kunne udtrækkes laves sådan:

SELECT c.CountryName, a.ApplicationID
FROM tblAppCountries AS ac
INNER JOIN tblApplications AS a
    ON ac.ApplicationID = a.ApplicationID
INNER JOIN tblCountries AS c
    ON ac.CountryID = c.CountryID
WHERE c.CountryName IN ('Danmark', 'Sverige')


Du bør nok anskaffe dig landenes CountryID og give dem som argumenter, frem for landenes lange navne (kan 2 lande have samme navn?)
Avatar billede skizo_someone Nybegynder
01. marts 2008 - 18:26 #3
Hvor er det fantastisk. Det er jo lige sådan noget jeg skal have fat i!
Jeg har hørt om relationelle databaser men aldrig rigtigt rørt ved det. Men bare ved at se på dit eksempel tror jeg at jeg forstår konceptet i det - det er da også en fantastisk måde at dele sine tabeller op på for en mere ren struktur! Det må jeg lige grave lidt dybere i.

Dog nævner du database normalisering - hvor kommer det ind i billedet, og hvad dækker det over i min situation?

Mange tak for hjælpen. Opretter du et svar?

Christian
Avatar billede j4k0b Nybegynder
02. marts 2008 - 12:22 #4
Svar ^^

Database normalisering går i bund og grund ud på at du ikke må have samme data oprettet to gange i databasen. I dit tilfælde kunne man godt have et tekstfelt i tabellen tblApplications der hedder Country eller Countries (ét land eller evt. en liste af lande adskilt med kolon), men så ville du være nødt til at "oprette" hvert land flere gange, da hver Application har sit eget land. I mit eksempel eksisterer hvert land kun én gang i databasen, og det er det essentielle i databasenormalisering.

Der findes vist 12 eller 15 "normalformer" (regler), men man kigger primært kun på de første tre. Læse mere om det her: http://www.designcreative.dk/blog/tag/database-og-normalisering
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester