| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator und Wett-König | Hallo cycap, sind die von dir Beschriebenen Klassen echte Domain-Objekte? Worauf ich hinaus will ist einfach die Abgrenzung der Objekte. Oft kann / sollte man verschiedene gemeinsam genutzte Attribute auch in eigene (weitere) Objekte auslagern. Was die Umsetzung an sich angeht, muss die Datenschicht die in der Anwendung vorhandenen Domain-Objekten speichern / bearbeiten / löschen können. Weiterhin müssen die Beziehungen verarbeitet werdenb können. Dabei müssen Kompositionen entsprechend so aufgelöst werden können, dass die Datenkonsistenz sichergestellt ist. Das Ganze kann man abstrakt und generisch implementieren, oft reicht aber auch eine konkrete Umsetzung. Beschreib mir mal bitte deine Anforderungen genauer (kleines UML-Klassendiagramm), dann mache ich mir mal ein wenig mehr Gedanken. Da der Thread meiner Ansicht nach kein Anfänger-Thread ist, habe ich das mal nach Profi verschoben.
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | ||
| Moderator Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Zitat:
![]() Bisher habe ich versucht das ganze möglichst einfach darzustellen, aber das funktioniert wohl nicht, also jetzt das ganze nochmal detailliert. Das Datenbanklayout existiert bereits (lässt sich auch ändern) und deshalb kann ich euch daran wohl gut zeigen wie es aussehen soll. Habs anfangs mit ner Berechnung versucht die in einem bestimmtem Zeitintervall durchläuft, ohne OOP. Ich habe jetzt aber folgende Gründe das ganze zu ändern und OOP zu nutzen: - ich will lieber immer aktuelle Daten haben statt auf die Berechnung warten zu müssen - die Berechnung bisher war unübersichtlich und fehleranfällig - die Berechnung im Zeitintervall kostet irgendwann ne Menge Performance Ich habe vor einiger Zeit mal eine Zeichnung angefertigt wie die Spesenberchenung funktioniert, siehe hier. Man beachte hier auch die wichtige 0-Uhr grenze. Die Tabellen workblocks (arbeitszeiten) und awayblocks (spesen) sind eigentlich nur Zusammenfassungen, die ich erstelle um den Export und die Berechnungen zu erleichtern. Die eigentlichen Daten sind also die Buchungen. Und nun zu den Tabellen (vereinfacht) mit Beispielen: Buchungen: Code: id| type | id_user | time | id_taetigkeit | id_kostenstelle | id_source -------------------------------------------------------------------------------------- 1 | work | 1 |2008-01-01 08:00:00 | 12 | 1234 | 1 2 | pause | 1 |2008-01-01 12:00:00 | NULL | NULL | 1 3 | work | 1 |2008-01-01 13:00:00 | 12 | 1234 | 1 4 | end | 1 |2008-01-01 17:00:00 | NULL | NULL | 1 5 | work | 1 |2008-01-02 08:00:00 | 12 | 4430 | 1 6 | work | 1 |2008-01-02 09:00:00 | 10 | 1234 | 1 7 | work | 1 |2008-01-02 12:00:00 | 12 | 1234 | 1 8 | end | 1 |2008-01-02 16:00:00 | NULL | NULL | 1 Workblocks: Code: id| id_user | time_start | time_end | sum_pause | is_spesen 1 | 1 | 2008-01-01 08:00:00 | 2008-01-01 17:00:00 | 60 | 1 2 | 1 | 2008-01-02 08:00:00 | 2008-01-02 16:00:00 | 0 | 1 Awayblocks: Code: id| id_user | time_start | time_end | id_land 1 | 1 | 2008-01-01 08:00:00 | 2008-01-01 17:00:00 | 1 2 | 1 | 2008-01-02 08:00:00 | 2008-01-02 16:00:00 | 2 Soo und wenn nun eine Buchung hinzukommt oder sich ändert, dann sollen auch die beiden Elterndatensätze geändert bzw. angelegt werden und genau das ist die Problemstelle. Ich hoffe Ihr versteht mein Problem jetzt etwas besser. | |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.267
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Du solltest zunaechst vermeiden Informationen doppelt abzulegen; das wuerde dann zugleich dein "Elternproblem" loesen. Kannst du die "Buchungen" nicht aus der Tabelle entfernen, wenn du sie in die *blocks uebertragen hast? Ich wuerde Buchungen jetzt eher als Zustand ansehen, den du auch ueberwachen solltest, in dem du auf Konsistenz pruefst (darf END auf END folgen?). Wozu die Pause festhalten, sie ist implizit die Restzeit und erzeugt dir nur moegliche Fehler. Ich denke ich wuerde deine Tabelle "Buchungen" also eher als Zustandstabelle verwenden, wobei mir die Software je nach zuletzt hinzugefuegtem Token auch nur eine bestimmte Auswahl an nachfolgenden Token erlaubt (wie gesagt, END auf END macht keinen Sinn). Wenn du eine Transaktion abgeschlossen hast (START, PAUSE*, END) wird das ganze uebertragen und je nach dem ob du das moechtest, automatisch pro Tag aufgeteilt. Du kannst nun die Zeit aendern, solange es keine Ueberschneidung mit bisherigen Eintraegen gibt (BETWEEN), das sollte ohne grossen Aufwand moeglich sein. Warte aber besser ab, vielleicht gibts da erfahrenere Antworten. PS: Versuch dich mal fuer eine Sprache zu entscheiden, time, taetigkeit, end, .. Im Optimalfall heissen deine PHP-Variablen ja auch wie die MySQL-Spalten und dann hast du dir das Denglisch auch gleich noch ins PHP importiert. Nix schoen ![]()
__________________ "Nuschel ich?" - "Was?" Geändert von Chriz (10.06.2008 um 09:33 Uhr). |
| | |
| | |
| Moderator Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Die Buchungen brauche ich ja auch wenn ich zum Beispiel einen Report über die Arbeit zu einer gewissen Kostenstelle oder Tätigkeit haben will, ich kann ja schlecht für jede Tätigekit bzw. KST eine eigene Spalte in der Workblock Tabelle erstellen. |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.267
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Wenn ich eine Arbeitszeit eintrage, dann ja nur unter einer Kostenstelle, andernfalls splitte ich eben (manuell) auf, vormittags Photoshoplayouts schnibbeln, nachmittags CSS-Geraffel. Das Programm weiss ja nicht wieviel ich fuer was gebraucht habe. Somit kannst du einem workblock doch einfach eine Kostenstelle(n_id) zuordnen, oder nicht?! ![]() id | start | end | user_id | task_id | account_id | .. Jetzt hast du wann (start-end) wer (user_id) woran (task_id) wie (account_id) gearbeitet hat. Mehr brauchst du doch nicht fuer die Berechnung . Vielleicht schaust du dir aber auch mal DotProject an, ist ein Management Tool zur Projektverwaltung, mit Kunden, Mitarbeitern, Projekten, Tasks, .. ![]()
__________________ "Nuschel ich?" - "Was?" |
| | |
| | ||
| Moderator Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Zitat:
Wenn ich dich richtig verstanden habe meinst du ich sollte die workblocks weglassen? Die endzeit einer Buchung (=startzeit der nächsten Buchung) speichere ich sowieso schon ab (habs oben nur weg gelassen). Nur bei deinem Vorschlag sehe ich das Problem wie ich das mit dem Arbeitsende machen soll, denn das ist ja ausschlaggebend für die Spesenberechnung. | |
| | |
| | ||
| Moderator und Wett-König | Wenn ich mir die Posts so ansehe, machst du genau den Fehler, den ich durch meine Aussage 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| | |
| | ||
| Moderator Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Zitat:
| |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Kleine "redaktionelle" Umsetzung | chrissi0179 | PHP Tipps 2008 | 4 | 29.04.2008 16:49 |
| Speed anzeige bzw Umsetzung | VincentVanWeb | PHP Tipps 2008 | 11 | 11.03.2008 20:10 |
| Probleme bei der Umsetzung | Kein Genie | PHP Tipps 2007 | 3 | 02.03.2007 15:43 |
| brauche eure hilfe für die umsetzung eines scriptes... | GrungeRocker | PHP Tipps 2006 | 12 | 31.08.2006 11:31 |
| Bin zu blöd zur HTML Umsetzung | HTML, Usability und Barrierefreiheit | 10 | 06.03.2006 14:35 | |
| was ist das (shorthand if) | PHP Tipps 2006 | 10 | 20.01.2006 13:03 | |
| register_globals, umsetzung, form, edit sql | TimmaY | PHP Tipps 2005-2 | 9 | 09.08.2005 22:31 |
| [Browsergame] Hilfe bei Umsetzung | Beitragsarchiv | 28 | 05.03.2005 09:16 | |
| Problem mit Umsetzung einer Funktion | Datenbanken | 1 | 20.12.2004 14:37 | |
| Hilfe bei Umsetzung Datenbankanwendung | PHP Tipps 2004 | 1 | 03.11.2004 20:24 | |
| Umsetzung eines Pluginsystems | /tmp | PHP-Fortgeschrittene | 18 | 14.09.2004 22:58 |
| "new COM()" -Umsetzung auf Server mit FreeBSD | PHP-Fortgeschrittene | 14 | 18.08.2004 10:54 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| spesentabelle krone, datenbank \gemeinsam genutzte attribute\, cakephp datenbanksichten, krone spesentabelle, zustandstabelle oop |