Systembeskrivning Sakfrågan

Storlek: px
Starta visningen från sidan:

Download "Systembeskrivning Sakfrågan"

Transkript

1 KTH Programutvecklingsprojekt, 2D1954 Nada - Institutionen för Numerisk analys och datalogi Systembeskrivning Sakfrågan Amr El-Ghazaly Joakim Andersson John Holmström Jens Modig Carl Drott

2 SYSTEMÖVERSIKT 3 BAKGRUND 3 KLIENT/SERVER-MODELLEN 3 SYSTEMETS STRUKTUR 4 DATABASEN 5 E-POSTSERVER 5 APPLIKATIONSSERVER/WEBBSERVER 5 KLIENTPROGRAMVARA 5 PROGRAMVARA 5 SIDORNAS/ANVÄNDARGRÄNSSNITTETS STRUKTUR 7 SERVLETKLASSERNA OCH DERAS HJÄLPKLASSER 11 PACKAGE ADMIN 11 PACKAGE BASE 11 PACKAGE UTILS 12 JSP-FILERNA 13 BASE 13 ADMIN 13 BILAGA 1 15 DATABASSTRUKTUR 15 BILAGA 2 16 DDL-KOMMANDON FÖR DATABASSTRUKTUREN 16 BILAGA 3 20 STORED PROCEDURES OCH TRIGGERS I DATABASEN 20 2

3 Systemöversikt Bakgrund Systembeskrivningen behandlar ett system som utvecklats på uppdrag av Oskar Rönnberg på Svenska Institutet för Tillämpad Beteendeanalys. Systemet vi har utvecklat ska presentera argument för och emot olika aktuella politiska sakfrågor. Systemet hanterar olika typer av användare med olika rättigheter. När vi valt plattform, programspråk och serverfunktioner så har vi konstant valt enligt dessa kriterier: de ska vara erkända, spridda, säkra och gratis. Vi har använt JSP/Servlets för att implementera webbgränssnittet och tillhörande funktioner med Tomcat som serversystem. För databasfunktionen har vi använt oss av PostgreSQL. Systemet är en trelagerslösning enligt klient/server princip. Klient/Server-modellen Modellen går ut på att en process eller ett program utnyttjar en tjänst som en annan process eller ett annat program tillhandahåller. Den process som efterfrågar tjänsten kallas då klient och den process som tillhandahåller tjänsten kallas server. Klient/server-modellen innebär stora fördelar i distribuerade system. Om klienten vill utnyttja en tjänst skickar den en förfrågan till servern. Klienten behöver inte veta var servern är fysiskt belägen utan det räcker med en adress till servern, denna förfrågan behandlas sedan av något annat program som skickar förfrågan vidare (jmf med posten). En annan fördel med modellen är att flera klienter kan dela en resurs, t ex. en skrivare. I vårat fall används en tunn klient i form av en webbläsare, det innebär att klienten bara används för presentera resultaten från servern, all logik och alla beräkningar sker på serversidan. 3

4 Systemets struktur Systemet är uppbyggt i en trelagersstruktur bestående av följande lager, lagringslagret, logiklagret och presentationslagret. Figur 1: Bild av systemets trelagerstruktur 4

5 Databasen Modulbeskrivning I databasen lagras informationen i olika tabeller. Den databas som används är Postgresql. Det fanns ett par anledningar till att vi valde Postgresql. För det första har medlemmarna i gruppen använt denna förut. Den är också gratis samt väldokumenterad på nätet. Den har kraftfulla funktioner som t ex. Triggers och Stored procedures. Vi valde att lägga en stor del av sqlfrågorna som Stored procedures i databasen som en applikation kan anropa utifrån. Triggers användes för att hålla databasen konsistent vid exempelvis uppdatering av betyg för inlägg. Kommunikationen med databasen sker via jdbc. För databasstruktur se bilaga 1. E-postserver Det behövs också tillgång till en mailserver som stödjer SMTP för att kunna skicka ut lösenorden till nyregistrerade användare. Ska installatören själv sätta upp en sådan rekommenderas ett *nix-system med qmail, som anses säkrare och bättre än det vanligaste alternativet sendmail. Applikationsserver/Webbserver Som applikations- och webbserver används Tomcat. Här körs våra program såsom Connection pool, servlets och jsp. Connection poolen håller ett antal uppkopplingar öppna mot databasen hela tiden och servletklasserna lånar en uppkoppling från poolen vid behov, när servletklassen sedan är klar med uppkopplingen lämnas den tillbaka till poolen. Servletklasserna sköter har hand om logiken i systemet och kommunicerar med jsp-sidor, javabeans och databas. Jsp-sidorna sköter presentationen av data från servletklasserna. Jsp-sidorna skickar också vidare användarinmatningar till servletklasserna. Klientprogramvara Klientprogramvaran är den programvara som användaren använder för att kommunicera med en serverapplikation som ligger på ett annat ställe lokalt eller i ett nätverk (t ex. Internet). För att kommunicera med vårat system används en webbläsare med stöd för javascript som finns förinstallerad i de flesta moderna operativsystem. Programvara Följande programvara ska installeras på server-sidan Postgresql 7.3.x E-postserver t ex. qmail Tomcat 4.x pg73jdbc3.jar, dvs jdbc 3.0 för postgresql 7.3.x JDK 1.4SE Våran programvara 5

6 Om systemet ska användas i en miljö med hög belastning kan man installera IBM's jikes, som erbjuder bättre prestanda än Suns javakompilator. Följande programvara behövs på klientsidan Webbläsare som klarar javascript och css 6

7 Sidornas/Användargränssnittets struktur Vi identifierade fyra olika aktörer. Dessa är besökare, registrerade användare, moderatorer samt administratörer. Alla aktörer har förutom sina specifika funktioner samma möjligheter som de lägre aktörerna har. Här presenteras de användargränssnitt som vi utgått från i jspdesignen. Besökare avser den stora massan som träffar på webbsidan. De tar del av sakfrågorna, röstar för eller emot dem och kan skriva inlägg. Figur 2: Sidstruktur för en anonym användare 7

8 En registrerad användare är en besökare som vill aktivt påverka vilka inlägg som ska visas för andra besökare. Figur 3: Sidstruktur för en inloggad registrerad användare 8

9 Moderatorer har ansvar för att stötande eller olämpliga inlägg tas bort. En moderator blir tilldelad en eller flera sakfrågor att moderera. Figur 4: Sidstruktur för en moderator 9

10 Administratörer hanterar användare och moderatorer och lägger till sakfrågor. Figur 5: Sidstruktur för en administratör 10

11 Servletklasserna och deras hjälpklasser (Se JavaDoc för ytterligare information om dess funktionalitet.) Package admin Funktioner för att administrera innehållet på webbsidan och dess användare, moderatorer och administratörer. Är endast tillgängliga för inloggade, behöriga användare. AddAdmin Servletklassen lägger till en administratörskoppling i databasen till en angiven användare. Används av addadmin.jsp. AddModerator Lägger till en moderatorkoppling till en specificerad användare. Används av addmoderator.jsp. ClearReports Låter en administratör eller en moderator nollställa anmälningsräknaren för ett inlägg så att detta inlägg inte längre finns med bland de inlägg som ska undersökas. PostTopic Används av en administratör för att skapa en ny sakfråga i systemet och databasen. RemoveUser Tar bort en användare ur databasen. Eventuella administratörs- eller moderatorkopplingar tas samtidigt bort, alla inläggsröster försvinner och berörda inlägg får sitt betygsvärde omräknat (via trigger i databasen). Reported Servletklassen tar bort ett inlägg så att det inte visas för besökare på sidan. Sparas i en separat tabell i databasen. ReturnPost Återställer ett tidigare borttaget inlägg. Flyttar tillbaka instansen till inläggstabellen i databasen så att det återigen syns på sidan. UserDisplay Databasbean som används av administratörs-jsp:er. Tillhandahåller att antal funktioner för att få vyer över bland annat användare som finns i systemet. Package base Utgör de standardfunktioner som används av flertalet användare. ChangePass Låter en användare byta ut sitt lösenord. 11

12 Create Lägger till informationen för en ny användare i systemet. Kontrollerar att en för systemet unik adress är angiven, tilldelar ett slumpgenererat lösenord och mailar ut informationen till den specificerade e-postadressen. (För att göra det svårare för en användare att registrera flera konton) Login Kontrollerar att det angivna lösenordet matchar e-postadressen och tar reda på användarens nivå i systemet samt initierar en session och knyter den information som behövs till denna. Post Skapar ett nytt inlägg i databasen, knutet till den önskade sidan i sakfrågan. PostVote Registrerar en röst i databasen för en användare förutsatt att ingen tidigare koppling finns. Report Anmäler ett inlägg så att det kan granskas av administratörer och behöriga moderatorer. Gör detta genom att öka på inläggets anmälningsräknare. TopicVote Registrerar en röst i en sakfråga och/eller hämtar aktuell ställning i omröstningen. Markerar också i en cookie att besökaren röstat i sakfrågan. Skulle det vara en registrerad användare så sparas också ställningstagandet i databasen så att användaren senare kan rösta på inläggen i sakfrågan. Package utils Hjälpklasser och Javabeans som kan användas av samtliga servlets. connectionpool.connectionpoolmanager Tillhandahåller databaskopplingar till servlets och hjälpklasser. Detta utförs med en ConnectionPool som håller ett antal databaskopplingar öppna som andra klasser kan låna. Display Den centrala hjälpklassen för alla jsp's som behöver hämta information ur databasen. Hanterar bland annat all visning av sakfrågor. Mailer En bean som upprättar kontakt med en specificerad SMTP-server och utför kommunikationen som behövs för att skicka e-post. Utilities Omfattande klass med statiska metoder för till exempel olika strängformatteringar, hantering av cookies, hämtning av parametrar, återkommande HTML-kod och maskering av länkar. VoteDisplay Används till röstningen på inlägg för registrerade användare. Hämtar de intressanta värdena ur databasen så de kan presenteras av de berörda jsp-filerna. 12

13 JSP-filerna Base Sajtens standardsidor som inte kräver rättigheter i systemet. index.jsp Utgör sajtens startsida changepass.jsp Tar in information från besökaren så att denna kan byta lösenord error.jsp Anropas när något fel uppstått som inte direkt kan hanteras. login.jsp Specifik sida för att logga in. När inloggning krävs för en aktion så omdirigeras användaren hit för att påvisa detta. Det finns annars en funktion för detta i menyn när en besökare inte är inloggad. logout.jsp Logga ut en användare, inaktiverar den pågående sessionen. post.jsp Tar in text, rubrik och signatur för ett inlägg och förmedlar det till databasen via Postservleten. revoteview.jsp Visar upp de inlägg man redan röstat på, om en användare vill ändra sin röst. viewtopic.jsp Visar upp en specifik sakfråga och de bästa inläggen för båda sidor. voteview.jsp Här ser man alla inlägg i en sakfråga som man inte har röstat på ännu och kan lägga sin röst på dem, varefter de hamnar i revoteview. Admin Alla funktioner som är begränsade till behöriga användare återfinns här. addadmin.jsp Här kan en administratör lägga till en ny administratör utifrån de befintliga användarna i databasen. addmoderator.jsp Låter en administratör koppla en användare eller en moderator med en sakfråga. adminview.jsp 13

14 Här kan en administratör se en förteckning över alla administratörer, ta bort dem och se den information som sparas i databasen. moderatorview.jsp Som ovan fast över alla moderatorer. userview.jsp Samma som ovan men alla vanliga användare. posttopic.jsp Tillåter en administratör att skapa en ny sakfråga och lägga till denna i databasen. removedposts.jsp Här kan administratörer och behöriga moderatorer se en lista över alla borttagna inlägg och om de så önskar återställa dem. reportedposts.jsp Administratörer och moderatorer kan här se alla anmälda inlägg för de sakfrågor som de har rätt att moderera. De kan rensa anmälningar eller ta bort inläggen från besökarnas sidor. 14

15 Bilaga 1 Databasstruktur Databasstruktur för sakfrågan 15

16 Bilaga 2 DDL-kommandon för databasstrukturen DROP DATABASE opinion; CREATE DATABASE opinion WITH ENCODING = 'ISO_8859_9'; CREATE TABLE SAKFRAGA (sakfragaid SERIAL, namn VARCHAR (128) NOT NULL, beskrivning VARCHAR (2048) NOT NULL, skapad TIMESTAMPTZ NOT NULL, antal_for INTEGER NOT NULL, antal_mot INTEGER NOT NULL, PRIMARY KEY (sakfragaid) ); CREATE TABLE ANVANDARE (anvandareid SERIAL, epost VARCHAR (128) NOT NULL, losen VARCHAR(128) NOT NULL, skapad TIMESTAMPTZ NOT NULL, senaste_login TIMESTAMPTZ NOT NULL, UNIQUE (epost), PRIMARY KEY (anvandareid) ); CREATE TABLE INLAGG (inlaggid SERIAL, titel VARCHAR(128) NOT NULL, text VARCHAR(2048) NOT NULL, signatur VARCHAR(128) NOT NULL, sida CHAR(1) NOT NULL, skapad TIMESTAMPTZ NOT NULL, antal_klagomal INTEGER NOT NULL, ip_nummer VARCHAR (128) NOT NULL, summa_roster FLOAT NOT NULL, antal_roster FLOAT NOT NULL, betyg FLOAT NOT NULL, sakfragaid_ref INTEGER NOT NULL, PRIMARY KEY (inlaggid), CONSTRAINT FK_SAKF_INLGG FOREIGN KEY (sakfragaid_ref) REFERENCES SAKFRAGA (sakfragaid) ON DELETE CASCADE ); CREATE TABLE REFUSERAT_INLAGG 16

17 (refuserat_inlaggid SERIAL, titel VARCHAR (128) NOT NULL, text VARCHAR (2048) NOT NULL, signatur VARCHAR (128) NOT NULL, sida CHAR (1) NOT NULL, skapad TIMESTAMPTZ NOT NULL, antal_klagomal INTEGER NOT NULL, ip_nummer VARCHAR (128) NOT NULL, summa_roster FLOAT NOT NULL, antal_roster FLOAT NOT NULL, betyg FLOAT NOT NULL, sakfragaid_ref INTEGER NOT NULL, PRIMARY KEY (refuserat_inlaggid), CONSTRAINT FK_SAKF_REFUS_INLGG FOREIGN KEY (sakfragaid_ref) REFERENCES SAKFRAGA (sakfragaid) ON DELETE CASCADE ); CREATE TABLE ADMINISTRATOR (administratorid SERIAL, namn VARCHAR (128) NOT NULL, anvandareid_ref INTEGER NOT NULL, PRIMARY KEY(administratorID), UNIQUE(anvandareID_REF), CONSTRAINT FK_ANV_ADMIN FOREIGN KEY (anvandareid_ref) REFERENCES ANVANDARE (anvandareid) ON DELETE CASCADE ); CREATE TABLE MODERATOR_SAKFRAGA (moderatorid SERIAL, namn VARCHAR (128) NOT NULL, sakfragaid_ref INTEGER NOT NULL, anvandareid_ref INTEGER NOT NULL, UNIQUE (sakfragaid_ref,anvandareid_ref), PRIMARY KEY(moderatorID), CONSTRAINT FK_SAKFRG_MOD FOREIGN KEY (sakfragaid_ref) REFERENCES SAKFRAGA (sakfragaid) ON DELETE CASCADE, CONSTRAINT FK_ANV_MOD FOREIGN KEY (anvandareid_ref) REFERENCES ANVANDARE (anvandareid) ON DELETE CASCADE 17

18 ); CREATE TABLE STANDPUNKT (standpunktid SERIAL, standpunkt CHAR(1) NOT NULL, anvandareid_ref INTEGER NOT NULL, sakfragaid_ref INTEGER NOT NULL, PRIMARY KEY (standpunktid), UNIQUE(anvandareid_ref,sakfragaid_ref), CONSTRAINT FK_ANV_STAP FOREIGN KEY (anvandareid_ref) REFERENCES ANVANDARE (anvandareid) ON DELETE CASCADE, CONSTRAINT FK_SAKFR_STAP FOREIGN KEY (sakfragaid_ref) REFERENCES SAKFRAGA (sakfragaid) ON DELETE CASCADE ); CREATE TABLE BETYG (betygid SERIAL, varde INTEGER NOT NULL, inlaggid_ref INTEGER NOT NULL, anvandareid_ref INTEGER NOT NULL, UNIQUE(inlaggid_ref,anvandareid_ref), PRIMARY KEY (betygid), CONSTRAINT FK_INLGG_BETG FOREIGN KEY (inlaggid_ref) REFERENCES INLAGG (inlaggid) ON DELETE CASCADE, CONSTRAINT FK_ANVND_BETG FOREIGN KEY (anvandareid_ref) REFERENCES ANVANDARE (anvandareid) ON DELETE CASCADE ); DROP VIEW JA_INLAGG; CREATE VIEW JA_INLAGG AS SELECT * FROM INLAGG WHERE sida = 'y' ORDER BY betyg DESC; DROP VIEW NEJ_INLAGG; CREATE VIEW NEJ_INLAGG AS SELECT * FROM INLAGG WHERE sida = 'n' ORDER BY betyg DESC; 18

19 DROP VIEW GET_USER; CREATE VIEW GET_USER AS SELECT * FROM ANVANDARE WHERE anvandareid NOT IN ((SELECT anvandareid_ref FROM administrator) UNION (SELECT anvandareid_ref FROM moderator_sakfraga)); DROP VIEW GET_MODERATOR; CREATE VIEW GET_MODERATOR AS SELECT moderatorid, namn, sakfragaid_ref, anvandare.* FROM moderator_sakfraga, anvandare WHERE anvandareid_ref=anvandareid; DROP VIEW GET_ADMINISTRATOR; CREATE VIEW GET_ADMINISTRATOR AS SELECT administratorid, namn, anvandare.* FROM administrator, anvandare WHERE anvandareid_ref=anvandareid; 19

20 Bilaga 3 Stored procedures och Triggers i databasen DROP FUNCTION insert_user(text,text); CREATE FUNCTION insert_user(text, text) RETURNS int AS' ep ALIAS FOR $1; pwd ALIAS FOR $2; anvid INT; INSERT INTO anvandare (epost, losen, skapad, senaste_login) VALUES (ep, pwd, ''now'', ''now''); anvid := currval(''anvandare_anvandareid_seq''); return anvid; DROP FUNCTION get_users(); CREATE FUNCTION get_users() RETURNS REFCURSOR AS' marker CURSOR FOR select * from anvandare; OPEN marker; return marker; DROP FUNCTION get_ja_posts(int,int); DROP FUNCTION get_ja_posts(int,int,int); CREATE FUNCTION get_ja_posts(int,int,int) RETURNS REFCURSOR AS' ja_postmarker CURSOR (key int,os int) FOR select * from JA_INLAGG WHERE sakfragaid_ref=$2 limit key OFFSET os; OPEN ja_postmarker($1,$3); return ja_postmarker; DROP FUNCTION get_nej_posts(int,int); DROP FUNCTION get_nej_posts(int,int,int); CREATE FUNCTION get_nej_posts(int,int,int) RETURNS REFCURSOR AS' nej_postmarker CURSOR (key int,os int) FOR select * from NEJ_INLAGG WHERE sakfragaid_ref=$2 limit key OFFSET os; OPEN nej_postmarker($1,$3); 20

21 return nej_postmarker; DROP FUNCTION get_topics(); CREATE FUNCTION get_topics() RETURNS REFCURSOR AS' topicmarker CURSOR FOR SELECT * FROM SAKFRAGA ORDER BY skapad DESC; OPEN topicmarker; return topicmarker; DROP FUNCTION kind_of_user(int); CREATE FUNCTION kind_of_user(int) RETURNS int AS' user_rec RECORD; admin_rec RECORD; mod_rec RECORD; id ALIAS FOR $1; SELECT INTO user_rec anvandareid FROM get_user WHERE anvandareid=id; UPDATE anvandare SET senaste_login=''now'' WHERE anvandareid=id; IF user_rec.anvandareid IS NOT NULL THEN RETURN 0; END IF; SELECT INTO admin_rec anvandareid_ref FROM administrator WHERE anvandareid_ref=id; IF admin_rec.anvandareid_ref IS NOT NULL THEN RETURN 1; END IF; SELECT INTO mod_rec anvandareid_ref FROM moderator_sakfraga WHERE anvandareid_ref=id; IF mod_rec.anvandareid_ref IS NOT NULL THEN RETURN 2; END IF; COMMIT; return -1; 21

22 DROP FUNCTION post(text,text,text,char,text,int); CREATE FUNCTION post(text,text,text,char,text,int) RETURNS int AS' the_titel ALIAS FOR $1; the_text ALIAS FOR $2; the_signatur ALIAS FOR $3; the_sida ALIAS FOR $4; the_ipnum ALIAS FOR $5; the_sakfragaid ALIAS FOR $6; post_id int; INSERT INTO inlagg (titel, text, signatur, sida,skapad,antal_klagomal,ip_nummer, summa_roster,antal_roster,betyg,sakfragaid_ref) VALUES (the_titel,the_text,the_signatur,the_sida,''now'',0,the_ipnum, 0,0,0,the_sakfragaid); post_id := currval(''inlagg_inlaggid_seq''); return post_id; DROP FUNCTION NEXT_TOPIC(int); CREATE FUNCTION NEXT_TOPIC(int) RETURNS REFCURSOR AS' current_topic ALIAS FOR $1; next_markor CURSOR FOR SELECT sakfragaid,namn FROM sakfraga WHERE sakfragaid > current_topic ORDER BY sakfragaid LIMIT 1; OPEN next_markor; RETURN next_markor; DROP FUNCTION PREV_TOPIC(int); CREATE FUNCTION PREV_TOPIC(int) RETURNS REFCURSOR AS' current_topic ALIAS FOR $1; prev_markor CURSOR FOR SELECT sakfragaid,namn FROM sakfraga WHERE sakfragaid < current_topic ORDER BY sakfragaid; OPEN prev_markor; RETURN prev_markor; 22

23 DROP FUNCTION GET_TOPIC(int); CREATE FUNCTION GET_TOPIC(int) RETURNS REFCURSOR AS' topic_id ALIAS FOR $1; topic_marker CURSOR FOR SELECT * FROM sakfraga WHERE sakfragaid=topic_id; OPEN topic_marker; RETURN topic_marker; DROP FUNCTION post_topic(text,text); CREATE FUNCTION post_topic(text,text) RETURNS int AS' the_namn ALIAS FOR $1; the_beskrivning ALIAS FOR $2; topic_id int; INSERT INTO sakfraga (namn, beskrivning, skapad, antal_for, antal_mot) VALUES (the_namn, the_beskrivning, ''now'', 0, 0); topic_id := currval(''sakfraga_sakfragaid_seq''); return topic_id; DROP FUNCTION topic_vote(int,char); CREATE FUNCTION topic_vote(int,char) RETURNS REFCURSOR AS' topic_id ALIAS FOR $1; vote ALIAS FOR $2; topic_vote_marker CURSOR FOR SELECT antal_for,antal_mot FROM sakfraga WHERE sakfragaid=topic_id; IF vote = ''y'' THEN UPDATE sakfraga SET antal_for = (antal_for+1) WHERE sakfragaid = topic_id; END IF; IF vote = ''n'' THEN 23

24 UPDATE sakfraga SET antal_mot = (antal_mot+1) WHERE sakfragaid = topic_id; END IF; OPEN topic_vote_marker; RETURN topic_vote_marker; DROP FUNCTION GET_NO_OF_UNVOTED(int,int); CREATE FUNCTION GET_NO_OF_UNVOTED(int,int) RETURNS int AS' topic_id ALIAS FOR $1; user_id ALIAS FOR $2; number int; side char; SELECT INTO side standpunkt.standpunkt FROM standpunkt WHERE anvandareid_ref=user_id AND sakfragaid_ref=topic_id; SELECT INTO number count(inlaggid) FROM inlagg WHERE sakfragaid_ref=topic_id AND sida=side AND inlaggid NOT IN (SELECT inlaggid from inlagg,betyg WHERE sakfragaid_ref=topic_id AND inlaggid_ref=inlaggid AND anvandareid_ref = user_id); return number; DROP FUNCTION GET_NO_OF_VOTED(int,int); CREATE FUNCTION GET_NO_OF_VOTED(int,int) RETURNS int AS' topic_id ALIAS FOR $1; user_id ALIAS FOR $2; number int; side char; SELECT INTO side standpunkt.standpunkt FROM standpunkt WHERE anvandareid_ref=user_id AND sakfragaid_ref=topic_id; SELECT INTO number count(inlaggid) FROM inlagg WHERE sakfragaid_ref=topic_id AND sida=side AND inlaggid IN (SELECT inlaggid from inlagg,betyg WHERE sakfragaid_ref=topic_id AND inlaggid_ref=inlaggid AND anvandareid_ref = user_id); return number; DROP FUNCTION VOTE_VIEW(int,int); DROP FUNCTION VOTE_VIEW(int,int,int,int); CREATE FUNCTION VOTE_VIEW(int,int,int,int) RETURNS REFCURSOR AS' 24

25 topic_id ALIAS FOR $1; user_id ALIAS FOR $2; no_of_posts ALIAS FOR $3; the_offset ALIAS FOR $4; side char; vote_view_marker CURSOR (key char) FOR SELECT DISTINCT(inlagg.*) FROM inlagg WHERE sakfragaid_ref=topic_id AND sida=key AND inlaggid NOT IN (SELECT inlaggid from inlagg,betyg WHERE sakfragaid_ref=topic_id AND inlaggid_ref=inlaggid AND anvandareid_ref = user_id) ORDER BY betyg DESC LIMIT no_of_posts OFFSET the_offset; SELECT INTO side standpunkt.standpunkt FROM standpunkt WHERE anvandareid_ref=user_id AND sakfragaid_ref=topic_id; IF NOT FOUND THEN RAISE EXCEPTION ''ERROR: EJ VALT SIDA''; END IF; OPEN vote_view_marker(side); RETURN vote_view_marker; DROP FUNCTION RE_VOTE_VIEW(int,int); DROP FUNCTION RE_VOTE_VIEW(int,int,int,int); CREATE FUNCTION RE_VOTE_VIEW(int,int,int,int) RETURNS REFCURSOR AS' topic_id ALIAS FOR $1; user_id ALIAS FOR $2; no_of_posts ALIAS FOR $3; the_offset ALIAS FOR $4; side char; vote_view_marker CURSOR (key char) FOR SELECT DISTINCT(inlagg.*) FROM inlagg WHERE sakfragaid_ref=topic_id AND sida=key AND inlaggid IN (SELECT inlaggid from inlagg,betyg WHERE sakfragaid_ref=topic_id AND inlaggid_ref=inlaggid AND anvandareid_ref = user_id) ORDER BY betyg DESC LIMIT no_of_posts OFFSET the_offset; SELECT INTO side standpunkt.standpunkt FROM standpunkt WHERE anvandareid_ref=user_id AND sakfragaid_ref=topic_id; IF NOT FOUND THEN RAISE EXCEPTION ''ERROR: EJ VALT SIDA''; END IF; OPEN vote_view_marker(side); 25

26 RETURN vote_view_marker; DROP FUNCTION POST_VOTE(int,int,int); CREATE FUNCTION POST_VOTE(int,int,int) RETURNS int AS' value ALIAS FOR $1; post_id ALIAS FOR $2; user_id ALIAS FOR $3; INSERT INTO betyg (varde,inlaggid_ref,anvandareid_ref) VALUES (value,post_id,user_id); RETURN 1; DROP FUNCTION calculate_betyg() CASCADE; CREATE FUNCTION calculate_betyg() RETURNS OPAQUE AS' UPDATE inlagg SET antal_roster=antal_roster+1, summa_roster=summa_roster+new.varde, betyg=(summa_roster+new.varde)/(antal_roster+1) WHERE inlaggid=new.inlaggid_ref; RETURN NEW; DROP TRIGGER calculate_betyg_trigger ON betyg; CREATE TRIGGER calculate_betyg_trigger AFTER INSERT ON betyg FOR EACH ROW EXECUTE PROCEDURE calculate_betyg(); DROP FUNCTION MOVE_POST_TO_REF(int); CREATE FUNCTION MOVE_POST_TO_REF(INT) RETURNS int AS' post_id ALIAS FOR $1; data RECORD; SELECT INTO data * FROM inlagg WHERE inlaggid=post_id; IF NOT FOUND THEN RAISE EXCEPTION ''ERROR: Inlägg finns inte''; END IF; INSERT INTO refuserat_inlagg (titel, text, signatur,sida, skapad, antal_klagomal,ip_nummer,summa_roster,antal_roster,betyg,sakfragaid_ref) VALUES (data.titel, data.text, data.signatur,data.sida, data.skapad, 26

27 data.antal_klagomal,data.ip_nummer,data.summa_roster, data.antal_roster,data.betyg,data.sakfragaid_ref); DELETE FROM inlagg WHERE inlaggid=post_id; RETURN 0; DROP FUNCTION MOVE_REF_TO_POST(int); CREATE FUNCTION MOVE_REF_TO_POST(INT) RETURNS int AS' ref_id ALIAS FOR $1; data RECORD; SELECT INTO data * FROM refuserat_inlagg WHERE refuserat_inlaggid=ref_id; IF NOT FOUND THEN RAISE EXCEPTION ''ERROR: Refuserat inlagg existerar inte''; END IF; INSERT INTO inlagg (titel, text, signatur,sida, skapad, antal_klagomal,ip_nummer,summa_roster,antal_roster,betyg,sakfragaid_ref) VALUES (data.titel, data.text, data.signatur,data.sida, data.skapad, data.antal_klagomal,data.ip_nummer,data.summa_roster, data.antal_roster,data.betyg,data.sakfragaid_ref); DELETE FROM refuserat_inlagg WHERE refuserat_inlaggid=ref_id; RETURN 0; DROP FUNCTION remove_betyg() CASCADE; CREATE FUNCTION remove_betyg() RETURNS OPAQUE AS' DELETE FROM BETYG WHERE betyg.anvandareid_ref=new.anvandareid_ref AND betyg.inlaggid_ref=inlagg.inlaggid AND inlagg.sakfragaid_ref=new.sakfragaid_ref; RETURN NEW; DROP TRIGGER remove_betyg_trigger ON standpunkt; CREATE TRIGGER remove_betyg_trigger BEFORE UPDATE ON standpunkt FOR EACH ROW EXECUTE PROCEDURE remove_betyg(); DROP FUNCTION update_betyg() CASCADE; CREATE FUNCTION update_betyg() RETURNS OPAQUE AS' 27

28 the_antal int; SELECT INTO the_antal antal_roster FROM inlagg WHERE inlaggid = OLD.inlaggid_ref; IF the_antal = 1 THEN UPDATE inlagg SET antal_roster=0, summa_roster=0, betyg=0 WHERE inlaggid=old.inlaggid_ref; END IF; IF the_antal > 1 THEN UPDATE inlagg SET antal_roster=antal_roster-1, summa_roster=summa_roster-old.varde, betyg=(summa_roster-old.varde)/(antal_roster-1) WHERE inlaggid=old.inlaggid_ref; END IF; RETURN OLD; DROP TRIGGER update_betyg_trigger ON betyg; CREATE TRIGGER update_betyg_trigger BEFORE DELETE ON betyg FOR EACH ROW EXECUTE PROCEDURE update_betyg(); 28

Sakfrågan Preliminär specifikation

Sakfrågan Preliminär specifikation KTH Programutvecklingsprojekt, 2D1954 Nada - Institutionen för Numerisk analys och datalogi 2003-03-04 Sakfrågan Preliminär specifikation Amr El-Ghazaly Joakim Andersson John Holmström Jens Modig Carl

Läs mer

Projektpresentation Sakfrågan

Projektpresentation Sakfrågan KTH Programutvecklingsprojekt, 2D1954 Nada - Institutionen för Numerisk analys och datalogi 2003-04-28 Projektpresentation Sakfrågan Amr El-Ghazaly Joakim Andersson John Holmström Jens Modig Carl Drott

Läs mer

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LIVE Exempelkod från föreläsningen Plushögskolan Frågeutveckling inom MSSQL - SU14 Här kommer exempelkoden jag använde under föreläsningen Exemplen Constraints... 2 Transactions... 4 Views... 5 Functions...

Läs mer

Vyer, Prepared Statements, Triggers

Vyer, Prepared Statements, Triggers Vyer, Prepared Statements, Triggers Vyer En vy är en virtuell tabell, som ej behöver existera fysiskt, en namngiven fråga En vy är inte snabbare än SELECT satsen som definierar vyn Det är möjligt att ställa

Läs mer

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen

Läs mer

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

SQLs delar. Idag. Att utplåna en databas. Skapa en databas Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver

Läs mer

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Databasföreläsning Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Tabeller Personer Databas Nummer Namn Födelseår 1 Tina 1950 2 Siv 1965 3 Olle 1980 Platt databas: all information

Läs mer

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Du skall naturligtvis visa körexempel med output där det behövs i din rapport! och databprogrammering Christilinda Göstson - PL/SQL, paket och ref cursor Du skall naturligtvis visa körexempel med output där det behövs i din rapport! OBS! Denna labb redovis i labbrapport via mail

Läs mer

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ; Lösningsförslag till Övning i SQL Data Definition Language (DDL) D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ; D2. Create Domain CHARNRKEY char(7 D3. Create Table Skiva( T1. Create Table Skiva(

Läs mer

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20 Idag Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20 Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller?

Läs mer

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix Arbetsuppgift 1: Uppdatera och uppgradera din installation. Steg 1: Starta och logga på din server,

Läs mer

Structured query language (SQL)

Structured query language (SQL) Structured query language SQL) Varför SQL? SQL är ett standardspråk som är oberoende av databashanteringssystemen som finns på marknaden. Med andra ord kommer du kunna arbeta mot nästan alla sorters relationsdatabaser

Läs mer

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra. 1 Datafiler tillhör alltid en filgrupp. Det måste alltid finnas en PRIMARY group. Det är inget som hindrar att datafiler på olika diskar tillhör samma filgrupp. PRIMARY gruppen innehåller huvudfilen till

Läs mer

Skapa exempeldatabasen

Skapa exempeldatabasen Skapa exempeldatabasen Koden i detta dokument är avsedd att exekveras i SQL Editor i MySQL Workbench. Skapa databasen För att kunna använda svenska alfabetet för lagring av data deklareras teckenensuppsättningen

Läs mer

Design och underhåll av databaser

Design och underhåll av databaser Design och underhåll av databaser 1. Modell av verkligheten 2. Normalformer 3. Introduktion till DDL 4. Skapa databaser 5. Skapa tabeller 6. Skapa index 7. Restriktioner 8. Ta bort databaser, tabeller

Läs mer

TENTAMEN DATABASKUNSKAP ITEK12

TENTAMEN DATABASKUNSKAP ITEK12 TENTAMEN DATABASKUNSKAP ITEK12 Tid: Fredag den 19 oktober kl. 9-00-12.00, sal D409 Tillåtna hjälpmedel: Endast papper och penna. Poäng: Maxpoäng: 56. Gräns för G: 50%. Gräns för VG: 75%. Om något som verkar

Läs mer

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index INNEHÅLL SQL DEL 4 DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index Chapter 3, 6, 8 delar av. Beginning SQL Server 2008 for Developers 1 CREATE

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse Lär känna MS SQL 2008 / Övning Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill

Läs mer

Klientprogrammering mot databaser

Klientprogrammering mot databaser Klientprogrammering mot Databaser Java DataBase Connectivity, JDBC Klientprogrammering mot databaser Native API olika för olika DBMS, ofta i C/C++ ODBC, Open Datbase Connectivity samma API för olika databashanterare.

Läs mer

Nya webbservern Dvwebb.mah.se

Nya webbservern Dvwebb.mah.se Nya webbservern Dvwebb.mah.se Bakgrund: BIT (Bibliotek och IT) beslutar att ta ner Novell systemet 28/3 som är en katalogtjänst som styr bland annat alla studenter s.k. hemkataloger på Malmö högskola såväl

Läs mer

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras. Laboration 1, Databashantering med MySQL Av: Marcus Rejås I denna laboration skall du se till att du kommer åt databasmotorn och att det fungerar. Du kommer också att skapa en tabell

Läs mer

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan, FÖ 12: Databaskursen 1. Lagrade procedurer 2. Fördelar med procedurer 3. Parametrar 4. Vanliga fel 5. Lagrade funktioner 6. Skillnad mellan procedurer och funktioner 7. Triggrar 8. Användningsområde 9.

Läs mer

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7. FÖ 5: Databaskursen 1 1. SQL DML (Data Manipulation Language) 2. Lägga till data 3. Kopiera tabell 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7. Ta bort data 8. SQL TCL (Transaction Control

Läs mer

Webbservrar, severskript & webbproduktion

Webbservrar, severskript & webbproduktion Webbprogrammering Webbservrar, severskript & webbproduktion 1 Vad är en webbserver En webbserver är en tjänst som lyssnar på port 80. Den hanterar tillgång till filer och kataloger genom att kommunicera

Läs mer

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner INNEHÅLL Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner Kapitel 5 och 6. Beginning SQL Server 008

Läs mer

WCMS-15, Webbutvecklare CMS

WCMS-15, Webbutvecklare CMS WCMS-15, Webbutvecklare CMS Övningstentamen, delkurs Dynamiska webbplatser (20 YH-poäng) Plats: Medieinstitutet, Malmö Tid: 25 november 2015, kl. 13.00-16.00 Tillåtna hjälpmedel: Papper, penna, suddgummi,

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14 Övningar i SQL Övningar i SQL Använd Access för att öva SQL (= Structured Query Language) Skapa tabeller med SQL 1. Ny databas: SQLÖVNING Klicka: Frågor > Ny > Design > OK >Stäng > SQL Radera ordet SELECT.

Läs mer

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7) 1 (7) Försättsblad till skriftlig tentamen vid Linköpings universitet Datum för tentamen Sal (1) Tid Kurskod Provkod Kursnamn/benämning Provnamn/benämning Institution Antal uppgifter som ingår i tentamen

Läs mer

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Genomgång av tentamen. Databasteknik ITHS 4/3 2016 Genomgång av tentamen Databasteknik ITHS 4/3 2016 Tentans upplägg Täcka in de 10 delar av kursen vi bedömt som viktigast Säkerställa att det funnits såväl teoripass som övningspass kring varje del Lätt

Läs mer

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP. Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär

Läs mer

Lektion 5 HTML, CSS, PHP och MySQL

Lektion 5 HTML, CSS, PHP och MySQL Lektion 5 HTML, CSS, PHP och MySQL I den här lektionen behandlas i huvudsak PHP för att läsa information från en databas, MySQL. Det förutsätts att tidigare lektioner är gjorda, eller att du har tillräckliga

Läs mer

Innehåll Programability Del 2

Innehåll Programability Del 2 Innehåll Programability Del 2 Transaktioner Returvärden och OUTPUT Dynamisk SQL CURSOR / FECTH Trigger Chapter 8, 10 och 13. Beginning SQL Server 2008 for Developers Sven Åke Johansson Institutionen Institutionen

Läs mer

1.Lär känna MS SQL Observera. Tips. Förberedelse

1.Lär känna MS SQL Observera. Tips. Förberedelse 1.Lär känna MS SQL 2008 Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill genomföra

Läs mer

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern. Sync Master Sync Master är ett tilläggsprogram till Easy Planning som används för att automatiskt synka Outlook kalendrar med EP. Programmet ska installeras på en server som har en Outlook klient installerad.

Läs mer

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP Exempel på klientsidan WWW Javascript-interpretator XML-interpretator HTML-interpretator Java-interpretator CSS-interpretator Använder TCP Kan återanvända uppkoppling Inga tillstånd hos servern OS API

Läs mer

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen MySQL - testmiljöer på minuter Thomas Johansson IT-avdelningen 1 Kort presentation! MySQL-DBA Unix-gubbe sedan 90-talet 2 Testmiljöer för MySQL För att testa innan uppgradering För att testa uppgradering

Läs mer

1. PLSQL 2 2. Select into

1. PLSQL 2 2. Select into FÖ 11: Databaskursen 1 1. PLSQL 2 2. Select into 3. Anchored declaration 4. Cursorvariabler 5. Olika typer av cursors 6. Cursorattribut 7. Cursorloop 8. Datatypen record: %rowtype 9. Cursor for loop 10.

Läs mer

Vid problem med programmet kontakta alltid C/W Cadware AB på telefon 08-522 04 640

Vid problem med programmet kontakta alltid C/W Cadware AB på telefon 08-522 04 640 Installation av CW KeyDesign/DoorDesign Detta program görs och underhålls av C/W CadWare AB. CW KeyDesign/Doordesign säljs alltid med underhållsavtal med telefonsupport samt programuppdateringar på websidan:

Läs mer

Starta MySQL Query Browser

Starta MySQL Query Browser Starta MySQL Query Browser 1. Starta MySQL Query Browser genom att antingen välja i Startmenyn: 2. eller leta upp ikonen på skrivbordet för start av MySQL Query Browser och dubbelklicka på den. 3. Du bör

Läs mer

Dokumentation för VLDIT AB. Online classroom

Dokumentation för VLDIT AB. Online classroom Dokumentation för VLDIT AB Online classroom 2 Introduktion VLDIT AB önskar area för att tillhandahålla ett kursutbud online för sina befintliga deltagare, men även för nya. Syfte för applikationen: tillhandhålla

Läs mer

1. SQL DDL (Data Definition Language) 2. Skapa tabell

1. SQL DDL (Data Definition Language) 2. Skapa tabell FÖ 4: Databaskursen 1. SQL DDL (Data Definition Language) 2. Skapa tabell 3. Lägga till PK 4. Data Dictionary Views 5. Namn på constraints 6. Lägga till FK 7. Lägga till en kolumn 8. Objektet sekvens 9.

Läs mer

Skapa din egen MediaWiki

Skapa din egen MediaWiki Skapa din egen MediaWiki Inledning och syfte I detta moment skall du installera en egen wiki (Mediawiki), som du skall konfigurera. Du har möjligheten att använda en egen wiki på din dator eller webbhotell

Läs mer

Sample exam questions. Database exam TIG058

Sample exam questions. Database exam TIG058 Sample exam questions Database exam TIG058 Distribution of topics covered 1. Grundläggande om Databaser och Databashanterare (5p) 2. SQLite-databashanteraren (5p) 3. SQL - SELECT, ORDER BY, WHERE, LIMIT

Läs mer

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner Databasföreläsning Del 2 lagrade procedurer, vyer och transaktioner Lagrade procedurer (Stored procedures) En stored procedure är en procedur (funktion) lagrad i en databas, och exekveras direkt på databasservern

Läs mer

Innehåll. MySQL Grundkurs

Innehåll. MySQL Grundkurs MySQL Grundkurs Copyright 2014 Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Innehåll Introduktion till databaser Installera MySQL lokalt Webbserverprogrampaket (XAMPP) Introduktion till phpmyadmin

Läs mer

Lösningsförslag, tentamen i Databaser

Lösningsförslag, tentamen i Databaser LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Lösningsförslag, tentamen i Databaser 2004-04-20 1. ER-diagram: Matsedel år vecka serveras 1..5 lagas-med Maträtt Ingrediens dag mängd Allergi

Läs mer

Föreläsning 2: Översikt över ett databassystem

Föreläsning 2: Översikt över ett databassystem Föreläsning 2: Översikt över ett databassystem DVA234 Databaser IDT Akademin för Innovation, Design och Teknik Innehåll Föreläsningens mål: Att ge en överblick över databassystemets arkitektur, delar och

Läs mer

tclogin.com Service Desk Tillgång till TeleComputing TCAnyWare

tclogin.com Service Desk Tillgång till TeleComputing TCAnyWare tclogin.com Tillgång till TeleComputing TCAnyWare Service Desk Tel: Supportväxeln: 020-22 29 20 alt. 08-55 61 09 30 Fax: +46 (08) 56791199 E-post: support@telecomputing.se Web: http://support.telecomputing.se

Läs mer

INTRODUKTION TILL JDBC

INTRODUKTION TILL JDBC INTRODUKTION TILL JDBC Vad är JDBC? JDBC står för Java DataBase Connectivity. JDBC ingår i Java och består av en del klasser som har hand om databasfunktionalitet. Med Java följer JDBC-ODBC Bridge driver,

Läs mer

3. Dynamiska webbplatser, 20 Yhp (4 v)

3. Dynamiska webbplatser, 20 Yhp (4 v) Webbutvecklare CMS, Yh-utbildning, 2 år, 400 Yhp, Medieinstitutet, www.m Webbutvecklare CMS, Yh-utbildning, 2 år, 400 Yhp, Medieinstitutet, www.medieinstitutet.se, sida 3/12 3. Dynamiska webbplatser, 20

Läs mer

Manual för din hemsida

Manual för din hemsida Manual för din hemsida Dynamiska hemsidor är en lösning för att man på ett enkelt sätt skall kunna lägga till, ändra och ta bort sidor på sin hemsida. För att detta skall vara möjligt bygger lösningen

Läs mer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

732G16: Databaser - Design och programmering

732G16: Databaser - Design och programmering 732G16: Databaser - Design och programmering Eva L. Ragnemalm, IDA (eva.ragnemalm@liu.se) Johan Falkenjack, IDA (johan.falkenjack@liu.se) Fö 1 Introduktion 2 Kursöversikt Teori och praktik Kursbok, lektionshäfte,

Läs mer

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LABB 1 Databassagan och en rundtur i databasers märkliga värld Plushögskolan Frågeutveckling inom MSSQL - SU14 I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet

Läs mer

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF! Denna beskrivning har gjorts på Windows 2000 Server (men bör fungera även på Windows XP Home Edition/Professional och Windows 2003 Server). Att installera Oracle 10g kräver ca. 2 GB hårddiskplats och ca.

Läs mer

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser? Databaser Design och programmering! Diverse praktiskt! Varför databaser?! Vad är en databas?! Andra viktiga begrepp Kursöversikt! Teori och praktik! Samläsning! Olika projekt! Examination (tenta, labb

Läs mer

Installera din WordPress med 9 enkla steg

Installera din WordPress med 9 enkla steg Installera din WordPress med 9 enkla steg Den här artikeln förutsätter att du har satt upp en webbserver eller har köpt ett webbhotell där du kan placera din nya WordPress hemsida. Om du inte har det,

Läs mer

Introduktion MySQL och MariaDB

Introduktion MySQL och MariaDB Introduktion MySQL och MariaDB Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är MySQL? MySQL är en databashanterare. Den använder sig av frågespråket SQL. MySQL är fri programvara,

Läs mer

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer Disposition 1. Kopplingen mellan Processanalys (DFDdiagram) och konceptuell modellering (ERdiagram) (se kap 4) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer Databasen (Kap 2) Den relationella

Läs mer

Administrationsmanual ImageBank 2

Administrationsmanual ImageBank 2 Administrationsmanual ImageBank 2 INNEHÅLL 1. Konventioner i manualen 3 2. Uppmärksamhetssymboler 3 3. Vad är imagebank SysAdmin 4 4. Guide för att snabbt komma igång 5 5. Uppgradera din imagebank 1.2

Läs mer

Startanvisning för Bornets Internet

Startanvisning för Bornets Internet Startanvisning för Bornets Internet Denna guide kommer att hjälpa dig igång med Bornets Internet. Sidan 1 av 41 Innehållsförteckning Titel Sidan Kapitel 1. Introduktion... 3 Kapitel 2. TCP/IP-inställningar

Läs mer

Statistik från webbplatser

Statistik från webbplatser Statistik från webbplatser problem och möjligheter Ulf Kronman Föredragets huvuddelar Frågorna och motfrågorna Vilka frågor ställer chefen, BIBSAM och ISO? Varför ställer webmastern krångliga motfrågor?

Läs mer

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA... INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...6 2 (6) 2D1954 Programutvecklingsprojekt vt 2003 Installation

Läs mer

Biometria Violweb. Kom-igång-guide. Januari Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av Biometrias tjänster.

Biometria Violweb. Kom-igång-guide. Januari Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av Biometrias tjänster. Violweb Kom-igång-guide Januari 2019 Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av s tjänster. Innehållsförteckning Systemkrav... 2 Administratörsrättigheter... 3 Hur

Läs mer

Utkast/Version (8) Användarhandledning - inrapportering maskin-till-maskin

Utkast/Version (8) Användarhandledning - inrapportering maskin-till-maskin Utkast/Version Sida 2.0 1 (8) 2017-05-12 Användarhandledning - inrapportering maskin-till-maskin 2 (8) Innehåll 1. Rapportering till VINN eller KRITA... 3 1.1 Allmänt... 3 1.2 Terminologi... 3 2. Hämta

Läs mer

REGION SKÅNE VDI KLIENTINSTALLATION

REGION SKÅNE VDI KLIENTINSTALLATION REGION SKÅNE VDI KLIENTINSTALLATION 2014-05-21 Installation av Viewklient för VDI Dokumentation för installation och anslutning till Region Skånes VDI miljö INSTRUKTION VMWARE VIEW... 2 Inledning... 2

Läs mer

Bokningslista Handledare

Bokningslista Handledare XXX Bokningslista Handledare Manual v. 5 Bokningslista v. 4, Handledarmanual Innehåll: 1 Inledning... 3 1.1 Inloggning... 3 2 Bokningslistan... 5 2.1.1 Överblick över alla studentgrupper... 5 2.1.2 Enskild

Läs mer

Ekonomiportalen Sa kommer du iga ng

Ekonomiportalen Sa kommer du iga ng Ekonomiportalen Sa kommer du iga ng Innehållsförteckning Inloggningssidan... 2 Så här loggar du in... 3 Glömt ditt lösenord? Så här återställer du ditt lösenord... 4 Glömt lösenord till kundgemensamt rapportkonto?...

Läs mer

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Namn: Personnummer: Individuell prövning 41E03B Öppen för alla Tentamensdatum: 2013-08-20 Tid: 09:00-13:00 Hjälpmedel: Inga hjälpmedel

Läs mer

Informa5onsmodellering

Informa5onsmodellering Informa5onsmodellering - Ett viktigt syfte med systemutveckling är att specificera verksamhetens informationsbehov för att kunna kartlägga detta informationsbehov bör vi skapa en informationsmodell (konceptuell

Läs mer

Databasutveckling Introduktion till SQL och TSQL

Databasutveckling Introduktion till SQL och TSQL Databasutveckling Introduktion till SQL och TSQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till SQL SELECT satsen, enkla frågor Hämta specifika kolumner Alias

Läs mer

Systembeskrivning. Alhanko

Systembeskrivning. Alhanko Systembeskrivning Alhanko Innehållsförteckning 1 Systemöversikt 1.1 Översikt 1.1.1 Klient/Server 1.1.2 Modulbeskrivning 1.1.3 Programvara 1.2 Databasen 1.3 Systemkrav 1.3.1 Servern 1.3.2 Klienten 2 Filstruktur

Läs mer

Innehåll Security. Chapter 4 och 7 Beginning SQL Server 2008 for Developers

Innehåll Security. Chapter 4 och 7 Beginning SQL Server 2008 for Developers Innehåll Security SQL Injektions Säkerhetssystemet Schema Login Användare Roller User Applikationsanvändare AppUser Backup av databas Restore / Recovery av databas Flytta/Kopiera en databas, Detach/Attach

Läs mer

Instruktion för integration mot CAS

Instruktion för integration mot CAS IT-enheten Instruktion för integration mot CAS Per Hörnblad Instruktion 2010-10-29 Sid 1 (7) Instruktion för integration mot CAS Projektnamn Instruktioner för Integration mot CAS Fastställt av Per Hörnblad

Läs mer

OBS! Figuren visar inte alla aspekter och objekt som är inblandade i säkerhetssystemet.

OBS! Figuren visar inte alla aspekter och objekt som är inblandade i säkerhetssystemet. 1 OBS! Figuren visar inte alla aspekter och objekt som är inblandade i säkerhetssystemet. Det finns i princip två sätt att komma åt SQL-Server, det är via Windows login och SQLserver login. Vid Windows

Läs mer

Tekis-FB 7.1.0. Systemkrav

Tekis-FB 7.1.0. Systemkrav 7.1.0 Systemkrav Systemkrav 2015-09-17 MAAN 2 (2) Systemkrav 7.1.0 Dokumentet beskriver de krav som systemet ställer på maskinvara och programvara i de servrar och klientdatorer som ska användas för systemet.

Läs mer

Quadri DCM Handledning för administratörer och användare i projekt som kör Quadri DCM. Version 19.20 2014-08-15

Quadri DCM Handledning för administratörer och användare i projekt som kör Quadri DCM. Version 19.20 2014-08-15 Quadri DCM Handledning för administratörer och användare i projekt som kör Quadri DCM Version 19.20 2014-08-15 Innehåll Syfte... 2 Inledning... 3 Begreppslista... 4 Förberedelser... 6 Quadri Model Manager

Läs mer

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU Databaser Design och programmering, IDA Kursen, diverse praktiskt Varför databaser? Vad är en databas? Andra viktiga begrepp Kursöversikt Teori och praktik Fö och bok lektioner, labbar i projekt (3,5hp=100h)

Läs mer

TEKNISK SPECIFIKATION. för TIDOMAT Portal version 1.7

TEKNISK SPECIFIKATION. för TIDOMAT Portal version 1.7 för version 1.7 Innehållsförteckning Innehållsförteckning... 2 Krav för... 3 Systemskiss... 3 Systemkrav Server... 4 Operativsystem*... 4 Program i servern... 4 Databas... 5 SMTP inställningar för mail....

Läs mer

FLEX Personalsystem. Uppdateringsanvisning

FLEX Personalsystem. Uppdateringsanvisning FLEX Personalsystem Uppdateringsanvisning Innehållsförteckning UPPDATERING... 3 Allmänt... 3 Förberedelser... 3 Informera om uppdatering... 3 Ladda hem uppdateringsfiler... 4 Att observera vid uppdatering...

Läs mer

IT-körkort för språklärare. Modul 2: Blogg

IT-körkort för språklärare. Modul 2: Blogg IT-körkort för språklärare Modul 2: Blogg Innehåll Gloslista 2 Logga in på bloggen (punkt 1-3) 3 Skapa och redigera sidor och undersidor (punkt 4 och 5) 4 Infoga dokument (punkt 6 och 7) 7 Skapa inlägg

Läs mer

ADO.NET Murach Kapitel 17-20

ADO.NET Murach Kapitel 17-20 Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan

Läs mer

Biometria Violweb. Kom-igång-guide. Mars Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av Biometrias tjänster.

Biometria Violweb. Kom-igång-guide. Mars Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av Biometrias tjänster. Violweb Kom-igång-guide Mars 2019 Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av s tjänster. Innehållsförteckning Systemkrav... 2 Administratörsrättigheter... 3 Hur vet

Läs mer

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt...

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt... Produktblad för NAV i molnet Innehåll Vad är molnet?... 2 Vad är NAV i molnet?... 3 Vem passar NAV i molnet för?... 4 Fördelar med NAV i molnet... 5 Kom igång snabbt... 5 Bli kostnadseffektiv... 5 Enkelt

Läs mer

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF! Denna beskrivning har gjorts på Windows XP Professional (men bör fungera även på Home Edition och Windows 2000/2003). Att installera Oracle 9i Personal Edition kräver ca. 3 GB hårddiskplats och ca. 200

Läs mer

KAP 18 SQL SERVER AGENT

KAP 18 SQL SERVER AGENT KAP 18 SQL SERVER AGENT Tjänsten Sql Server Agent Operator Job Alert (larm) http://www.youtube.com/watch?v=ii1tc493bzm 1 VAD ÄR SQL SERVER AGENT? SQL Server Agent är en tjänst (service) som ansvarar för:

Läs mer

Installation och konfiguration av klientprogramvara 2c8 Modeling Tool

Installation och konfiguration av klientprogramvara 2c8 Modeling Tool Installation och konfiguration av klientprogramvara 2c8 Modeling Tool Hämta programpaket, MSI Aktuell version av klientprogramvaran finns tillgänglig för nedladdning på vår hemsida på adress http://www.2c8.com/

Läs mer

1. Treskiktsarkitektur 2. Applika1onsprogramvara 3. Teknisk programvara. Kapitel 6 sid

1. Treskiktsarkitektur 2. Applika1onsprogramvara 3. Teknisk programvara. Kapitel 6 sid 1. Treskiktsarkitektur 2. Applika1onsprogramvara 3. Teknisk programvara Kapitel 6 sid 171-188 Datoriserade informa.onssystem bygger på en tre- skikts arkitektur 1. Data Management layer (Implementerat

Läs mer

Krav på säker autentisering över öppna nät

Krav på säker autentisering över öppna nät Krav på säker autentisering över öppna nät I enlighet med Socialstyrelsens föreskrifter SOSFS 2008:14 2 kap. 5 skall en vårdgivare som använder öppna nät för att hantera patientuppgifter, ansvara för att

Läs mer

Bokningslista Examinator

Bokningslista Examinator XXX Bokningslista Examinator Manual v. 5 2014-04-23 Innehåll: 1 Inledning... 3 1.1 Inloggning... 3 2 Bokningslistan... 5 2.1.1 Överblick över alla studentgrupper... 5 2.1.2 Enskild studentgrupp... 8 2.1.3

Läs mer

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern. Sync Master Sync Master är ett tilläggsprogram till Easy Planning som används för att automatiskt synka Outlook kalendrar med EP. Programmet ska installeras på en server som har en Outlook klient installerad.

Läs mer

Övning MS SQL och MVC del 2

Övning MS SQL och MVC del 2 1 Övning MS SQL och MVC del 2 Denna övning, som är uppdelad i två delar, kommer att visa hur du kan arbeta med MS SQL och MVC. Applikationen är ett inloggningssystem som innehåller de flesta saker som

Läs mer

FNTSK SKNNK Fonetisk sökning

FNTSK SKNNK Fonetisk sökning FNTSK SKNNK Fonetisk sökning Sven Heidorn Centrala Studiestödsnämnden sven.heidorn@csn.se Swedish DB2 User Group 05/01/19 Bakgrund CSN gör s.k. SPAR-sökningar på namn hos InfoData för ca. 100 000 kr/månad

Läs mer

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi

Läs mer

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document Användarhandledning inloggning Logga in Gå till denna webbsida för att logga in: http://csportal.u4a.se/

Läs mer