Ich arbeite an einem Projekt. Es ist hauptsächlich zu Lernzwecken, ich finde eigentlich, ein kompliziertes Projekt zu versuchen, ist der beste Weg, eine Sprache zu lernen, nachdem man die Grundlagen verstanden hat. Database Design ist kein starker Punkt, ich begann zu lesen, aber seine frühen Tage und ich lerne immer noch.Datenbankstruktur mit dynamischen Feldern
Hier ist mein Alpha-Schema, ich bin wirklich an dem Punkt, wo ich versuche nur alles zu notieren, was ich denken kann und sehen, wenn irgendwelche Probleme herausspringen. http://diagrams.seaquail.net/Diagram.aspx?ID=10094#
Einige meiner Bedenken würde Ich mag Feedback auf:
Hinweis für den Kern wie Bereich beispielsweise Attribute, lässt der Einfachheit halber sagen, dass die Bereiche sind Küche, Schlafzimmer, Garten, Bad und Wohnzimmer. Für einen anderen Kunden, der Homepage, Kontaktseite, About_us, Splash-Screen sein könnte. Es könnte 2 Bereiche und es könnte 100 sein, es gibt keine Notwendigkeit, es zu begrenzen.
Ich erstellte separate Tabellen für die Standardeinstellungen und jeder ist mit einem Fehler verknüpft. Später kam ich auf das Problem der benutzerdefinierten Felder, wenn jemand zum Beispiel möchte, um zu markieren, welches Thema der Fehler betrifft, haben wir das nicht, es gibt wahrscheinlich 100 andere Dinge, also wollte ich zu einem Kernsatz von Attributen und den benutzerdefinierten Feldern bleiben gib den Menschen Flexibilität.
Jedoch, als ich zu den kundenspezifischen Feldern kam, wusste ich, dass ich ein Problem hatte, ich kann eine Tabelle für jedes kundenspezifische Feld nicht schaffen, also benutzte ich stattdessen 2 Tabellen. benutzerdefinierte Felder und custom_field_values. Die Idee ist, würde jedes Feld, einschließlich den Standardwerte in dieser Tabelle gespeichert werden, und jeder würde den Wertetabelle verknüpft werden, die nur so etwas wie diese
custom_fields table
id project_id name
01 1 area(default)
12 2 rooms(custom)
13 4 website(custom)
custom_field_values table
id area project_id sort_number
667 area1 1 1
668 area2 1 2
669 area3 1 3
670 area4 1 4
671 bedroom 2 1
672 bathroom 2 2
673 garden 2 3
674 livingroom 2 4
675 homepage 4 1
676 about_us 4 2
677 contact 4 3
678 splash page 4 4
haben würden Sieht das eine effiziente Art und Weise dynamische Felder wie das zu handhaben oder Gibt es andere Alternativen?
Die Standardwerte sind hart codiert, so dass Sie sie entweder verwenden oder durch eigene ersetzen können oder ich könnte eine andere Tabelle erstellen, damit Benutzer den Namen der Standardwerte bearbeiten können, die mit ihrem Projekt verknüpft sind. Jede Rückmeldung ist willkommen und wenn es etwas sehr Offensichtliches mit Fragen in der Regelung gibt, zögern Sie nicht zu kritisieren.
Ugh EAV. Ich würde mir eine NoSql-Alternative ansehen, wenn ich du wäre. –