It’s all about branding.

Schermafdruk van webshop aan het einde van dit hoofdstuk.
In dit hoofdstuk ga je een merk toevoegen aan elk product. Merk en product hebben een 1:n-relatie.
4.1Uitleg: Tabellen met 1:n-relatie maken¶
4.2Opdracht: Voeg merk toe aan de database¶
In deze opdracht ga je een merk (Engels: brand) toevoegen aan elk artikel in de database. Elk artikel is van één merk. Een merk heeft één of meer artikelen.
Her merk wordt niet automatisch zichtbaar in je webshop, dat doen we in de volgende opdracht.
Tips
Gebruik de SQL-opdracht
CREATE TABLE
Na een aanpassing moet je de database opnieuw maken met het terminal-commando
bash start.sh
. Let op of er foutmeldingen in de terminal verschijnen.Als je geen producten meer ziet in je shop, dan heb je waarschijnlijk een fout gemaakt waardoor de webshop de database niet opnieuw kan maken. Bekijk de foutmeldingen in de terminal.
Tips
gebruik de SQL-opdracht
INSERT INTO
Tips
Voeg de verwijzende sleutel en de constraint toe aan de tabel
products
.De verwijzende sleutel heeft het datatype
INTEGER
.De contraint is van de vorm met
FOREIGN KEY(
verwijzende_sleutel) REFERENCES(
tabel.
primaire_sleutel)
De volgorde waarin je tabellen in je SQL-bestand zet doet ertoe. De tabel
brandss
moet je eerder maken dan de tabelproducts
, anders dan kent de computer de tabelbrands
nog niet als je ernaar wilt verwijzen in je constraint.
Tips
Pas de
INSERT INTO
-opdracht die deproducts
-tabel vult aan.Voeg het veld
brand_id
toe aanINSERT INTO products
en geef voor elk product het nummer van de soort op.
4.3Uitleg: Query met 1:n-relatie maken¶
4.4Opdracht: Maak merk zichtbaar in de webshop¶
Je hebt in de vorige opdracht het merk aan alle artikelen in de database toegevoegd. Maar de naamm van het merk is nog niet te zien op de webshop. Dat komt omdat de API niks doet met de merken-tabel de database. In deze opdracht ga je de API aanpassen, zodat de informatie uit de merken-tabel wordt doorgeven aan de client. De client is zo gemaakt dat hij deze extra informatie automatisch toont.
Tips
De aanpassing moet je doen in de API, in het bestand
/app/main.py
De query die je moet aanpassen is
SELECT * FROM products;
Voeg aan de query een
JOIN
toe tussen de tabellenproducts
enbrands
.Als je op de plaats van de naam van je product de naam van het merk ziet, dan komt dat omdat onze client
products.name
metbrands.name
overschrijft. Laat dat voor nu even zo, in de volgende opdracht leer je hoe je dit oplost.
Tips
De query die je moet aanpassen is
SELECT * FROM products JOIN ...
In de query moet je
SELECT * FROM
vervangen doorSELECT products.name, products.image_link, products.price ... FROM
. Op de puntjes vul je de overige veldnamen in.Je kunt velden een andere naam in de website geven met
AS
. BijvoorbeeldSELECT description
vervangen doorSELECT description AS beschrijving
.In de database kun je dezelfde veldnamen in meerdere tabellen gebruiken. Onze api stuurt de namen van de velden zonder tabelnaam naar de client. De client ziet daardoor het verschil niet tussen velden met dezelfde naam uit verschillende tabellen. Je kunt dat oplossen in de query die je in de api gebruikt. Daar kun je de velden met dezelfde naam een unieke naam geven. Bijvoorbeeld:
SELECT products.name, brands.name
wordtSELECT products.name, brands.name AS merk