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 17.08.2010, 14:49  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Also ist dein Ansatz ähnlich wie Ansatz 2, nur mit zusätzlich einer Tabelle die die zusätlich verfügbaren Felder und die dazugehörigen Bedingungen enthält?

Bei meiner Überlegung ging der Schritt nur an andererr Stelle noch weiter um nicht alle Inhalte in TEXT-Datentypen speichern zu müssen. Was denkst du darüber?
cycap ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 17.08.2010, 15:13  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Also ist dein Ansatz ähnlich wie Ansatz 2, nur mit zusätzlich einer Tabelle die die zusätlich verfügbaren Felder und die dazugehörigen Bedingungen enthält?
Ähnlich ja, nur der Context wurde dort - soweit ich das noch im Kopf habe - nicht berücksichtigt.

Zitat:
Bei meiner Überlegung ging der Schritt nur an andererr Stelle noch weiter um nicht alle Inhalte in TEXT-Datentypen speichern zu müssen. Was denkst du darüber?
Falls du das nicht möchtest, kannst du ja pro Attribut-Type eine eigene Objekte vorsehen (z.B. IntegerAttribute, TextAttribute, ...) und entsprechend in der DB abbilden sowie die zugehörigen Beziehungen um die neuen Typen erweitern (z.B. Order <>--- IntegerAttribute ---<> Context). Das wird dann allerdings etwas komplizierter in der Abfrage weswegen ich bei einem Attribut-Objekt-Typen bleiben würde.
__________________
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 17.08.2010, 15:22  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Falls du das nicht möchtest, kannst du ja pro Attribut-Type eine eigene Objekte vorsehen (z.B. IntegerAttribute, TextAttribute, ...) und entsprechend in der DB abbilden sowie die zugehörigen Beziehungen um die neuen Typen erweitern (z.B. Order <>--- IntegerAttribute ---<> Context). Das wird dann allerdings etwas komplizierter in der Abfrage weswegen ich bei einem Attribut-Objekt-Typen bleiben würde.
Das ich das KANN ist mir klar, ich wollte nur wissen was deine Meinung dazu ist.
cycap ist offline   Mit Zitat antworten
Alt 17.08.2010, 17:35  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 921
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Für dieses Problem habe ich auch noch keine "allumfassende" Lösung gefunden. Abhängig ist es ja auch noch davon, was später mit diesen "Custom-Attributen" gemacht werden soll. Solange das nur beschreibende Daten sind ist ein Aufsplitten in mehrere Tabellen ja kein Problem. Wenn diese aber fest in Funktionen verwendet werden, kann es u. U. doch wieder günstiger sein sie mit in die Basistabelle zu nehmen, als immer zu prüfen ob es dieses oder jenes Attribut im aktuellen Kontext gibt. Dazu gibt es noch mehr einschränkende Faktoren wie z.B. das verwendete Framework oder die Abfragetiefe (je nach DB Aufbau kommt man mit mehreren Attribut-Tabellen vielleicht an das Join-Limit der Engine ran).

Worauf ich hinaus will: Theoretische Konzepte sind schön und gut, aber oft werden die zur Verfügung stehenden Möglichkeiten duch Rahmenbedingungen begrenzt.
__________________
Wir suchen PHP / Delphi und .NET Entwickler im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 17.08.2010, 17:54  
Neuer Benutzer
 
Registriert seit: 16.08.2010
Beiträge: 1
PHP-Kenntnisse:
Fortgeschritten
strolch75 befindet sich auf einem aufstrebenden Ast
Standard

vielleicht wäre es eine Option einfach für jeden Kunden eine Tabelle anzulegen? - bist unabhängig für die Spezialwünsche deiner Kunden - und der Admin kann mit Joins auch problemlos alles Anzeigen lassen.
strolch75 ist offline   Mit Zitat antworten
Alt 18.08.2010, 08:37  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 921
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Die Idee ist gar nicht mal sooo schlecht. Man könnte mit Vererbung arbeiten, dann würde es auf den OR-Mapper (falls verwendet) ankommen wie das resultierende DB-Modell aussehen muss. Naben abweichenden Daten könnte man auch noch abweichendes Verhalten implementieren. Hat aber den gravierenden Nachteil, dass man u.U. redundanten Code bekommt. Wäre unschön.
__________________
Wir suchen PHP / Delphi und .NET Entwickler im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 18.08.2010, 09:26  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Was aber zur Folge hätte das ich bei jedem neuen Kunden und sogar bei jedem neuen Feld die Datenbankstruktur ändern müsste und meinem Code bzw. meinem OR-Mapper die Änderungen mitteilen müsste und das ist nicht sinn der Sache.
cycap ist offline   Mit Zitat antworten
Alt 18.08.2010, 09:51  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von cycap
Das ich das KANN ist mir klar, ich wollte nur wissen was deine Meinung dazu ist.
-->
Zitat:
Zitat von dr.e.
Das wird dann allerdings etwas komplizierter in der Abfrage weswegen ich bei einem Attribut-Objekt-Typen bleiben würde.
+
Ich würde alle Attribute auslagern und einfach in einer Konfiguration (hierfür kann es ja auch eine GUI geben) die bekannten Attribute definieren.
__________________
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 18.08.2010, 10:06  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Das würde doch aber bedeuten ich müsste auf DB Funktionen die Typ-Spezifisch sind verzichten oder explizit casten oder? Und die Fragmentierung bzw. der Speicherverbrauch würde auch enorm ansteigen oder? Hast du soetwas schonmal umgesetzt?
cycap ist offline   Mit Zitat antworten
Alt 18.08.2010, 21:45  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo cycap,

sofern du die Attribute als "nur Text" speicherst musst du die Typensicherheit in deiner Applikation behandeln (Form-Filter, bzw. -Validatoren).

Zitat:
Und die Fragmentierung bzw. der Speicherverbrauch würde auch enorm ansteigen oder?
Fragmentierung ist nur bei sehr häufigem Ändern von Attribut-Definitionen ein Problem und der Speicherverbrauch ist nur dann höher, wenn die Datenbank die volle Text-Länge pr Zeile reserviert. VARCHAR z.B. ist hier intelligent genug, nur den relevanten Speicher zu allokieren.

Zitat:
Hast du soetwas schonmal umgesetzt?
--> Objektorientierte Implementierung eines Gstebuchs :: Adventure PHP Framework (APF) (ist auch im PHP-Journal erschienen)
__________________
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
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
Felder eines Datensatzes separieren aniga_de Datenbanken 10 26.01.2010 21:29
MySQL - Felder mit verschiedenen Bedingungen summieren Patrick Hilker Datenbanken 2 27.10.2009 16:23
[Erledigt] Tabellenlayout: Große Felder auslagern? boernard Datenbanken 7 27.07.2009 14:03
Excel Spreadsheet Writer -> Import Outlook -> Felder definieren... taurus PHP Tipps 2008 0 16.12.2008 12:10
Gästebuch-Tabelle - Felder auf Inhalt prüfen ProgStarter PHP Tipps 2008 13 09.10.2008 20:07
Schwierige (?) Sortierung über 2 Felder Anotherone Datenbanken 8 31.12.2006 02:48
mysql mehrere felder aus 2 tabellen bei vorhandensein eines cytrobic Datenbanken 9 30.06.2006 13:27
suche tutorial: FORMULAR FELDER AUF INHALT PRÜFEN PHP Tipps 2006 7 25.01.2006 19:14
[Erledigt] Große Felder wie TEXT auslagern? Datenbanken 9 26.10.2005 20:22
Formularauswertung: Leere Felder anzeigen maeck PHP Tipps 2005-2 1 18.09.2005 21:42
Suche MySQL Funktion zum Verbinden 2er Felder R4v3r Datenbanken 2 12.07.2005 23:49
Felder löschen!? PHP Tipps 2005 2 05.01.2005 14:36
Nach Formularcheck sind die Felder leer PHP Tipps 2007 6 04.01.2005 21:42
leere felder entfernen PHP Tipps 2007 14 04.01.2005 10:59
felder gegebenen falls überprüfen und sonst mail schicken. lindner PHP Tipps 2004-2 1 14.11.2004 15:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tabelle komisch begrenzt auf seiten ende

Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.




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