verwendetes Datenbanksystem: SQL 2008
Hallo liebe Community!
Zunächst möchte ich sagen, dass ich nicht so recht weiß wonach ich bei meiner eher allgemeinen Frage googlen kann, daher liefern die Suchergebnisse irgendwelche sehr speziellen Probleme, die mir nicht weiterhelfen.
Nun aber zu meinem Anliegen:
Ich möchte ein ganz simples Programmchen schreiben, das das Eintragen und Auslesen von Datensätzen ermöglicht. Es sind 18 Felder geplant +/- n, wobei n hinreichend klein ist.
Ist also eigentlich nichts, was man auch nicht mit Excel hätte lösen können, doch hier kommt das Entscheidende - die Anzahl der Einträge kann und wird vermutlich in die Tausender gehen. Dadurch leidet bei Excel schon jetzt (bei mehreren Hundert) die Übersichtlichkeit.
Nun stellt sich mir die Frage im Bezug auf Performance - soll ich eine einzige große Tabelle machen mit den 18 Feldern oder die eher aufspalten? Beim ersten hätte ich einen einzigen Tabellenzugriff, der jedoch mehrere Spalten durchlaufen muss. Beim zweiten hätte ich immer kleinere Tabellen (sagen wir mal mit je 2-3 Spalten), jedoch mehrere Tabellenzugriffe.
Außerdem habe ich von Nested Sets gehört, nur habe ich hier ja kein Forum mit komplexer Verschachtelung o.ä.
Was denkt ihr? Gibt es noch andere Möglichkeiten, die Datenbank zu "designen"? Habe leider keine Erfahrungswerte was die Zugriffszeit von großen Datenmengen angeht.
Nochmal kurze Zusammenfassung
entweder
id firmenname kontaktperson kontaktdaten usw
1 xy ag heinz 123
1 xy ag peter 234
1 xy ag karl 345
1 xy ag olli 456
oder
id firmenname
1 xy ag
id kontaktperson kontaktdaten
1 heinz 123
1 peter 234
1 karl 345
1 olli 567
Danke euch im Voraus!
P.S. vielleicht bin ich auch einfach zu unerfahren und man würde bei den modernen Rechnern sowieso kaum einen Unterschied merken?
P.P.S.
Eventuell ist es ja wichtig - das Programm soll nur intern in einer kleinen Firma verwendet werden über einen lokalen Server.
Zugriffe auf mehrere Tabellen sind unperformanter als auf eine einzige.
Und ein paar tausend Zeilen in der Tabelle dürften den Sql Server zu einem müden Lächeln veranlassen 😉
Schon mal von Normalisierung gehört?
Wie weit du die Normalisierung aber treibst, musst du selbst entscheiden. Das kann man so allgemein nicht sagen. Ich würd einfach sagen, wenns halbwegs sinnvoll ist, die Daten auf mehrere Tabellen zu verteilen, dann würd ichs auch machen.
Performance ist da oft nebensächlich. Vor allem bei paar tausend Zeilen, das ist ja wirklich nicht die Welt.
Hallo,
auf jeden Fall die 2. Variante verwenden. Bei der 1. hast du redundante Daten. Wenn du eine Firma z.B. umbenennen willst, brauchst du nur den Namen in der Firmentabelle an einer Stelle ändern. Bei Variante 1 musst du den Namen an mehreren Stellen ändern.
Zugriffe auf mehrere Tabellen sind unperformanter als auf eine einzige.
Was so nicht stimmt. Gerade bei so einer einfachen Struktur, sind zwei Tabellen genau so schnell, wie eine. Da gibt es keinen Unterschied.
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Und ein paar tausend Zeilen in der Tabelle dürften den Sql Server zu einem müden Lächeln veranlassen 😉
Performance ist da oft nebensächlich. Vor allem bei paar tausend Zeilen, das ist ja wirklich nicht die Welt.
Was so nicht stimmt. Gerade bei so einer einfachen Struktur, sind zwei Tabellen genau so schnell, wie eine. Da gibt es keinen Unterschied.
Super, danke euch! Einfache Antworten, die mir keine zusätzlichen Probleme bereiten 😉 Werde mich dann wohl für die zweite Variante entscheiden, da es vom Verwaltungsaufwand dann geringer ist...
👍
Ok ich hab übersehen dass es normalisierbare Daten sind. Die Frage klang stark nur danach ausgerichtet als wärs vielleicht ein Problem mit mehreren Spalten pro Tabelle.
In dem Fall bist du natürlich mit mehreren Tabellen besser dran.
... die Anzahl der Einträge kann und wird vermutlich in die Tausender gehen.
[...]
Habe leider keine Erfahrungswerte was die Zugriffszeit von großen Datenmengen angeht.
Für einen SQL Server (und jede andere halbwegs vernünftige Datenbank) sind Tausende von Datensätzen nichts.
"Einigermaßen große" Datenmengen fangen bei ein paar Millionen Datensätzen an 8)