øvingsforelesning 7

1
Øvingsforelesning 7
Kai Olav Ellefsen
2
I dag…
• Databaser: Databasedesign og SQL
• JSP: Koble databasen til nettsiden
Kai Olav Ellefsen, NTNU, 2010
3
Et større databaseeksempel
•
•
•
•
•
Designer en database
Oppretter database i mySQL
Kobler den til en JSP-side
Setter inn informasjon fra nettsiden i databasen
Henter ut iformasjon fra databasen til nettsiden
Kai Olav Ellefsen, NTNU, 2010
4
Oppgave 1: ER-diagram
• Lag et ER-digagram for en filmdatabase
• Relevante tabeller er film, regissør og skuespiller
• Attributter:
– Film: Navn, årstall, sjanger
– Skuespiller: Fornavn, etternavn, fødselsår
– Regissør: Fornavn, etternavn, fødselsår
• Velg relasjoner, primærnøkler og fremmednøkler selv
Kai Olav Ellefsen, NTNU, 2010
5
Løsningsforslag
Spiller i
Skuespiller
-id
-Navn
-Fødselsår
Regissør
Film
-id
-Navn
-Fødselsår
-id
-Navn
-Årstall
-Sjanger
Regisserer
Kai Olav Ellefsen, NTNU, 2010
6
Oppgave 2: SQL
• Lag databasen i SQL:
– Logg inn på login.stud.ntnu.no
– Opprett tabellene:
CREATE TABLE tabellnavn (
attributt1 felttype PRIMARY KEY,
attributt2 felttype
);
-Pass på mange-til-mange koblingen mellom skuespiller og film
Kai Olav Ellefsen, NTNU, 2010
7
Løsningsforslag
Skuespiller
-id
-navn
-fødselsår
FilmOgSkuespiller
-filmID
-skuespillerID
Film
-id
-navn
-årstallregissørID
Regissør
-id
-Navn
-Fødselsår
Kai Olav Ellefsen, NTNU, 2010
8
Oppgave 3: Endringer
• Vi ønsker å erstatte navn-attributtet hos skuespiller
og regissør med fornavn og etternavn
• Vi ønsker også å legge til et terningkast-attributt i
film-tabellen.
• Bruk ALTER TABLE:
– ALTER TABLE tabellnavn ADD attributtnavn atributtype;
– ALTER TABLE tabellnavn DROP attributtnavn;
Kai Olav Ellefsen, NTNU, 2010
9
Oppgave 4: Sette inn data
• Sett inn følgende filmer, regissører og skuespillere:
• Inglourious Basterds (2009). Regissør: Quentin
Tarantino (f. 1963). Skuespillere: Brad Pitt (f. 1963)
• Fight Club (1999). Regissør: David Fincher (f. 1962).
Skuespillere: Brad Pitt (f. 1963) og Edward Norton (f.
1969)
• Gi dem terningkast selv
• INSERT INTO tabell(felt1, felt2, felt3) VALUES
(verdi1, verdi2, verdi3);
Kai Olav Ellefsen, NTNU, 2010
10
Oppgave 5: Hent ut data
• Lag en spørring som gir ut alle filmer i databasen
sortert stigende etter terningkast
• Lag en spørring for å finne tittel og terningkast på alle
filmer regissert av Quentin Tarantino
• Lag en spørring for å finne tittel og årstall for alle
filmer med Brad Pitt, sortert etter årstall (synkende)
Kai Olav Ellefsen, NTNU, 2010
11
Oppgave 6: Koble mot JSP
<%@page import="java.sql.*" %>
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection db = java.sql.DriverManager.getConnection(
"jdbc:mysql://mysql.stud.ntnu.no/databasenavn","brukernavn",
"passord");
Statement st = db.createStatement();
ResultSet rs;
//Her skal vi sette inn kode for å skrive spørringer
db.close();
%>
Kai Olav Ellefsen, NTNU, 2010
12
Oppgave 7: Hente ut via JSP
• Skriv ut alle regissører og filmer på nettsiden:
Quentin Tarantino: Inglourious Basterds
David Fincher: Fight Club
• Slik brukes rs og st:
rs = st.executeQuery("SELECT * FROM skuespiller");
while(rs.next()){
String fornavn = rs.getString("fornavn");
String etternavn = rs.getString("etternavn");
out.println(fornavn + " " + etternavn + "<br/>");
}
Kai Olav Ellefsen, NTNU, 2010