php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.10.2009, 15:36  
Neuer Benutzer
 
Registriert seit: 28.10.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Screeny befindet sich auf einem aufstrebenden Ast
Standard Datenbankdesign

Hallo!

Ich arbeite derzeit an einem "Fun" - Projekt um meine PHP / SQL - Fähigkeiten wieder etwas aufzufrischen bzw. zu erweitern. Ich hab mir ein kleines eigenes Projekt gesetzt und versuche das nun weitgehend zu realisieren. Auf meinem local versteht sich.

Ich habe vor, dass sich ein User registrieren kann und ein Profil für sich anlegen kann um dort entsprechende Informationen über sich zu speichern.

Jetzt überlege ich wie ich die Datenbank "designe". Lass ich die Benutzerdaten alle über eine Tabelle in der DB laufen, lege ich eine für den login an, eine für diesen Bereich und noch eine für diesen.

Mir stellt sich die Frage, was wäre, wenn z.B. 4000 User registriert WÄREN.
Wie sollte man eine DB am besten von Anfang an designen um z.B. später eine gute Performance beizubehalten.

Ich würde mich sehr über eure Erfahrugen freuen!

Vielen dank im voraus!

Screeny
Screeny ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.10.2009, 15:40  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Im Allgemeinen reicht eine Datenbank mit mehreren Tabellen. Für Projekte, die später auf einen Hoster umziehen, der viell. nur eine Datenbank anbietet, empfiehlt sich zusätzlich ein Namespcae-Prefix der jeweiligen Anwendung für die Tabellen zu benutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 28.10.2009, 15:53  
Erfahrener Benutzer
 
Benutzerbild von MaiKaY
 
Registriert seit: 17.09.2009
Beiträge: 633
PHP-Kenntnisse:
Anfänger
MaiKaY befindet sich auf einem aufstrebenden Ast
Standard

Bei mehreren User würde ich Kreuz Tabellen anlegen :P

1. User
2. UserAttribute
3. User_x_UserAttribute

so in der Art
__________________
ACHTUNG!!! SIGNATUR!!!
PHP-Code:
var_dump($gehirn); exit; 
0 ??? WTF ? freutag.net
MaiKaY ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:06  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Eine Kreuztabelle macht nur dann Sinn, wenn sich mehrere User ein und dasselbe Attribut teilen. Und das ist ein eigentlich alberner Ansatz, denn wieso sollte die gleiche ICQ-Nummer bei mehreren Usern zum Einsatz kommen. Selbst wenn sich beispielsweise der Wohnort von zwei Usern zufällig gleicht, ist das kein grund, eine Kreuztabelle anzulegen.

So, nun kommt das Aber. Es gibt einzelne Attribute, wo das wiederum Sinn macht. So beispielsweise die "Rolle". Also der Wert ob man Besucher oder Admin der Webseite ist.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:10  
Erfahrener Benutzer
 
Benutzerbild von MaiKaY
 
Registriert seit: 17.09.2009
Beiträge: 633
PHP-Kenntnisse:
Anfänger
MaiKaY befindet sich auf einem aufstrebenden Ast
Standard

oO... was erzählste da fürn shice Kreuztabellen machen wohl in der hinsicht Sinn... Aber nun ja Jeder macht es auf seine Art und Weise.

-> Habe ja nur gepostet, wie ich meine DB "designe"
__________________
ACHTUNG!!! SIGNATUR!!!
PHP-Code:
var_dump($gehirn); exit; 
0 ??? WTF ? freutag.net
MaiKaY ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:11  
Neuer Benutzer
 
Registriert seit: 28.10.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Screeny befindet sich auf einem aufstrebenden Ast
Standard

Danke für die schnellen Antworten!

Was spricht denn dagegen in der Tabelle "User" einfach alle Infos zu speichern?

also z.B.:
User | Mail | PW | Wohnort | ICQ | Hobbys | Angemeldet am | Strasse | Plz usw.

Wird die DB dadurch langsamer?
Screeny ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:13  
Erfahrener Benutzer
 
Benutzerbild von MaiKaY
 
Registriert seit: 17.09.2009
Beiträge: 633
PHP-Kenntnisse:
Anfänger
MaiKaY befindet sich auf einem aufstrebenden Ast
Standard

Die Performance wird einfach schlechter, wenn viele User gleichzeitig zugreifen. Bei wenigen Benutzern, ist das gar kein Problem, aber du hast ja gefragt bei 4000 User...
__________________
ACHTUNG!!! SIGNATUR!!!
PHP-Code:
var_dump($gehirn); exit; 
0 ??? WTF ? freutag.net
MaiKaY ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:24  
Neuer Benutzer
 
Registriert seit: 28.10.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Screeny befindet sich auf einem aufstrebenden Ast
Standard

Das hatte ich mir fast gedacht. Gut. Ich werd dann mal ein wenig an meinem localhost Projekt weiterbasteln.

Was noch sehr hilfreich wäre:

Wie verbinde ich denn idealerweise die Inhalte aus den drei Tabellen

Bspl:
1. User
2. UserAttribute
3. User_x_UserAttribute

in 1. sind id, user und pw
in 2. paar Infos
in 3. weitere infos

Wie schreibe ich die Daten denn am besten in die DB, dass die user mit den entsprechenden für sie bestimmten Daten verbunden werden können?

Möglich wäre ja, die incrementierte ID auszulesen und mit in Tabelle 2 und 3 zu schreiben und dann unter dieser ID die Daten zu speichern. Damit dann die ID und die zugehörigen Daten abrufen und "verknüpfen".

Oder habt ihr da einen besseren Weg?

Danke für die schnelle Hilfe!
Screeny ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:27  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.627
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von MaiKaY Beitrag anzeigen
oO... was erzählste da fürn shice Kreuztabellen machen wohl in der hinsicht Sinn... Aber nun ja Jeder macht es auf seine Art und Weise.

-> Habe ja nur gepostet, wie ich meine DB "designe"
Begründung?

User:

id, name, pw

UserAttr

id, user_id, icq, msn, wohnort, hobbys, email

User_x_UserAttr

????

Und selbst wenn du die Tabelle UserAttr nach dem Schema "id, user_id, attr, value" aufbaust ist die dritte Tabelle Sinnlos weil

Das ist und bleibt eine 1 zu n beziehung und wird niemals eine n zu m Beziehung werden, alles andere wäre designtechnisch problematisch.

Zitat:
Was spricht denn dagegen in der Tabelle "User" einfach alle Infos zu speichern?
Performance. Vorallem weil einige Felder vom Typ varchar() sein werden und somit die Länge eines Datensatzes nicht 100%ig sicher ist.

Bei 4000 gehts noch, aber ich durfte neulich an einem DB Design für 4 Millionen Datensätze mitwirken, und da macht es schon was aus wenn aus 20 Spalten nur noch 10 werden weil die restlichen ausgelagert werden konnten da sie nur auf "einer" Seite im System gebraucht werden.

Geändert von Dark Guardian (28.10.2009 um 16:31 Uhr).
Dark Guardian ist offline   Mit Zitat antworten
Alt 28.10.2009, 16:37  
Neuer Benutzer
 
Registriert seit: 28.10.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Screeny befindet sich auf einem aufstrebenden Ast
Standard

Könnte ich es denn z.B. so machen ? :

user | logindaten
useratt | 10 Benutzerinfos
useratt2 | 10 weitere Benutzerinfos
Screeny 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
Datenbankdesign für Onlineshop jonSchmidt Datenbanken 1 24.07.2009 18:41
Datenbankdesign für Benutzerprofil root66 Software-Design 1 11.06.2009 23:43
[Erledigt] Komplexer SELECT (in relationalem Datenbankdesign) + Literaturempfehlung lordnikonkg Datenbanken 4 29.04.2009 23:10
[Erledigt] Datenbankdesign: "Freundschaftsnetzwerk" phyton Software-Design 15 04.10.2008 13:28
Datenbankdesign mit wiederholung shocky Datenbanken 2 15.01.2007 15:37
Datenbankdesign: Reloaded c-f-g Datenbanken 7 29.07.2006 17:24
[Erledigt] [SQL] Datenbankdesign Datenbanken 5 12.04.2005 08:30
Datenbankdesign für Shop mit unterschiedlichen "Typen&a PHP Tipps 2005 27 20.01.2005 16:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wie speichert man die profil infos in einer datenbankdesgn, datenbankdesign millionen, datenbank design php

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:56 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