2016-06-20 14 views
0

Ich möchte eine Datenbank für meine Praxis entwerfen, aber ich blieb ohne eine Idee stecken. Also würde ich gerne einen Tipp oder Rat von irgendwelchen erfahrenen Entwicklern hier bekommen.Wie man Tabelle für Datenbank entwirft, wenn wir nicht genaue Daten wissen, die in Tabelle kommen?

Ich möchte eine Datenbank für einen "Tailor-Shop" entwerfen. Im Geschäft ist unser Hauptprodukt Hemden und Röcke.
Also erstelle ich zwei Tabellen für Rock und Shirt mit wenigen Attributen oder Spalten.
Aber das Problem ist, dass, wenn jemand kommen würde, um etwas anderes zu nähen, wir es auch nähen würden.
Also wie kann ich den Tisch für diese Sache machen, wenn wir nicht wissen, was das sein wird und was wird sein Attribut sein?

+1

[Gemäß der Dokumentation] (http://dev.mysql.com/doc/refman/5.7/en/json.html) unterstützt MySql JSON als Datentyp. Sie könnten eine allgemeine Produkttabelle mit allen in einer JSON-Spalte gespeicherten Produkteigenschaften haben. Eine weitere Option ist die Verwendung des EAV-Anti-Patterns. –

+0

Was @ZoharPeled erwähnt. Verwenden Sie den 'JSON'-Datentyp oder' EAV'. Wenn Sie diese Begriffe googlen, erhalten Sie entsprechende Ergebnisse. Ihre Frage kann zu einer langen Diskussion führen und dazu führen, dass die Leute eigensinnige Antworten geben (da jeder glaubt, dass sie sich etwas Neues oder Gutes einfallen lassen können), manche könnten sogar NoSQL vorschlagen. Jedoch - bis auf den Kern - speichert es entweder unbekannte Daten in der 'JSON'-Spalte oder erstellt ein Entity-Attribut-Wert-Datenmodell, das aus ein paar Tabellen besteht. Wenn ich mich nicht irre, verwendet Magento es, so dass Sie seinen Code nach nützlichem Ansatz suchen können. –

+0

DML liest und schreibt in Tabellen. DDL ändert, welche Tabellen Sie haben. Dies ist eine direkte Verwendung eines DBMS. (Wie in reaanbs Antwort.) Sie benötigen also keine strukturierten Datentypen oder EAV, bis Sie nachweisen, dass ein einfaches Design nicht ausreicht. Außerdem solltest du immer dieses Design haben, und wenn du diese anderen Techniken verwendest, dann codierst du es in sie. Lesen Sie eine Einführung in relationale Datenbanken. – philipxy

Antwort

1

Es ist besser, es einfach zu halten, wenn Sie noch nicht wissen, was Ihr Ziel ist. Modellieren Sie nicht Dinge und machen Sie sich keine Sorgen über Attribute, die Sie noch nicht brauchen. Modellieren Sie die Fakten, die Sie aufzeichnen möchten. Beginnen Sie damit, einige Beispielsätze mit Platzhaltern zu schreiben, z.

Halten Sie Ihre Sätze einfach, teilen Sie sie wenn möglich in verschiedene Sätze auf, ohne dabei an Bedeutung zu verlieren. Erstellen Sie dann für jeden Satz eine Tabelle mit einer Spalte für jeden Platzhalter.

Dinge wie <product> können zunächst ein varchar oder enum sein, es ist einfach genug, um später zu refaktorieren.

+0

Eigentlich mache ich mir nur Sorgen über die Entitäten und ihr Attribut. Denn wenn ich in meinem Programm nur zwei Optionen habe (Shirt und Rock), nur über Produkttabelle reden, nur wie andere Tische wie Gewohnheit oder Mitarbeiter gleich bleiben und in Ordnung, weiß ich nicht, was ich tun kann, wenn die Kunden kommen und ein anderes Ding nähen das gibt es in der Option nicht. –

+0

Wenn Sie eine Produkttabelle haben, sollte es einfach sein, eine Zeile für neue Produkte hinzuzufügen. Sie können die Attribute auf Null setzen, wenn sie nicht für alle Produkte gelten, oder Sie können sie in separate Feature-Tabellen verschieben, z. number_of_sleeves (product_id, betrag), in dem Sie nur eine Zeile für ein Produkt erfassen müssen, wenn es zutrifft. – reaanb