2017-05-25 2 views
0

Guten Tag alle, ich habe keine Antwort auf meine Frage im Netz gefunden. Ich habe einige Tabellen in meiner Datenbank, die nur wenige Zeilen enthalten und nicht mehr haben. Zum Beispiel:Sollte ich eine Tabelle für nur wenige Zeilen erstellen?

1- status_orders (payed, declined, shipped, delivered, returned, ...) 

2- payment_means (card, cheque, bank transfer, paypal, ...) 

zu wissen, dass ich eine mehrsprachige Website haben, muss ich andere Tabellen erstellen, die Übersetzungen enthalten, was bedeutet, mehr JOINS ...

Glaubst du, ich halten sollte es so oder einfach tun Verwenden Sie ein PHP-Array und speichern Sie den Schlüssel in der Datenbank oder vielleicht gibt es einen anderen besseren Weg, um damit umzugehen!

Vielen Dank

Antwort

1

Ich glaube, es ist eine gute Sache, diese Werte in der Datenbank gespeichert zu haben.

Wenn ein anderes System Daten aus Ihrer Datenbank abfragen möchte, kann dieses System wissen, was diese Status sind. Dies ist nicht der Fall, wenn diese Status in Ihrem Code enthalten sind.

jedoch für die Übersetzungen, sehe ich 3 Möglichkeiten:

  • eine Tabelle, wo Sie sie gespeichert (verursacht mehr beitreten, wie Sie gerade erwähnt)
  • ein Feld hat für jeden Wert Ihrer Tabelle und speichern der Übersetzungen in einem JSON Array-Format

    [{Sprache: "fr", Wert: "Description du type"}, {Sprache: "en", Wert: "Beschreibung type"}]

  • Speichern Sie die Übersetzungen Ihrer Typen in Ihrem PHP-Code

+0

Danke Elferone für Ihre Antwort. Eigentlich arbeiten wir nicht mit externen Systemen, die unsere Datenbank für diese Felder anfordern können! Für die Übersetzung verwende ich vorerst 2 Tabellen (status_orders & status_orders_translations), aber ich suche diese zu optimieren. Aber in Bezug auf db-Design, ist es nicht besser, Tabellen nur für wachsende Daten zu verwenden? – Websphere

+0

Ich sehe kein Problem mit Tabellen zum Speichern dieser Art von Daten. Was Ihre Übersetzungstabellen betrifft, könnten Sie eine generische tun. In diesem Fall müssen Sie nicht jedes Mal eine Tabelle erstellen, wenn Sie Ihrem Modell eine Entität hinzufügen. Nur ein Vorschlag! – Elferone

+0

Es gibt absolut kein Problem, aber ich habe gerade gehört, dass, wenn eine Tabelle Daten enthält, die niemals wachsen, es besser ist, es anders zu machen, weil wir unnötige JOINS haben, die die Abfrage verlangsamen können, und deshalb poste ich darüber :) – Websphere

1

Es gibt Zeiten, in denen es sinnvoll ist, mit einer Reihe einen Tisch zu haben, mit einer Spalte. Daher sind Tabellen mit ungerader Größe manchmal die "richtige Anwendung".

PHP ist eine verlockende Alternative, aber wie würden Sie die Informationen "beibehalten"? Und wenn Sie diese kleine Tabelle zu etwas anderem JOIN können, könnte das einfacher als das Mischen von Metaphern (SQL und PHP) sein.

Denken Sie an die Datenbanken als "Quelle der Wahrheit" für alle Daten. Stellen Sie sich Ihren Client (PHP) als die "Business-Logik-Engine" vor, die diese Daten manipuliert (z. B. und) (z. B. über eine Webseite).

+0

Danke Rick für deine Antwort.Was meinst du mit "beharrst die Information"? Nun, in einer Abfrage mit etwa 8 Tabellen habe ich einige Tests durchgeführt und festgestellt, dass JOIN mit 1 oder 2 weiteren Tabellen die Abfragezeit um etwa 0,2s erhöht. Darüber hinaus benötigen die Tabellen, über die gesprochen wird, jeweils eine zusätzliche Tabelle für Übersetzungen:/ – Websphere

+0

"Persistent" bedeutet, die Daten irgendwo zu speichern, damit sie bei der nächsten Ausführung des Programms gespeichert werden. Wenn nichts gespeichert werden muss, ist der Punkt strittig. Der 'JOIN' sollte nicht viel hinzufügen; Lassen Sie uns die Abfrage sehen und 'SHOW CREATE TABLE'; vielleicht fehlt ein Index - vor allem ein "Composite" -Index. –

+0

Ah ok, danke für die Erklärung;) nichts muss gespeichert werden da sich diese Werte nicht ändern, oder vielleicht werde ich ne neuen Bestellstatus hinzufügen aber es wird nicht mehr als einmal im Jahr passieren ...:) Ich habe den db-Entwurf vorerst nicht fertiggestellt, ich werde meinen ersten Beitrag aktualisieren, wenn ich dazu komme;) – Websphere

Verwandte Themen