Databasteknik: Teoriövning 5

Välj själv om du vill göra övningen ensam eller i någon typ av grupp. Det gör inget om en del av frågorna skulle vara svåra att svara på, för de är kanske avsedda att inleda en diskussion snarare än att ha ett enda rätt svar.

Det är inte förbjudet att använda dator, men tanken är inte att man ska behöva det.

Förberedelser

Innan denna övning bör du ha tittat på föreläsning nummer sex om integritetsvillkor, säkerhet och personlig integritet, på YouTube (uppdelad i två Youtube-videor). Man kan också läsa i kursboken eller motsvarande.

Uppgift 1

Här är create table-kommandon för tabellerna Träd, Äpplen och Maskar från teoriövning 4:

create table Träd
(ID integer not null primary key,
Höjd integer not null);

create table Äpplen
(ID integer not null primary key,
Färg varchar(10) not null,
VäxerPå integer not null references Träd(ID));

create table Maskar
(ID integer not null primary key,
Namn varchar(10) not null,
Längd integer,
BorI integer not null references Äpplen(ID));

Här är några alternativa sätt att skriva när vi skapar tabellen Maskar:

create table Maskar (ID integer not null primary
key, Namn varchar(10) not null, Längd integer,
BorI integer not null references Äpplen(ID));

create table Maskar
(ID integer not null,
Namn varchar(10) not null,
Längd integer,
BorI integer not null,
primary key(ID),
foreign key(BorI) references Äpplen(ID));

create table Maskar
(ID integer not null,
Namn varchar(10) not null,
Längd integer,
BorI integer not null);
alter table Maskar add primary key(ID);
alter table Maskar add foreign key(BorI) references Äpplen(ID);

Vilket sätt att skriva är bäst? Diskutera!

Uppgift 2

När vi söker i databasen med SQL-frågor och vill hämta data från flera tabeller, måste vi koppla ihop dem med ett villkor som vi skriver i frågan. Vad är det då bra för mening med att också ange främmande nycklar med foreign key och references?

Uppgift 3

Vi antar att användarna inte arbetar med databasen genom att skriva in SQL-kommandon, utan vi har gjort ett program som de använder, och sen skickar programmet SQL-kommandon till databashanteraren. Vad skulle programmet behöva göra för att motsvara vad databashanteraren gör med de främmande nycklarna?

Uppgift 4

Om man hugger ner ett träd och tar bort det ur databasen, vill vi också ta bort alla äpplen som växte på det trädet, och också alla maskar som bodde i de äpplena. Kan man få databashanteraren att göra detta automatiskt?

Uppgift 5

ID-numret i tabellen är primärnyckel. Om vi antar att två maskar inte kan ha samma namn, hur kan vi ange det?

Uppgift 6

Maskar kan förstås inte ha negativ längd. Kan man ange det när man skapar tabellen?

Uppgift 7

Vad är skillnaden mellan:

Uppgift 8

Vilka olika sätt finns för att identifiera, autentisera och auktorisera en person?

Uppgift 9

Vilka problem finns med lagring av lösenord i en databas? Diskutera!

Uppgift 10

Vilka problem finns med lagring av personnummer i en databas? Diskutera!

Uppgift 11

Vad är det roliga med det här?


(Källa: https://xkcd.com/327/)

Förslag på lösningar

Det finns lösningsförslag till en del av uppgifterna, men försök lösa dem själv först.


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 16 november 2022