Laden...

Gedanken zur optimalen Datenbankstruktur

Erstellt von mohnstrudel vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.328 Views
M
mohnstrudel Themenstarter:in
27 Beiträge seit 2010
vor 12 Jahren
Gedanken zur optimalen Datenbankstruktur

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.

C
2.121 Beiträge seit 2010
vor 12 Jahren

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 😉

C
1.214 Beiträge seit 2006
vor 12 Jahren

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.

3.511 Beiträge seit 2005
vor 12 Jahren

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)

M
mohnstrudel Themenstarter:in
27 Beiträge seit 2010
vor 12 Jahren

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...

👍

C
2.121 Beiträge seit 2010
vor 12 Jahren

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.

H
208 Beiträge seit 2008
vor 12 Jahren

... 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)