Gå til innhold

Anbefalte innlegg

Ser for meg opplæringen:

"Også finnes det noe som heter foreign key constraints, det er ikke implementert i databasen dere skal bruke, men det er veldig viktig!"

 

Som sagt, det tar ikke mer enn 5 minutter å sette opp postgres f.eks, så jeg ser ikke helt hva som gjør at det skal brukes som argument for SQLite...

 

Det kommer til å ta mer enn 5 minutter å debugge feil som oppstår pga manuelle foreign key constraints og weak typing av kolonner...

 

Kan skjønne hvorfor du vil bruke SQLite hvis du trenger en database til et frittstående program som f.eks Firefox, men ellers ser jeg ikke helt poenget. Mao hvis du skal erstatte flatfiler med noe litt bedre.

 

Hadde SQLite hatt full foreign key constraint støtte og strong typing av kolonner så hadde jeg vært enig i at den er ideel til undervisningsformål.

Lenke til kommentar
Videoannonse
Annonse

Bruken av triggers istadenfor når det gjelder pedagogikk kan troleg ha noko med logikken bak det å forstå korleis foreign keys skal fungere. Uansett så er eg einig med at mangelen på foreign keys er lite bra for undervisning.

 

PostgreSQL tar ikkje akkurat 5 minutter å innstallere for ein nybegynner, det må litt ekstra arbeid til. Ikkje minst så er dette med å koble seg opp til ein database frå ein applikasjon også ein jobb. Dette problemet har ikkje SQLite som er innebygd i fleire språk idag det trengs ingen spesielle rettigheiter for å kunne leke databaseadministrator.

 

Weak typing er jo ikkje akkurat det største problemet heller, men ein fordel når rett skal være rett. Det er jo ikkje akkurat det store problemet med dynamiske programmeringsspråk idag heller.

 

Altså grunnen til å begynne med SQLite er å lære seg databaser med raske resultater og minimalt knoting. Når ein kjem på eit meir avansert nivå så er det på tide å prøve seg på ein av dei større.

 

Å oppnå god dataintegritet er svært viktig, i SQLite er dette tungvindt for ein nybegynner, men så er dataintegritet heller ikkje det første kapittellet.

Lenke til kommentar
Du kan ikkje sei at MyISAM er brukbar til skriving når den låser på tabellnivå.

Klart jeg kan. Den INSERTer veldig raskt og har SELECT/INSERT concurrency som default. Det er bare når du kjører UPDATE eller DELETE at du er fucked.

 

..med dagens minnepriser så ser eg ingen grunn til å bruke memcached/ehcache for ENDA raskere selecter.

Men et cache kan ikke erstatte en RDBMS. Du må jo uansett treffe databasen minst én gang.

Lenke til kommentar
PostgreSQL tar ikkje akkurat 5 minutter å innstallere for ein nybegynner, det må litt ekstra arbeid til. Ikkje minst så er dette med å koble seg opp til ein database frå ein applikasjon også ein jobb. Dette problemet har ikkje SQLite som er innebygd i fleire språk idag det trengs ingen spesielle rettigheiter for å kunne leke databaseadministrator.

Tjah.. jeg avinstallerte postgres på min maskin og gikk gjennom følgende prosess for å innstallere den på nytt:

 

18:43 gikk inn på posgresql.org

18:43 startet download fra norsk mirror

18:45 download ferdig, pakket ut zip fil

18:45 start

18:45 next

18:45 skrev inn passord to ganger

18:46 next

18:47 ok (opprett bruker)

18:47 accept connections on all addresses not just localhost

18:48 locale utf8

18:48 skrev inn passord to ganger

18:48 ok (må gå inn i hba_conf for å accepte connections fra andre maskiner)

18:49 next

18:49 next

18:49 fjern avkryssningsboks for stack builder

18:50 finish

 

Det tok meg 1,5 min å finne downloaden og 5 min å innstallere.

 

Du har forsåvidt helt rett i at det tar litt tid å koble til databasen fra f.eks JSP, PHP e.l., men selve innstallasjonen er ekstremt enkel. Omtrent som å innstallere word, bare kjappere :p

 

Da er postgres innstallert på maskinen og kjører på en ikke-administrator konto*. Under Start->Programmer->Postgres 8.3 så ligger det to linker, start og stop service, administrasjonsverktøyet pgAdmin og linker til configurasjonsfilene.

 

*) Såvidt jeg vet kan du ikke kjøre postgresql som administrator av sikkerhetsmessige årsaker.

Endret av blackbrrd
Lenke til kommentar
  • 3 uker senere...
SQLite har mange fordeler over andre databaser. Den er jo superpopulær til heilt enkle ting fordi den er så enkel å bruke, rask og mykje lettare å ta backup av enn dei større databasene.

 

Nå er det jo ikkje direkte vanskeleg å bruke dei andre, men med SQLite så sparer ein mykje knoting. For ein som skal begynne med databaser så er SQLite den beste databasen å starte med fordi ein slipper den knotinga med å setja opp ein større database og finne ein leverandør som leverer ein database som er ACID. Alt ein trenger er PHP/Python der SQLite er innebygd.

 

Å anbefale SQLite for en som ønsker å lære seg databaser er som å anbefale JavaScript til en som ønsker å lære seg å programmere.

 

Selv har jeg tittet litt på SQLite, men det er noen år siden nå. Jeg trengte databasestøtte i et Java-prosjekt og tenkte jeg skulle titte litt på SQLite. Men måten typer ble behandlet på i SQLite førte til slutt til mer problemer enn hva godt var, så jeg gikk for HSQLDB istedet. Sistnevnte er jo i så måte mye mer anvendelig enn SQLite, men man er jo bundet til Java...

 

Argumentet ditt med å spare mye knot er ikke noe særlig godt argument. Å lære seg noe nytt uten å møte noen hindringer på veien er i mine øyne umulig. Å sette opp et prosjekt fra grunnen av er alltid mye knot. Men har man gjort det en gang er det mye lettere neste gang.

 

Werner

Lenke til kommentar
jeg lagde noe i PS nå.

http://www.rotarynorge.com/test/meny.html

 

det er noe sånt jeg har tenkt på

noen som kan hjelpe meg videre?

Anbefaler på det sterkeste at dere bruker noe ferdig. Regner med at det finnes massevis av open source prosjekt/jobb-styrings-programvare der ute.

 

Det finnes også leverandører som tilbyr slikt som en tjeneste, f.eks.: http://www.basecamphq.com/ .

Lenke til kommentar
jeg lagde noe i PS nå.

http://www.rotarynorge.com/test/meny.html

 

det er noe sånt jeg har tenkt på

noen som kan hjelpe meg videre?

 

Dersom jeg har forstått deg rett, vil du ha en databasestruktur som ligner på dette?

 

 

CREATE TABLE Ansatt(
Navn Varchar(40) PRIMARY KEY
);

CREATE TABLE Poststed(
Postnr varchar(4) PRIMARY KEY,
Poststed varchar(40)
);

CREATE TABLE Kunde(
Firmanavn Varchar(40) PRIMARY KEY,
Adresse Varchar(40),
Postnr Varchar(4),
Kontaktperson Varchar(40),
Email Varchar(40),
Telefonnummer Varchar(12),
FOREIGN KEY (Postnr) REFERENCES Poststed(Postnr)
);

CREATE TABLE Jobb(
Jobbnr Int PRIMARY KEY AUTO_INCREMENT,
Opprettet Date NOT NULL,
Endret Date,
Beskrivelse Text,
Type Enum("Lås", "Alarm"),
Oppdragstype Varchar(40),
Ansvarlig Varchar(40),
Montor Varchar(40),
Status Enum("Avsluttet", "Aktiv"),
BookingDato Date,
FristDato Date,
Estimert Int,
Brukt Int,
FOREIGN KEY (Ansvarlig) REFERENCES Ansatt(Navn),
FOREIGN KEY (Montor) REFERENCES Ansatt(Navn)
);

 

Her har jeg gjort en del antagelser - blant annet at firmanavnet på dine kunder er unike, slik at de kan brukes som primærnøkkel. Dersom dette ikke er tilfelle, kan vi gjøre som med jobb-tabellen, og legge til et firmanummer som inkrementeres automatisk når du får en ny kunde.

 

Videre har jeg skilt ut Postnummer og Poststed, siden alternativet ville føre til mye redundans og dobbeltlagring. Jeg har valgt å representere postnummeret som en streng, siden tall kan miste noe informasjon (0001 == 1). Samme tankegangen brukte jeg på telefonnummer, men la til noen ekstra tegn, i tilfelle du f.eks. har utenlandske kunder og behøver et landsnummer i tillegg.

 

Jobbene har jeg prøvd å representere som vist på lenken du oppga i forrige post, men jeg er noe usikker på hva feltene betyr, så jeg kan ikke garantere at det er nøyaktig slik du vil ha det. Jeg har valgt å representere Type som en Enum, selv om jeg trolig kunne brukt en boolean eller et enkelt tall, dersom det er få typer jobber du har. Hovedgrunnen min til dette, er at det skal kunne endres, i tilfelle du vil begynne med andre jobber, eller har andre typer som ikke går frem av eksempelet ditt.

 

Jeg ser for meg at Ansvarlig er den som legger inn jobben, og Montor den som utfører den, og begge disse refererer til Ansatte-tabellen, slik at det skal være konsistent. For estimert og brukt tid har jeg brukt integere, så om du vil representere halve timer, eller minutter, holder nok ikke dette.

 

Siden jeg vanligvis bruker MySQL, har jeg brukt den syntaksen, og testet ut spørringene på en lokal tjener, for å være sikre på at de fungerer. Jeg håper det var noe slikt du var ute etter, og om ikke det hjalp noe, får du vel bare prøve å spørre på nytt.

Lenke til kommentar
Er det ikkje best å la være å bruke enum og heller istadenfor lage ein ekstra typetabell som det blir referert til? På den måten kan ein jo enklare legge til, modifisere og fjerne typer.

Jo, det kan godt være en bedre løsning, men begge deler fungerer, og jeg valgte som jeg gjorde for å gjøre løsninga så enkel som mulig, med tanke på antall tabeller.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...