slogan3

Help mij bij het ontwerpen van een relationeel databasemodel met SQL

description

Met deze prompt krijg je concrete hulp bij het structureren van je database, waardoor je efficiëntere queries kunt schrijven en beter inzicht krijgt in je datamodel. Dit voorkomt veelvoorkomende ontwerpfouten en bespaart tijd bij het bouwen van databases.

prompt

Help mij een relationeel databasemodel te ontwerpen voor het volgende scenario: <beschrijf jouw scenario of use case> Geef aan w ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hieronder vind je een voorstel voor een relationeel databasemodel voor een webshop met klanten, bestellingen en producten. **Tabellen en relaties:** 1. **Klanten** (`Customers`) - Bevat informatie over klanten 2. **Producten** (`Products`) - Bevat informatie over producten 3. **Bestellingen** (`Orders`) - Bevat informatie over een bestelling, gekoppeld aan een klant 4. **Bestelregels** (`OrderItems`) - Bevat details over welke producten in een bestelling zitten, inclusief hoeveelheid en prijs **Relaties:** - Eén klant kan meerdere bestellingen plaatsen (1:N tussen `Customers` en `Orders`) - Eén bestelling kan meerdere producten bevatten (N:M tussen `Orders` en `Products` via `OrderItems`) --- ### SQL-code voor het maken van de tabellen: ```sql -- Klantentabel CREATE TABLE Customers ( CustomerID INT AUTO_INCREMENT PRIMARY KEY, Naam VARCHAR(100) NOT NULL, Email VARCHAR(100) UNIQUE NOT NULL, Telefoon VARCHAR(20), Adres VARCHAR(255), Postcode VARCHAR(10), Plaats VARCHAR(50), Land VARCHAR(50) ); -- Productentabel CREATE TABLE Products ( ProductID INT AUTO_INCREMENT PRIMARY KEY, Naam VARCHAR(100) NOT NULL, Beschrijving TEXT, Prijs DECIMAL(10,2) NOT NULL, Voorraad INT NOT NULL ); -- Bestellingentabel CREATE TABLE Orders ( OrderID INT AUTO_INCREMENT PRIMARY KEY, CustomerID INT, OrderDatum DATETIME DEFAULT CURRENT_TIMESTAMP, Status VARCHAR(50), FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ); -- Bestelregels (orderregels) tabel CREATE TABLE OrderItems ( OrderItemID INT AUTO_INCREMENT PRIMARY KEY, OrderID INT, ProductID INT, Aantal INT NOT NULL, Prijs DECIMAL(10,2) NOT NULL, FOREIGN KEY (OrderID) REFERENCES Orders(OrderID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ); ``` --- ### Samenvatting: - **`Customers`**: klantgegevens - **`Products`**: productgegevens - **`Orders`**: informatie over bestellingen, gekoppeld aan klanten - **`OrderItems`**: details van producten in een bestelling Deze structuur zorgt voor een flexibel en normaalvormig datamodel, waarmee je gemakkelijk klanten, bestellingen en producten kunt beheren en koppelen. Heeft u nog verdere wensen of vragen?
provider: deepseek
model: deepseek-chat
Zeker, hier is een relationeel databasemodel voor jouw webshop-scenario: ## Tabellen en Relaties **1. Klanten (customers)** - Primair sleutel: customer_id (INT, AUTO_INCREMENT) - Velden: voornaam, achternaam, email, telefoon, adres, postcode, stad **2. Producten (products)** - Primair sleutel: product_id (INT, AUTO_INCREMENT) - Velden: naam, beschrijving, prijs, voorraad, categorie **3. Bestellingen (orders)** - Primair sleutel: order_id (INT, AUTO_INCREMENT) - Foreign key: customer_id (koppeling naar customers) - Velden: order_datum, status, totaalbedrag **4. Orderregels (order_items)** - Samengestelde primaire sleutel: order_id + product_id - Foreign keys: order_id (naar orders), product_id (naar products) - Velden: hoeveelheid, eenheidsprijs ## Relatieschema - customers (1) → (n) orders - orders (1) → (n) order_items - products (1) → (n) order_items ## SQL CREATE Statements ```sql -- Klanten tabel CREATE TABLE customers ( customer_id INT AUTO_INCREMENT PRIMARY KEY, voornaam VARCHAR(50) NOT NULL, achternaam VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, telefoon VARCHAR(20), adres VARCHAR(100), postcode VARCHAR(10), stad VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Producten tabel CREATE TABLE products ( product_id INT AUTO_INCREMENT PRIMARY KEY, naam VARCHAR(100) NOT NULL, beschrijving TEXT, prijs DECIMAL(10,2) NOT NULL, voorraad INT DEFAULT 0, categorie VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Bestellingen tabel CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, customer_id INT NOT NULL, order_datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status ENUM('verwerkt', 'verzonden', 'afgeleverd', 'geannuleerd') DEFAULT 'verwerkt', totaalbedrag DECIMAL(10,2) NOT NULL, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); -- Orderregels tabel CREATE TABLE order_items ( order_id INT NOT NULL, product_id INT NOT NULL, hoeveelheid INT NOT NULL, eenheidsprijs DECIMAL(10,2) NOT NULL, PRIMARY KEY (order_id, product_id), FOREIGN KEY (order_id) REFERENCES orders(order_id), FOREIGN KEY (product_id) REFERENCES products(product_id) ); ``` ## Optionele optimalisaties: - Indexen toevoegen voor veelgebruikte zoekvelden (email, categorie, status) - Triggers voor voorraadbeheer bij bestellingen - Tabel voor klantbetalingen toevoegen indien nodig Dit model volgt de 3e normaalvorm en zorgt voor efficiënte data-opslag zonder redundantie.