Hallo,
ich habe ein PHP Skript, welches Produktdaten in eine
Datenbank einträgt. Zu jedem Produkt möchte ich auch
speichern, wann und von welchem Benutzer das Produkt in die
Datenbank eingetragen wurde. Mein Design könnte etwa so
aussehen.
ID | Produkt | Hersteller | Gewicht | Datum | Benutzername
Dazu mein PHP Code:
$insert = „insert into tabellenname values (’’, ‚$produkt‘,
‚$hersteller‘, ‚$gewicht‘, now(), '$_SESSION[‚benutzer‘])“;
Allerdings sollen nur eine handvoll Benutzer Daten in die
Datenbank eintragen können. Bedeutet das, dass es in der
Spalte „Benutzername“ zu redundanten Daten kommt, oder? Nimmt
man dies in Kauf oder gibt es eine bessere Lösung?
vorteilhaft ist es eine Benutzer Id zu nehmen, damit der Benutzer auch mal seinen namen ändern kann, bzw zwei gleiche benutzernamen nicht kollidieren (kann ja mal vorkommen wenn vile ihre benutzer namen ändern). Kann man ausschlissen das es doppelte benutzernamen bzw änderungen gibt kann man natürlich den buntzernamen voll auschreiben was auch wieder vorteile haben kann , sollte mal eine Bentuzer ID gelöscht werden hat man noch den Benutzer namen , was oft mehr aussagt .
, z.b. der Autor eines Artikels der schon lange nicht mehr in der firma arbeitet und wo aus Datensicherheitsgründen sein account gelöscht werden muss.
Allerdings lässt sich das auch anders lösen
Meine zweite Frage: Sollte für „Datum“ und „Benutzername“ eine
eigene Tabelle angelegt werden? Würde das irgendwelche
Vorteile bringen oder die Datenbank nur verkomplizieren?
ID | Datum | Benutzername
Das wäre nur nötig wenn auch weitere änderungen an der produkt id festgehalten werden sollen.
Also
* Produkt Tabelle mit datum und userid
* Benutzer Tabelle Id Name
Da jedes Produkt ja ohnehin nicht ohne datum und userid in die datenbank finden darf.
Jenachdem wie die Problematisch der username ist , z.b. emails , nehm ich sowieso die ID , keiner der Eingeben darf in die Tabelle sollte solche Informationen garnicht sehen können sollen . Eine ID ist weniger aussage kräftig als eine email oder ein „echter name“ .
Wer rechte auf die Benutzertabelle hat, kann sich ja seine „email“ bzw „echten namen“ selber selecten .
Also man kann es so oder so machen ID oder Name , bei Archiven ist es ein Vorteil , da man genau da den echten namen haben will . Bei anderen sachen ist es ein sicherheits problem (usernamen lassen sich auch zum login häcking benutzen , also warum es in eine tabelle eintragen die vielleicht von ganz anderen system fremden gesehen werden kann).