php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.10.2009, 16:42  
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 Screeny Beitrag anzeigen
Könnte ich es denn z.B. so machen ? :

user | logindaten
useratt | 10 Benutzerinfos
useratt2 | 10 weitere Benutzerinfos
Es kommt auf die Verwendung der Daten an.

Z.b. wenn du wie hier im Forum die Kontaktmöglichkeiten unter jedem Beitrag anzeigen lassen willst, wäre es sinnvoll diese Daten (da sie häufig ausgelesen werden) von anderen zu trennen um eine "kleine" performantere Tabelle zu haben.

Wenn das nicht der Fall ist, kann das auch getrost mit in die Tabelle wo email, wohnort etc. drin steht.
Dark Guardian 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, 16:47  
Neuer Benutzer
 
Registriert seit: 28.10.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Screeny befindet sich auf einem aufstrebenden Ast
Standard

Ahhhh! =D

D.h. Daten die bsplw. bei jedem Profilbesuch aufgerufen werden in gesplittete Tabellen geschrieben. So muss in der DB keine Tabelle mit 10 Spalten und 4000 Einträgen durchsucht werden. Demnach ist es besser diese Informationen in eine Performance Tabelle zu schreiben die z.B nur 5 Spalten hat.

Ist eigentlich logisch.

Vielen Dank für die interessanten und vorallem nützlichen Informationen!

Hat noch jemand einen Tipp den er mir mit auf den Weg geben kann bevor ich die DB designe?

lieben Gruß!
Screeny ist offline   Mit Zitat antworten
Alt 28.10.2009, 17:27  
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

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.
Aus Normalisierungssicht ist eine Kreuztabelle für den dargestellten Fall schlichtweg völlig überflüssig. Sebst wenn du Attribute in einer Zeile einzeln speicherst ist es weiterhin vollkommen überflüssig.

Bevor du also sagst, ich würde hier Scheiße erzählen, lern erst einmal was über Datenbank-Design und Normalisierung.

User-Tabelle: Primärschlüssel User-ID
Attribut-Tabelle Variante 1: Primärschlüssel und Foreign-Key User-ID, Haufenweise Spalten für die Attribute
Attribut-Tabelle Variante 2: Primärschlüssel Attribut-ID, Foreign-Key User-ID, Char Attribut-Name, Char Attribut-Value, Unique key User-ID+Attribut-Name

Wo hast du da Platz (und sinnvolle Verwendung) für eine Kreuztabelle? Kreuztabellen bilden in der Regel n:m Beziehungen ab und hier gibt es keine. Bestenfalls kann man ein einzelnes Attribut, wie beispielsweise den Wohnort als n:m Beziehung verstehen. Wobei es aber eine zusätzliche Tabelle "Ort" gäbe und die Tabelle "Attribut" als Kreuztabelle verstanden werden kann.


Bzgl. der Performance: Ausprobieren. So pauschal gibt es da keine Antwort. In jedem Fall solltest du dir einige Grundregeln dabei beherzigen und das bedeutet: VarChar-Felder und Blob/Textfelder drücken die Performance vor allem, weil das DB-System da bzgl. der Datensatzlängen u.U. jonglieren muss.
__________________
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 29.10.2009, 01:50  
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 für 4000 Einträge planst, sogar wenn du unter 50 000 bleibst, würde ich alle Informationen in einer Tabelle speichern. Damit hast du weniger Aufwand beim programmieren (brauchst keine JOINs, musst nicht zwei Tabellen updaten etc.).

Über die Performance solltest du dir noch keine Gedanken machen. Erst wenn dein System wirklich Probleme bekommt kannst du überlegen die Tabellen aufzusplitten. Wenn du alle DB Abfragen in Models auslagerst (MVC) dann kannst du auch sehr leicht deine Tabellenstruktur aufsplitten ohne viele Änderungen am eigentlichen Code machen zu müssen.

Ich selbst betreibe ein System mit rund 200 000 Usereinträgen mit rund 40 Spalten. Probleme mit der Performance treten bei der Usertabelle aber nicht auf, da kommen ganz andere Fehlerquellen viel eher.

Also mach dir darum erstmal nicht so einen großen Kopf, programmiere lieber dein System sauber, dann kannst du später an der Performance drehen (falls es überhaupt nötig wird, bei kleinen Hobbyprojekten eher selten der Fall!)
Flor1an 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
php kreuztabelle, kreuztabelle normalisierung, normalisierung kreuztabelle, datenbankdesign performance, performantes datenbankdesign, kreuztabelle normalisieren, sql kreuztabelle design performance, datenbank design kreuztabelle, kreuztabelle php, normalisierung einer kreuztabelle, datenbanken kreuztabelle normalisieren beispiel, unterschiedlichen datensatzlängen normalisieren, kreuztabelle design, kreuztabelle sql, datenbankdesign kreuztabelle, kreuztabelle, grundregeln datenbankdesign, datenbankdesign tabelle mit unterschiedlichen attributen, datenbank tabellen performance, datenbankdesign wichtige attribute benutzer

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