php.de

Zurück   php.de > php.de Intern > Wiki Diskussionsforum > Tutorials

Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen!

Antwort
 
LinkBack (11) Themen-Optionen Thema bewerten
Alt 18.04.2007, 23:40   11 links from elsewhere to this Post. Click to view. #1 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard MySQL: Datenbank-Design für mehrsprachiges CMS

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
dr.e. ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2007, 12:34   #2 (permalink)
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.624
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Keine Meinung, ist mir zu hoch
Aber eine Frage:
Mit welchem Programm hast du das Schema erstellt? Diesen "Feasibility-Check" macht auch das Programm?
phpdummi ist offline   Mit Zitat antworten
Alt 19.04.2007, 13:13   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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?
Zergling-new ist offline   Mit Zitat antworten
Alt 19.04.2007, 23:37   #4 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

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!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 20.04.2007, 00:01   #5 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

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:
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?
Genau. In der Tabelle "cms_Content" speichere ich den eigentlichen Inhalt und ein Eintrag in "cms_Article" ist quasi nur ein mehrsprachiger Artikel mit mehreren Inhalten.


Zitat:
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.
Das ist sicher eine gute Ergänzung. Die Abfrage wird aber ziemlich wild, da man ja Gruppen- und Benutzerrechte berücksichtigen muss. Aber das ist ein gutes Beispiel um JOINen zu üben


Zitat:
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.
Da bin ich auch schon drübergestolpert. Hab mir dann aber gedacht, dass Article die Instanz eines Artikels ist und wenn dieses Objekt geladen wird, dann ist die sprache bekannt und ich mappe die Inhalte über die Beziehung direkt in das Objekt Artikel. Aus diesem Blickwinkel ist die Tabelle "cms_Content" nur eine "Hilfstabelle" der Datenschicht.


Zitat:
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.
Das bedeutet: Eine Webseite kann mehrere Navigationen haben und eine Navigation komponiert mehrere Navigations-Punkte. Stell dir vor eine Webseite hat auf der linken Seite eine Haup-Navigation und horizontal oben eine generische Navigation mit Impressum, Sitemap, ..., dann sind das zwei unterschiedliche Navigationen. Ich möchte diese getrennt behandeln können, da ich dann auch die Ausgabe sauber trennen kann.


Zitat:
Was soll das CMS denn hauptsächlich verwalten - News? Oder frei und beliebig?
Frei & beliebig. Was ich noch gemacht habe ist ein ContentTagParser. Schreibst du z.B. in den Text ein "[TerminDB]", so wird dir die Termin-Datenbank beim generieren der Ausgabe dort reingesetzt. Diese wiederum ist ein eigenes Modul. Genauso kann man dort "[news date="123456" title="hallo"]my news content[/news]" reinschreiben und der entsprechende parser generiert dier daraus eine HTML-Darstellung (bbCodeParser). Man hat also die Freiheit alles einzubinden, was man sich denken kann. Die jeweiligen Module können natürlich wieder eigene Tabellen mitbringen.


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!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 24.05.2008, 19:51   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Der Beitrag ist im Tutorials besser aufgehoben, daher verschoben und mit Prefix im Titel versehen.
Zergling-new ist offline   Mit Zitat antworten
Alt 25.05.2008, 23:32   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.006
PHP-Kenntnisse:
Fortgeschritten
brian johnson wird schon bald berühmt werden
Standard

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?
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 26.05.2008, 09:32   #8 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

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:
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?
Nein, das nicht. Konkret geht es hier darum, dass nur diejenigen Artikel angezeigt werden, auf die ein Benutzer, oder eine Gruppe auch rechte haben. Gleiches Konstrukt siehst du auch bei den Navigationsknoten.

Zitat:
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"?
ass_navinode_article definiert, welche Inhalte unter welchem Navigationsknoten angezeigt werden. Diese Zuordnung kann beliebig sein, sprich ich kann alle Inhalte unter allen Navigationsknoten veröffentlichen, auf die ich auch Rechte habe. Das ist sehr generisch, ja. Einen cms_Article kann man erst mal nicht durch ein anderes Objekt ersetzen, es sei denn, es erbt von cms_Article, da diese Beziehung (noch) nicht existiert. Grundsätzlich ist das aber auch kein Problem, denn Module kann man auf der Inhaltsebene einbinden. Möglich wäre dies durch das Einbinden spezieller Tags wie [SchreibMirHierDasNewsModulHin]. Du hast jedoch Recht, man könnte auf der Ebene der navigationsknoten noch weiter Modularisieren, in dem man dem Navigationsknoten eine Art Typ (z.B. "Seitenvorlage") zuordnet, der jeweils eine andere Ausgabe auf Grund der unter dem Navigationsknoten befindlichen Inhalte ausgibt, oder z.B. einfach nur ein Modul einbindet. Auf der Ebene der Inhalte würde ich das persönlich nicht machen.

Zitat:
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?
Mittelpunkt ist ja wohl optisch falsch, der liegt am linken Ende. Ich gebe dir natürlich Recht, Sprache ist ein Attribut eines Objekts, jedoch muss das auf ER-Ebene nicht der Fall sein. Ich habe das deshalb ausgelagert, dass ich einerseits entsprechende Beziehungen zu diesem Objekt aufbauen kann und andererseits eine Sprache und deren Attribute nur einmal pflegen muss. Weiterhin hätte ich sonst an vielen Stellen Mehrfachdatenhaltung, was ich persönlich nicht mag. Hier gilt - wieder aus Erfahrung die Regel: wenn du ein identisches Attribut über verschiedene Objekttypen verwendest, so lagere es in ein eigenes Objekt aus und binde es über eine Beziehung an. Wie du das nun im Domänen-Model deiner Anwendung präsentierst, bleibt der Mapper-Schicht vorbehalten. Eine Möglichkeit kann sein, die Sprache als Attribut in jedes Objekt zu speichern.

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!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 27.05.2008, 19:07   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.006
PHP-Kenntnisse:
Fortgeschritten
brian johnson wird schon bald berühmt werden
Standard

Zitat:
Zitat von dr.e.
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:
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?
Nein, das nicht. Konkret geht es hier darum, dass nur diejenigen Artikel angezeigt werden, auf die ein Benutzer, oder eine Gruppe auch rechte haben. Gleiches Konstrukt siehst du auch bei den Navigationsknoten.
ja, deine antworten vertiefen das. es geht also mehr um die tatsächliche beziehung als um die umsetzung.

Zitat:
Zitat:
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"?
ass_navinode_article definiert, welche Inhalte unter welchem Navigationsknoten angezeigt werden. Diese Zuordnung kann beliebig sein, sprich ich kann alle Inhalte unter allen Navigationsknoten veröffentlichen, auf die ich auch Rechte habe. Das ist sehr generisch, ja. Einen cms_Article kann man erst mal nicht durch ein anderes Objekt ersetzen, es sei denn, es erbt von cms_Article, da diese Beziehung (noch) nicht existiert. Grundsätzlich ist das aber auch kein Problem, denn Module kann man auf der Inhaltsebene einbinden. Möglich wäre dies durch das Einbinden spezieller Tags wie [SchreibMirHierDasNewsModulHin]. Du hast jedoch Recht, man könnte auf der Ebene der navigationsknoten noch weiter Modularisieren, in dem man dem Navigationsknoten eine Art Typ (z.B. "Seitenvorlage") zuordnet, der jeweils eine andere Ausgabe auf Grund der unter dem Navigationsknoten befindlichen Inhalte ausgibt, oder z.B. einfach nur ein Modul einbindet. Auf der Ebene der Inhalte würde ich das persönlich nicht machen.
interessant.
du hast nicht noch einen berühmt berüchtigten links auf das adventure php framework dazu?

Zitat:
Zitat:
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?
Mittelpunkt ist ja wohl optisch falsch, der liegt am linken Ende.
optisch ja, aber viele pfeile drauf

Zitat:
Ich gebe dir natürlich Recht, Sprache ist ein Attribut eines Objekts, jedoch muss das auf ER-Ebene nicht der Fall sein. Ich habe das deshalb ausgelagert, dass ich einerseits entsprechende Beziehungen zu diesem Objekt aufbauen kann und andererseits eine Sprache und deren Attribute nur einmal pflegen muss. Weiterhin hätte ich sonst an vielen Stellen Mehrfachdatenhaltung, was ich persönlich nicht mag. Hier gilt - wieder aus Erfahrung die Regel: wenn du ein identisches Attribut über verschiedene Objekttypen verwendest, so lagere es in ein eigenes Objekt aus und binde es über eine Beziehung an. Wie du das nun im Domänen-Model deiner Anwendung präsentierst, bleibt der Mapper-Schicht vorbehalten. Eine Möglichkeit kann sein, die Sprache als Attribut in jedes Objekt zu speichern.
ok, wenn du mir jetzt noch die "ER-Ebene" erklärst würde ich den absatz komplett verstehen

auf jeden fall danke!
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 27.05.2008, 23:38   #10 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo brian,

Zitat:
interessant.
du hast nicht noch einen berühmt berüchtigten links auf das adventure php framework dazu?
Ich will dich ja nicht entäuschen, deshalb hier zwei Links:
* 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:
ok, wenn du mir jetzt noch die "ER-Ebene" erklärst würde ich den absatz komplett verstehen
Es gibt mehrere Ansätze ein Objektmodell umzusetzen. Komplette Denormalisieren bedeutet, dass du irgendwie alles in einer Tabelle ablegst. Ob das nun sinnvoll ist oder nicht sei dahingestellt. Vollständige Normalisierung bedeutet, dass du alles haarklein zerlegst und sogar Objekte ein einzelne Attribute und deren Werte aufgespaltet speicherst. Das wird gerade für kleinere Applikationen unübersichtlich und zu aufwändig. Der von mir verfolgte Weg bedeutet, Applikationsobjekte in einer Tabelle zu speichern und nur deren Beziehungen in eigene Beziehungstabellen auszulagern.

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:
auf jeden fall danke!
Gerne!
__________________
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!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/tutorials/43929-mysql-datenbank-design-fuer-mehrsprachiges-cms.html
Erstellt von For Type Datum
forum.adventure-php-framework.org [de] • Thema anzeigen - Datenbank-Design für mehrsprachiges CMS This thread Refback 15.07.2010 12:43
forum.adventure-php-framework.org [de] • Thema anzeigen - Datenbank-Design für mehrsprachiges CMS This thread Refback 14.07.2010 22:38
Literature :: Adventure PHP Framework (APF) This thread Refback 27.03.2009 16:50
Mehrsprachig mit PHP-MySQL DB - Developer's Guide This thread Refback 30.12.2008 20:30
Mehrsprachig mit PHP-MySQL DB - Developer's Guide This thread Refback 26.12.2008 20:48
Mehrsprachig mit PHP-MySQL DB - Developer's Guide This thread Refback 25.12.2008 17:59
Mehrsprachig mit PHP-MySQL DB - Developer's Guide This thread Refback 24.12.2008 21:52
Mehrsprachig mit PHP-MySQL DB - Developer's Guide This thread Refback 21.12.2008 22:24
Mehrsprachig mit PHP-MySQL DB - Developer's Guide This thread Refback 20.12.2008 19:18
Literatur :: Adventure PHP Framework (APF) This thread Refback 22.10.2008 13:45
Privat Projekt CMS - Seite 2 - Developer's Guide This thread Refback 03.09.2008 12:55

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
MySQL - Datenbank + Benutzer per Script anlegen? nicobischof PHP Tipps 2007 2 11.11.2005 19:41
Access Datenbank in MySQL Datenbank umwandeln karl Datenbanken 1 19.10.2005 17:04
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Adresse zur MySQL Datenbank Marian Datenbanken 4 10.08.2005 09:47
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
datum in mysql datenbank! Datenbanken 7 09.07.2005 14:43
[Erledigt] mysql datei in datenbank einspielen Datenbanken 6 20.06.2005 16:07
[Erledigt] MySql Datenbank sichern Datenbanken 1 10.01.2005 20:19
Einzelne Fetches aus MySQL Datenbank ansprechen PHP Tipps 2004-2 5 22.11.2004 15:02
Auslesen von Daten aus einer mysql Datenbank + Editieren vampsoftchef PHP Tipps 2004-2 5 15.11.2004 08:31
bin ich blöd???? Mysql Datenbank Passwort becks123 Datenbanken 3 29.10.2004 14:11
Formular in Mysql Datenbank speichern Anuschka Datenbanken 1 15.08.2004 02:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbankdesign beispiel, datenbankdesign, mehrsprachiges cms, datenbankdesign tutorial, php cms mehrsprachig, mysql datenbankdesign, php mysql mehrsprachige seite, cms datenbank design, php mysql mehrsprachig, mysql mehrsprachige datenbank, mehrsprachigkeit mysql php, php mehrsprachig tutorial, datenbank design, datenbank design php, db design mehrsprachigkeit, mysql cms, mehrsprachiges html, mehrsprachigkeit datenbankdesign, php cm/s tutorial, datenbank diagramme in datenbank abspeichern

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:03 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.