Datenbankdesign kennen lernen.
Dieser Artikel soll Einsteigern einen kleinen Einstieg ins Datenbankdesign vermitteln.
Das Datenbankdesign von OXID eShop ist sehr logisch aufgebaut.
Ein Model besitzt in der Regel eine dazugehörige Datenbanktabelle. Beispiel die Datenbanktabelle oxarticles
wird dem Model /application/models/oxarticle.php
zugeordnet.
Zusätzlich gibt es eine Vielzahl von Verknüpfungstabellen. Die Verknüpfungstabellen enthalten meist eine “2” innerhalb ihres Datenbanktabellennamens z.B. oxobject2category
.
Tabellenspaltennamen | Bedeutung |
---|---|
OXID | Eindeutige ID |
OXPARENTID | ID des Vaterartikels |
OXSHOPID | ID des Shops, interessant ab EE Shops mit Subshops |
OXOBJECTID | Verknüpfungstabellen, verknüpfte ID |
OXACTIVE | Aktiv ja/nein |
OXACTIVEFROM | Aktivierungszeitpunkt ab |
OXACTIVETO | Aktivierungszeitpunkt bis |
OXTITLE | Titel |
OXSORT | Sortierung für die Reihenfolge |
OXTIMESTAMP | Aktualisierungszeitpunkt des Datensatzes |
Datenbank Views werden innerhalb OXID eShops verwendet um z.B. unterschiedliche Sprachen abzubilden.
VIEWs sind Abfragen, die in der Datenbank als Objekt fest gespeichert sind. Sie können als virtuelle Tabellen verstanden werden, deren Inhalt und Struktur auf anderen Tabellen oder Views basieren, und können in (fast) jedem SELECT-Befehl anstelle einer „echten“ Tabelle verwendet werden.
Quelle: Wikibooks – Erstellen von Views
Die Datenverarbeitung läuft über das jeweilige Model der Datenbanktabelle.
Zum Auslesen der Daten instanziiert man die Modelklasse über das OXID Framework und lädt über die OXID den Datensatz in der Datenbanktabelle.
$product = oxNew( 'oxarticle' ); // creating model's object
$product->load( 'demoId' ); // loading data
//getting some informations
echo $product->oxarticles__oxtitle->value;
echo $product->oxarticles__oxshortdesc->value;
$product = oxNew( 'oxarticle' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();
$product = oxNew( 'oxarticle' );
$product->load( 'demoId' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();
$product = oxNew( 'oxarticle' );
$product->setId( 'demoId' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();
Quelle: Tutorials/Getting, updating and storing database data
Da sich die Datenbankstruktur auch im Laufe der Zeit von Version zu Version verändert lohnt ein Blick in die Datenbankstruktur Dokumentation des Wikis unter Documentation -> DB documentation.