php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-06-2013, 15:53
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard Datenintegrität

Hallöchen zunächst.

Ich hoffe das mein Thread-Titel richtig gewählt wurde.

Folgende Aufgabe/Problem stellt sich mir:

1. Eine ID ist unverwechselbar

aber was ist wenn hinter dieser ID wechselnde Bezeichner stecken?

Ein Beispiel (nur Exemplarisch):
Personalausweis-Nr = ID (Unique)
Tabelle name:
ID / Name
1 / Müller

So nun folgendes Szenario:

ID 1 strickt im DamenClub "Stricke" bis 01.01.2014 danch kegelt sie beim KegelClub "GutHolz".

Sie heiratet am 15.05.13 und heißt nun Schmidt. Oder Sie lässt sich 5 Wochen später wieder scheiden und nimmt ihren Mädchen Namen: Hinz, an.
Oder sie heiratet wieder und heist dann Meyer.

Nun folgt mein Problem:
Wenn ich ihren Namen ändere, änder ich auch alle Verknüpfungen dazu.

Aber das möchte ich nicht.

Bedeutet, ich möchte ihren Namen zum Club, egal wann und wie sie hieß haben.

Wenn ich nur den Namen ändere, dann fehlt mir der Bezug zum Club wo sie anders hies.

Irgendwo muss ich als "Schattentabelle" alle Namensänderungen wohl abspeichern.

Zusammengefasst:
Der aktuelle Name soll in der Clubtabelle stehen bis zum Austritt aus dem Club.

Das könnte per TRIGGER geschehen. Aber ist das sinnvoll?

Wie würdet ihr diese Aufgabe lösen?

Ich hoffe mein Problem darstellen zu können.

Freue mich auf eure Anregungen.
Mit Zitat antworten
  #2 (permalink)  
Alt 07-06-2013, 20:33
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Man nimmt dafür niemals veränderbare Daten. Das geschieht immer immer über eine eindeutige Zuordnung. Also zum Beispiel ein PRIMARY KEY mit AUTO_INCREMENT. Details dazu findest du hier.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 08-06-2013, 02:16
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Hallo Peter,
zunächst Danke für deine Antwort.

Ich kenne deine HP und nutze sie oft wenn ich Dinge nachlesen möchte

Vielleicht habe ich mich undeutlich in der Thread-Erstellung ausgedrückt:

ID ist immer Unique und Autoinkrement. Das ist mir klar.
In meinem Beispiel aber, könnte sich der Name zu der ID ändern durch Heirat, Geschlechtsumwandlung was weis ich.

Und genau DAS ist meine gedankliche Problemstellung.

Die ID tauscht in verschiedenen Clubs hat auf.
Die ID ändert unregelmäßig seinen NAMEN (nicht die ID-Nr)

Wie gehe ich damit um, damit in den Clubs immer der zu der Zeit aktuelle Name stehen bleibt? Und NICHT der Name der jetzt aktuell ist?

Und woher weis ich (History) das Müller mal Schmidt oder Hinz war?

Gruss WW
Mit Zitat antworten
  #4 (permalink)  
Alt 08-06-2013, 06:51
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Und woher weis ich (History) das Müller mal Schmidt oder Hinz war?
In dem du solche veralteten Einträge nicht löscht, sondern einen aktuelleren anlegst. Damit du dann herausfinden kannst, welcher der frischeste ist, könntest du diese alle mit einem Zeitstempel versehen.

Ansonsten sei dir folgendes ans Herz gelegt:
A Visual Explanation of SQL Joins
SQL und relationale Algebra
Die 5 Normal Formen
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 08-06-2013, 15:11
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Hallöchen combie,
danke das du dich auch mit eingeschaltet hast

Ich denke jetzt habe es verstanden und würde es so dann lösen:

Table_Aktuell:
ID(Auto_Incr) / Name
1 / Müller

und per TRIGGER:

Table_History
ID(Auto_Incr) / ID / Name / Datum (änderung)
1 / 1 /Schmidt / 2013-05-15

So müsste es dann gehen?

P.S. Deine Links sind auch Klasse combie
Mit Zitat antworten
  #6 (permalink)  
Alt 08-06-2013, 17:31
Benutzerbild von Yaslaw Yaslaw
 Registrierter Benutzer
Links : Onlinestatus : Yaslaw ist offline
Registriert seit: May 2013
Beiträge: 13
Yaslaw befindet sich auf einem aufstrebenden Ast
Standard

Es geht dabei um das Problem "Aktuelle Einträge pro Gruppe auslesen"
Yaslaw.Info: [MySQL] Aktuelle Einträge pro Gruppe auslesen
Dabei musst du nur nach dem Datum filtern wo der Name ausgelesen werden soll.

Als Key solltest du die ID (nicht mher autinkrement) und das Datum nehmen.
Mit Zitat antworten
  #7 (permalink)  
Alt 09-06-2013, 11:10
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Hallöchen Yaslaw.
auch dir danke das du dich einbringst.

Zitat:
Zitat von Yaslaw Beitrag anzeigen

Als Key solltest du die ID (nicht mher autinkrement) und das Datum nehmen.
Hmm.... sollte nicht jeder Datensatz eine eindeutige ID haben?

Deshalb dachte ich es ja so:

Table_History
ID(Auto_Incr) / ID(User-ID) / Name(User-Name)/ Datum (änderung)
1 / 1 /Schmidt / 2013-05-15

Oder ist das in meinem Fall zu vernächlässigen?

Deinen Link Yaslaw, hab ich natürlich sofort als Lesezeichen gespeichert
Mit Zitat antworten
  #8 (permalink)  
Alt 10-06-2013, 05:22
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Interessantes Thema.

Zitat:
Als Key solltest du die ID (nicht mher autinkrement) und das Datum nehmen.
Das würde ich spontan allerdings nicht machen, da die ID dann redundant abgelegt wäre. (Ich hoffe, die Aussage ist nachvollziehbar.)

Du gehst ja glaube ich davon aus, dass sämtliche Felder veränderlich sind. (Ist als Annahme aber meines Erachtens völlig akzeptabel.)

Ich würde dennoch eine Pro-forma-Tabelle erstellen, die im Zweifel wirklich nur die IDs von Personen enthält, damit ich in der eigentlichen Datentabelle dann einen Fremdschlüssel setzen und sozusagen Redundanz vermeiden kann.

Anders gesagt: Ich finde die Darstellung in Wasser_Wanderers letztem Post ganz passend.

Beim Abruf der aktuellen Daten eines Nutzers müsste man dann ja dennoch ein „group-wise maximum“ bilden. Ich weiß nicht, wie effizient das ist. Es wäre ja auch noch möglich, in der „echten“ Personen-ID-Tabelle den jeweils aktuellen Eintrag einer Person in der Daten-Tabelle zu verlinken. Das wäre allerdings dann doppelt verkettet, da der Daten-Eintrag ja auch auf die ID der Person verweist. Ich weiß nicht, ob man so was in Datenbanken macht. Vielleicht eher über eine weitere Verknüpfungstabelle?

Recherche und Hintergründe dazu würden mich auch interessieren.

Geändert von mermshaus (10-06-2013 um 05:24 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Festplatten lagern & Datenintegrität mcmurphy Hardware 3 16-11-2010 14:33

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:42 Uhr.