|
|
|
|
|
|
|||||||
| Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen! |
|
|
|
LinkBack (11) | Themen-Optionen | Thema bewerten |
|
|
#1 (permalink)
|
|
Moderator und Wett-König
|
Hallo zusammen,
ich habe mich die letzten Tage mit der Datenschicht eines mehrsprachigen CMS beschäftigt - konkret mit dem Tabellen-Layout desselben. Anforderungen waren Mehrsprachigkeit und generische Datenspeicherung, damit Erweiterungen leicht einbindbar sind. Ich bin dabei von der dritten Normalform ausgegangen und habe Objekte und deren Beziehungen in eigene Tabellen gesteckt. Weiterhin werden einfache Rechte-Vergabe auf Artikel und Navigationen über die User- und Group-Tabellen und deren Beziehungstabellen auf die Article und Navigation-Tabelle unterstützt. Ein Objekt/eine Tabelle erhält hier konzeptionell dadurch einen sprachabhängigen Inhalt, in dem ein Container-Objekt INhalts-Objekte komponiert, die jeweils eine Sprache assoziieren. Das ER-Diagramm dazu sieht so aus: ![]() Eine leserlichere Version ist unter http://media.adventure-php-framework...ase_Schema.PNG erhältlich. Eim Feasibility-Check der Anwendunsgfälle: - Laden eines Artikels mit seinem sprachabhängigen Inhalt - Laden aller Artikel auf die ein Benutzer Rechte hat - Laden aller Artikel mit Inhalten (sprachabhängig) unter einem Navi-Knoten - Laden einer Navigation bis zu einem bestimmten Knoten - Laden eines Navigations-Knotens mit seinem sprachabhängigen Inhalt - Laden der Navigationen auf die ein Benutzer oder eine Gruppe Rechte hat - Speichern einzelner Objekte und Beziehungen ergab, dass das Design theoretisch alle Anforderungen unterstützt und jede Beziehung ist abfragbar. Durch die Struktur-Tabellen wird das Laden eines Inhalts in der entsprechenden Sprache natürlich etwas komplizierter, aber man möchte schließlich generisch bleiben. Möglich ist hier nämlich noch die Einführung eines Projekts und die Spezifizierung, welcher Artikel zu welchem Projekt gehört. Zusätzlich könnte man auch noch Inhalts-Container einführen, damit Inhalte in einer Ordner-Struktur abgelegt werden können. Ich würde gerne mal einige Meinungen dazu hören. Kritik jeder Art ist willkommen.
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Geändert von dr.e. (14.07.2010 um 23:20 Uhr). Grund: Link zu ER-Diagramm korrigiert |
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#3 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 21.05.2008
Beiträge: 9.937
![]() |
Was ist denn der Unterschied zwischen den ass_* (die Verknüpfungstabellen nehme ich an) und cmp_* (compare? inwiefern? Edit: ach Komposition, hm)?
Muss ich mir deine Artikel wie Wikipedia-Artikel XY vorstellen, der sich dadurch definiert, dass es den Artikel XY auf deutsch (Content DE) und englisch (Content EN) gibt? Man könnte sich überlegen eher oder zusätzlich die Inhalte (Content) an Rechte zu koppeln, anstatt nur den Artikel. Warum sollte ich einen japanischen Content editieren dürfen, wenn mir offensichtlich die (sprachliche, nicht unbedingt inhaltliche) Kompetenz fehlt. Aber vielleicht treibt man es da zu weit. Die Bezeichnung Article und Content finde ich dann aber zu ähnlich und nicht unbedingt von sich aus Aussagekräftig. Sprachversion klingt zwar abgedroschen, aber das genau ist es ja eigentlich. Bei der Navigation verstehe ich nicht ganz den Unterschied zwischen Navigation und Navigations-Knoten. Definiert sich eine Navigation nicht durch seine Navigationsknoten-Kombination? Wie baust du diese Navigation auf, Nested Set würde sich anbieten, benötigt ja aber nur eine Tabelle. Was soll das CMS denn hauptsächlich verwalten - News? Oder frei und beliebig? |
|
|
|
|
|
#4 (permalink) |
|
Moderator und Wett-König
|
Hallo phpdummy,
Das Schema ist mit EA (Enterprise Architct) von Sparx Systems erstellt. Ist ein UML-Modellierungstool, das ich einsetze um Tabellen-Layouts (wie hier) oder Klassen-Diagramme nebst Anforderungs-Dokumentation zu erstellen (siehe z.B. http://www.adventure-php-framework.org/Seite/Gaestebuch). Auf der Webseite findest du mehr Infos: http://www.sparxsystems.at/. "Feasibility-Check" bedeute einfach nur "Machbarkeitsanalyse". Ich überlege mir dabei, ob die Anwendungsfälle mit diesem Design abbildbar sind. Kann ich z.B. abfragen, welcher Benutzer auf welche Artikel Rechte hat, etc.
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
|
|
#5 (permalink) | |||||
|
Moderator und Wett-König
|
Hallo Zergling,
ich unterscheide bei der Speicherung der Beziehungen zwischen den Qualitäten Assoziation (Objekt A KENNT ObjektB) und Komposition (Objekt A HAT Objekt B) - richtig. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Andere/weitere Meinungen?
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||||
|
|
|
|
|
#7 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 16.07.2005
Beiträge: 1.006
PHP-Kenntnisse: Fortgeschritten ![]() |
hi,
ich hätte da zunächst einige grundsätzliche fragen: 1. die unterscheidung von "ass_group_article" und "ass_user_article" verbunden mit den pfeilen auf "cms_article" impliziert das es "cms_article" überlassen ist, welche rechte gelten, wenn überschneidungen vorhanden sind, oder? 2. wofür ist "ass_navinode_article"? ich sehe hier eindeutig eine modularität, ich könnte also "cms_article" durch beliebieges anderes, also beispielsweise einem kategorie modul, ersetzen. das heißt demnach auch ich könnte beides auf einer seite mischen. demnach wäre die navigation auf dem selben level wie "benutzer und rechte", also "global", d.h. immer einzubinden. was ich nicht verstehe, ist wie dieses mischen der modularität, die du eindeutig vorsiehst, funktioieren soll....und: warum ist sie nicht teil des blocks "navigation"? 3. ich sehe die sprache immer nur als eigenschaft eines objects. in diesem schema allerdings sehe ich, das die klasse "cms_language" im mittelpunkt steht. wer ruft wen? |
|
|
|
|
|
#8 (permalink) | |||
|
Moderator und Wett-König
|
Hallo brian,
einige der Fragen beantworten sich einfach dadurch, dass das Diagramm ein bischen Objekte und Beziehungen mit ER-Diagramm vermischt. Das ER-Diagramm ist einfach die Implementierung eines UMLs, das die Beziehungen zwischen den in der Applikation existierenden Objekte beschreibt. Beispiel: Ein Benutzer ist der Ersteller eines Artikels. Aus diesem Grund wird das Objekt User mit dem Objekt Article assoziiert. Eine Assoziation muss deshalb her, da ein Artikel ohne eine Person existieren können soll und ein Artikel nicht zwangsläufig einer Person (alleine) gehören muss. Um diese Zuordnungen aufzulösen ist auch etwas Erfahrung notwendig, da Assoziationen und Kompositionen komplett andere Auswirkungen auf das Verhalten der Applikationen haben. Zitat:
Zitat:
Zitat:
Alle Fragen beantwortet?
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
|
|
|
|
|
#9 (permalink) | |||||||
|
Erfahrener Benutzer
Registriert seit: 16.07.2005
Beiträge: 1.006
PHP-Kenntnisse: Fortgeschritten ![]() |
Zitat:
Zitat:
du hast nicht noch einen berühmt berüchtigten links auf das adventure php framework dazu? Zitat:
Zitat:
auf jeden fall danke! |
|||||||
|
|
|
|
|
#10 (permalink) | |||
|
Moderator und Wett-König
|
Hallo brian,
Zitat:
* http://adventure-php-framework.org/S...ebuch-Tutorial (Gästebuch-Tutorial; zeigt dieses Thema im kleinen Stil) * http://adventure-php-framework.org/f...plomarbeit.pdf (Arbeit über den Entwurf einer Applikation. Dort wird das nochmal genauer aufgeschlüsselt) Zitat:
Nehmen wir das oben genannte Gästebuch, so gibt es die Objekte "Guestbook", "Entry" und "Comment". Im UML der Applikation gibt es zwischen diesen Objekten eine Beziehung, die die Zugehörigkeit definiert. Ein Gästebuch hat ein oder mehrere Einträge und ein Eintrag hat ein oder mehrere Kommentare. Im ER-Diagramm sieht das dann so aus, dass es drei Tabellen für die drei Objekte gibt und zwei Tabellen, die die Beziehung zwischen den drei Objekten auflöst. Ausgelagerte Beziehungstabellen haben dabei den Charme, dass die Beziehung vor- und rückwärts auflösbar ist und man sich bei der Entwicklung leichter tut. Ich hoffe, das beantwortet deine Frage! Zitat:
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.