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

Størrelse: px
Starte visningen fra side:

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

Transkript

1 Manglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler. Af Seniorkonsulent Carsten Saastamoinen-Jakobsen Skal datamodellen blot være på 3NF (normalform)? Er det at finde foreningsmængden mellem 2 tabeller blot at anvende UNION-operatoren? Nej og Nej! Hvis et system skal være stabilt og konsistent hen over tid er 3NF ikke nok. Hvis kravet til datamodellen er 3NF er UNION-operatoren ikke anvendelig i alle situationer. Hvorfor oplever mange udviklere, at deres fejlfrie program efter at have kørt problemfrit i uger, måneder eller måske endda år pludselig fejler. Grunden vil i mange tilfælde være et for dårligt forarbejde. Min kære dansklærer fra gymnasiet, havde den holdning, at mindst den første time af en fire timers eksamen i dansk stil skulle bruges til at foreberede, hvad der skulle blive til en velstruktureret stil i de sidste knap tre timer. Hvis forholdet ikke var 1 til 3 mellem planlægning og udførelse, ville den danske stil selv for den dygtigste skribent blive dårlig. Hvor skulle en detalje med, i hvilken rækkefælge skulle tingene skrives, var alt med eller skulle der under indskrivningen det var før PCtidsalderen pludselig tilføjes noget, som medførte et rodet indhold og forskellige abstraktionsniveauer, hvor det burde være samme abstraktionsniveau, osv. Til orientering medførte det ikke automatisk høje karakterer, men hvordan ville det ikke være blevet uden denne planlægning. Men det medførte, at det var muligt med ro i sindet at forlade eksamenslokalet før de sidste hektiske minutter i forvisning om, at det var så det bedste, der kunne produceres på de 4 timer. Mange systemer udvikles uden en tilsvarende grundig bearbejdelse af datamodellen og uden overvejelser om, hvad en dårlig datamodel får af konsekvenser for skrivning af SQL-sætninger og for de applikationer, der skal udarbejdes. Det er vigtigt, at ALLE SQL-sætninger skrives ud fra, hvordan datamodellen er implementeret i databasesystemet og ikke ud fra de regler, udvikleren mener er gældende, eller som udvikleren tester for i sine applikationer. Skal alle tabeller have en surrogatnøgle som primærnøgle en surrogatnøgle er konstant hen over tid, da der ikke er indholdsbetydning i værdien? JA, absolut!! Men kan man da ikke bruge et Cprnummer som primærnøgle? Nej, omkring 50 personer får ændret deres Cprnummer hvert år. Et Cprnummer indeholde både oplysninger om fødselsdato og køn begge informationer kan ændres. Er et gadenavn ikke entydigt inden for en kommune? Jo, indtil sidste kommunesammenlægning. Ved den forrige kommunesammelægning var det et krav, at gadenavnene var entydige men en regel holder kun indtil nogen finder på at ændre den. Og på den måde kan jeg blive ved. Hvis denne simple regel om altid at bruge surrogatnøgler ikke overholdes, opstår der med garanti problemer på et tidspunkt. Er det ikke godt nok hvad det så end er at alle datavalideringer foretages af applikationen. Nej, der er set i hundredevis af eksempler på, at data er blevet indsat i databasen uden om ap- Copyright 2008 Teknologisk Institut side 1 of 10

2 plikationerne og med fejl til følge. F.eks. loades data fra en komma-separeret fil, så i nogle forekomster er en kolonne NULL, i andre forekomster er værdien den tomme streng og i andre er det en enkelt blank. Gør det søgningerne på en kolonne simplere? Problemet kan være, at det ikke er planlagt fra starten, at data skal indsættes uden om applikationerne, men ved opkøb, sammenlægning ol. skal et andet firmas data medtages i databasen. Jeg hører ofte, at mange har den holdning, at kravet til deres datamodel skal være, at den er på 3NF (3. normalform). Det er også meget bekvemt, da en erfaren modellør ofte laver datamodellen på denne normalform. Derfor er det jo ikke nødvendigt at undersøge om kvaliteten 3. normalform er overholdt. Ved en struktureret gennemgang af datamodellen inden udarbejdelse af diverse applikationer, kan man forsøge at sikre, at alle dataregler er fundet og specificeret og derefter defineret i databasen, så applikationerne kan nøjes med at teste for forretningslogik. Og så er der jo Boyce-Codd normalformen, som kan synliggøre designfejl og 4. normalform, som tester for sammenhænge, som jævnligt ses uden for teoribøgerne. Der findes også andre begreber, som definerer problemstillinger, der skal overvejes. Det kan være, at der findes super/sub-type hierarkier, der bør defineres for at sikre konsistens. Mange designovervejelser handler om at undgå redundans. Hvad får det egentlig af konse kvenser, hvis der er redundans i en database. Hvis der ikke tages højde for det dårlige design, bliver konsekvensen en meget dårligere datakvalitet. Hvis der skal tages højde for redundante data i applikationen, bliver det en mere kompleks applikation. Efterfølgende vil jeg vise nogle eksempler på de problemstillinger, der forekommer, når ens database indeholder redundante data. Senere i artiklen vil jeg se på, hvad det betyder for udarbejdelse af SQL-sætninger. Det er væsentligt at understrege, at man ikke ud fra et givet datamateriale kan se, om der forekommer redundante data, men kun ved at vide, hvilke regler der forekommer i et givet domæne. Er Enhedspris redundant i efterfølgende tabel? OrderLinie OrderId VareId AntalStk Enhedspris Ja, hvis en vare ALTID skal sælges til den samme Enhedspris eller til den pris, der er gældende på leveringstidspunktet. Men gælder den regel, at sælges der mindst 100 stk., må der gives rabat, forekommer der ikke redundans. Indtil nu er der blot ingen, der har købt mindst 100 stk., derfor er alle værdier i kolonnen Enhedspris for en given vare den samme. Lige nøjagtig denne problemstilling gør det vanskeligt at skrive sine manipulationssætninger, da alle Copyright 2008 Teknologisk Institut side 2 of 10

3 regler ikke altid kan læses ud fra definitionerne i databasen eller konkluderes ud fra indholdet af tabellen på det tidspunkt, hvor sætningen skrives. Reglen om de 100 stk. kan evt. være beskrevet i en trigger eller i det modul i forretningslaget, som tester for forretningsregler. Det kan også være, at reglen kun er kendt, men ikke beskrevet. Det vil være lettere at skrive sine manipulations-sætninger, hvis man ved, at der ikke forekommer redundans i databasen. Så når kolonnen Enhedspris er med i tabellen, er det fordi den samme vare kan have forskellige priser. Begrundelsen for at have redundante data i en database er stort set altid, at det giver en bedre performance. Dette er også korrekt i nogle tilfælde, men erfaringen viser, at der sjældent testes for, om det også giver en performance-forbedring af en størrelse, som er værd at gå efter. Ofte overses de problemer det giver, at have redundant information i databasen i form af mere komplicerede manipulations-sætninger og/eller applikationer. Der findes grundlæggende 3 former for redundans forekomst-redundans, hvor informationen kan findes i en anden forekomst i samme tabel kolonne-redundans, hvor informationen kan findes i samme forekomst, men i en anden kolonne redundans mellem tabeller, hvor informationen kan findes i en anden tabel direkte eller indirekte Forekomst-redundans er nok den mest udbredte form, men også der, hvor redundans giver de fleste problemer. I efterfølgende eksempel består tabellen Kunde af 3 kolonner Kundenr, Postnr og Bynavn. Kolonnen Kundenr er primærnøgle og kolonnen Bynavn indeholder redundant information, da Bynavn altid skal være det samme for et givet Postnr. Dvs. at tabellen kun er på 2NF, da der forekommer en transitiv afhængighed. Kunde Kundenr Postnr Bynavn Frederiksberg Aalborg Århus Ålborg København K Århus C Hvis der ved indsættelse af en ny forekomst ikke testes for, om Bynavn er stavet på samme måde, som de forekomster der allerede findes i tabellen, vil der ved manipulation med SE- LECT, UPDATE og DELETE skulle testes for alle stavemåder af Bynavn, hvis der i betingelsen refereres til kolonnen Bynavn. Simplere NEJ, mere kompleks kode Ja. For hvilke stavemåder kan der være anvendt. Resultatet vil blive forkert, hvis der testes for Aalborg stavet med Aa og ikke også for den forkerte stavemåde med Å. Hvis der er forekomster stavet korrekt med Aa og 100 forekomster stavet med Å er problemet, at fejlen næppe opdages. Copyright 2008 Teknologisk Institut side 3 of 10

4 Hvis der skal testes for samme stavemåde, vil det gøre indsættelser og opdateringer mere komplicerede. Hvad skal der forøvrigt ske, hvis den forekomst, der skal indsættes, har den korrekte stavemåde og de eksisterende forekomster i tabellen er stavet forkert. Ja, så skal der rettes i de gamle forekomster, før den nye forekomst kan indsættes. Hvad skal der tilføjes af kode i applikationen for at sikre, at gamle forekomster rettes inden den nye forekomst indsættes? Gør det applikationen simplere? Løsningen er desværre ofte, at man lader stå til. Lidt inkonsistens er vel ikke et problem, før der søges på kolonnen og DET OPDAGES, at ikke alle de ønskede forekomster kommer med i resultatet. Kolonne-redundans giver ikke de samme problemer. I tabellen vises et eksempel, hvor der er kolonne-redundans på kolonnerne Aar, Maaned og Dag. Tid Dato Aar Maaned Dag Konstruktionen laves ofte med det formål at kunne indeksere de kolonner, der indeholder redundans for dermed at opnå en bedre performance. Indsættelser og opdateringer bliver en smule mere kompliceret, især hvis den/de redundante kolonner, er beregnet ud fra komplekse formler. Man skal sikre sig, at den samme formel anvendes alle de steder, hvor der indsættes eller opdateres data. Opstår der fejl, kan værdierne i de redundante kolonner altid genskabes ved en simpel manipulation af tabellen. Problemet vil dog aldrig opstå, hvis de redundante kolonner er defineret som en beregnet kolonne, hvad der f.eks. er muligt i SQL Server, eller de redundante værdier beregnes i en trigger. Såfremt der er redundans i en database bør den vedligeholdes i databasesystemet og ikke i applikationerne. Redundans mellem tabeller giver også problemer. Når vi ser på tabellerne Ordre og Ordrelinie, kan vi se, at der i Ordre-tabellen er medtaget en kolonne, der indeholder den totale pris for en ordre. Hver gang der foretages ændringer i Ordrelinie-tabellen, skal Ordre-tabellen også opdateres. I netop dette tilfælde er problemet ikke så stort, da fejlagtige totaler i Ordretabellen altid kan gendannes ved at genberegne ud fra Ordrelinie-tabellen. Ordre OrdreID KundeID Leveringsdato PrisIalt Copyright 2008 Teknologisk Institut side 4 of 10

5 Ordrelinie OrdreID VareID Antal Enhedspris Tager vi problemet som skitseret under forekomst-redundans og udvider det til også at være redundans mellem tabeller, bliver kompleksiteten større. Vi kunne i et system have 3 tabeller med informationer om personer, f.eks. Kunde, Leverandør og Medarbejder. Hvis alle 3 tabeller indeholder såvel Postnr som Bynavn, vil det medføre endnu mere kompleks kode for at teste, om en værdi i kolonnen Bynavn er stavet korrekt. For ved indsættelse af en leverandør med et endnu ikke eksisterende Postnr i Leverandør-tabellen, skal stavemåden af værdien i kolonnen Bynavn testes op mod tabellen Kunde og/eller tabellen Medarbejder. Hvis værdien i kolonnen Bynavn nu er stavet forkert i en af disse tabeller, har brugeren af systemet måske ikke lov til at rette i disse tabeller. Konsekvensen er, at enten indsættes leverandøren med værdien i kolonnen Bynavn stavet forkert eller også hvad der i praksis viser sig at være den mest gængse løsning der testes ikke. Så hvis du gerne vil sikre dig konsistente data, skal du sørge for at arbejde med normaliserede data. Performance-forbedringer specielt i TP-systemer ved at arbejde på redundante data, giver måske kun forbedringer, fordi der skabes inkonsistente data, og dermed et system med en dårligere datakvalitet. Derfor skal du ved test sikre dig, at det også giver den ønskede performance-forbedring. Men udarbejdelse af manipulations-sætninger bliver i alle tilfælde mere kompliceret. I det efterfølgende eksempel skal vi udføre en UNION-operationen på tabellen Kunde og tabellen Leverandor. Det er interessant at finde ud af, om de 2 tabeller har en fællesmængde, dvs. om der findes kunder der også er leverandører. Findes der ikke en fællesmængde, skal operatoren UNION ALL anvendes i stedet for UNION. Performance-forbedringer skal opnås ved at bruge den rigtige operator. Hvis vi kommer frem til, at en forekomst fra tabellen Kunde med det samme værdi i kolonnen Tlfnr, som en forekomst fra tabellen Leverandor med samme værdi i kolonne Tlfnr, skal opfattes som værende den samme information, har de 2 tabeller en fællesmængde. Vi skal derfor anvende UNION. Problemet er imidlertid, at der kan være forskel på Navn og/eller Adresse i 2 forekomster med samme værdi i kolonnen Tlfnr. Desuden vil der med meget stor sandsynlighed altid være forskel på primærnøglerne, da dette blot er et fortløbende nummer inden for hver tabel. Anvender vi sætningen Copyright 2008 Teknologisk Institut side 5 of 10

6 SELECT * UNION SELECT * FROM Leverandor får vi ikke fjernet de dubletter, som vi gerne vil have fjernet. Derfor er vi nødt til at løse problemet på en anden måde. For at vise et par løsnings-eksempler anvendes følgende tabeller. CREATE TABLE Kunde ( KundeID INT NOT NULL PRIMARY KEY, Navn VARCHAR(30) NOT NULL, Adresse VARCHAR(30) NOT NULL, Postnr SMALLINT NOT NULL, KundeType CHAR(1) NOT NULL, Tlfnr VARCHAR(8) NOT NULL UNIQUE) CREATE TABLE Leverandor ( LeverandorID INT NOT NULL PRIMARY KEY, Navn VARCHAR(30) NOT NULL, Adresse VARCHAR(30) NOT NULL, Postnr SMALLINT NOT NULL, Tlfnr VARCHAR(8) NOT NULL UNIQUE) GO INSERT INTO Kunde VALUES (1, 'Jens Hansen', 'Nygade 2', 8000, 'A, ') INSERT INTO Kunde VALUES (2, 'Peter Olesen', 'Vestergade 23', 9000, 'A, ' ') INSERT INTO Kunde VALUES (3, 'Ida Hansen', 'Torvet 8', 8000, 'C, ' ') INSERT INTO Kunde VALUES (4, 'Sanne Carlsen', 'Søndergade 33', 2000, 'B, ' ') INSERT INTO Kunde VALUES (5, 'Finn Poulsen', 'Poulsgade 62', 7000, 'B, ' ') INSERT INTO Leverandor VALUES (1, 'Ida Hansen', 'Torvet 8', 8000, ' ') INSERT INTO Leverandor VALUES (2, 'Sanne Carlsen', 'Søndergade tv.', 2000, ' ') INSERT INTO Leverandor VALUES (3, 'Finn Poulsen', 'Poulsgade 62', 7000, ' ') INSERT INTO Leverandor VALUES (4, 'Slagteren', 'Østergade 3', 4000, ' ') INSERT INTO Leverandor VALUES (5, 'Bageren', 'Nygade 17', 5000, ' ') Når vi udfører sætningen, får vi forekomster med i resultatet, som opfattes som værende dubletter, selvom KundeId hhv. LeverandorId er udeladt, da der vil være forskelle på indeholdet i andre kolonner i de 2 tabeller. SELECT Navn, Adresse, Postnr, Tlfnr UNION SELECT Navn, Adresse, Postnr, Tlfnr FROM Leverandor ORDER BY Tlfnr Udføres sætningen, får vi det efterfølgende resultat. Kunde med KundeId = 5 og Leverandor med LeverandorId = 3 er kun med i resultatet én gang, da Navn, Adresse, Postnr og Tlfnr er angivet nøjagtig ens i de 2 tabeller. Det samme gælder for Kunde og Leverandor med Navn = Copyright 2008 Teknologisk Institut side 6 of 10

7 Ida Hansen. Men Navn = Sanne Carlsen er med 2 gange i resultatet, da der er forskel på værdien i kolonnen Adresse i de 2 tabeller. Navn Adresse Postnr Tlfnr Finn Poulsen Poulsgade Ida Hansen Torvet Jens Hansen Nygade Slagteren Østergade Bageren Nygade Peter Olesen Vestergade Sanne Carlsen Søndergade Sanne Carlsen Søndergade tv Hvordan løses dette problem? Da det var kolonnen Tlfnr, som skulles bruges til at finde dubletter, kan vi udføre UNIONoperatoren på denne kolonne. Dette resultat kaldes i sætningen som er vist efterfølgende for KL_Tlf. Vores endelig resultat-tabel skal indeholde lige så mange forekomster som i denne tabel. Vi skal derefter join e tabellerne KL_Tlf, Kunde og Leverandor. Nogle gange skal kolonnerne Navn, Adresse og Postnr tages fra tabellen Kunde andre gange fra tabellen Leverandor. Derfor anvender vi en LEFT JOIN mellem KL_Tlf og tabellerne Kunde og Leverandor. Da vi enten skal tage værdierne fra Kunde eller fra Leverandor anvendes ISNULL. Kunde-kolonnerne vil være NULL, hvis det er en Leverandor og resultatet vil indeholde værdierne fra Leverandor-kolonnerne. På samme måde vil Leverandor-kolonnerne være NULL, hvis det er en Kunde og Kunde-kolonnernes værdi medtages i resultatet. For forekomster i fællesmængden er der både værdier for kolonnerne i tabellen Kunde og for kolonnerne i tabellen Leverandor. I den viste løsning vælges værdierne fra tabellen Kunde Kunde-kolonnerne er første parameter til funktionen ISNULL. SELECT KL_Tlfnr.Tlfnr, ISNULL(Kunde.Navn, Leverandor.Navn) AS Navn, ISNULL(Kunde.Adresse, Leverandor.Adresse) AS Adresse, ISNULL(Kunde.Postnr, Leverandor.Postnr) AS Postnr FROM (SELECT Tlfnr UNION SELECT Tlfnr FROM Leverandor) AS KL_Tlfnr LEFT JOIN Kunde ON KL_Tlfnr.Tlfnr = Kunde.Tlfnr LEFT JOIN Leverandor ON KL_Tlfnr.Tlfnr = Leverandor.Tlfnr Som vi kan se af resultatet, er Navn = Sanne Carlsen kun med 1 gang i resultat-tabellen. En vigtig forudsætning for denne løsning er også, at kolonnen Tlfnr er defineret som værende entydig i hver af de 2 tabeller. UNION i sub-select en fjerner ikke kun dublerede Tlfnr mellem de 2 tabeller, men også evt. dublerede værdier i kolonnen Tlfnr inden for den samme tabel. Copyright 2008 Teknologisk Institut side 7 of 10

8 Problemet er, at den efterfølgende LEFT JOIN vil danne flere forekomster med det samme Tlfnr i resultat-tabellen. Dette problem kan løses med en APPLY JOIN, men dette vil ikke blive gennemgået her. Navn Adresse Postnr Tlfnr Finn Poulsen Poulsgade Ida Hansen Torvet Jens Hansen Nygade Slagteren Østergade Bageren Nygade Peter Olesen Vestergade Sanne Carlsen Søndergade Men er denne måde at løse problemet på altid brugbar. Her er det vigtigt at se på definitionen af de 2 tabeller. Da alle kolonner i tabellen Kunde er defineret med NOT NULL, vil kolonnerne fra tabellen Kunde efter LEFT JOIN kun være NULL for de forekomster, hvor informationerne skal tages fra tabellen Leverandor. Så løsningen giver med denne definition af tabellerne, det korrekte resultat. Hvis en af kolonnerne i tabellen Kunde accepterer NULL, vil der måske være et problem. For alle forekomster i fællesmængden af de 2 tabeller, vil data komme fra tabellen Kunde. Men er der NULL i en kolonne fra Kunde, vil data komme fra tabellen Leverandor. Vi får derfor blandet data fra de 2 tabeller i en forekomst i resultat-tabellen. Eksemplet viser, at i tabellen Kunde må Postnr være NULL. Kunde Navn Adresse Postnr Tlfnr Firma A/S Poulsgade 62 NULL Leverandor Navn Adresse Postnr Tlfnr Firma A/S Vestergade I resultatet vil værdien i kolonnen Adresse komme fra tabellen Kunde, men Postnr tages fra tabellen Leverandor. Det er jo ikke sikkert, at kombinationen Adresse = Poulsgade 62 og Postnr = 3000 forekommer. Selvfølgelig er det et problem, at der er angivet en værdi i kolonnen Adresse, og at der mangler en værdi i kolonne Postnr, men det er netop en af de fejl der opstår, når tabellen ikke er defineret præcist og begrænsende nok. Og den uheldige kombination forekommer måske først efter lang tids brug af systemet. Resultat-tabel Navn Adresse Postnr Tlfnr Firma A/S Poulsgade Vi skal derfor lave en anden løsning af problemet, hvor vi sikrer at alle data i en forekomst i resultat-tabellen enten kommer fra tabellen Kunde eller kommer fra tabellen Leverandor. Copyright 2008 Teknologisk Institut side 8 of 10

9 Problemet kunne løses ved først at finde Alle forekomster i Kunde, som ikke findes i Leverandor ved sammenligning på Tlfnr difference-mængden mellem Kunde og Leverandor. Alle forekomster i Leverandor, som ikke findes i Kunde ved sammenligning på Tlfnr - difference-mængden mellem Leverandor og Kunde. Alle forekomster i Leverandor, som også findes i Kunde ved sammenligning på Tlfnr fællesmængden mellem Leverandor og Kunde. På disse 3 mellemresultater udføres en UNION ALL. Det er meget vigtigt at konstatere, at differencemængden og fællesmængden ikke er fundet ved at sammenligne forekomst med forekomst ved at bruge operatorerne EXCEPT og IN- TERSECT - men kun ved at sammenligne på kolonnen Tlfnr, som er den kolonne der skal afgøre, om forekomsterne skal opfattes som værende samme information. Sætningen kommer til at se således ud. SELECT Navn, Adresse, Postnr, Tlfnr WHERE NOT EXISTS ( SELECT * FROM Leverandor WHERE Kunde.Tlfnr = Leverandor.Tlfnr) UNION ALL SELECT Navn, Adresse, Postnr, Tlfnr FROM Leverandor WHERE NOT EXISTS ( SELECT * WHERE Kunde.Tlfnr = Leverandor.Tlfnr) UNION ALL SELECT Navn, Adresse, Postnr, Tlfnr FROM Leverandor WHERE EXISTS ( SELECT * WHERE Kunde.Tlfnr = Leverandor.Tlfnr) Det er også vigtigt at understrege, at valg af løsningsforslag kun drejer sig om det korrekte resultat og ikke om performance eller læsbarhed af sætning. Det korrekte resultat vil altid komme forud for performance. Den føste simple sætning med udførelse af UNION-operatoren på de 2 tabeller, ser ud til at løse problemet. Begge tabeller er på 3NF og umiddelbart er designet, som det skal være. De 2 tabeller har defineret en PRIMARY KEY, som er en surrogatnøgle. Desuden er kolonnen Tlfnr i begge tabeller angivet som værende UNIQUE. Alle kolonner skal have en værdi NOT NULL. Så der er gjort mange overvejelser ved definition af tabellerne. Copyright 2008 Teknologisk Institut side 9 of 10

10 I det viste eksempel er problemet dog, at der kun bør være én tabel, der indeholder kolonnerne Navn, Adresse og Postnr. Hvis der under design-processen var defineret et super/sub-type hierarki med en super-tabel NavnAdresse og 2 sub-type tabeller Kunde og Leverandoer, ville løsningen på ovenstående problem være en simpel SELECT-sætning på super-tabellen NavnAdresse. Men med 2 tabeller skal en af de 2 sidste sætninger anvendes, for at få det korrekte resultat. Som ovenstående eksempler viser, er det meget vigtigt, at den datamodel, der danner grundlag for implementering af databasen, er gennemanalyseret. Ved definition af databasen er det vigtigt, at alle de begrænsninger, der er fundet ved analyse af domænet, medtages. Der må kun tages højde for de begrænsninger, der er defineret i databasen, når der skal udarbejdes manipulations-sætninger. Brug derfor den nødvendige tid på udarbejdelse af datamodellen. Sørg for, at der er testdata der afspejler definitionen af de enkelte kolonner/tabeller, og ikke kun testdata som verdenen ser ud nu. Lav sætninger, der også virker, når de usandsynlige data alligevel bliver gemt i tabellerne. Lad være med at nare dig selv ved letkøbte argumenter, som f.eks. at 3NF er godt nok. Så du bør sikre dig, at dine data altid har en høj kvalitet. Det gør det også lettere, når du på et senere tidspunkt evt. skal anvende dine data i f.eks. en Business Intelligence løsning. Og så er det jo sjovere at videreudvikle i stedet for at bruge tiden på tåbelige og uforståelige fejl, der pludselig opstår. Copyright 2008 Teknologisk Institut side 10 of 10

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

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en

Læs mere

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

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Views etc. Databaser

Views etc. Databaser Views etc. Databaser Views Med Views kan vi gemme nogle af de lange select sætninger. I vores eksempel fra tidligere er det f.eks. forbundet med en del besvær at finde telefon nr og bilmærker for en sælger

Læs mere

DB undervisning 01-01

DB undervisning 01-01 Databaser... 2 Tabeller... 2 Redundans... 3 Første regel... 4 Anden regel... 4 Tredje regel... 5 Relationer... 5 Opskrift... 6 SQL sætninger til at oprette tabeller... 7 SQL sætninger til at indsætte data...

Læs mere

Data lagring. 2. iteration (implement backend)

Data lagring. 2. iteration (implement backend) Data lagring 2. iteration (implement backend) Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering

Læs mere

Introduktion til SQL queries

Introduktion til SQL queries Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i

Læs mere

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

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE Fact sheet Indholdsfortegnelse Fact Sheet Gantt kort Valgt af virksomhed Brainstorm Attribut tabel ER-diagram Skitse MySQLWorkbench

Læs mere

Skriftlig eksamen i kurset. Informationssystemer

Skriftlig eksamen i kurset. Informationssystemer 6. semester sundhedsteknologi Skriftlig eksamen i kurset Informationssystemer Der er 3 timer til at besvare opgaven. Alle hjælpemidler er tilladte. Skriv kort og præcist. Referer gerne til kursuslitteraturen.

Læs mere

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse

Læs mere

Databasesystemer. IT Universitetet i København 7. juni 2005

Databasesystemer. IT Universitetet i København 7. juni 2005 Databasesystemer IT Universitetet i København 7. juni 2005 Eksamenssættet består af 5 opgaver med 13 spørgsmål, fordelt på 6 sider (inklusiv denne side). Vægten af hver opgave er angivet. Du har 4 timer

Læs mere

Import af rekursivt (parent-child) hierarki i Palo

Import af rekursivt (parent-child) hierarki i Palo Import af rekursivt (parent-child) hierarki i Palo Dette dokument beskriver hvordan et simpelt rekursivt (parent-child) hierarki kan importeres ind i Palo på forskellige måder via SQL og samtidig bibeholde

Læs mere

Sidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28.

Sidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28. Sidste forelæsning Jacob Aae Mikkelsen IMADA 28. april 2013 Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28. april 2013 1 / 36 Outline 1 Brugere og Sikkerhed Jacob Aae Mikkelsen (IMADA) Sidste forelæsning

Læs mere

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

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125 Tietgenskolen - Nørrehus Data warehouse Database for udviklere Thor Harloff Lynggaard DM08125 Juni 2010 Indhold Beskrivelse... 3 Data warehouse... 3 Generelt... 3 Sammenligning... 3 Gode sider ved DW...

Læs mere

Database optimering - Indeks

Database optimering - Indeks Database optimering - Indeks Alle kender til dette irritations moment, hvor programmet man sidder og arbejder med, bare ikke er hurtigt nok. Selvom det kun drejer sig om få sekunder man sidder og venter,

Læs mere

Database design for begyndere

Database design for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter

Læs mere

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

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Efterår 2002 Note 10. Temaopgave

Efterår 2002 Note 10. Temaopgave Datalogi Database-kurset Efterår 2002 Note 10 Temaopgave Formålet med temaopgaven er at I skal arbejde med vigtige dele af kursusstoffet indenfor et specifikt problemområde/tema. Temaopgaven omfatter 4

Læs mere

Database "opbygning"

Database opbygning Database "opbygning" Dette områder falder mest under en DBA's ansvarsområde. Det kan sagtens tænkes at en database udvikler i nogle situationer vil blive nød til at oprette produktions og test) databaser,

Læs mere

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

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0 Hvad er en relationsdatabase? Odense, den 19 januar 2004 Version 10 Program for 6 kursusdag: Databaser 0900-0945 Hvad er en relationsdatabase? -1045 Opgave om normalisering 1100-1145 Eksempel på database

Læs mere

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning.. Side 1 af 11 Dato: 07-09-2003 Opgaver i oprettelse af kunder og info i database med java. Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus,

Læs mere

Introduktion til SQL

Introduktion til SQL Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke

Læs mere

Skriftlig opgave. Designtanker i database-nære systemer

Skriftlig opgave. Designtanker i database-nære systemer Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design

Læs mere

1. Basal select med (stjerne)

1. Basal select med (stjerne) 1. Basal select med (stjerne) 1. List alle øltyper. a. select * from oltyper 2. List alle bryggerier a. select * from bryggeri 3. List alle Danmarks postnumre samt tilhørende by, landsdel og antal indbyggere

Læs mere

Skriftlig eksamen i Databaser, Vinter 2001/2002. Pa opfordring har jeg udarbejdet mulige lsninger pa eksamensopgaverne, men

Skriftlig eksamen i Databaser, Vinter 2001/2002. Pa opfordring har jeg udarbejdet mulige lsninger pa eksamensopgaverne, men Roskilde Universitetscenter Skriftlig eksamen i Databaser, Vinter 2001/2002 Opgaver med lsninger Pa opfordring har jeg udarbejdet mulige lsninger pa eksamensopgaverne, men har ikke haft tid til at polere

Læs mere

Opgave 1 Basal select med (stjerne)

Opgave 1 Basal select med (stjerne) Opgave 1 Basal select med (stjerne) 1. List alle øltyper. 2. List alle bryggerier 3. List alle Danmarks postnumre samt tilhørende by, landsdel og antal indbyggere 4. BONUS: List alle ølmærker med alt deres

Læs mere

En Kort Introduktion til Oracle

En Kort Introduktion til Oracle En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 bulskov@ruc.dk 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering

Læs mere

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger Skriftlig eksamen i Databaser Vinter 2002/2003 Vejledende løsninger Dette eksamenssæt består af 5 nummererede sider (incl. denne). Der er 5 opgaver, som ved bedømmelsen tillægges følgende vægte: Opgave

Læs mere

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

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin Trin 1: Lav en Domain model Opgave beskrivelse - Scandic hotel kæde Lav en domain model af Hotel-kæden.

Læs mere

Dataanalyse og databaser

Dataanalyse og databaser Dataanalyse og databaser En database er lang række data, der er blevet struktureret således, at der er relationer mellem tabellerne og det er muligt at indsætte og udtrække den ønskede information fra

Læs mere

Jørgen Koch. och. Access. Normalisering m.v.

Jørgen Koch. och. Access. Normalisering m.v. Jørgen Koch och Access 2003 2003 for alle Normalisering m.v. Access 2003 for alle 1. udgave, 1. oplag 2004 Copyright 2004 Forlaget Libris Forfatter: Jørgen Koch Forlagsredaktion: Kirsten Bæk DTP: Jørgen

Læs mere

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som

Læs mere

Kursus/workshop: SQL

Kursus/workshop: SQL Kursus/workshop: SQL En workshop - med fokus på workshop. En workshop arrangeret af PROSA Palle Nygaard Hansen Frank Jensen Indledning Gennemgang af alle basale SQL-sætninger Forløb for alle 3 aftener:

Læs mere

Eksamen, DSDS, forår 2009

Eksamen, DSDS, forår 2009 Eksamen, DSDS, forår 2009 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 3. juni 2009 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.

Læs mere

SQL-opgaver 5 løsning

SQL-opgaver 5 løsning SQL-opgaver 5 løsning Diagrammet herunder viser, hvordan kildetabellerne gerne skal se ud efter at have løst de tidligere opgaver. Scriptet opgave_5.txt indeholder også disse tabelstrukturer og alle data,

Læs mere

Eksamen, DSDS, efterår 2007

Eksamen, DSDS, efterår 2007 Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke

Læs mere

Introduktion til programmering

Introduktion til programmering Introduktion til programmering Databaser Uge 38 L. Ingemann: SQL databaser på nettet, kap 2-4. Kompendium L. Ingemann: SQL databaser på nettet, kap 6-20, Kompendium Sidste gang Databaser Relationelle databaser

Læs mere

Jayne Alice Jensen cph-jj208@cphbusiness.dk [Link til portfolio]

Jayne Alice Jensen cph-jj208@cphbusiness.dk [Link til portfolio] DATABASE Projekt: Projekt 1, 3. semester Website: http://kostecki.dk/cph/projektdb/ Dato: 08/09/14-21/09/14 Skole: Copenhagen Business Academy Klasse: Multimediedesigner - Mulb Gruppe: MULB1 Undervisere:

Læs mere

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

Septimas høringssvar vedrørende dokumenteterne FKG datamodellen - Version 2 3 1 - Fysisk implementering.pdf og FKG_2_3_1_mssql.sql Septima P/S Larsbjørnsstræde 3 1454 København K +45 7230 0672 www.septima.dk 31. juli 2013 Septimas høringssvar vedrørende dokumenteterne FKG datamodellen - Version 2 3 1 - Fysisk implementering.pdf og

Læs mere

Hånd@ Tilretning af importdatafiler

Hånd@ Tilretning af importdatafiler Hånd@ Tilretning af importdatafiler Tilretning af Import data filer.... 3 Fjerne dubletter... 4 Tilret og tilføj kolonne overskrifter... 9 Hvordan fordeles data fra en kolonne til flere?... 10 Sammenføje

Læs mere

Logning. V/ Hans Kennet Larsen

Logning. V/ Hans Kennet Larsen Logning V/ Hans Kennet Larsen Lidt om mig Ansat i Sonlinc fra august 1992 September 2008 Stort set alle hatte på Fra Oktober 2008 Juni 2011 Traceworks Databaseudvikler + Backendudvikler Scrummaster Juli

Læs mere

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

Projekt database. 3 Semester - Mul a Projekt 1. Yaser Osman cph-mo102@cphbusiness.dk. Dan Eskildsen cph-de32@cphbusiness.dk Projekt database 3 Semester - Mul a Projekt 1 Yaser Osman cph-mo102@cphbusiness.dk Dan Eskildsen cph-de32@cphbusiness.dk Ammar Al-Basri cph-aa140@cphbusiness.dk Emre Kandemir cph-ek68@cphbusiness.dk Lotte

Læs mere

Afleveringsopgave. Efterår 2001

Afleveringsopgave. Efterår 2001 Datalogi Database-kurset Efterår 2001 Afleveringsopgave Baseret på opgavetekst forfattet af Troels Andreasen, forår 2001 Let redigeret af Henning Christiansen, oktober 2001 Aflevering Opgaven afleveres

Læs mere

3. semester, 2. projekt: Database

3. semester, 2. projekt: Database 3. semester, 2. projekt: Database MulA - Gruppe 1 7. september 2015-20. september 2015 Vejledere - IRF / TUJE FAKTAARK PROJEKTTITEL Database URL http://moodings.com Mette Line Tarp Jørgensen Email cph-mj420@cphbusiness.dk

Læs mere

DATABASE - MIN MUSIKSAMLING

DATABASE - MIN MUSIKSAMLING DATABASE - MIN MUSIKSAMLING I dette forløb skulle vi lære om databaser, som bruger sproget SQL. SQL står for Structured Query Language. Det bruges til at vise og manipulere data, gemt i en database. I

Læs mere

Databaseteori. 19. Databaser. 20. Kartotek eller database. 21. Database

Databaseteori. 19. Databaser. 20. Kartotek eller database. 21. Database Databaseteori 19. Databaser Fra længe før EDB alderen har man haft arkiver med viden: lande har haft folkeregistre med oplysninger om landet borgere, firmaer har haft oplysninger om kunder og salg, man

Læs mere

Hvorfor skal vi bruge objekt orienteret databaser?

Hvorfor skal vi bruge objekt orienteret databaser? OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal

Læs mere

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online. Denne guide er oprindeligt udgivet på Eksperten.dk Hvem er online? Online script, som tager højde for at der kan være flere personer, som har den samme IP-adresse. Scriptet viser hvor lang tid brugeren

Læs mere

MsSQL: Basal performance tuning, part 1

MsSQL: Basal performance tuning, part 1 Denne guide er oprindeligt udgivet på Eksperten.dk MsSQL: Basal performance tuning, part 1 Hvordan man skriver "God SQL" for bedre performance. Skrevet den 03. Feb 2009 af trer I kategorien Databaser /

Læs mere

Begrynder til at lave log ind system

Begrynder til at lave log ind system Denne guide er oprindeligt udgivet på Eksperten.dk Begrynder til at lave log ind system Hej Vil jeg gerne lave en lille programmering forklare til hvordan du laver din helt egen lille start på at log ind

Læs mere

XML Difftool brugervejledning

XML Difftool brugervejledning XML Difftool brugervejledning UNI C maj 2007 XML Difftool brugervejledning UNI C Maj 2007 Af UNI C Indhold 1 Kort om XML Difftool og Import... 1 1.1 XML Difftool... 1 1.2 Opbygning af XML import fil...

Læs mere

OPC Access 3.0 opdatering via Stored Procedure

OPC Access 3.0 opdatering via Stored Procedure OPC Access 3.0 opdatering via Stored Procedure Dette dokument gennemgår et eksempel på, hvordan OPC Access 2.0 kan konfigureres til at opdatere en database via en stored procedure. OPC ACCESS 2.0 OPDATERING

Læs mere

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med

Læs mere

Eksamen, DSDS, efterår 2008

Eksamen, DSDS, efterår 2008 Eksamen, DSDS, efterår 2008 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 6. januar 2009 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.

Læs mere

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

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4 Projekt Database, Gruppe 4A 0 Projekt 1, 3. Semester D A T A B A S E Klasse MulA13 Gruppenummer: A4 Projekt Database, Gruppe 4A 1 Fakta-ark Klasse MulA13, Gruppenummer: A4 Gruppemedlemmer: Amalie Ardahl

Læs mere

SQL Server 2016 Data Adgang

SQL Server 2016 Data Adgang SQL Server 2016 Data Adgang MSBIP, 5. OKTOBER, 2015 Agenda SQL Server 2016 CTP 2.3 Pragmatisk Data Adgangskontrol Row Level Security Dynamic Masking Kombination af begge Alternativet Hvem er jeg Selvstændig

Læs mere

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

Projekt titel. Projekt navn. Gruppe medlemmer. Klasse/Gruppenummer. Databaseprojekt 1. Ferrari Projekt titel Databaseprojekt 1 Projekt navn Ferrari Gruppe medlemmer Christian Lund (christiandevries.dk) Alexander Kofod (thisisalex.dk) Mark Halding (haldingweb.dk) Klasse/Gruppenummer MulA - gruppe

Læs mere

Data Warehouse Knowledge is Power - Sir Francis Bacon -

Data Warehouse Knowledge is Power - Sir Francis Bacon - Data Warehouse 4. sem. datamatiker uddannelse Tietgen Skolen Odense Skrevet af Troels Markvard Andersen (DM08228) Knowledge is Power - Sir Francis Bacon - Troels Markvard Andersen Side 1 af 8 Forord /

Læs mere

24-03-2009. Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S

24-03-2009. Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S 24-03-2009 Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S Problemstilling ved DBK integration i BIM Software Domæner og aspekter Det domæne, der primært

Læs mere

Datamodeller. 1. Elementerne. Vi betragter E/R-diagrammet, som et diagram over entiteter og relationer Tegneregler: Entitet

Datamodeller. 1. Elementerne. Vi betragter E/R-diagrammet, som et diagram over entiteter og relationer Tegneregler: Entitet Datamodeller I forlængelse af noten om normalisering, følges der her op med redskabet E/R-diagrammer til opstilling af en datamodel, opfat således dette som en alternativ metode mere end endnu et redskab

Læs mere

Database programmerings tips

Database programmerings tips Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler

Læs mere

Dokumentering af umbraco artikeleksport:

Dokumentering af umbraco artikeleksport: Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.

Læs mere

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

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

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker

Læs mere

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

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

Anne Randorff Højen

Anne Randorff Højen Anne Randorff Højen arra@hst.aau.dk Forelæsning og opgaver: Introduktion til SQL pause Forlæsning og Opgaver: SQL 2. del pause Introduktion til PhPMyAdmin Opgaver SQL Der modelleres ud fra reelle relationer

Læs mere

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til VB.NET og ADO.NET. Der findes en tilsvarende artikel

Læs mere

Brugermanual til Assignment hand in

Brugermanual til Assignment hand in Brugermanual til Assignment hand in Indhold: Undervisere:...2 Hvor finder jeg Assignment hand in?...2 Opret en opgave...4 Slet en opgave...5 Rediger en opgave...5 Hvor finder jeg de afleverede filer?...5

Læs mere

Databaser Obligatorisk opgave 1

Databaser Obligatorisk opgave 1 University of Southern Denmark Department of Mathematics and Computer Science Databaser Obligatorisk opgave 1 Afleveres senest: Lørdag d. 23. marts kl 23.59 Introduction Denne obligatoriske opgave indeholder

Læs mere

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL Når man er logget på KMS systemet, vælges Dataudtræk under punktet Vælg modul, hvorefter der klikkes på Gå til: På næste side klikkes på knappen Opret:

Læs mere

Ratingsystem i PHP og MySQL

Ratingsystem i PHP og MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Ratingsystem i PHP og MySQL Lær at lave et system til at vise rating/bedømmelse på artikler og nyheder. Skrevet den 03. Feb 2009 af virtual1ty I kategorien

Læs mere

Indholdsfortegnelse for kapitel 3

Indholdsfortegnelse for kapitel 3 Indholdsfortegnelse for kapitel 3 Kapitel 3 Design............................................................ 2 Database........................................................... 3 ER-diagram.................................................

Læs mere

Tagwall med Php & MySQL

Tagwall med Php & MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Tagwall med Php & MySQL Her laver vi en tagwall i Php & MySQL... jeg forklarer dog ikke så meget, men jeg håber du kan få det til at blive til en tagwall

Læs mere

Skriftlig eksamen i. Datalogi. Databaser. Sommer 2001

Skriftlig eksamen i. Datalogi. Databaser. Sommer 2001 Skriftlig eksamen i Datalogi Databaser Sommer 2001 Dette eksamenssæt består af 4 nummererede sider (incl. denne). Der er 4 opgaver, som ved bedømmelsen tillægges følgende vægte: Opgave 1: 20% Opgave 2:

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

Trin 1 INSERT INTO Debitor (DebitorNr, KundeKategori, KreditMax, SidstRykket, Sælger ) VALUES (20121, 10, 40000, NULL, "Bjarne Larsen");

Trin 1 INSERT INTO Debitor (DebitorNr, KundeKategori, KreditMax, SidstRykket, Sælger ) VALUES (20121, 10, 40000, NULL, Bjarne Larsen); SQL-programmering Alle opgaverne er baseret på ACCESS-databasen REGNSKAB Løsningsforslag til SQL-opgavesættet Følgende løsninger til opgaverne i forbindelse med Regnskabsdatabasen er vejledende. Fund af

Læs mere

Relationel Algebra og SQL

Relationel Algebra og SQL Relationel Algebra og SQL Indholdsfortegnelse Relationel Algebra og SQL...1 Indholdsfortegnelse...1 De oprindelige mængdeoperationer...2 1. UNION (foreningsmængde)...2 2. INTERSECTION (fællesmængde)...2

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt Foto-Applikation Dokumentation Et Kod-i-Ferien projekt 1 Indholdsfortegnelse Systemets generelle opsætning... 3 Systemets elementer... 4 iphone applikation... 4 PHP-script... 4 Wordpress-plugin... 4 Website...

Læs mere

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

(fig.1. Eksempel på en almindelig entity) Formål Formålet med denne opgave var, at designe et database system for et fiktivt universitet, ved hjælp af ER-model, for derefter at oversætte det til SQL tabeller. Og dernæst lave en assertion så der

Læs mere

Skriftlig eksamen i. Databaser. Vinter 2002/2003

Skriftlig eksamen i. Databaser. Vinter 2002/2003 Skriftlig eksamen i Databaser Vinter 2002/2003 Dette eksamenssæt består af 5 nummererede sider (incl. denne). Der er 5 opgaver, som ved bedømmelsen tillægges følgende vægte: Opgave 1: 15% Opgave 2: 30%

Læs mere

Procesbeskrivelse - Webprogrammering

Procesbeskrivelse - Webprogrammering Procesbeskrivelse - Webprogrammering Indholdsfortegnelse Forudsætninger... 1 Konceptet... 2 Hjemmesiden... 2 Server-side... 3 Filstrukturen... 3 Databasehåndtering og serverforbindelse... 4 Client-side...

Læs mere

Reeksamen, DSDS, forår 2008

Reeksamen, DSDS, forår 2008 Reeksamen, DSDS, forår 2008 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 22. august 2008 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.

Læs mere

Obligatorisk opgave 2. SQL, relationel algebra og relationel kalkyle

Obligatorisk opgave 2. SQL, relationel algebra og relationel kalkyle DM26 Obligatorisk opgave 2 SQL, relationel algebra og relationel kalkyle Jacob Christiansen 130282 moffe42 Thomas Duerlund 040980 duerlund Side 1 af 9 Opgave 1: Formål: Ud fra en database omhandlende en

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit.

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. XML (eng. extensible Markup Language) XML er en måde at strukturere data på i tekstform. På samme måde som

Læs mere

Adgang til eksterne referencedata, integration til egne systemer og søgning i egne kundedata som en samlet Master Data Management (MDM) løsning.

Adgang til eksterne referencedata, integration til egne systemer og søgning i egne kundedata som en samlet Master Data Management (MDM) løsning. idq MDM Edition Adgang til eksterne referencedata, integration til egne systemer og søgning i egne kundedata som en samlet Master Data Management (MDM) løsning. Hvad er Master Data Management? Master Data

Læs mere

Introduktion til programmering

Introduktion til programmering Introduktion til programmering Databaser Uge 37 Computer Science, kap 9. Hugh Darwen: what a database really is, G. Riccardi: Princples of database systems, kap 2., kompendium. Plan Oprette jer på IMV

Læs mere

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010

Læs mere

Karens lille vejledning til Access

Karens lille vejledning til Access Karens lille vejledning til Access Indhold Hvad er Access? 1 Lave en database 2 Design af tabellen 2 Felttyper 2 Indtastning af data 3 Udtræk fra tabellen 3 Forespørgsel 3 Muligheder med forespørgsel 3

Læs mere

ALMINDELIGT ANVENDTE FUNKTIONER

ALMINDELIGT ANVENDTE FUNKTIONER ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner

Læs mere

Projekt database. http://bysileha.com/3.semester/database-eshop/index.html (vores htmlside)

Projekt database. http://bysileha.com/3.semester/database-eshop/index.html (vores htmlside) Projekt database http://bysileha.com/3.semester/database-eshop/index.html (vores htmlside) Amanda Lindschouw - cph-al144@cphbusiness.dk http://ahldesign.dk/learningthird.html Charlotte Øberg - cph-co74@cphbusiness.dk

Læs mere

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

Databasesystemer. IT Universitetet i København 8. juni 2006 Databasesystemer IT Universitetet i København 8. juni 2006 Eksamenssættet består af 5 opgaver med 16 spørgsmål, fordelt på 7 sider (inklusiv denne side), samt et svarark, hvorpå visse spørgsmål skal besvares.

Læs mere

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune Værktøjer fra værktøjskassen Søren Breddam, Stevns Kommune sb@stevns.dk 1stevns kommune Mapbasic i Stevns Kommune Data Kørsel af planlagte opgaver, så data altid er opdaterede. Logfil til overvågning Dagligt

Læs mere

Unge - køb og salg af sex på nettet

Unge - køb og salg af sex på nettet Unge - køb og salg af sex på nettet En introduktion til Cyberhus undersøgelse af unges brug af internettet og nye medier til køb og salg af sex. Materialet er indsamlet og bearbejdet af Cyberhus.dk i efteråret

Læs mere

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

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Indberetningssystemet - vejledning for energikonsulenter

Indberetningssystemet - vejledning for energikonsulenter Indberetningssystemet - vejledning for energikonsulenter Indberetningssystemet skal bruges til at indberette datafiler med oplysninger om energimærkningerne. Indberetningssystemet fungerer på den måde,

Læs mere

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning: Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor

Læs mere

CLmul-b14e Gruppe 2 2. Database projekt

CLmul-b14e Gruppe 2 2. Database projekt 1 2 CLmul-b14e Gruppe 2 2. Database projekt JONAS FALK sniller27@hotmail.com Projekt vejledere Ivan Rosenvinge Frederiksen CHRISTIAN BRAMS halkjaer-brams@hotmail.com Tue Becher LINE RASMUSSEN line-rasmussen@live.com

Læs mere