Tabbellen Einteilung

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Tabbellen Einteilung

Postby flo85 » 22. November 2007 02:42

Hallo an alle!

Folgende Frage: In einer Datenbank sollen sich Schüler einloggen können und ihren Stundenplan abspeichern können. Meine Frage ist nun wie man nun am besten die Tabellen wählt.

Also es gibt ja sicher eine Tabelle für die Benutzerdaten bei der die Spalten vielleicht so aussehe:

BenutzerID | Benutzername | Passwort

Meine eigentliche Frage ist nun wie man das am besten mit den Stundeplandaten macht. Also eine Möglichkeit wäre ja eine Tabelle für alle Daten anzulegen. Die würde dann vielleicht wie folgt aussehen:

ID | BenutzerID | Tag | Stunde | Fach

Oder wäre es sinnvoller das jeder Schüler seine eigene Tabelle mit seinen Daten bekommt?

Mir geht es hauptsächlich um die Frage welcher Aufbau eine bessere Performance bringt.

Ich hoffe mir kann jemand helfen, aber ich denke für jemanden der Ahnung hat ist das kein Problem. :)

Grüße
Flo
flo85
 
Posts: 8
Joined: 22. November 2007 02:28

Postby Mätes » 22. November 2007 09:26

Oder wäre es sinnvoller das jeder Schüler seine eigene Tabelle mit seinen Daten bekommt?


Nein, bloß nicht. dann hast du nachher wer weiß wie viele Tabellen,
und das wird schnell unpflegbar.
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby flo85 » 22. November 2007 16:19

Danke für die Antwort.

Nochmal eine Frage zum Verständnis:

Wenn sich sehr viel Benutzer anmelden (mehrere Tausende) und all diese Daten in eine Tabelle stehen wird dadurch das System nicht deutlich langsamer als wenn man diese ganzen Daten auf mehre Tabellen aufteilt?
Oder macht es keinen Unterschied bzw. vielleicht ist ja auch das Aufteilen langsamer?

Wie ihr sicher merkt habe ich davon nicht so viel Ahnung. :)

Vielleicht noch ein Beispiel zu meiner Vorstellung:

Man hat 10 000 Benutzer. Wenn man nun die Daten dieser Benutzer alle in eine Tabelle schreibt müsste man ja da die ganz Tabelle nach einem bestimmten Datensatz durchsuchen.

Wenn man nun die Tabelle in 10 Tabellen a 1000 Benutzer aufteilt und es kommt eine Anfrage von einem bestimmten Benutzer könnte man anhand der BenutzerID wissen in welcher Tabelle man suchen müsste und könnte dort dierekt suchen, was ja schneller gehen müsste da die Tabelle kleiner ist.

Wäre das nicht eine bessere Variante?
flo85
 
Posts: 8
Joined: 22. November 2007 02:28

Postby Scory » 22. November 2007 23:03

flo85 wrote:Man hat 10 000 Benutzer. Wenn man nun die Daten dieser Benutzer alle in eine Tabelle schreibt müsste man ja da die ganz Tabelle nach einem bestimmten Datensatz durchsuchen.


Genau das ist der Sinn von SQL Tabellen.

flo85 wrote:Wenn man nun die Tabelle in 10 Tabellen a 1000 Benutzer aufteilt und es kommt eine Anfrage von einem bestimmten Benutzer könnte man anhand der BenutzerID wissen in welcher Tabelle man suchen müsste und könnte dort dierekt suchen, was ja schneller gehen müsste da die Tabelle kleiner ist.

Wäre das nicht eine bessere Variante?


Nein, das wäre die totale Katastrophe. Weil dann fast keine vernünftigen Selects mehr funktionieren, kein Joins, nichts, gar nichts. Dann kannst Du auch gleich in Textdateien ohne SQL schreiben - ist auch genauso schlecht.

Wenn Du irgendwann SQL gelernt und verstanden hast, wirst Du Dich rückwirkend für diese Fragen grausen.

Mach Dir mal über die Datenmengen keine Gedanken - mehrere Millionen Tabelleneinträge sind eine Lachnummer für SQL.

Grüße
Scory
Scory
 

Postby flo85 » 23. November 2007 00:18

Na gut zu wissen, ich sage bescheid wenn mir das Grausen kommt. :wink:

Dann muss das ja intern richtig clever gemacht sein. Aber das übersteigt irgendwie meine Vorstellungskraft. :P

Genauso wie z.B. die Tatsachen (auch wenn das jetzt nicts zum Thema gehört, oder vielleicht doch?) das google funktioniert.

Wünsch noch eine schöne Nacht!
flo85
 
Posts: 8
Joined: 22. November 2007 02:28

Postby Mätes » 23. November 2007 09:14

Eine Datenbank ist wie ein fettes Buch.
Zum Glück gibt es ein Inhaltsverzeichnis, daher ist die dicke des Buches
nicht ausschlaggebend.

stell dir vor, du hättest statt mehrerer Bücher viele viele papierschnipsel im Schrank ... :)

Es gibt gehirnaufweichend trockene Bücher über die Interna von SQL-Servern.
Nicht jedermanns Sache (und vielleicht auch nicht für einen Neuling gedacht),
jedoch sehr interessant.
Aber so kompliziert isset auch nicht. Wenn man die internen Vorgänge kennenlernt,
hat man sehr viele 'ach soooo, klar, wie auch sonst'-Momente.

gruß
m
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby flo85 » 23. November 2007 15:14

Kannste denn ein Buch empfehlen? :)

Mich würde das schon Mal interessieren.

Grüße
flo85
 
Posts: 8
Joined: 22. November 2007 02:28

Postby Mätes » 26. November 2007 13:35

Ja, kann ich, aber nur für Micro$oft-SQL-Server.
http://www.amazon.de/Inside-Microsoft-S ... 144&sr=1-4

Für Mysql kenne ich keine diesbezüglichen Bücher.
Auf jedenfall wird auf dem Buch NICHT stehen:
... in 24 Tagen
... für Einsteiger
... schnell und einfach

Würde dir ein solches Buch auch als wenigstens das zweite SQL-Buch empfehlen,
da es wirklich für Fortgeschrittene ist. Es kann ziemlilch deprimierend sein,
wenn man sich ein schweineteures Buch zugelegt hat, und beim Lesen nur Fragezeichen im Kopf erscheinen :(

m
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Scory » 26. November 2007 14:45

flo85 wrote:Dann muss das ja intern richtig clever gemacht sein. Aber das übersteigt irgendwie meine Vorstellungskraft. :P


Das ist sogar sehr clever gemacht. Ein ganz wichtiger Aspekt dabei ist die sog. "Sicht" auf die Daten. Du sollst in einem Programm NIE wissen, wie die Daten auf der Platte organisiert sind. SQL ist eine abstrakte Zugriffssprache, die für Dich die SELECTs zu Verfügung stellt, um Daten zu selektieren.

Wie die intern dann gespeichert und verwalten werden, darüber sollst Du als Programmierer nicht nachdenken müssen - und das wäre aber extrem der Fall, wenn Du die Daten zerstückelst und erst einmal "überlegen" müßtest, wo steht eigentlich der und der Datensatz?

Die technische Umsetzung ist in der Tat ein sehr komplexer Vorgang. Die Interna mögen interessant sein, wichtiger erscheint mir aber, dass Du erst einmal lernst, überhaupt SQL zu bedienen. Spätestens dann wird Dir auch das Konzept klar und Du wirst verstehen, dass man die Daten nicht einfach so verteilt auf verschiedene Tabellen.

Eine Tabelle in SQL entspricht einer sog. "Entität" in einem Datenmodell. Du hättest in einem Datenmodell immer nur eine Entität "Kunde" (beispielsweise), und nicht "Kunde mit Anfangsbuchstaben A-E", "Kunde mit Anfangsbuchstabe F-K" usw.

Ein ganz tolles SQL-Buch, auch wenn es auf einem nicht mehr aktuellen MySQL-Stand basiert, ist das "MySQL Kochbuch" von Paul Dubois aus dem O'Reilly Verlag. Das kann ich nur wärmstens ans Herz legen, auch wenn neueste Features von MySQL 5.x noch nicht erwähnt werden.

Grüße
Scory
Scory
 


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 12 guests