PrestaShop-Datenbank: Wichtige Tabellen, die jeder Shopbetreiber kennen sollte
Warum das Verständnis der Datenbank wichtig ist
PrestaShop speichert alles — Produkte, Bestellungen, Kunden, Einstellungen, Übersetzungen, Bilder, Preise — in einer MySQL-Datenbank. Das Verständnis der Datenbankstruktur gibt Ihnen Superkräfte. Sie können Probleme schneller diagnostizieren, Massenoperationen durchführen, die über die Benutzeroberfläche Stunden dauern würden, und sich von Fehlern erholen, die das Admin-Panel zerstören.
PrestaShops Datenbank verwendet ein Präfixsystem (Standard ps_) für alle Tabellennamen.
Produkttabellen
ps_product
Die Kernprodukttabelle mit grundlegenden Produktdaten -
| Spalte | Zweck |
|---|---|
| id_product | Eindeutige Produkt-ID |
| id_category_default | Standardkategorie |
| price | Grundpreis (ohne Steuer) |
| reference | Produktreferenz/SKU |
| active | Aktiviert (1) oder deaktiviert (0) |
ps_product_lang
Sprachspezifische Produktdaten - Name, Beschreibung, Meta-Titel, Meta-Beschreibung, Link-Rewrite (URL-Slug). Eine Zeile pro Produkt pro Sprache pro Shop.
ps_stock_available
Die tatsächliche Bestandsverfolgungstabelle. Hier liest PrestaShop die Lagermengen aus.
-- Bestand für ein bestimmtes Produkt prüfen
SELECT * FROM ps_stock_available
WHERE id_product = 42 AND id_product_attribute = 0;ps_product_attribute
Produktkombinationen/Varianten. Jede Zeile repräsentiert eine bestimmte Attributkombination.
Kategorie-Tabellen
ps_category
Kategoriebaumstruktur mit Nested Sets (nleft, nright, level_depth).
ps_category_product
Many-to-Many-Beziehung zwischen Produkten und Kategorien.
-- Alle Produkte einer bestimmten Kategorie finden
SELECT p.id_product, pl.name, cp.position
FROM ps_category_product cp
JOIN ps_product p ON cp.id_product = p.id_product
JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
WHERE cp.id_category = 5
ORDER BY cp.position;Bestelltabellen
ps_orders
Die wichtigste Handelstabelle. Jede Zeile ist eine abgeschlossene Bestellung mit Referenz, Kunde, Zahlungsmethode, Gesamtbetrag und Datum.
ps_order_detail
Einzelne Positionen innerhalb einer Bestellung mit Produktname, Menge, Stückpreis und Gesamtpreis.
-- Bestellzusammenfassung mit Positionen
SELECT o.reference, o.date_add, o.total_paid_tax_incl,
od.product_name, od.product_quantity, od.unit_price_tax_incl
FROM ps_orders o
JOIN ps_order_detail od ON o.id_order = od.id_order
WHERE o.id_order = 12345;ps_order_history
Ein Protokoll aller Statusänderungen für jede Bestellung mit Zeitstempeln.
Kundentabellen
ps_customer
Kundenkonten mit E-Mail, gehashtem Passwort, Name, Newsletter-Status und Erstellungsdatum.
-- Kunden finden, die sich registriert haben, aber nie bestellt haben
SELECT c.id_customer, c.email, c.firstname, c.date_add
FROM ps_customer c
LEFT JOIN ps_orders o ON c.id_customer = o.id_customer
WHERE o.id_order IS NULL AND c.active = 1;ps_address
Kundenadressen mit Firma, Name, Adresse, PLZ, Stadt, Land, Telefon.
Warenkorb-Tabellen
ps_cart und ps_cart_product
Warenkörbe und deren Produkte. Nicht jeder Warenkorb wird zur Bestellung — abgebrochene Warenkörbe bleiben hier.
-- Abgebrochene Warenkörbe der letzten 7 Tage finden
SELECT c.id_cart, cu.email, c.date_add
FROM ps_cart c
JOIN ps_customer cu ON c.id_customer = cu.id_customer
LEFT JOIN ps_orders o ON c.id_cart = o.id_cart
WHERE o.id_order IS NULL
AND c.date_add > DATE_SUB(NOW(), INTERVAL 7 DAY);Konfigurationstabellen
ps_configuration
Key-Value-Speicher für alle Einstellungen. Jede Option, die Sie im Back Office konfigurieren, wird hier gespeichert.
SELECT name, value FROM ps_configuration
WHERE name IN ('PS_SHOP_DOMAIN', 'PS_SSL_ENABLED', 'PS_SHOP_ENABLE');Modul- und Hook-Tabellen
ps_module, ps_hook, ps_hook_module
Module, Hooks und deren Verknüpfungen. ps_hook_module steuert die Ausführungsreihenfolge.
Häufige Datenbankoperationen
-- Massenpreiserhöhung um 10%
UPDATE ps_product SET price = price * 1.10;
UPDATE ps_product_shop SET price = price * 1.10;
-- Alle nicht vorrätigen Produkte deaktivieren
UPDATE ps_product p
JOIN ps_stock_available sa ON p.id_product = sa.id_product
SET p.active = 0
WHERE sa.quantity <= 0 AND sa.id_product_attribute = 0;Datenbank-Sicherheitsregeln
- Immer vor Änderungen sichern
- ps_shop_url niemals direkt ändern
- Mitarbeiter-Passwörter niemals direkt ändern
- Queries mit SELECT testen, bevor UPDATE oder DELETE ausgeführt wird
War diese Antwort hilfreich?
Haben Sie noch Fragen?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.