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



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

Databasesystemer fra forskellige synsvinkler

Fra ER-Diagram til Relationel model i 7 step

Obligatorisk opgave 2. SQL, relationel algebra og relationel kalkyle

Views etc. Databaser

Conceptual, logic, physical

Database design for begyndere

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

Jayne Alice Jensen [Link til portfolio]

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

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

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

3. semester, 2. projekt: Database

Projekt database. (vores htmlside)

Søren Løbner (lobner) ddb Databaser

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

Introduktion til programmering

DB undervisning 01-01

Database kursus Forår 2013

Efterår 2002 Note 10. Temaopgave

Data lagring. 2. iteration (implement backend)

Eksamen, DSDS, forår 2009

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

En Kort Introduktion til Oracle

Databaser Obligatorisk opgave 1

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

Anvisning i aflevering af bitemporale data

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

Import af rekursivt (parent-child) hierarki i Palo

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

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

A11: Last Year s Exam

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

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

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

OPC ACCESS HEARTBEAT 1

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

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

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

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

Få sin querystring til at fungere. (Nybegyndere)

Eksamen, DSDS, forår 2008

Introduktion til SQL queries

Anne Randorff Højen

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

Afleveringsopgave. Efterår 2001

Velkommen til LEMAN Internet booking!!

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

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

Eksamen, DSDS, efterår 2007

Database. lv/

Take-home Eksamen. DM505 Design og programmering af databaser. Syddansk Universitet Institut for Matematik og Datalogi

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

Database programmerings tips

Vejledning til datatræk i Novax på ICPC-koder

Eksamen, DSDS, efterår 2008

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

Databaseadgang fra Java

Udfyld feltet eksamensaktivitet med fagkoden for det fag der skal fremsøges opgavetitler for. Det er tvungent at udfylde dette felt.

Ratingsystem i PHP og MySQL

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

US AARH SYSTEM ADMIN TILLÆGSMANUAL AARHUS UNIVERSITET CENTER FOR UNDERVISNINGSUDVIKLING OG DIGITALE MEDIER

ad 1. Opfølgning på omlægningen af databasen tidligere i år. Har vi fået det hele med?

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

Databasesystemer. IT Universitetet i København 16. januar 2006

Air Crash Booking System

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

Rapport generator til Microsoft C5

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Guide til Digital evaluering i Blackboard Opret og udgiv. 1: Start med at gå ind på og klik på login

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

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

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

Reeksamen, DSDS, forår 2008

blackboard School of Business and Social sciences blackboard - Brugervejledning til kopiering af kursusmenustruktur

3. SEMESTER 2. PROJECT MULB Gruppe september 2015

Indholdsfortegnelse for kapitel 3

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

1 Brug af snitfladebeskrivelsen Formål og beskrivelse Hvad er formålet med snitfladen? Beskrivelse af snitfladen...

Velkommen til kursusevaluering i Blackboard

Eksempel på en database: studenter, kurser, eksamener

DM507 Algoritmer og datastrukturer

Vejledning i Opretning af formularer

Efterår 2002 Note 13. Temaopgave svar

Vejledning til datatræk i Novax på ICPC-koder (eksempel stress)

3. Medarbejderdatabase

FairSSL Fair priser fair support

REFERAT AF MØDE I FAGLIG FØLGEGRUPPE FOR GERDA

Write-N-Cite IV til Word 2010

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

Gruppe nr. MULB2, Multimediedesign 3. semester hold B. Tue Becher Jesper Hinchely

-- Først opretter vi databasen CREATE DATABASE projekt_database; -- og så benytter vi den: USE projekt_database;

PID2000 Archive Service

Brugermenuer og brugerdefinerede formularer

Secure O matic. Gruppe 5 2. SEMESTERPROJEKT. Udgave. Testspecifikation

Write-N-Cite IV til Word 2010

DM507 Algoritmer og datastrukturer

FairSSL Fair priser fair support

Transkript:

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 skulle forbyde specialestuderende at være instruktorer. Opg. 1 Beskrivelse af ER-model og SQL-tabeller Databasen består af fire almindelige entities; forsker, studerende, institut og hold. Disse fire entities har hver en PRIMARY KEY, så f.eks. en forsker ikke kan blive ansat to gang, og en studerende ikke kan indskrives to gange. Derudover er der to entities mere, som nedarver sin PRIMARY KEY fra en anden entity, studerende, da disse stadig er studerende, men også har en anden funktion, her instruktor og/eller speciale studerende. CREATE TABLE forsker ( f_navn CHAR(30), f_stilling CHAR(20), PRIMARY KEY(f_cpr) (fig.1. Eksempel på en almindelig entity) De fire entities er bundet sammen af seks relations. De relations, hvor en forsker, en studerende eller et institut kun kan være repræsenteret én gang, er der defineret en PRIMARY KEY, så den enkelte kun findes én gang i hver relation. Desuden er der relations hvor der ikke er en PRIMARY KEY, da den enkelte gerne må forekomme flere gange. Ansat-relationen er et eksempel, hvor en forsker gerne må være ansat på flere institutter og institutter gerne må have flere ansatte. CREATE TABLE ansat ( i_id CHAR(10), a_dato DATE, FOREIGN KEY(f_cpr) REFERENCES forsker, FOREIGN KEY(i_id) REFERENCES institut (fig. 2. Ansat-relation) De forskellige relations har en eller flere FOREIGN KEY, hvilket bevirker at den pågældende relation kan blive ændret, i tilfælde af at den data som den består af bliver ændret, dvs. den/de entities som data tages fra. Et eksempel kan være at en ansat på et institut dør og slettes fra forsker entityen, så vil FOREIGN KEY gøre at ansat relationen for den pågældende forsker slettes, da FOREIGN KEY er efterfulgt af, så den slettes. Der er dog andre muligheder end bare at slette, men dette har ikke vist sig oplagt i vores tilfælde. Den sidste entity, hold, som endnu ikke er beskrevet, er et såkaldt weak entity set. Det vil sige at der er en relation mellem to entities, hvor den ene entity ikke har en PRIMARY KEY, men kun en partial key. Det vil sige at bliver den entity, som har en PRIMARY KEY slettet, vil den svage entity også blive slettet, da den er afhængig af den anden, og kun eksisterer som en del af den anden. CREATE TABLE hold ( h_nr Integer, h_tid TIME, h_lokale CHAR(10) CREATE TABLE hold_til ( h_nr Integer, k_kode CHAR(20), PRIMARY KEY (h_nr, k_kode),

Tests (fig. 3. Weak entity set hold) For at teste vores database, har vi indtastet den i programmet PostGreSQL. Her har vi prøvet at tilføje studerende, forskere, institutter osv. Da dette ikke har givet nogle problemer og ved slet af studerende, blev den pågældende studerende også slettet i speciale studerende. Dette har vi gjort i hele databasen, som test af alle relations og entitys. Vedlagt som bilag X er en udskrift fra programmet, med alt hvad databasen indeholder. Opg. 2 For at sikre at alle speciale studerende bliver færdige til tiden, besluttes det at de ikke kan være instruktorer. Dette modeleres i databasen som en assertion. Koden er som følger: CREATE ASSERTION ikke_inst CHECK (NOT EXISTS (SELECT I.s_cpr FROM instruktor S)= (SELECT S.s_cpr FROM speciale S) Test: Det som denne assertion gør er, at tjekke at de samme cpr-nr. ikke findes i både instruktor og speciale. Da PostGreSQL ikke understøtter assertions, har vi ikke haft mulighed for at kontrollerer at dette virker, men er dog sikker på at den pågældende kode er rigtig og virker. Konklusion: Da vores SQL i indtastet PostGreSQL virker efter hensigten, og da det er oversat ud fra vores ERmodel, mener vi at have opfyldt opgavens krav. Dog er der flere ting vi ikke har taget stilling til, da dette ikke var opgivet i opgaven. Hvad er relationen mellem instruktor og hold? Skal et institut egentlig have en ansat? Skal en leder af et institut være ansat på det pågældende institut? Dette er dog noget ting som hurtigt kan laves, med et par relations og et par constraints. Dog må vi konstaterer at det er ikke alt fra et ER-diagram man kan overfører direkte til SQL, så som participation constraints.

CREATE TABLE forsker ( f_navn CHAR(30), f_stilling CHAR(20), PRIMARY KEY(f_cpr) CREATE TABLE studerende ( s_cpr s_studie CHAR(30), s_iaar INTEGER, PRIMARY KEY(s_cpr) CHAR(11), CREATE TABLE institut ( i_adresse CHAR(40), i_budget INTEGER, i_tlf INTEGER, PRIMARY KEY (i_id) CREATE TABLE kurser ( k_kode CHAR(20), k_titel CHAR(30), k_tid CHAR(5), k_lokale CHAR(10), PRIMARY KEY(k_kode) CREATE TABLE ansat ( a_dato DATE, FOREIGN KEY(f_cpr) REFERENCES forsker, FOREIGN KEY(i_id) REFERENCES institut CREATE TABLE leder ( l_dato DATE, PRIMARY KEY (i_id),, FOREIGN KEY (i_id) REFERENCES institut CREATE TABLE tilhoere ( s_cpr CHAR(11),, FOREIGN KEY (i_id) REFERENCES institut CREATE TABLE projekt ( p_start_dato DATE, p_slut_dato DATE, p_omfang CHAR(40), s_cpr CHAR(11),

kode CHAR(20),,, CREATE TABLE hold ( h_nr Integer, h_tid TIME, h_lokale CHAR(10) CREATE TABLE hold_til ( h_nr Integer, k_kode CHAR(20), PRIMARY KEY (h_nr, k_kode), CREATE TABLE instruktor ( s_cpr CHAR(11), kontor CHAR(11), CREATE TABLE speciale ( s_cpr CHAR(11), s_dato DATE, s_omfang CHAR(40), CREATE TABLE h_vejleder ( s_cpr CHAR(11), PRIMARY KEY (f_cpr),, CREATE TABLE m_vejleder ( s_cpr CHAR(11), PRIMARY KEY (f_cpr),, CREATE ASSERTION ikke_inst CHECK (NOT EXISTS (SELECT I.s_cpr FROM instruktor S)= (SELECT S.s_cpr FROM speciale S)