SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQL/MySQLi

MySQL/MySQLi Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL/MySQLi diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.04.2010, 07:15:57
urmel urmel ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 4
Wie zusammengesetzte CaseID in Datenbank speichern

Hallo liebe Gemeinde,

in meiner Tabelle "bookings" soll eine CaseID gespeichert werden. Diese hat folgende Struktur: YYYY/MM/nnnn (nnnn=4stellige autoincrement number >1000).

Folgendes Szenario liegt zu Grunde:
Ein Datensatz wird entweder 'durch einen Kunden' generiert: ausfuellen eines Buchungsformulars auf der Webseite oder durch einen Mitarbeiter (zB wenn eine Buchungsanfrage per email eintrifft), ebenfalls durch ausfuellen eines Buchungsformulars. Die CaseID soll in beiden Faellen automatisch generiert werden.

z.B. eine Buchung die im Maerz 2010 erstellt wird hat CaseID 2010/03/1001

Zu meinen Fragen:
1. Zu welchem Zeitpunkt generiere ich die CaseID - nach submit des Formulars via PHP und dann als Ganzes in die Tabelle schreiben?

2. Ist es guenstiger 2010 03 nnnn in drei Spalten zu speichern an stattt in einer?

Sorry meine Fragen, ich habe seit 5 Jahren nicht mehr mit PHP und mySQL gearbeitet... der Mensch ist einfach zu vergesslich

Vielen Dank!
Mit Zitat antworten
  #2  
Alt 06.04.2010, 15:05:00
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Zitat:
Zu meinen Fragen:
1. Zu welchem Zeitpunkt generiere ich die CaseID - nach submit des Formulars via PHP und dann als Ganzes in die Tabelle schreiben?

2. Ist es guenstiger 2010 03 nnnn in drei Spalten zu speichern an stattt in einer?
1. wird nicht funktionieren. Du müsstest ja den letzten Wert aus der DB holen, per PHP um 1 erhöhen und in die DB speichern. Was passiert, wenn ein oder mehrere User eine Bestellung im Web aufgeben und 2-3 Bearbeiter intern zu gleichen Zeit auf SUBMIT drücken?.

2. ist wesentlich besser. Zum einen würden sich so auch leichter Statistiken etc. bewerkstelligen lassen.
Zum auto_increment solltest du dich mal hier auf MySql belesen. Besonders das 2. Beispiel dort sollte deinem Vorhaben entsprechen.
Mit Zitat antworten
  #3  
Alt 07.04.2010, 07:17:04
urmel urmel ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 4
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Zitat:
Zitat von urvater Beitrag anzeigen
1. wird nicht funktionieren. Du müsstest ja den letzten Wert aus der DB holen, per PHP um 1 erhöhen und in die DB speichern. Was passiert, wenn ein oder mehrere User eine Bestellung im Web aufgeben und 2-3 Bearbeiter intern zu gleichen Zeit auf SUBMIT drücken?.
-> stimmt, habe ich nicht bedacht

Zitat:
Zitat von urvater Beitrag anzeigen
2. ist wesentlich besser. Zum einen würden sich so auch leichter Statistiken etc. bewerkstelligen lassen.
Zum auto_increment solltest du dich mal hier auf MySql belesen. Besonders das 2. Beispiel dort sollte deinem Vorhaben entsprechen.
-> danke fuer den Link, passt super

Noch eine Frage: Lege ich zusaetzlich einen kuenstlichen Primaerschluessel fest. Ich habe eine Tabelle "BookingDetails", welche zu "Bookings" referenziert. Andernfalls muesste ich die dreispaltige Struktur Year Month Serial wieder aufnehmen, oder?
Mit Zitat antworten
  #4  
Alt 07.04.2010, 07:27:15
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Ich würde den gleichen Primärschlüssel nutzen, wei du ihn bei den Buchungen selbst nutzt. Du benötigst ja einen eindeutigen Schlüssel um eine Verbindung zu beiden Tabellen zu erhalten. Wozu noch einen weiteren Schlüssel nutzen?
Mit Zitat antworten
  #5  
Alt 07.04.2010, 08:47:55
urmel urmel ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 4
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Entschuldige, ich habe mich falsch ausgedrückt: In der Tabelle 'Bookings' bilden die Spalten 'year' 'month' 'serialno' einen zusammengesetzten Primärschlüssel. Ist es hier nicht sinnvoll an statt des zusammengesetzen Primäschlüssels einen einfachen PK über eine zusätzliche Spalte 'ID' zu bilden?

So muesste ich in der Tabelle 'BookingDetails' nur einen Fremdschlüssel 'BookingsID' anlegen, statt 'bookings.year' 'bookings.month' und 'bookings.serialno'. Was ist geängige Praxis?
Mit Zitat antworten
  #6  
Alt 07.04.2010, 12:26:26
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Keine Ahnung was hier die gängige Praxis ist, da hier die Kunden- oder eigenen Wünsche unterschiedlich sein können.

Zitat:
So muesste ich in der Tabelle 'BookingDetails' nur einen Fremdschlüssel 'BookingsID' anlegen, statt 'bookings.year' 'bookings.month' und 'bookings.serialno'. Was ist geängige Praxis?
Dafür müsste die Tabelle 'Bocking' eine zusätzliche Spalte 'BookingsID' bekommen, da du sonst keinen Bezug zwischen den Daten hast.

Oder wie willst du dir die Buchungsdetails zu einer Buchung ausgeben lassen?
Mit Zitat antworten
  #7  
Alt 07.04.2010, 12:45:03
urmel urmel ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 4
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Zitat:
Zitat von urvater Beitrag anzeigen
Dafür müsste die Tabelle 'Bocking' eine zusätzliche Spalte 'BookingsID' bekommen, da du sonst keinen Bezug zwischen den Daten hast.
-> genau darauf zielt meine Frage ab


Zitat:
Zitat von urvater Beitrag anzeigen
Oder wie willst du dir die Buchungsdetails zu einer Buchung ausgeben lassen?
-> genau das ist mein Ziel. Eine Buchung von Kundem A umfasst die Leistungen X, Y und Z. Die Buchung (Kundenr., Buchungsdatum etc.) moechte ich in der Tabelle 'Bookings' speichern. Die gebuchten Leistungen X, Y und Z in der Tabelle 'bookingDetails'. Spaeter soll es moeglich sein die Leistungen aus der Tabelle 'bookingDetails' wieder der Buchung in Tabelle 'Bookings' zuzuordnen.

Z.B Kunde A hat am 20.04.2010 die Leistungen X, Y und Z gebucht.

Daher dachte ich dass es vielleicht besser ist nicht 'yyyy mm nnnn' als Schluessel zu verwenden, sondern zusaetzlich eine DB-interne "BookingsID" einzusetzen.
Mit Zitat antworten
  #8  
Alt 07.04.2010, 16:12:07
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: Wie zusammengesetzte CaseID in Datenbank speichern

Mal zur Veranschaulichung der Tabelle bookingDetails

|Jahr|Monat|auto_increment|Leistungsschlüssel|kundenID|eventuell andere Buchungsrelevante Details

Jahr, Monat und auto_increment kommen aus der Buchung selbst.
Buchungsschlüssel wäre ein Schlüssel über die gebuchte Leistung.
Du könntest den Index über alle 4 Spalten setzen und hättest somit einen eindeutigen Index.
Eine Leistung kann ja nur einmal in einer Buchung vorkommen allerdings mit XY Stück, wenn es sich um Produkte handelt.

PS: Leistungsschlüssel könnte auch eine Produkt-Nr. oder ähnliches sein.

Somit wären zahlreiche Abfragemöglichkeiten möglich.
Welche Buchungen gehören zu Buchung XYZ?
Welche bzw. wieviele Buchungen hatte Kunde XY im Jahr AD?

Oft sehr interessant
Wie oft wurde die Leistung CD im letzten Quartal, Monat oder Jahr gebucht?

Eine zusätzliche ID könntest du speichern ist aber generell nicht notwendig.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem beim Speichern eines ausgelesenen Datenbank eintrages Deadline MySQL/MySQLi 2 13.03.2010 20:24:12
Daten über HTML in einer Datenbank speichern und wiedergeben können Bootlicker PHP Entwicklung und Softwaredesign 8 11.01.2010 17:02:04
Datei-Info von Bildern in Datenbank speichern Krinde PHP Grundlagen 3 01.07.2008 10:31:12
Daten mit PHP in Datenbank Speichern MDG MySQL/MySQLi 2 10.01.2008 23:13:14
Sonderzeichen xml in Datenbank speichern Tikiwiki PHP Grundlagen 23 12.12.2007 16:08:14


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:39:08 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.


© 2001-2020 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt