Finish ov6
This commit is contained in:
		
							parent
							
								
									cefef7469f
								
							
						
					
					
						commit
						2c79996adf
					
				
							
								
								
									
										27
									
								
								ov6/demodata.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								ov6/demodata.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| INSERT INTO bedrift(orgnummer, navn, epost, telefon) VALUES (100, "Bjarnes Butikk", "bb@gmail.com", "12345670"); | ||||
| INSERT INTO bedrift(orgnummer, navn, epost, telefon) VALUES (200, "Vidars Verksted", "vv@gmail.com", "12345671"); | ||||
| INSERT INTO bedrift(orgnummer, navn, epost, telefon) VALUES (300, "Arnes Arkivtjenester", "aa@gmail.com", "12345672"); | ||||
| 
 | ||||
| INSERT INTO kandidat(telefon, epost, fornavn, etternavn) VALUES ("12345678", "k_a@gmail.com", "Kari", "Aas"); | ||||
| INSERT INTO kandidat(telefon, epost, fornavn, etternavn) VALUES ("12345679", "a_b@gmail.com", "Anne", "Berg"); | ||||
| INSERT INTO kandidat(telefon, epost, fornavn, etternavn) VALUES ("12345680", "g_s@gmail.com", "Gunnar", "Svendsen"); | ||||
| INSERT INTO kandidat(telefon, epost, fornavn, etternavn) VALUES ("12345681", "s_w@gmail.com", "Svein", "Wold"); | ||||
| INSERT INTO kandidat(telefon, epost, fornavn, etternavn) VALUES ("12345682", "h_j@gmail.com", "Hans", "Jensen"); | ||||
| 
 | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345678", "Kundeservice"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345678", "Kasse"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345679", "Kundeservice"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345679", "Kasse"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345680", "Excel"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345680", "Word"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345681", "Excel"); | ||||
| INSERT INTO kandidatkvalifikasjon(telefon, kvalifikasjon) VALUES ("12345681", "Word"); | ||||
| 
 | ||||
| INSERT INTO oppdrag(orgnummer, kvalifikasjon, starttid, slutttid) VALUES (100, "Kundeservice", DATE("2023-01-01"), DATE("2023-01-31")); | ||||
| INSERT INTO oppdrag(orgnummer, kvalifikasjon, starttid, slutttid) VALUES (300, "Kasse", DATE("2023-02-01"), DATE("2023-02-28")); | ||||
| INSERT INTO oppdrag(orgnummer, kvalifikasjon, starttid, slutttid) VALUES (300, "Excel", DATE("2023-03-01"), DATE("2023-03-31")); | ||||
| INSERT INTO oppdrag(orgnummer, kvalifikasjon, starttid, slutttid) VALUES (300, "Word", DATE("2023-04-01"), DATE("2023-04-30")); | ||||
| 
 | ||||
| INSERT INTO jobbhistorikk(oppdrag_id, kandidat_tlf, starttid, slutttid, arbeidstimer) VALUES (1, "12345678", DATE("2022-01-01"), DATE("2022-01-31"), 160); | ||||
| INSERT INTO jobbhistorikk(oppdrag_id, kandidat_tlf, starttid, slutttid, arbeidstimer) VALUES (2, "12345679", DATE("2022-02-01"), DATE("2022-02-24"), 140); | ||||
| INSERT INTO jobbhistorikk(oppdrag_id, kandidat_tlf, starttid, slutttid, arbeidstimer) VALUES (3, "12345680", DATE("2022-03-01"), DATE("2022-03-16"), 160); | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB | 
| @ -13,7 +13,7 @@ entity "Kandidat" as k { | ||||
| entity "KandidatKvalifikasjon" as kk { | ||||
|   kandidat_id {PK} : Integer | ||||
|   -- | ||||
|   kvalifikasjon : String | ||||
|   kvalifikasjon {PK} : String | ||||
| } | ||||
| 
 | ||||
| entity "Bedrift" as b { | ||||
|  | ||||
							
								
								
									
										153
									
								
								ov6/losning.md
									
									
									
									
									
								
							
							
						
						
									
										153
									
								
								ov6/losning.md
									
									
									
									
									
								
							| @ -3,5 +3,156 @@ geometry: margin=30mm | ||||
| author: Felix Albrigtsen | ||||
| ... | ||||
| 
 | ||||
| # Øving  | ||||
| # Øving 6 | ||||
| 
 | ||||
| ## Oppgave a | ||||
| ### Lag en datamodell (ER-modell der dere bruker UML-notasjon) | ||||
|    | ||||
| 
 | ||||
| ## Oppgave b | ||||
| ### Oversett til relasjonsmodellen | ||||
| 
 | ||||
| > kandidat(telefon\*, fornavn, etternavn, epost) | ||||
| 
 | ||||
| > kandidatkvalifikasjon(kandidat\_id*,kvalifikasjon*) | ||||
| 
 | ||||
| > bedrift(orgnummer\*, navn, epost, telefon) | ||||
| 
 | ||||
| > oppdrag(oppdrag\_id\*, <u>orgnummer</u>, kvalifikasjon, starttid, sluttid) | ||||
| 
 | ||||
| > jobbhistorikk(<u>oppdrag\_id\*</u>, <u>kandidat tlf</u>, starttid, sluttid, arbeidstimer) | ||||
| 
 | ||||
| > sluttatest(<u>oppdrag_id\*</u>, attest) | ||||
| 
 | ||||
| ### Er det rimelig at noen av fremmednøklene kan være NULL? Hva betyr det i tilfelle? | ||||
| 
 | ||||
| Jeg bruker fire fremmednøkler i besvarelsen. | ||||
| - oppdrag.orgnummer kan ikke være NULL, da alle jobber må høre til en bedrift. | ||||
| - jobbhistorikk.oppdrag\_id kan ikke være NULL, da man ikke kan ha jobbet om det ikke fantes et oppdrag. | ||||
| - jobbhistorikk.kandidat\_tlf kan ikke være NULL, da et oppdrag ikke kan være utført om det ikke gjøres av en kandidat. | ||||
| - sluttatest.oppdrag\_id kan ikke være NULL, da man ikke kan skrive attest til en jobb som ikke er utført. | ||||
| 
 | ||||
| ## Oppgave c | ||||
| ### Opprett databasetabellene med primær-og fremmednøkleri MySQL, dvs. lag CREATE TABLE og evt. ALTER TABLE-setninger. (Prøv å) bruk datatypen DATE for dato. | ||||
| 
 | ||||
| SQL-setningene finnes i [vikar.sql](./vikar.sql) | ||||
| 
 | ||||
| ## Oppgave d | ||||
| 
 | ||||
| ### Lag en liste over alle bedriftene. Navn, telefon og epost til bedriften skal skrives ut. | ||||
| 
 | ||||
| ```sql | ||||
| SELECT navn, epost, telefon  | ||||
| FROM bedrift; | ||||
| ``` | ||||
| 
 | ||||
| ```sql | ||||
| MariaDB [idatt2103_ov6]> SELECT navn, epost, telefon FROM bedrift; | ||||
| +----------------------+--------------+----------+ | ||||
| | navn                 | epost        | telefon  | | ||||
| +----------------------+--------------+----------+ | ||||
| | Bjarnes Butikk       | bb@gmail.com | 12345670 | | ||||
| | Vidars Verksted      | vv@gmail.com | 12345671 | | ||||
| | Arnes Arkivtjenester | aa@gmail.com | 12345672 | | ||||
| +----------------------+--------------+----------+ | ||||
| ```  | ||||
| 
 | ||||
| ### Lag en liste over alle oppdragene. Om hvert oppdrag skal du skrive ut oppdragets nummer samt navn og telefonnummer til bedriften som tilbyr oppdraget. | ||||
| 
 | ||||
| ```sql | ||||
| SELECT oppdrag_id, navn, telefon, epost  | ||||
| FROM oppdrag  | ||||
| LEFT JOIN bedrift  | ||||
| ON oppdrag.orgnummer = bedrift.orgnummer; | ||||
| ``` | ||||
| ```sql | ||||
| MariaDB [idatt2103_ov6]> SELECT oppdrag_id, navn, telefon, epost FROM oppdrag LEFT JOIN bedrift ON oppdrag.orgnummer = bedrift.orgnummer; | ||||
| +------------+----------------------+----------+--------------+ | ||||
| | oppdrag_id | navn                 | telefon  | epost        | | ||||
| +------------+----------------------+----------+--------------+ | ||||
| |          1 | Bjarnes Butikk       | 12345670 | bb@gmail.com | | ||||
| |          2 | Arnes Arkivtjenester | 12345672 | aa@gmail.com | | ||||
| |          3 | Arnes Arkivtjenester | 12345672 | aa@gmail.com | | ||||
| |          4 | Arnes Arkivtjenester | 12345672 | aa@gmail.com | | ||||
| +------------+----------------------+----------+--------------+ | ||||
| ``` | ||||
| 
 | ||||
| ### Lag en liste over kandidater og kvalifikasjoner. Kandidatnavn og kvalifikasjonsbeskrivelse skal med i utskriften i tillegg til løpenumrene som identifiserer kandidat og kvalifikasjon. | ||||
| 
 | ||||
| Jeg har ikke brukt noen løpenummer, da ingen kandidater kan ha samme telefonnummer, og telefon+kvalifikasjon er tilstrekkelig primærnøkkel. | ||||
| 
 | ||||
| ```sql | ||||
| SELECT k.telefon, CONCAT (k.fornavn, ' ',  k.etternavn) AS navn, kvalifikasjon  | ||||
| FROM kandidat k  | ||||
| RIGHT JOIN kandidatkvalifikasjon kk  | ||||
| ON k.telefon = kk.telefon; | ||||
| ``` | ||||
| 
 | ||||
| ```sql | ||||
| MariaDB [idatt2103_ov6]> SELECT k.telefon, CONCAT (k.fornavn, ' ',  k.etternavn) AS navn, kvalifikasjon FROM kandidat k RIGHT JOIN kandidatkvalifikasjon kk ON k.telefon = kk.telefon; | ||||
| +----------+-----------------+---------------+ | ||||
| | telefon  | navn            | kvalifikasjon | | ||||
| +----------+-----------------+---------------+ | ||||
| | 12345678 | Kari Aas        | Kasse         | | ||||
| | 12345678 | Kari Aas        | Kundeservice  | | ||||
| | 12345679 | Anne Berg       | Kasse         | | ||||
| | 12345679 | Anne Berg       | Kundeservice  | | ||||
| | 12345680 | Gunnar Svendsen | Excel         | | ||||
| | 12345680 | Gunnar Svendsen | Word          | | ||||
| | 12345681 | Svein Wold      | Excel         | | ||||
| | 12345681 | Svein Wold      | Word          | | ||||
| +----------+-----------------+---------------+ | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| ### Som oppgave 3d), men få med de kandidatene som ikke er registrert med kvalifikasjoner. | ||||
| 
 | ||||
| ```sql | ||||
| SELECT k.telefon, CONCAT (k.fornavn, ' ', k.etternavn) AS navn, kvalifikasjon  | ||||
| FROM kandidat k  | ||||
| LEFT JOIN kandidatkvalifikasjon kk  | ||||
| ON k.telefon = kk.telefon; | ||||
| ``` | ||||
| 
 | ||||
| ```sql | ||||
| MariaDB [idatt2103_ov6]>  SELECT k.telefon, CONCAT (k.fornavn, ' ', k.etternavn) AS navn, kvalifikasjon FROM kandidat k LEFT JOIN kandidatkvalifikasjon kk ON k.telefon = kk.telefon; | ||||
| +----------+-----------------+---------------+ | ||||
| | telefon  | navn            | kvalifikasjon | | ||||
| +----------+-----------------+---------------+ | ||||
| | 12345678 | Kari Aas        | Kasse         | | ||||
| | 12345678 | Kari Aas        | Kundeservice  | | ||||
| | 12345679 | Anne Berg       | Kasse         | | ||||
| | 12345679 | Anne Berg       | Kundeservice  | | ||||
| | 12345680 | Gunnar Svendsen | Excel         | | ||||
| | 12345680 | Gunnar Svendsen | Word          | | ||||
| | 12345681 | Svein Wold      | Excel         | | ||||
| | 12345681 | Svein Wold      | Word          | | ||||
| | 12345682 | Hans Jensen     | NULL          | | ||||
| +----------+-----------------+---------------+ | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| ### Skriv ut jobbhistorikken til en bestemt vikar, gitt kandidatnr. Vikarnavn, sluttdato, oppdragsnr og bedriftsnavn skal med. | ||||
| 
 | ||||
| ```sql | ||||
| SELECT k.telefon, CONCAT(k.fornavn, ' ', k.etternavn) as kandidatnavn, j.slutttid, j.oppdrag_id, b.navn  | ||||
| FROM jobbhistorikk j  | ||||
| LEFT JOIN oppdrag o  | ||||
|   ON j.oppdrag_id = o.oppdrag_id  | ||||
| LEFT JOIN bedrift b  | ||||
|   ON o.orgnummer = b.orgnummer  | ||||
| LEFT JOIN kandidat k  | ||||
|   ON j.kandidat_tlf = k.telefon  | ||||
| WHERE kandidat_tlf = 12345678; | ||||
| ``` | ||||
| 
 | ||||
| ```sql | ||||
| MariaDB [idatt2103_ov6]> SELECT k.telefon, CONCAT(k.fornavn, ' ', k.etternavn) as kandidatnavn, j.slutttid, j.oppdrag_id, b.navn FROM jobbhistorikk j LEFT JOIN oppdrag o ON j.oppdrag_id = o.oppdrag_id LEFT JOIN bedrift b ON o.orgnummer = b.orgnummer LEFT JOIN kandidat k ON j.kandidat_tlf = k.telefon WHERE kandidat_tlf = 12345678; | ||||
| +----------+--------------+------------+------------+----------------+ | ||||
| | telefon  | kandidatnavn | slutttid   | oppdrag_id | navn           | | ||||
| +----------+--------------+------------+------------+----------------+ | ||||
| | 12345678 | Kari Aas     | 2022-01-31 |          1 | Bjarnes Butikk | | ||||
| +----------+--------------+------------+------------+----------------+ | ||||
| ``` | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								ov6/losning.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ov6/losning.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -1 +0,0 @@ | ||||
| er_modell.png | ||||
							
								
								
									
										63
									
								
								ov6/vikar.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								ov6/vikar.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| DROP TABLE IF EXISTS sluttatest; | ||||
| DROP TABLE IF EXISTS jobbhistorikk; | ||||
| DROP TABLE IF EXISTS oppdrag; | ||||
| DROP TABLE IF EXISTS kandidatkvalifikasjon; | ||||
| DROP TABLE IF EXISTS kandidat; | ||||
| DROP TABLE IF EXISTS bedrift; | ||||
| 
 | ||||
| CREATE TABLE bedrift | ||||
| ( | ||||
| orgnummer INT UNSIGNED NOT NULL AUTO_INCREMENT, | ||||
| navn VARCHAR(30), | ||||
| epost VARCHAR(100), | ||||
| telefon CHAR(15), | ||||
| PRIMARY KEY(orgnummer) | ||||
| ); | ||||
| 
 | ||||
| CREATE TABLE kandidat | ||||
| ( | ||||
| telefon CHAR(15) NOT NULL, | ||||
| epost VARCHAR(100), | ||||
| fornavn VARCHAR(30), | ||||
| etternavn VARCHAR(30), | ||||
| PRIMARY KEY(telefon) | ||||
| ); | ||||
| 
 | ||||
| CREATE TABLE kandidatkvalifikasjon | ||||
| ( | ||||
| telefon CHAR(15) NOT NULL, | ||||
| kvalifikasjon VARCHAR(100), | ||||
| PRIMARY KEY(telefon, kvalifikasjon), | ||||
| FOREIGN KEY(telefon) REFERENCES kandidat(telefon) | ||||
| ); | ||||
| 
 | ||||
| CREATE TABLE oppdrag | ||||
| ( | ||||
| oppdrag_id INT UNSIGNED NOT NULL AUTO_INCREMENT, | ||||
| orgnummer INT UNSIGNED, | ||||
| kvalifikasjon VARCHAR(30), | ||||
| starttid DATE, | ||||
| slutttid DATE, | ||||
| PRIMARY KEY(oppdrag_id), | ||||
| FOREIGN KEY(orgnummer) REFERENCES bedrift(orgnummer) | ||||
| ); | ||||
| 
 | ||||
| CREATE TABLE jobbhistorikk | ||||
| ( | ||||
| oppdrag_id INT UNSIGNED NOT NULL, | ||||
| kandidat_tlf CHAR(15) NOT NULL, | ||||
| starttid DATE, | ||||
| slutttid DATE, | ||||
| arbeidstimer INT UNSIGNED, | ||||
| PRIMARY KEY(oppdrag_id), | ||||
| FOREIGN KEY(oppdrag_id) REFERENCES oppdrag(oppdrag_id), | ||||
| FOREIGN KEY(kandidat_tlf) REFERENCES kandidat(telefon) | ||||
| ); | ||||
| 
 | ||||
| CREATE TABLE sluttatest | ||||
| ( | ||||
| oppdrag_id INT UNSIGNED NOT NULL, | ||||
| attest TEXT, | ||||
| PRIMARY KEY(oppdrag_id), | ||||
| FOREIGN KEY(oppdrag_id) REFERENCES jobbhistorikk(oppdrag_id) | ||||
| ); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user