Formål: I denne opgave skal du bruge din grundlæggende viden om databaser til at oprette en simpel database for en virksomhed. Du skal arbejde med attributter, entiteter, relationer, ER-diagrammer og SQL-søgninger i SQLite.
Scenarie: Forestil dig, at du er blevet ansat som IT-assistent i en lille virksomhed, der sælger forskellige elektronikprodukter. Din chef har bedt dig om at oprette en database for at holde styr på virksomhedens produkter, kunder og salg. Virksomheden bruger SQLite som databasesystem.
Opgavebeskrivelse:
Design en simpel database for virksomheden ved at identificere de nødvendige entiteter og attributter.
Tænk over, hvilke oplysninger virksomheden skal holde styr på, såsom produkter, kunder og salg.
Skriv entiteterne og attributterne ned, så du har en oversigt over, hvad databasen skal indeholde.
Tegn et ER-diagram for databasen.
Vis de forskellige entiteter og attributter i diagrammet og angiv nøglerne (primære og fremmede) for hver entitet.
Angiv relationerne mellem entiteterne og noter kardinaliteten (én-til-mange, mange-til-mange osv.) for hver relation.
Opret databasen og tabellerne i SQLite.
Brug SQL-syntaksen "CREATE TABLE" til at oprette tabeller for hver entitet i databasen.
Definer attributterne og deres datatyper, og angiv nøglerne (primære og fremmede) for hver tabel.
Test, at tabellerne er oprettet korrekt ved at bruge SQLite's kommandoer til at vise tabelstrukturen (f.eks. ".schema").
Indsæt eksempeldata i tabellerne.
Brug SQL-syntaksen "INSERT INTO" til at indsætte nogle eksempler på produkter, kunder og salg i databasen.
Sørg for, at dataene er realistiske og følger de regler, du har defineret i tabellerne (f.eks. nøgler og relationer).
Her er eksempler på, hvordan I kan bruge SQL-syntaksen "INSERT INTO".
Udfør SQL-søgninger for at finde relevant information i databasen.
Skriv og udfør SQL-forespørgsler, der illustrerer, hvordan databasen kan bruges til at besvare forskellige spørgsmål fra virksomheden, såsom:
Liste over alle produkter med deres priser
Liste over alle kunder og deres kontaktoplysninger
Liste over alle salg og den samlede omsætning
Liste over alle produkter, der er solgt til en bestemt kunde
Test dine forespørgsler i SQLite og verificer, at de returnerer de korrekte resultater.
Se eksempler på SQL-søgninger her.
Når du har gennemført alle trinene, skal du aflevere følgende:
En liste over entiteter og attributter for databasen.
Et ER-diagram for databasen, der viser entiteter, attributter, nøgler og relationer.
SQL-kommandoer, der opretter tabellerne i SQLite.
SQL-kommandoer, der indsætter eksempeldata i tabellerne.
SQL-søgninger, der demonstrerer, hvordan databasen kan bruges til at finde relevant information.
Tips:
Tag dig god tid til at tænke over, hvilke entiteter og attributter der er nødvendige for virksomhedens database. Overvej, hvordan databasen kan skaleres og udvides i fremtiden, hvis virksomheden vokser.
Sørg for, at ER-diagrammet er klart og let at forstå. Du kan bruge papir og blyant, et tegneprogram eller et specialiseret ER-diagramværktøj til at lave diagrammet.
Vær opmærksom på SQLite's syntaks og funktioner, når du arbejder med SQL-kommandoer. Hvis du er i tvivl om, hvordan en bestemt kommando fungerer, kan du konsultere SQLite's dokumentation eller søge efter eksempler og vejledninger online.
Test dine SQL-søgninger grundigt og sørg for, at de returnerer de forventede resultater. Overvej forskellige scenarier og hvordan databasen kan bruges til at besvare forskellige spørgsmål fra virksomheden.
Held og lykke med opgaven!
Husk, at det vigtigste er at lære og forstå de grundlæggende koncepter inden for databaser og anvende dem i praksis.
Her er nogle eksempler på entiteter og deres attributter for en elektronikvirksomhed:
Entitet: Produkt
Attributter:
produkt_id (primær nøgle)
produktnavn
kategori
pris
lagerbeholdning
beskrivelse
Entitet: Kunde
Attributter:
kunde_id (primær nøgle)
fornavn
efternavn
telefonnummer
adresse
postnummer
by
Entitet: Salg
Attributter:
salgs_id (primær nøgle)
kunde_id (fremmed nøgle, refererer til Kunde)
produkt_id (fremmed nøgle, refererer til Produkt)
salgsdato
antal
totalpris
Disse entiteter og attributter repræsenterer en simpel struktur for en database, der kan holde styr på virksomhedens produkter, kunder og salg. Du kan tilpasse denne struktur efter virksomhedens specifikke behov og tilføje yderligere entiteter og attributter, hvis det er nødvendigt.
Her er nogle eksempler på SQL-søgninger, du kan bruge til at finde relevant information i databasen:
Liste over alle produktnavne:
SELECT produktnavn FROM Produkt;
Liste over alle produkter med deres priser:
SELECT produktnavn, pris FROM Produkt;
Liste over alle kundernes fornavne og efternavne:
SELECT fornavn, efternavn FROM Kunde;
Liste over alle kunder og deres kontaktoplysninger:
SELECT fornavn, efternavn, email, telefonnummer, adresse, postnummer, by FROM Kunde;
Liste over alle produkter med en pris højere end 1000:
SELECT produktnavn, pris FROM Produkt WHERE pris > 1000;
Liste over alle salg foretaget på en bestemt dato (for eksempel '2023-01-15'):
SELECT salgs_id, kunde_id, produkt_id, antal, totalpris FROM Salg WHERE salgsdato = '2023-01-15';
Liste over alle kunder, der bor i en bestemt by (for eksempel 'København'):
SELECT fornavn, efternavn FROM Kunde WHERE by = 'København';
Her er nogle eksempler på, hvordan I kan indsætte data i tabellerne for elektronikbutikken.
Bemærk, at disse eksempler antager, at tabellerne allerede er oprettet i databasen.
Hvis jeres tabeller er oprettet med andre entiteter og attributter skal I ændre jeres kommandoer, så de svarer til jeres databasestruktur.
Eksemplerne herunder tager udgangspunkt i tabeller, hvor entiteterne og attributterne for elektronikbutikken ser sådan ud:
Entitet: Produkt
Attributter:
produkt_id (primær nøgle)
produktnavn
kategori
pris
lagerbeholdning
Entitet: Kunde
Attributter:
kunde_id (primær nøgle)
fornavn
efternavn
telefonnummer
adresse
postnummer
by
Entitet: Salg
Attributter:
salgs_id (primær nøgle)
kunde_id (fremmed nøgle, refererer til Kunde)
produkt_id (fremmed nøgle, refererer til Produkt)
salgsdato
antal
totalpris
Så kan I f.eks. bruge disse SQL kommandoer:
Indsæt et nyt produkt i Produkt-tabellen:
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (1, 'Apple iPhone 13', 'smartphone', 7999, 25);
Indsæt en ny kunde i Kunde-tabellen:
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (1, 'Mads', 'Jensen', 'mads.jensen@example.com', '12345678', 'Elektronikvej 1', 5000, 'Odense');
Indsæt et nyt salg i Salg-tabellen:
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (1, 1, 1, '2023-05-10', 1, 7999);
I kan gentage denne proces for at indsætte flere rækker med data i tabellerne.
Husk at erstatte værdierne i VALUES-delen med de faktiske data, I ønsker at indsætte. Og I skal sørge for, at primære nøgler er unikke, og at fremmede nøgler refererer til eksisterende rækker i relaterede tabeller.
Her er 10 eksempler på hver entitet i din elektronikdatabase:
Produkter
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (1, 'Apple iPhone 13', 'smartphone', 7999, 25);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (2, 'Samsung Galaxy S22', 'smartphone', 7599, 30);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (3, 'Apple MacBook Pro', 'laptop', 13999, 15);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (4, 'Dell XPS 13', 'laptop', 9999, 20);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (5, 'Sony WH-1000XM4', 'headphones', 2499, 50);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (6, 'Apple iPad Pro', 'tablet', 8999, 30);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (7, 'Samsung Galaxy Tab S8', 'tablet', 6999, 40);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (8, 'Apple Watch Series 7', 'smartwatch', 3499, 35);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (9, 'Samsung Galaxy Watch 4', 'smartwatch', 2999, 40);
INSERT INTO Produkt (produkt_id, produktnavn, kategori, pris, lagerbeholdning)
VALUES (10, 'JBL Flip 6', 'bluetooth speaker', 1299, 60);
Kunder
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (1, 'Mads', 'Jensen', 'mads.jensen@example.com', '12345678', 'Elektronikvej 1', 5000, 'Odense');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (2, 'Sofie', 'Nielsen', 'sofie.nielsen@example.com', '23456789', 'Elektronikvej 2', 8000, 'Aarhus');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (3, 'Oliver', 'Hansen', 'oliver.hansen@example.com', '34567890', 'Elektronikvej 3', 1050, 'København');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (4, 'Freja', 'Christensen', 'freja.christensen@example.com', '45678901', 'Elektronikvej 4', 5000, 'Odense');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (5, 'Noah', 'Larsen', 'noah.larsen@example.com', '56789012', 'Elektronikvej 5', 6000, 'Kolding');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (6, 'Clara', 'Petersen', 'clara.petersen@example.com', '67890123', 'Elektronikvej 6', 8600, 'Silkeborg');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (7, 'Lucas', 'Johansen', 'lucas.johansen@example.com', '78901234', 'Elektronikvej 7', 5000, 'Odense');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (8, 'Emma', 'Andersen', 'emma.andersen@example.com', '89012345', 'Elektronikvej 8', 7100, 'Vejle');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (9, 'William', 'Thomsen', 'william.thomsen@example.com', '90123456', 'Elektronikvej 9', 2200, 'København');
INSERT INTO Kunde (kunde_id, fornavn, efternavn, email, telefonnummer, adresse, postnummer, by)
VALUES (10, 'Ida', 'Sørensen', 'ida.sorensen@example.com', '01234567', 'Elektronikvej 10', 6100, 'Haderslev');
Salg
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (1, 1, 1, '2023-05-10', 1, 7999);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (2, 2, 3, '2023-05-11', 1, 13999);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (3, 3, 2, '2023-05-12', 1, 7599);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (4, 4, 5, '2023-05-13', 2, 4998);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (5, 5, 7, '2023-05-14', 1, 6999);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (6, 6, 6, '2023-05-15', 1, 8999);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (7, 7, 4, '2023-05-16', 1, 9999);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (8, 8, 8, '2023-05-17', 1, 3499);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (9, 9, 9, '2023-05-18', 1, 2999);
INSERT INTO Salg (salgs_id, kunde_id, produkt_id, salgsdato, antal, totalpris)
VALUES (10, 10, 10, '2023-05-19', 2, 2598);