php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.02.2010, 17:17   #1 (permalink)
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 559
PHP-Kenntnisse:
Fortgeschritten
xm22 befindet sich auf einem aufstrebenden Ast
Standard Ein Entity-Typ, mehrere Ausprägungen

Hi,

ich versuche es mal hier, da ich denke, es ist nicht ausschließlich auf das DB-Design beschänkt. Folgendes:
Ich habe einen Entity-Typ "Eintrag". Dieser hat mehrere Werte wie z. B. der Benutzer, der ihn erstellt hat, Zeitpunkt der Erstellung, etc.

Jeder Eintrag hat jedoch einen speziellen Typ, der mehrere zusätzliche Informationen bringt. Ich nehme mal als Bsp. eine Gebrauchtwaren-Börse:

Man kann einen Eintrag erstellen und weist diesem einen bestimmten Typ zu (z. B. Auto, Möbel, Kleidung, wie auch immer). Jeder dieser Typen, verfügt über eigene Merkmale.

Man könnte jetzt sagen, dass man Autos, Möbel, usw. in entsprechende Kategorien packt und dann innerhalb der Kategorie "Auto" nur Autos ausgibt.

Jedoch soll jetzt die Navigation regional orientiert sein. Das heißt, man soll z. B. alle Möbel, Autos, usw. für Berlin darstellen.

Das habe ich im Moment so gelöst, dass es eine Tabelle t_entries gibt und zusätzlich für jeden Typ eine weitere Tabelle, die die Informationen typspezifisch erweitert (z. B.: Leistung bei Autos).

Allerdings ist das in meinen Augen nicht besonders toll - daher die Frage, ob jemand weiß, wie man das besser machen kann...


EDIT: Ich habe es in diesem Bereich gepostet, da letztendlich auch die Implementierung innerhalb der Applikation damit funktionieren muss.
__________________


Geändert von xm22 (08.02.2010 um 17:43 Uhr).
xm22 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.02.2010, 20:00   #2 (permalink)
Erfahrener Benutzer
 
Registriert seit: 26.10.2003
Beiträge: 570
Baltasar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann macht ein db-design einfach keinen sinn....

eine relation für autos, eine für besitzer, eine für die beziehung...dritte normalform....

mit dem entity-typ "eintrag" wirst du es nicht weit bringen
Baltasar ist offline   Mit Zitat antworten
Alt 08.02.2010, 20:47   #3 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.223
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 xm22,

ich denke, du solltest nicht von einem DB-Design (ER-Modell) ausgehen, sondern vom Domänen-Modell. Für mich hast du mehrere Objekte:
  • Entry
  • EntryAttributes
  • Category
  • City
Die ersten beiden stellen die Informationen eines Eintrags dar, wobei EntryAttributes ein generisches Attribut-Objekt ist, die du mehrfach unter Entry komponieren kannst. Damit ist das Thema gelöst, dass du beliebige Attribute an ein Auto oder ein Möbelstück hängen kannst, ohne Vererbung auf DB-Ebene nutzen zu müssen.

Die beiden letzten sind mehr oder weniger beide Ordnungs-Kriterien, die die jeweils relevanten Entry-Objekte assoziieren. So kannst du ohne Probleme abfragen, welche Autos in welcher Kategorie oder in welcher Stadt zu haben sind.

Wichtig bei allen Modellen: du musst zuerst überlegen, welche Objekte du hast und wie diese in Verbindung zueinander stehen. Dann wirst du dir viel leichter tun, das später in eine DB abzubilden. Mit dem GenericORMapper ist das übrigens straight forward, denn das UML kannst du quasi 1:1 in die Konfiguration übernehmen.
__________________
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 09.02.2010, 11:56   #4 (permalink)
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 559
PHP-Kenntnisse:
Fortgeschritten
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Soweit alles klar, aber wie würdest Du das in einer DB abbilden? Eine Tabelle für Entries und eine für Attribute? D würde dann allerdings die Typisierung fehlen..
__________________

xm22 ist offline   Mit Zitat antworten
Alt 09.02.2010, 12:29   #5 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.223
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

Hi,

ich würde für alle Objekte eine eigene Tabelle erstellen und die Beziehungen über jeweils eine weitere Tabelle. Sofern du nur 1:n oder n:1 benötigst, kannst du in der gegenüberliegenden Tabelle auch nur den Fremdschlüssel speichern.

Zitat:
Eine Tabelle für Entries und eine für Attribute?
Exakt.

Zitat:
D würde dann allerdings die Typisierung fehlen..
Nein, diese wird über die Beziehungen und deren Bedeutung klar.
__________________
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 09.02.2010, 12:59   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 559
PHP-Kenntnisse:
Fortgeschritten
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Eine Tabelle für Entries und eine für Attribute?
Nicht, dass das ein Missverständnis ist: Ich meinte _eine_ Tabelle für alle "zusätzlichen" Attribute aller Entry-Typen, quasi:
Entry-Tabelle:
id|type|standardinfo1|standardinfo2|...

Attributstabelle
f_entry_id|key|value


Oder meinst Du, für jeden Entry-Typ eine eigene Attributstabelle?
__________________

xm22 ist offline   Mit Zitat antworten
Alt 09.02.2010, 18:37   #7 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.223
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

Denke doch nicht immer ausgehend von Tabellen, sondern von Domänen-Objekten. Wir hatten doch oben diskutiert, dass ein Entry-Objekt mehrere Attribute-Objekte komponiert. Das bedeutet im ER-Diagramm, dass du eine Tabelle entries hast und eine attributes. Dazwischen existiert ein Beziehungstabelle oder du speichert per FK in der attributes-Tabelle die Zuordnung.

Zitat:
Ich meinte _eine_ Tabelle für alle "zusätzlichen" Attribute aller Entry-Typen
Eben.

Zitat:
Oder meinst Du, für jeden Entry-Typ eine eigene Attributstabelle?
Nein.
__________________
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 09.02.2010, 19:11   #8 (permalink)
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 26.138
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Vgl. Diskussion hier: http://www.php.de/datenbanken/64428-...tml#post491997
__________________
--
„Eins ist Fakt: Gescannt wird nackt!“

Privatsphäre 2.0 - Nacktscanner mit Eyetracking.
Unser Flugzeug darf kein geschlechtsfreier Raum sein.
--
nikosch ist offline   Mit Zitat antworten
Alt 10.02.2010, 07:13   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 559
PHP-Kenntnisse:
Fortgeschritten
xm22 befindet sich auf einem aufstrebenden Ast
Standard

@Dr.E.: Aber wie soll man das auslesen? Angenommen, man möchte 20 dieser Einträge - Dann muss man ja auch 20x die Attributstabelle auslesen.

EDIT: Gerade habe ich den von Nikosch verlinkten Beitrag gelesen.. Ich habe mal dort weiter geschrieben, weil es da schon mehr Facetten als hier gibt. Vielleicht sollte man den Beitrag hier dort mit anknüppern oder mit Verweis auf den anderen schließen.
__________________


Geändert von xm22 (10.02.2010 um 07:20 Uhr).
xm22 ist offline   Mit Zitat antworten
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] general entity "id" not defined and no default entity FreddyS HTML, Usability und Barrierefreiheit 2 07.01.2010 18:30
[Erledigt] SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: li Mitch26 PHP Einsteiger 17 30.12.2009 23:58
[Erledigt] cannot generate system identifier for general entity "mode" cycap HTML, Usability und Barrierefreiheit 1 21.05.2008 15:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
www.autosnurautos .de, mehreren jede entity, tools in php gutes softwaredesign

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:25 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