Benutzername u. Datum in MySQL Datenbank schreiben

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?

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

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 :smile:

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).

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?

wieso redundanz ?
Pro produkt ID gibt es ein datum und ein Verantwortlichen , wenn das immer derselbe ist dann ist das halt so , damit ist aber nix redundant . Wie soll ich sonst festhalten wer das produkt angelegt hat. Auch mit einer Benutzer ID , wäre es nach deiner ansicht redundant weil ja immer die gleiche benutzer ID da steht .
Aber der Datensatz produkteingabe besteht nunmal aus dem produkt pluss datum und user . Du kannst ja immer andere User andere Produkte eingeben lassen , aber das hat dann immer noch nix mit redundanz zu tun.
Erst wenn die gleiche Information in zwei tabellen auftaucht wäre es redundant .

Z.b.
Produktetabelle
Produktid produktname produktanzahl eingabedatum userid

Eingabetabelle
Produktid eingabedatum userid

Benutzertabelle
UserId Username

das wäre redundanz . hier ist die gleiche information eingabedatum mehrfach vorhanden.

das hier z.b. wäre auch eine Möglichkeit

Produktetabelle
Produktid produktname produktanzahl

Eingabetabelle
Produktid eingabedatum userid

Benutzertabelle
UserId Username

Ob das mehr sinn macht, liegt eher an der Aufgabenstellung , brauch ich die Eingabe als extra Tabelle oder muss sie beim Produkt mit drinne sein .

Moin, sax,

Allerdings sollen nur eine handvoll Benutzer Daten in die
Datenbank eintragen können.

dann fehlt aber die Info, welche Benutzer das dürfen.

Meine zweite Frage: Sollte für „Datum“ und „Benutzername“ eine
eigene Tabelle angelegt werden?

Da hilft immer die Frage nach dem Schlüssel: Das wäre dann Benutzer + Datum, nicht sehr sinnvoll. Eigentlich nicht sinnvoller als eine Tabelle, in der das Datum gespeichert würde :smile:))

Wenn es darum geht, den Bearbeiter der Tabellenzeile festzuhalten, dann ist der jeweilige Satz genau der richtige Ort für die Info.

Gruß Ralf