Data lagring. 2. iteration (implement backend)



Relaterede dokumenter
De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

DB undervisning 01-01

Views etc. Databaser

Introduktion til programmering

Introduktion til programmering

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

Jayne Alice Jensen [Link til portfolio]

Skriftlig eksamen i kurset. Informationssystemer

3. semester, 2. projekt: Database

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

Dataanalyse og databaser

Eksamen, DSDS, efterår 2008

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Eksamen, DSDS, efterår 2007

Database design for begyndere

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE

DATABASE Projekt 1-3. semester

Projekt 1 Database. Cphbusiness Lyngby Multimediedesigner, 3. semester mul-a12e, gruppe 1

Projekt database. 3 Semester - Mul a Projekt 1. Yaser Osman cph-mo102@cphbusiness.dk. Dan Eskildsen cph-de32@cphbusiness.dk

Anne Randorff Højen

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

En Kort Introduktion til Oracle

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Projekt 1 - Database. Cphbusiness Lyngby Multimediedesigner, 3. semester. MulB13e, gruppe 4

3. SEMESTER 2. PROJECT MULB Gruppe september 2015

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Manglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler.

Database. lv/

Søren Løbner (lobner) ddb Databaser

Introduktion til SQL queries

Projekt titel. Projekt navn. Gruppe medlemmer. Klasse/Gruppenummer. Databaseprojekt 1. Ferrari

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Indholdsfortegnelse for kapitel 3

Databaseadgang fra Java

SQL Server 2016 Data Adgang

Projekt: Database. Multimedia Design: Semester 3 - projekt 01. Sabine Larsen cph-sl176@cphbusiness.dk. Anastasia Keller cph-ak186@cphbusiness.

... øvelser. Fortæl mig, og jeg glemmer. Vis mig, og jeg husker. Involver mig, og jeg forstår. Konfutse

Software Projekt NoSQL vs RMDB

Database. Pr jekt. Hold CLmul-a14e Gruppe 3 3. semester Vejledere: Tue Becher Ivan R. Frederiksen

Database kursus Forår 2013

DOCUMENTATION FULLY DRESSED USE-CASE. 29. oktober 2012 [ TEMA PERSISTENS DOKUMENTATION] Use-case: Process Order

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING

Anvisning i aflevering af bitemporale data

Database programmerings tips

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

POST IT! Cph Business Academy Multimediedesign 2. Semester flow april Kirstine Marie Rasmussen cph-

Tagwall med Php & MySQL

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

The Design Diaries Project 3 2. Semester. Blog om designprincipper

Fra ER-Diagram til Relationel model i 7 step

Skriftlig opgave. Designtanker i database-nære systemer

Databasesystemer. IT Universitetet i København 8. juni 2006

(fig.1. Eksempel på en almindelig entity)

CFunding-IT. Web DB Multimediedesigner 3. Semester Gruppe 15

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0

Database for udviklere. Jan Lund Madsen PBS10107

Projekt 3: Interaktionsudvikling 11/04.14

DEN GODE MODEL: OPSAMLING PÅ MODELLERINGSOPGAVER OG INTRO TIL MODELLERINGSALTERNATIVER

Septimas høringssvar vedrørende dokumenteterne FKG datamodellen - Version Fysisk implementering.pdf og FKG_2_3_1_mssql.sql

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Databaser. 3. Normalform. Mette Frost Nielsen

SQL for MySQL-begyndere

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

FORCE Inspect Online Manual v FORCE Inspect Online Manual. 1 af 18

Installation af WeroShop 2.4 S

Web DB project semester - 3. projekt - Gruppenr. 23 MULA - September 2015

Dokumentering af umbraco artikeleksport:

Transkript:

Data lagring 2. iteration (implement backend)

Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering Alternative Datalagringsmetoder

Database En database består af én eller flere tabeller Her er databasen wordpress valgt. Der er 10 tabeller

Diagrammet viser databasen bag blogging systemet wordpress

Tabel id title url En tabel svarer til en samling objekter af samme type. En tabel kaldes også en relation.

Række id title url En række svarer til ét objekt.

Kolonne id title url En kolonne svarer til en attribut for alle objekterne i en tabel.

SQL kommandoer: Data definition Manual til definition statements: http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-data-definition.html

Starte MySQL fra kommandoprompt/terminal MAC: /Applications/MAMP/Library/bin/mysql -u root -p Windows: \Program Files\EasyPHP 3.0\mysql\bin\mysql -u root

start Eksisterer databasen? ja SHOW databases; USE myproject; Har databasen tabeller? nej nej CREATE database myproject; USE myproject; se næste slide CREATE TABLE users [...] ja SHOW tables; indsæt data

CREATE TABLE kommandoen CREATE TABLE testusers ( id INT AUTO_INCREMENT, firstname VARCHAR(40), lastname VARCHAR(40), PRIMARY KEY(id) );

Oversigt over almindelige kommandoer

Ændre database design ALTER TABLE - Rename Ændre tabellens navn: ALTER TABLE classics RENAME newname; ALTER TABLE - CHANGE Ændre navnet på en kolonne: ALTER TABLE classics CHANGE type category VARCHAR(16); ALTER TABLE - MODIFY Ændre datatypen på en kolonne: ALTER TABLE classics MODIFY year SMALLINT; ALTER TABLE - ADD Tilføje kolonne: ALTER TABLE classics ADD isbn CHAR(13); ALTER TABLE - DROP Slette kolonne: ALTER TABLE classics DROP id;

Indsætte og ændre data INSERT INTO - Indsætte data: INSERT INTO users(id, firstname) VALUES ( 1, Pete ); Flere rækker: INSERT INTO users(id, firstname) VALUES( 1, Pete ),( 2, Chris ),( 3, Martin ); UPDATE SET WHERE - ændre data: UPDATE users SET firstname='peter' WHERE id='1';

Data udtræk SELECT * FROM users; SELECT firstname FROM users; SELECT firstname FROM users WHERE id= 1 ;

ER diagrammer Entity Relationship

forfatter dataenheden (entity) har relation fornavn attribut id primær nøgle

forbindelse mellem en enhed og en relation forbindelse mellem en enhed og en attribut

kilde: http://commons.wikimedia.org/wiki/file:er_diagram_mmorpg.png

Tabel layout 1

Tabel layout 2 Kilde: http://www.orafaq.com/wiki/image:er_diagram.jpg

Tabel layout 3

Notation: Cardinalitet én-til-én 1 1 én-til-mange 1 m mange-til-mange m m

Redundans Den samme data flere steder i databasen. Problem: Performance og maintainability - samme opdatering mange steder. - dataudtræk langsomme.

Author 1 Author 2 Title ISBN Price US Cust.name Cust.address Purch.date

Normalisering At dele data ud i flere tabeller og binde dem sammen med primærnøgler, for at undgå redundant data Kriterier for Første Normalform: 1. Ingen kolonner må gentage en anden kolonnes datatype 2. Alle kolonner skal max. indeholde én værdi 3. Alle tabeller skal have en primærnøgle til unik identification af en række

Ingen primær nøgle to kolonner til samme datatype Author 1 Author 2 Title ISBN Price US Cust.name Cust.address Purch.date Mere end én værdi i en kolonne pr. række

Normalisering af tabellen Authors kolonner transformeres til en selvstændig tabel Primær nøglen bruges som foreign key i authors tabellen Title ISBN Price Cust.name Cust.address Purch.date ISBN Author

én-til-mange id firstname 1 H.C. Andersen 2 Karen Blixen 3 Martin A. Nexø table: author n id title authorid 1 Mit Afrika 2 2 Den grimme ælling 1 3 Fyrtøjet 1 table: books

stadig redundans... Title ISBN Price Cust.name Cust.address Purch.date En kunde køber mange bøger En bog købes af mange kunder

mange-til-mange kunde m m titler

Anden Normal form En tabel skabes ud af de to tabellers primærnøgler

CustNo Name Address City state zip CustNo ISBN Date ISBN Title Price

CREATE TABLE customers( CustNo varchar(50) PRIMARY KEY, Name varchar(50) NOT NULL ) REFERENCES bruges til at binde nøgler sammen på tværs af tabeller og dermed sikre konsistent data CREATE TABLE titles( ISBN varchar(50) PRIMARY KEY, Title varchar(100) NOT NULL ) CREATE TABLE purchases( CustNo varchar(50) REFERENCES customers (CustNo), ISBN varchar(50) REFERENCES titles (ISBN), PRIMARY KEY (CustNo, ISBN) )

Eksempel på en database i 3. Normalform

http://codex.wordpress.org/images/8/83/wp_27_dbserd.png

Mange-til-Mange m n

2. normalform: wp_term_relationships

Forskellige datalagringsmetoder CMS: definere sitestruktur med kategorier og underkategorier/ sider og undersider. XML: mark-up tekst editering, eller generere via formular interface (schema) Tekstfil: teksteditering med simpel syntax, opfinde og overholde konventioner Database: skrive SQL kommandoer eller bruge phpmyadmin interface

title1= title2= title3= url1= url2= url3= Tekst fil

Tekst fil title1= title2= title3= url1= url2= url3= Relationer mellem data elementer er implicit (nummereringskonvention)

XML fil <articles> <title url= > </title> <title url= > </title> <title url= > </title> </articles>

XML fil <articles> <article url= > </article> <article url= > </article> <article url= > </article> </articles> Relationer mellem data elementer er eksplicit - udtrykkes gennem strukturens hierarkiske orden

...eller <articles> <article> <title> </title> <url> </url> </article> <article> </articles>

Redundans i tekst fil title1= Den grimme ælling title2= Fyrtøjet title3= Mit Africa url1= url2= url3= author1= H.C. Andersen author2= H.C. Andersen author3= Karen Blixen Redundans!

Redundans i XML fil <articles> <article> <title>den grimme ælling</title> <author>h.c Andersen</author> </article> <article> <title>fyrtøjet</title> <author>h.c Andersen</author> </article> </articles>

Redundans fix <articles> <article> <title>den grimme ælling</title> <authorid>1</author> </article> <article> <title>fyrtøjet</title> <authorid>1</author> </article> </articles>

Redundans fix (fortsat) <articles> <article> <title>den grimme ælling</title> <authorid>1</author> </article> <article> <title>fyrtøjet</title> <authorid>1</author> </article> </articles> <authors> <author> <name id= 1 >H.C. Andersen</name> </author> <author> <name id= 2 >Karen Blixen</name> </author> </authors>

tekst vs. XML vs. Database Lagringstype Fordele Ulemper Flat file enkelt og intuitivt utilstrækkeligt ved større kompleksitet, sandsynlighed for fejl XML relativ enkelthed, genkendelighed, selvdokumenterende, læsbart, stringent syntax og parsing. mange ord, redundant, fylder meget, bruger meget båndbredde, svært at parse ujævne strukturer. MySql hurtigt at loade, skal ikke parses, reducerer redundans, konsistent, sikkerhed. svært at læse og editere

Hvilken metode man skal bruge afhænger af... projektets størrelse (tid og omfang) det relative behov for scalérbarhed. datasættets kompleksitet programmeringsressourcer

Næste gang: Udtræk og Load af data Database: udtræk med SQL XML: loade og parse Tekst: loade

Øvelser Øvelser er delt op i to: I bør prioritere begge lige højt. Bliv endelig ikke hængende i database design øvelsen. Tag hurtigst muligt fat på at implementere mindst én af tabellerne i det design i har fået lavet. 1. Tegn et ER diagram - dette fungerer også som planlægning af hvad i skal implementere i øvelse 2. 2. Implementer databasen. Her er det nok hvis I får implementeret en enkelt tabel, så I får afprøvet nogle af datadefinitionskommandoerne og bliver familiære med terminal/kommando promp eller phpmysql.

Øvelse 1: Tegn et ER diagram Bestem hvilke tabeller der skal bruges i Jeres produkt, hvilke kolonner (attributter) de hver især skal indeholde, og hvilke datatyper der skal anvendes for hver enkelt attribut. (se ) Angiv hvilke attributter der skal defineres som primærnøgler. Tegn relationer mellem tabellerne for at vise deres cardinalitet. (1-1, 1- mange, mange-mange). Hvis I har en mange-mange relation mellem to tabeller, så lav en join - tabel der viser denne relation. (som slide 33).

Øvelse 2: Implementer databasen Start Terminal(Mac) eller kommandoprompt (PC) og kør mysql herfra. Alternativt kan I også udføre det hele fra phpmyadmin. Opret en database for projektet Opret mindst én tabel. Normalisér. Dvs sørg for at tabellen lever op til kriterierne for 1. normalform (slide 26). Hvis det er relevant for jeres database, sørg da også for at databasen er i 2. normalform.

Bonus Øvelse: XML og statisk data Denne øvelse er til dem der er nået langt med wireframe og som er hurtigt færdige med database øvelserne. Hvis I er nået så langt med jeres wireframe at I har defineret den statiske og globale tekst på for siden. Dvs den tekst der ikke konstant vil blive opdateret - så som interface labels, tagline, intro tekst, menupunkter så skab et XML dokument som indeholder denne tekst.

Ressourcer Manual til definition statements: http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-data-definition.html Manual til datatyper: http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html (slide 52-54 indeholder datatypeoversigter fra kap. 8 i Learning PHP, MySQL & JavaScript.) SQL tutorial: http://www.w3schools.com/sql/

Karakter Datatyper

Tekst Datatyper

Numeriske Datatyper