# Anzahl an Spalten in einer Datenbank



## DarthShader (1. Mai 2007)

Hallo,

ich frage mich, wieviele Spalten man in einer Tabelle einer Datenbank (z.B. MySQL, HSQLDB) unterbringen sollte. Ich habe hier z.B. ein Dokument mit vielen kleinen Informationen, manches kurze Textfelder, manchmal boolsche Werte oder kleine numerische Werte.

Allerdings beläuft sich die Anzahl dieser kleinen Felder auf bis zu 120.

Wäre es theoretisch möglich, 120 Spalten in eine Tabelle zu bauen, oder würde das zu Problemen führen (z.B. Performance?). Oder ist es "ok", so viele Spalten in einer Tabelle zu haben (Abfragen würde ich dann nie per "SELECT * FROM" machen, sondern immer nur zwei oder drei Felder holen)?


Danke für Eure Hilfe


----------



## lmarkus31 (1. Mai 2007)

Hallo,

ich kenne jetzt nicht genau die Limits die MySQL für die Anzahl Spalten pro Tabelle festlegt. Bei Oracle z.B. sind es 1000 (abgesehn von geschachtelten oder Objekttabellen) Spalten pro Tabelle, wobei es fraglich ist, ob das sinnvoll ist, da solche grossen Tabellen nur in seltenen Fällen sinnvoll so abgelegt werden können, das performant darauf zugegriffen werden kann. (row migration usw.)

Generell sollte am Anfang das Datenbank-Design stehen. Du solltest Dir überlegen, welche Informationen in den 120 Spalten stehen und in verschiedene logische Einheiten verfeinern (normalisieren). Später werden die verschieden verteilten Informationen über Joins wieder zusammengeführt. 

In manchen Fällen ist es allerdings sinnvoll auch einige Tabellen denormalisiert vorzuhalten. d.h. Redundanzen bewusst in Kauf zu nehmen, um die Performance von Abfragen zu verbessern und komplexe Joins zu vermeiden.

Bei deiner gegebenen Anzahl von 120 "Informationen" würde ich zuallererst zu einer genaueren Analyse der Daten, die gespeichert werden sollen, raten. Als Einstieg solltest du dir z.B. überlegen, welche Spalten "Keyspalten" darstellen und welche anderen Spalten von diesen Keyspalten abhängen.

Am Ende kann es sein, dass du mit 6 Tabellen mit je 20 Spalten, 20 Tabellen mit je 6 Spalten usw. dastehst. Es hängt einzig und allein von deinen Daten ab.


----------



## DarthShader (1. Mai 2007)

Danke für Deine Antwort. Ja eine Analyse der Daten ist wohl notwendig, um sie vielleicht zunächst einmal zu "Kategorisieren" auf mehrere Tabellen.


----------

