php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.04.2008, 10:53  
Neuer Benutzer
 
Registriert seit: 18.04.2008
Beiträge: 10
Ghosti
Standard Macht diese Struktur Sinn?

Hallo zusammen,

ich versuche gerade einen Loginbereich für Benutzer zu erstellen, die einmalig einen Artikel bei einem festgelegten Vorgesetzten bestellen sollen. Dazu hab ich mir jetzt mal folgende Tabellen erstellt und würde gerne wissen ob die Struktur der Tabellen so Sinn macht:

1. Tabelle User
  • ID INT PRIMARY KEY AUTOINC NOTNULL

    Username---> NAME VARCHAR(30) NOTNULL

    Usermail---> EMAIL VARCHAR(30) NOTNULL

    Usernummer---> KNr VARCHAR(10) NOTNULL

    Anzahl Bestellter Artikel---> BMENGE INT(3) NOTNULL

    Anzahl Max. erlaubter Artikel---> BMAX INT(3) NOTNULL

    Wer einmal bestellt hat darf nicht mehr, dafür wollte ich einen Wert der entweder auf 0 ist (DARF BESTELLEN) oder auf 1 (DARF NICHT BESTELLEN)---> BSTATUS INT(1)

    Verweis auf 2. Tabelle--->VID INT(3)
    Hiermit möchte ich dem jeweiligen Benutzer jeweils einen Vorgesetzten zuordnen

2. Tabelle Vorgesetzter
  • ID INT PRIMARY KEY AUTOINC NOTNULL

    VorgesetzterName---> VNAME VARCHAR(30) NOTNULL

    VorgesetzterEmail---> VEMAIL VARCHAR(30) NOTNULL


Gruß Ghosti

Ps: Wenn zufällig jemand nen tollen Link zum Thema geschützter Bereich auf Websiten + Login hat würde ich mich sehr freuen. Hab bereits einiges getestes, leider funktionierte bis jetzt nix gescheit.
Ghosti ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.04.2008, 12:45  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wozu ist die usernummer gut? bstatus ist nach meiner Meinung auch überflüssig, da kannst du ja bmax auf 0 setzen.
Die zweite Tabelle brauchst du gar nicht, mach einfach in die Usertabelle noch ein Feld vid rein, dass auf den Vorgesetzten innerhalb der gleichen Tabelle verweist oder sonst einfach NULL ist
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 21.04.2008, 13:22  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wie schon von lazydog gesagt ich denke du brauchst weder "bmenge" noch "bmax" oder "bstatus".

Ich hätte folgendes gemacht.

Code:
Tabelle: user
id
name
email
kundennummer
vorgesetzter_id

Tabelle: vorgesetzte
id
name

Tabelle: waren
id
name

Tabelle: bestellungen
id
user_id
waren_id
So kannst du einem User einen Vorgesetzten zuweisen, einfach in "vorgesetzer_id" die ID aus der Tabelle "vorgesetzte".

Die Waren die der User bestellen kann sind in der Tabelle "waren".

Wenn ein User jetzt bestellt wird ein Eintrag in "bestellungen" gemacht. Und zwar mit seiner ID als "user_id" und die Ware die er bestellt hat als "waren_id".

Wenn du jetzt überprüfen möchtest ob der User schon bestellt hat und nicht mehr bestellen darf kannst du einfach abfragen:

Code:
SELECT *
FROM bestellungen
WHERE user_id = $id_vom_abzufragenden_user
Und mit mysql_num_rows() schauen wie viele Einträge es ergibt. Wenn es 1 Eintrag ist weißt du dass er bereits bestellt hat und nimmer darf!
Flor1an ist offline   Mit Zitat antworten
Alt 21.04.2008, 13:56  
Neuer Benutzer
 
Registriert seit: 18.04.2008
Beiträge: 10
Ghosti
Standard

Auf eine Tabelle Waren kann ich glaub ich verzichten, da es lediglich ein einziges "Produkt" gibt. Oder macht es trotzdem Sinn dort einfach den einen zu bestellenden Artikel reinzulegen? Usernummer sollte übrigens zusätzlich auch als Passwort genutzt werden.

Bmax hätte ich wohl besser erkären sollen, sorry. Die Mitarbeiter haben jeweils eine bestimmte Stufe (es gibt derer 6) mit jeweils unterschiedlichen Berechtigungen. Beispiel: Stufe 1 darf maximal 5 x den Artikel bestellen, wird dann gesperrt und darf nicht wieder bestellen. Bei Stufe 2 sein es 20, bei 3 50 usw. Bmax also besser in user belassen oder? Wenn ein user eine Bestellung abgegeben hat, und die gewünschte Bestellmenge höher ist als die für Ihn erlaubte Bmax, bekommt er ne Meldung und muss die Menge erneut festlegen.

Danke schonmal für eure Hilfe
Ghosti ist offline   Mit Zitat antworten
Alt 21.04.2008, 14:49  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wenn du gleich eine Tabelle "waren" anlegst und du irgendwann, warum auch immer ein weiteres Produkt brauchst, kannst du es einfach in die Datenbank speichern und schon hast du ein zweites Produkt. Wenn du natürlich definitiv davon ausgehen kannst das sich nie was ändern wird, das Produkt auch immer das selbe bleibt (es könnte ja sein das es zwei Versionen vom Produkt gäbe) dann kannst du es auch hard coden ...

Und wenn du verschiedene Stufen hast dann kannst du entweder so wie du einfach eine Spalte hinzufügen mit der maximalen Bestellanzahl und dann davor immer abfragen wie viele Einträge in "bestellungen" existieren und dann berechnen wie viele er noch frei hat.

Oder, so würde ich das machen, du erstellt seine neue Tabelle
Code:
Tabelle: stufen
id
name
max
und erstellst beim User die Spalte "stufe". Jetzt kannst du die verschiedenen Stufen in die Datenbank schreiben und dann dem User die ID der Stufe geben. Somit kannst du später jeder Zeit die Stufen ganz easy verändern UND dann wirkt sich die Änderung direkt auf die User aus! Sonst müsstest du alle User suchen die z.B. das Limit 5 haben und alle User aufs Limit 10 erhöhen.

Das ganze wäre wieder ein weiterer Schritt richtung "Datenbanknormalisierung". Das wäre auch ein Schlagwort nach dem du Suchen könntest. Da gibt es viele gute Tutorials dazu was es bedeutet und wie man seine Datenbank normalisiert.

Bedeutet im Endeffekt dass du die Daten so abspeicherst dass du jeder zeit flexibel Änderungen vornehmen kannst, (fast) alle Möglichen Kombinationen zwischen den Daten darstellen und auslesen kannst.
Flor1an ist offline   Mit Zitat antworten
Alt 22.04.2008, 10:51  
Neuer Benutzer
 
Registriert seit: 18.04.2008
Beiträge: 10
Ghosti
Standard

So, hab jetzt die Tabellen mal wie folgt angepasst:

Code:
Tabelle: users
Feld             Typ           Null         Standard        Extra
UserID           int(11)       nein                         auto_increment
UserName         varchar(30)   nein
UserPass         varchar(32)   nein
UserSession      varchar(32)   ja           Null
UserMail         varchar(150)  nein
VorgesetzterID   int(11)       nein
StufeID          int(11)       nein

Code:
Tabelle: vorgesetzter
Feld             Typ           Null         Standard        Extra
ID               int(11)       nein                         autoincrement
Vorgesetzter     varchar(50)   nein

Code:
Tabelle: stufen
Feld             Typ           Null         Standard        Extra
ID               int(11)       nein                         autoincrement
Sufe             varchar(30)   nein
MaxOrder         int(3)        nein         0

Code:
Tabelle: orders
Feld             Typ           Null         Standard        Extra
ID               int(11)       nein                         autoincrement
UserID           int(4)        nein         0
WareID           int(4)        nein         0
Datum            date          nein         0000-00-00

Code:
Tabelle: waren
Feld             Typ           Null         Standard        Extra
ID               int(11)       nein                         autoincrement
WarenName        varchar(30)   nein
Wäre schön, wenn mir jemand sagen könnte ob die Typen alle so richtig gesetzt sind und die Struktur so in Ordnung ist?
Ghosti ist offline   Mit Zitat antworten
Alt 22.04.2008, 11:16  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich habe dir schon mal gesagt, dass die Tabelle Vorgesetzter überflüssig ist
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 22.04.2008, 13:00  
Neuer Benutzer
 
Registriert seit: 18.04.2008
Beiträge: 10
Ghosti
Standard

Ich habe ca 30 - 40 Leute die als Vorgesetzter eingesetzt werden. Eine erfolgte Bestellung muss vom jeweiligen Vorgesetzten auf einer Separaten Seite dann bestätigt werden. Wenn der Vorgesetzte sich einloggt, sollen ihm nur die User angezeigt werden die eine Bestellunge abgegeben haben und Ihm unterstellt sind. Ich denke da macht das dann schon Sinn oder?
Ghosti ist offline   Mit Zitat antworten
Alt 22.04.2008, 14:11  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ghosti
Ich denke da macht das dann schon Sinn oder?
Ich denke nein. Da baust du dir nur Redundanzen ein. Jeder Vorgesetzte ist ja schlussendlich auch ein User mit Passwort, etc. Wenn du nun zwei Tabellen hast, und jemand ändert den Namen (z.B. durchg Heirat), dann musst du das in zwei Tabellen ändern. Wenn du aber in der Usertabelle ein Attribut vid hast, das eine Referenz ist auf die Id in der gleichen Tabelle, passiert das nicht.
Und wenn du um jeden Preis eine Tabelle Vorgesetzte haben willst, dann machst du halt eine, mit den beiden Attributen u_id und v_id, die gemeinsam den Primärschlüssel bilden und beide eine Relation zur Id der Usertabelle beinhalten.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 22.04.2008, 14:43  
Neuer Benutzer
 
Registriert seit: 18.04.2008
Beiträge: 10
Ghosti
Standard

Hmmm, ich glaub so ganz versteh ich das jetzt nicht aber ich versuche es mir mal an einem Beispiel vorzustellen:

Code:
UserID    UserName      VID
1         Hans          4           ---> Mitarbeiter von Jürgen (Gruppe 1)
2         Peter         4           ---> Mitarbeiter von Jürgen (Gruppe 1)
3         Klaus         5           ---> Mitarbeiter von Werner (Gruppe 2)
4         Jürgen        4           ---> Ist Vorgesetzter Gruppe 1
5         Werner        5           ---> Ist Vorgesetzter Gruppe 2
Meinst du das so?

Was mach ich dann aber, wenn Jürgen nen anderen Job in der Firma bekommt und ein andere User, beispielsweise Hans seinen Job übernimmt - Bei allen Usern den VID ändern? *grübel*
Ghosti ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
xslt struktur.. so nur mit php-unterstützung möglich? Crypi PHP Tipps 2008 8 17.03.2008 17:58
Struktur im Newssystem tinchen PHP Tipps 2007 4 10.07.2007 21:20
Macht diese Index-Verteilung Sinn? R4v3r Datenbanken 1 28.02.2007 13:55
Der Sinn von OOP bei php Melchior PHP-Fortgeschrittene 2 16.07.2006 23:50
die neue Struktur von der opengeodb Plague PHP-Fortgeschrittene 2 13.07.2006 08:33
Performance - Was macht mehr Sinn? (Script-Splitting) Geier PHP Tipps 2006 10 07.06.2006 15:41
Sinn von unset KingCrunch PHP Tipps 2006 3 20.05.2006 10:38
DB Struktur? nsane Datenbanken 2 11.10.2005 10:50
Der Sinn von ordnerbasierten Systemen PHP-Fortgeschrittene 8 09.10.2005 20:33
Ist dies emphelenswert und ergibt dies einen guten sinn? lalala HTML, Usability und Barrierefreiheit 22 20.07.2005 15:26
Datenbank struktur PHP Tipps 2005 2 19.01.2005 19:44
Forum Struktur der Tabelle?! PHP Tipps 2005 4 05.01.2005 15:01
verzeichnis struktur in eine tabelle packen Datenbanken 2 29.12.2004 20:15
wer weiß wie man so ein struktur schreibt?? HTML, Usability und Barrierefreiheit 1 30.08.2004 10:50
Macht Entwicklung phpGTK Sinn? PHP Tipps 2004 9 24.06.2004 09:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tabelle vorgesetzter, vorgesetzten struktur

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.