Takk!
Jeg vil særlig takke Mustafa Alqaisy, Egil Paulin Andersen, Ketil
Danielsen, Olav Dæhli, Espen Helgerud, Stian Helgerud, Roy M. Istad,
Lasse Jenssen, Jon Kvisli, Dag Toppe Larsen, Per Lauvås, Håvard
Myrbakken, Tomas Sandnes og Uwe Egbert Wolter for faglige kommentarer og
samarbeid knyttet til dette bokprosjektet.
Mange har bidratt med verdifulle forslag og rettelser til manus og/eller nettsider: Niels Andreas Braathen, Vidar Berg, Viktor Danielsen, Lars Eric T. Daykin,
Antonin De Jesus, Stefan Olav Ekehaug, Stian Flage, Ole Einar Flaten, Cathrine Marie Haga, Geir Haugan, Steinar Opdal Iversen, Lawrence Kamara, Anniken
Karlsen, Hyojung Kim, Knut Kvaal, Ala Mehersia, Tor Lønnestad, Sigmund Hov Moen, Håvard Nordlie Mathisen, Kristine Vike Nerås, Trine Normann,
Anja Heggen Rotevatn, Jostein Sageie, Hans Christian Sandblåst, Jon Martin Sigvaldsen, Martin Sjursen, Connie Skjellaug, Kjell-Olaf Slagnes,
Kristine Smaadal, Espen Solnørdal, Lars Andreas Strand, Tore Svensson, Jørgen Tellnes, Ida Katrine Børstad Thoresen, Bjørge Trollsås,
Jørgen Tørnes, Tarald Vestbøstad, Benjamin Waltersperger, Øystein Wendelborg, Adrian Wielgosz, Audun Østtveit og Mari Aarak.
Utgivelsen av 1. utgave fikk støtte fra Lærebokutvalget for høyere
utdanning. Universitetet i Sørøst-Norge har lagt forholdene godt til
rette for skrivearbeid. Universitetsforlaget har gjennomført
bokprosjektet på en profesjonell måte.
En stor takk til alle!
6. utgave
Ingen feil funnet.
5. utgave
2. opplag
-
Side 200, figur 7.34: En-til-mange forholdet mellom Ansatt og Kommune
skal snus, slik at kråkefoten kommer ved Ansatt.
1. opplag
-
Side 91: I oppgave 4 skal tabellen Utleie ha kolonner (KNr, MNr,
KopiNr, TidUt, TidInn).
-
Side 223: Koblingsentiteten i
figur 8.9 skal hete
ProsjektDeltakelse.
-
Side 226: Koblingsentiteten i
figur 8.14 skal hete Kontorplass.
-
Side 253: I oppgave 2 skal kolonnen Utlån.EksNr være fremmednøkkel og
merkes med stjerne.
-
Side 452–454 Alle navn i de fire JSON-eksemplene skal omsluttes
av apostrofer ("VNr" og ikke bare VNr), på samme måte som i listing
14.4 på side 429.
4. utgave
-
Side 6: Det burde vært kommentert at figur 1.3 er en variant av det
som blir kalt
DIKW-pyramiden
(Data - Information - Knowledge - Wisdom), rett nok uten et lag for
visdom.
-
Side 66: I tilknytning til ALTER TABLE kommandoen burde det vært lagt
til en MySQL-kommentar: I MySQL fjernes primærnøkler ved (f.eks.)
ALTER TABLE Vare DROP PRIMARY KEY. Det er også en tilsvarende syntaks
for fjerning av fremmednøkler (DROP FOREIGN KEY), se under
ALTER TABLE i referansemanualen.
-
Side 74 og 445: InnoDB er standard databasemotor i siste versjoner av
MySQL. Det er dermed ikke lenger nødvendig å skrive ENGINE=InnoDB for
å oppnå fremmednøkkelkontroll slik det står i faktaboksen.
-
Side 143, nest siste avsnitt: "ariteten" skal være "kardinaliteten".
-
Side 153, siste avsnitt: Skal starte med "Vi sier at disse seks er
grunnleggende operatorer".
-
Side 174, figur 7.20: Utleie.KNr bør være merket med PK (primary key)
og FK (foreign key). Alternativt kunne man innført et utleienummer som
primærnøkkel i dette eksemplet, men det ville medført ytterligere noen
endringer.
-
Side 175: I avsnitt 7.6.2 burde det vært nevnt at man med
Chen-notasjon kan knytte attributter til forhold. Figur 7.21 kunne
f.eks. vært tegnet på
denne måten, der altså Utlån er
modellert som et mange-til-mange forhold med to attributter UtlånsDato
og ErLevert (entiteten Forlag er hoppet over).
-
Side 230:
Minnehierarkiet
vist på figur 9.1 plasserer optiske medier (CD, DVD) sammen med
magnetbånd nederst i pyramiden. Det er greit nok med hensyn på
aksesstid i den forstand at de er tregere enn harddisk, men
det blir feil hvis vi ser på lagringskapasitet (jf. setningen
"Bredden på pyramiden antyder lagringskapasitet" øverst på siden). Det
finnes nå (vår 2016) harddisker med lagringskapasitet opp mot 10 TB,
godt over kapasiteten til CD og DVD.
-
Side 334: I PHP-koden øverst skal første linje slettes og
SQL-spørringen endres til: INSERT INTO Ordre(Dato, KNr) VALUES
(CURDATE(), 5002)
3. utgave
-
Side 60: I boksen står det feilaktig at man kan bruke funksjonen
CURDATE() som standardverdi i MySQL. Som hovedregel kan man ikke bruke
funksjoner som standardverdi i MySQL. Hvis en kolonne er gitt datatype
TIMESTAMP kan man få til noe lignende ved å skrive:
Dato TIMESTAMP DEFAULT CURRENT_TIMESTAMP
I Access kan man bruke DATE() som standardverdi, forutsatt at systemet
er satt opp med ANSI SQL syntaks.
-
Side 103: Egenkoblingen må skrives om til å bruke ytre koblinger for å
få med besteforeldre for de personene der ikke alle 8 besteforeldre er
registrert.
-
Side 181: Det er vanskelig å finne en god tolkning av diagrammet til
oppgave 2 slik det er tegnet. Entiteten Reservasjon bør utvides med et
attributt DagNr, som også tas med i identifikatoren. I så fall bør
også løsningsforslaget bli oppdatert: DagNr bør da legges til som en
kolonne i tabellen Reservasjon, og tas med i primærnøkkelen. Dessuten
er det nok naturlig å sette alle minimumsskrankene inn mot Reservasjon
til 0.
-
Side 249: Det er to feil i avsnittet nederst på siden. 1) Man
kan tildele rettigheter på kun utvalgte kolonner i en tabell,
f.eks. GRANT UPDATE(Antall) ON Vare TO ola. 2) For at utsnittet
Varebeholdning skal tjene hensikten må man legge til WITH CHECK OPTION
som siste linje i definisjonen.
-
Side 309: Avsnittet om bruk av funksjonene mysql_real_escape_string og
mysqli_real_escape_string som et mottrekk til SQL-planting (SQL
injection) er for bastant. Selv om disse funksjonene kan stoppe en del
angrep, så er det ikke en vanntett løsning. Den anbefalte løsningen er
å bruke såkalte prepared statements (for øvrig omtalt i avsnitt 14.2.2
på side 321-323).
2. utgave
-
Side 38, linje 1 skal være: vår eksempelspørring over, så blir AND
utført først fordi den har høyere presedens enn OR.
-
Side 322, setningen før nederste kodeeksempel skal være: Ved seinere
forespørsler kan man hente ut verdien til informasjonskapselen fra den
assosiative tabellen $_COOKIE, og på den måten finne ut hvilken bruker
som blir behandlet:
$bruker = $_COOKIE['bruker'];
-
Side 337, første linje: cross-side scripting skal være cross-site
scripting.
- Side 430, listen med operatorpresedens bør være:
- *, /, %
- +, -
- <, <=, =, >, >=, <>, !=
- NOT
- AND
- ALL, ANY, BETWEEN, IN, LIKE, OR, SOME
-
Alle forekomster av "personnummer" skal være "fødselsnummer", og
forekomsten av "fødselsnummer" på s. 197 skal være "fødselsdato".
Fødselsnummer er altså er den 11-sifrede koden som består av
fødselsdato (6 siffer) og personnummer (5 siffer). Fødselsnummer (11
siffer) er en mulig primærnøkkel for personer; personnummer (5 siffer)
kan ikke brukes til dette.