PrestaShop-Datenbank: Wichtige Tabellen, die jeder Shopbetreiber kennen sollte

384 Aufrufe

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 -

SpalteZweck
id_productEindeutige Produkt-ID
id_category_defaultStandardkategorie
priceGrundpreis (ohne Steuer)
referenceProduktreferenz/SKU
activeAktiviert (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.

Lade ...
Nach oben