Database Exercises
Online Store database

Task: Database Design for an Online Store

As a database designer, your task is to create a relational database for our online store. The following requirements are described from the perspective of end-users and store managers. You should decide the appropriate tables, relationships, and fields based on these needs.

  • Customers
    • We want to store information about people who shop on our website, including their name, email, phone number, and shipping address.
    • Customers should be able to have multiple shipping addresses.
  • Products
    • We sell a variety of products and need to store details such as product name, description, price, and stock quantity.
    • Products can belong to one or more categories.
  • Orders
    • Customers can place orders that contain multiple products.
    • Each order should store the customer who placed it, the date, and the order status (e.g., pending, shipped, delivered).
  • Order Items
    • Each order can include multiple products with specific quantities and prices at the time of purchase.
  • Payments
    • We need to track payments for each order, including payment method (credit card, PayPal, etc.), date, and amount.
  • Product Reviews
    • Customers should be able to leave reviews for products, including a rating and optional comment.
    • We want to track which customer left which review and when.
  • Shopping Cart
    • Customers can add products to a shopping cart before placing an order.
    • The system should store the products in the cart and their quantities temporarily for each customer.

Using these requirements, design a relational database structure that supports all user interactions described. Decide how many tables are needed, their fields, and the relationships between them.


  • Asiakkaat
    • Haluamme tallentaa verkkokaupassamme asioivien henkilöiden tiedot, kuten nimen, sähköpostiosoitteen, puhelinnumeron ja toimitusosoitteen.
    • Asiakkaalla voi olla useita toimitusosoitteita.
  • Tuotteet
    • Myymme erilaisia tuotteita ja meidän tulee tallentaa tiedot, kuten tuotteen nimi, kuvaus, hinta ja varastosaldo.
    • Tuotteet voivat kuulua yhteen tai useampaan kategoriaan.
  • Tilaukset
    • Asiakkaat voivat tehdä tilauksia, jotka sisältävät useita tuotteita.
    • Jokaisesta tilauksesta tulee tallentaa tilaaja, tilauspäivämäärä ja tilauksen tila (esim. odottaa käsittelyä, lähetetty, toimitettu).
  • Tilausrivit
    • Jokainen tilaus voi sisältää useita tuotteita, joilla on tietyt määrät ja ostohetken hinnat.
  • Maksut
    • Meidän tulee seurata jokaiseen tilaukseen liittyviä maksuja, mukaan lukien maksutapa (luottokortti, PayPal jne.), päivämäärä ja summa.
  • Tuotearvostelut
    • Asiakkaiden tulee voida jättää tuotteista arvosteluja, jotka sisältävät arvosanan ja valinnaisen kommentin.
    • Haluamme seurata, mikä asiakas jätti minkäkin arvostelun ja milloin.
  • Ostoskori
    • Asiakkaat voivat lisätä tuotteita ostoskoriin ennen tilauksen tekemistä.
    • Järjestelmän tulee tallentaa ostoskorissa olevat tuotteet ja niiden määrät väliaikaisesti asiakaskohtaisesti.

Näiden vaatimusten perusteella suunnittele relaatiotietokannan rakenne, joka tukee kaikkia kuvattuja käyttäjätoimintoja. Päätä tarvittavien taulujen määrä, niiden kentät sekä taulujen väliset suhteet.

Design Steps



Toggle Menu