Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso



Samankaltaiset tiedostot
CSE-A1200 Tietokannat

SQL - STRUCTURED QUERY LANGUAGE

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

HELIA 1 (12) Outi Virkki Tiedonhallinta

Lohdutus - tietokantadokumentti

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Tietokantakurssit / TKTL

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

HELIA 1 (14) Outi Virkki Tiedonhallinta

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja

3. Taulujen määrittely ja muuttaminen

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Opintopiiritehtävä 3: Verkkohuutokauppa

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

ALMU-järjestelmä Suunnitteludokumentti

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

Duplikaattien havaitseminen ja poisto DataFlux välinein

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Firebird JAMK Labranet Wiki

Saimaan ammattikorkeakoulu Tekniikka Lappeenranta Tietotekniikka Organisaation IT-palvelut. Aleksi Stenholm. Kemikaalitietokanta

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Java ja tietokannan käsittely (JDBC)

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

TIETOKANTOJEN PERUSTEET MARKKU SUNI

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Kuntokirjuri. Ohjelmistokuvaus. Miika Alonen. Jarkko Laine. Jesse Honkanen. Veli Matti Huovinen. Jani Jäntti. Versio

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

T Testiraportti TR-3. ETL-työkalu

MySQL ja PostgreSQL Seminaarityö

Tietokannat II -kurssin harjoitustyö

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

LINUX-HARJOITUS, MYSQL

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

Tietokantasovellus: drinkkiarkisto

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

2. Käsiteanalyysi ja relaatiomalli

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Kari Aalto Saariston IT

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4);

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Relaatiomalli ja -tietokanta

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

TIETOKANNAT JOHDANTO

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

HELIA 1 (11) Outi Virkki Tiedonhallinta

Treenitietokannan suunnitteludokumentti

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

SQL-kielen perusteet. Tietokantojen perusteet

Ylläpitodokumentti. PLAYOFF Jari Anttila Sanna Fröblom Aarno Sandvik Tommi Paavilainen Miikka Kohijoki. Päivi Pääkkö, ohjaaja

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

Hovi Huotari Lahdenmäki TIETO- KANTOJEN SUUNNITTELU & INDEKSOINTI

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

TIETOKANTOJEN PERUSTEET OSIO 8 MARKKU SUNI

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

Timo Laakso YHTEISÖN TURNAUSSIVUSTON SUUNNITTELU

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

Transkriptio:

Denormalisointia turvallisesti Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso

Timo Raitalaakso Senior Database Specialist Solita Oy 2001- - 2001 Tampereen Teknillinen korkeakoulu Tietokannat / Ohjelmistoarkkitehtuurit DI Sähkötekniikka OCA DBA 10g http://rafudb.blogspot.com/ 2

Solita 1996 perustettu ohjelmistotalo Ohjelmistoratkaisut Tietovarastointi ja raportointi Integrointi Portaalit ja sähköinen asiointi Toimipisteet Tampere ja Helsinki 180 työntekijää LV 2009 13,5 M 3

Denormalisointia turvallisesti Normalisointi

Normalisointia kolmanteen Tieto tallessa atomisesti Relaation ominaisuudet riippuvat Avaimesta Koko avaimesta Vain avaimesta 5

Denormalisointia turvallisesti Denormalisointi

Nimen denormalisointi http://rafudb.blogspot.com/2009/09/denormalize-safely.html create table isa(isa_id number(10) constraint isa_pk primary key, isa_nimi varchar2(200) not null); create table lapsi(lapsi_id number(10) constraint lapsi_pk primary key, isa_id constraint l_i_fk references isa, lapsi_arvo varchar2(200) not null); Denormalisointi: alter table lapsi add (isa_nimi varchar2(200) not null); Miten varmistat, että lapsi tauluun denormalisoitu tieto yhtenäistä isa taulun tiedon kanssa? 7

Nimen denormalisointi 8

Tiedon eheys perinteisesti Denormalisoidun tiedon populointi triggereillä Samalla yritetään pitää huolta eheydestä Mutating table ongelmia JDBC läpi collection tietotyyppejä käyttävät triggerit ei aina laukea Kaikkien kombinaatioitten hallinta 9

Keinoja eheyden säilyttämiseksi Denormalisoitu kolumni Jätä tieto myös isäkäsitteeseen Sisältö pitää olla sama kuin pääkäsitteessä Ellei isäkäsitettä ole, mallinna se Assert ei käytettävissä Foreign key taulujen välille Check constraint rivin tiedoille Unique constrain rivien yli samassa taulussa (Postgresql 9 exclusion constraints) 10

Turvallisuutta nimen denormalisointiin alter table isa add constraint isa_u unique (isa_nimi,isa_id); alter table lapsi add constraint l_i_2fk foreign key(isa_nimi,isa_id) references isa(isa_nimi,isa_id); ISA 01 Mikki 02 Aku LAPSI 011 01 Vertti Mikki 012 01 Mortti Mikki 021 02 Tupu Aku 022 02 Lupu Aku 023 02 Hupu Aku 11

Älä denormalisoi muutettavaa tietoa Jos tieto kuitenkin muutettavissa, luo vierasavain vasta transaktion lopussa tarkistettavaksi deferrable initially deferred Vai olisiko tietomallissasi puute? isa ja lapsi taulujen väliin taulu isa_versio, minne isa taulun nimet riveille 12

Tuntikirjanpito Suhteen denormalisointi 13

Tuntikirjanpito PersonHour2.task_id voi olla eri projektin task kuin PersonHour2.project_id Luo task2 uniikki avain project_id ja task_id kaksikolle. Tämä on uniikki, koska task2.task_id pääavaimena on uniikki. PersonHour2 vierasavain osoittamaan tähän uniikki avaimeen pelkän pääavaimen sijaan 14

Miten turvallista? task name päivitys UPDATE TASK2 set PROJECT_ID =?, TASK_NAME =? WHERE TASK_ID =?; task2.task_name muutos - Hibernate, päivittää sivutuotteena vierasavaimena käytetyn uniikki avaimen osaa vanhaan arvoon "enq: TM - contention" wait events Korjaa update itse Unindex http://rafudb.blogspot.com/search?q=unindex 15

Kaistan pisteet 16

Kaistan pisteet insert into ajorata (ajorata_id) values (1); insert into ajorata (ajorata_id) values (2); insert into ajoradan_piste (ajoradan_piste_id,ajorata_id) values (11,1); insert into kaista (kaista_id,ajorata_id) values (33,2); insert into kaistan_piste (kaistan_piste_id,ajoradanpiste_id,kaista_id) values (4444,11,33); Pitikö kaistan pisteiden kuulua samalle ajoradalle molempia saantipolkuja? 17

Kaistan pisteet - turvallisemmiksi alter table kaistan_piste add ajorata_id constraint kaistan_piste_ajorata_fk references ajorata; alter table ajoradan_piste add constraint ajoradan_piste_u unique (ajorata_id,ajoradan_piste_id); alter table kaista add constraint kaista_u unique (ajorata_id,kaista_id); alter table kaistan_piste add constraint kaistan_piste_kaista2fk foreign key (ajorata_id,kaista_id) references kaista (ajorata_id,kaista_id); alter table kaistan_piste add constraint kaistan_piste_ap2fk foreign key (ajorata_id,ajoradan_piste_id) references ajoradan_piste (ajorata_id,ajoradan_piste_id); 18

Kaistan pisteet - turvallisemmiksi denormalisointi 19

Pakettikoko ja lähetykset Tuotteella eri kokoisia paketteja Lähetysmäärä pitää olla pakettikoon monikertoja denormalisointi ALTER TABLE LAHETYS ADD CHECK (MOD(LUKUMAARA,PAKETTILUKUMAARA)=0); 11.2 BUG: MERGE IGNORES CHECK CONSTRAINT 20

Vaihtoehto denormalisoinnille ON COMMIT päivittyvä materialisoitu näkymä, minkä toteuttavalle taululle constraint + Ei tarvi denormalisointia sovelluksen puolelta - Tarkistetaan vasta transaktion lopussa - Sarjallistaa päivityksiä -> enq: JI contention http://rwijk.blogspot.com/2010/01/enq-ji-contention.html isän tilakoneen tilojen mukaisten lasten tarkisteisiin 21

Asian henkilöt ASIA VUOKRA KAUPPA * * * Vuokralainen * * Vuokraaja * * Ostaja Myyjä * HENKILO 22

Asian henkilöt VU Vuokra KA Kauppa 23

Asian henkilöt VR Vuokralainen VJ Vuokraaja OS Ostaja MY Myyjä 24

Asian henkilöt VU VR VU VJ KA OS KA MY 25

Asian henkilöt Asialaji asiahenkilo tauluun ja vierasavaimien kautta varmistus tiedon yhtenäisyydestä 26

Asian henkilöt Asialaji denormalisointi suhdetauluihin alter table vuokraaja add asialaji as VU ; Virtuaalikolumni cast numeeriselle tiedolle 27

Yhteenveto Denormaisoidessa jätä kolumnit myös sinne minne ne kuuluvat. Käytä tiedon eheyden saavuttamiseksi tarkisteita mitä saatavilla. Vierasavaimet Uniikki rajoitteet Check rivitasolla Denormalisointia voi käyttää hyväksi taulujen välistä eheyttä vaalimaan. 28

Kiitos! Solita Oy Helsinki Solita Oy Tampere Kaisaniemenkatu 13 A Satakunnankatu 18 A 00100 Helsinki 33210 Tampere +3583 389 1380 +35840 848 0148 contact@solita.fi rafu@solita.fi www.solita.fi rafudb.blogspot.com