2016-04-11 5 views
0

Ich weiß, das ist weit gereister Boden, aber nach gründlicher Suche kann ich immer noch keine Frage finden, die meinen Anforderungen entspricht.EAV vs Schema Änderungen vs Json?

Ich bin auf der Suche nach einem flexiblen System, mit dem Benutzer ihre eigenen benutzerdefinierten Felder definieren können. ZB könnten einige Benutzer bestimmter Abteilungen eine NI-Nummer/einen separaten Passcode usw. benötigen.

Es verwendet derzeit MySQL (offen für Vorschläge, wenn dies nicht ideal ist) a-top das CakePHP 3 Framework.

Dies funktioniert gut mit nur ein paar Tabellen bisher (z. B. nur Benutzer), aber wenn das System wächst, werden viele andere Entitäten ihre eigenen benutzerdefinierten Felder benötigen, was mehr Tabellen bedeutet, die im Grunde die gleichen sind.

Ich bin auch besorgt über die Datenintegrität - derzeit Werte gehen in eine Spalte "Wert", die alle Daten erlaubt und die Validierung passiert auf der App, die ich schätze, möglicherweise nicht ideal.

Es gibt natürlich auch einen Leistungsaufwand. Könnte ich vielleicht eine automatisch erstellte Flat-File-Version wie Magento haben?

Vor diesem Hintergrund habe ich mich über den Wechsel zu einem System Gedanken gemacht, wo die benutzerdefinierten Daten in ein JSON-Array innerhalb der Datenbank gehen, aber Sorge, dass dies mich in Zukunft zurückhalten könnte.

Alle Gedanken sehr geschätzt.

Antwort

0

Was ich empfehlen würde, ist für eine No-SQL-Datenbank wie Mongo-db gehen. Das würde es einfacher machen, benutzerdefinierte Dokumentfelder zu bearbeiten. Was das Abrufen der Daten und das Senden an die Benutzeroberfläche der App angeht, ist JSON einfach in Ordnung (falls Sie von JS abrufen und nicht im Backend rendern)

+0

Vielen Dank für Ihren Vorschlag georoot. Ich habe schon von MongoDB gehört, aber es sieht aus, als ob es keinen Datentreiber dafür in CakePHP 3 gibt (http://stackoverflow.com/questions/30711631/mongodb-configuration-in-cakephp-3-3-x) - gibt es irgendwelche Alternativen, die ich verwenden könnte? – azexian