Einkaufszettel in PHP: Datenstruktur

Nachdem wir uns im ersten Teil Gedanken über die Klasse SimpleShoppinglist gemacht habe, wollen wir in diesem Teil die Datenstruktur entwerfen. Im dritten Teil werden wir dann unseren Einkaufszettel in PHP – die Klasse SimpleShoppinglist – implementieren.

Für unseren Einkaufszettel beötigen wir eine Tabelle shoppinglist mit den Feldern

  • id,
  • position und
  • ticked_off.

Das Feld id soll unser Primärschlüssel sein. Es soll ein Integer-Wert sein, der sich bei jedem Aufschreiben automatisch erhöht.

Das Feld position ist der eigentliche Eintrag, der Posten, auf unserem Einkaufszettel. Es soll eine Zeichenkette variabler Länge sein. Ich denke, daß kein Eintrag länger mehr als einhundert Zeichen umfassen muß. Weiterhin darf dieses Feld nicht leer sein, nicht NULL sein.

Nun wäre natürlich die Frage berechtigt: Warum soll der Posten ausgerechnet eine Zeichenkette sein? Warum wird der Posten nicht durch die Felder Anzahl, Einheit und Produktbezeichnung viel besser erfaßt? Ich persönlich notiere Mengenangaben eigentlich nur, wenn ich sicherstellen will, daß ich mindestens die angegebene Menge kaufe. Anderenfalls entscheide ich spontan, wieviel ich davon benötige. Manchmal schreibe ich auch abstrakte Sachen statt konkreter Produkte auf, z. B. Gemüse statt Tomaten, Gurken und Möhren. Ich denke, den meisten Menschen geht es ebenso. Und da uns der elektronische Einkaufszettel die Arbeit erleichtern und nicht erschweren soll, habe ich mich für die einfachste und flexibelste Variante entschieden: eine Zeichenkette.

In dem Feld ticked_off soll schließlich festgehalten werden, ob der Posten abgehakt ist oder nicht. Dazu reicht uns ein Boolscher Wert. Standardmäßig soll dieser Wert false sein, also nicht abgehakt.

Jetzt wollen wir aus unseren Anforderungen ein SQL-Statement basteln, welches die Tabelle shoppinglist erstellt. Da verschiedene Datenbanksysteme unterschiedliche SQL-Dialekte haben, gibt es das Statement für MySQL und PostgreSQL.

MySQL:

CREATE TABLE shoppinglist (
    id         INTEGER AUTO_INCREMENT PRIMARY KEY,
    position   VARCHAR(100) NOT NULL,
    ticked_off BOOLEAN NOT NULL DEFAULT false
)
 

PostgreSQL:

CREATE TABLE shoppinglist (
    id         SERIAL PRIMARY KEY,
    position   VARCHAR(100) NOT NULL,
    ticked_off BOOLEAN NOT NULL DEFAULT false
)
 

Jetzt führen wir in unserem Datenbanksystem das entsprechende Statement aus und die Tabelle für unseren Einkaufszettel steht bereit. Jetzt müssen wir uns nur noch um die Implementierung der Klasse SimpleShoppinglist kümmern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.