Da ihr jetzt schon alles wisst und könnt, ist es Zeit, euer Wissen mal an einem echten Projekt auszuprobieren. Normalerweise werden Datenbanken von realen Projekten so eingeteilt:
- kleine – bis zu 100 Tabellen
- mittlere – 100-1000 Tabellen
- große – ab 1000 Tabellen.
Ohne Erfahrung kann man sich schwer vorstellen, wozu man 100+ Tabellen braucht. Deshalb geb ich euch heute mal die Chance dazu :)
Ich geb euch eine realistische relationale Datenbank für eine E-Commerce-Plattform (Marketplace). Die Datenbank ist in Schemas aufgeteilt, jedes davon deckt einen bestimmten Fachbereich ab: Nutzer, Produkte, Bestellungen, Logistik, Marketing, Support usw.
Das Projekt besteht aus 109 Tabellen, verteilt auf 11 Schemas. Jede Tabelle hat Foreign Keys und ist vorbereitet für Erweiterungen mit Nachschlage- und Systemtabellen.
Datenbankstruktur
Schema user — Nutzer und Aktivität
Das Schema user enthält Tabellen für Accounts, Profile, Kontaktinfos, Login-Logs, Bewertungen und soziale Verbindungen.
Beispiel-Tabellen:
account— Registrierungsdatenprofile— persönliche Infosreview,comment— Bewertungen und Kommentare
Schema product — Produkte und Katalog
Das Schema product enthält Produktbeschreibungen, Varianten, Attribute, Bilder, Status und Änderungshistorie.
Beispiel-Tabellen:
product,variant— Produkte und Modifikationenattribute,tag— Eigenschaften und Tagssupplier,composition— Hersteller und Zusammensetzung
Schema order — Bestellungen und Warenkörbe
Enthält Mechanismen für Bestellabwicklung und -verfolgung, Status, Rückgaben und Zahlungen.
Beispiel-Tabellen:
order,order_itemstatus_log,return,cancellationinvoice,discount
Schema logistics — Lager, Lieferung, Routen
Verwaltung von Lagerbeständen, Bewegungen, Lieferungen und Routen.
Beispiel-Tabellen:
warehouse,inventory,transfershipping_method,packagedriver,carrier,route
Schema payment — Zahlungen und Transaktionen
Speichert Infos zu Zahlungssystemen, Transaktionen, Wallets und Rückerstattungen.
Beispiel-Tabellen:
payment,transaction,refundwallet,wallet_transactiongateway,method
Schema marketing — Aktionen und Werbung
Enthält Tabellen für Promo-Codes, Banner, Referral-Programme und hervorgehobene Produkte.
Beispiel-Tabellen:
campaign,promo_code,discountreferral_program,featured_product
Schema support — Technischer Support
Ticketsystem, Nachrichten, Status und Feedback zum Support.
Beispiel-Tabellen:
ticket,ticket_message,ticket_statusagent,feedback
Schema analytics — Metriken und Verhalten
Tracking von Sessions, User-Aktionen, Conversions und Metriken.
Beispiel-Tabellen:
event,session,click,page_viewgoal,metric_snapshot
Schema admin — Administration und Management
Tabellen für Admins, Rollen, Audit-Logs und Systemeinstellungen.
Beispiel-Tabellen:
admin,admin_roleaudit_log,setting,api_token
Schema content — Statische Seiten und Blöcke
Content für CMS: Seiten, Menüs, Übersetzungen und Versionen.
Beispiel-Tabellen:
page,block,menu,translation,version
Schema ref — Nachschlage- und Meta-Tabellen
Typen, Status, Länder, Rückgabegründe usw.
Beispiel-Tabellen:
country,currency,status,payment_statusrefund_reason,inventory_change_reason
Tabellen erstellen
Damit ihr's leichter habt, geb ich euch fertige Skripte zum Erstellen aller Datenbanktabellen.
Ihr müsst einfach nur das SQL-Skript runterladen und ausführen.
- Erstellen Sie eine leere Datenbank in PostgreSQL.
- Laden Sie das Schema herunter.
- Importieren Sie die Datenbankstruktur:
psql -U postgres -d marketplace_db < init_schema.sql
Daten laden
Auch die Daten für alle Tabellen.
GO TO FULL VERSION