Hallo Peter,
Am 04.07.2012 22:23, schrieb Peter Schneider:
> ...
> Du schreibst "der jᅵngste (letzte) Kontakt". Aber das muᅵ nicht
> eindeutig sein, sondern kann mehrere Datensᅵtze liefern/lᅵschen, wenn zu
> dem jᅵngsten vorhandenen Timestamp mehrere Kontakteintrᅵge existieren.
> Ist das gewollt/erlaubt? Wenn ja, gibt der Key das her? Oder wenn nicht,
> gibt es einen Unique Key auf (PersonID, UserID, TypID, DatTim), der die
> von dir verbal beschriebene/unterstellte Eindeutigkeit sicherstellt?
Die Wahrscheinlichkeit, dass eine Kontaktperson zur selben Zeit mehrere
Anruf erhᅵlt, ist gleich Null (herangezogen wird die Zeit, zu der TAPI
den Eingang eines Anrufes meldet), da wir uns ja auf der Seite des
Anrufers befinden.
Vielleicht noch etwas zum Hintergrund. Wenn kein Telefon-Kontakt
zustande kommt, schreibt die Anwendung einen Satz in die Kontakthistorie
mit einer bestimmten Typ-Angabe (in diesem Fall also "Versuchszᅵhler").
Bei mehreren erfolglosen Versuchen werden die Zeiten in den selben
Datensatz geschrieben. Wenn nun bei einer Kontaktperson das Kennzeichen
"ausgeschieden" gesetzt wird (die KP ist also nicht mehr bei der Firma
beschᅵftigt), sollen diese Datensᅵtze (und eben nur die letzten)
gelᅵscht werden. Dass die KP auch frᅵher meist nicht erreichbar war,
soll durchaus dokumentiert bleiben.
> In einer relationalen DB sind die Keys das wichtigste, und wenn eine
> Tabelle nur einen Surrogate PK (Sequence) hat, und keinen Business Key,
> ist das gleich verdᅵchtig, bzw. stinkt erstmal nach Designfehler.
>
> "...the key, and nothing but the key..." ;-)
Da stimmte ich Dir schon zu. Der Primary Key kᅵnnte hier auch ᅵber die
PersonenID, UserID und Zeit gehen. Da aber auf Datensᅵtze in der
Kontakthistorie Bezug genommen wird (z.B. steht in einem Rechnungssatz,
mit welchem Kontakt die Rechnung versandt wurde, oder in einem
Dokumenten-Satz, mit welchem Kontakt eine technische Zeichnung erhalten
wurde), ist es einfacher, eine KontaktID bei den Rechnungen, Dokumenten
usw. zu speichern, als die drei Felder eines solchen Keys. Da in der
Kontakthistorie alle Telefonate, E-Mails, Briefe, Faxe usw. hinterlegt
sind, besteht auch eine (wenn auch minimale) Chance, dass zu einem ganz
bestimmten Zeitpunkt von einer Kontaktperson eine E-Mail an einen
Benutzer versandt wird, der genau zu diesem Zeitpunkt versucht, die
Kontaktperson anzurufen.
Lothar Geyer
PS: Meine erste Anwendung mit einer relationalen Datenbank (vorher mit
Netzwerk- und hierarchischen Datenbanken) habe ich etwa 1983
geschrieben, ich weiᅵ also schon, was ich tue. Und ich kenne auch den
Unterschied zwischen einem Key und einem Index. ;-)