Mysql Datenbank bzw. Tabellen Struktur

druxx

Grünschnabel
Hallo,

seit tagen überlege ich mir, ob meine Datenbankstruktur sinvoll ist.
Ich bin ziemlich neu auf diesem Gebiet und habe einfach mal drauf gearbeitet.

Ich habe eine Datenbank mit mehreren Tabellen, wobei eine Tabelle ziemlich groß ist.

Aufbau:

ID
name
link
bild
user
kategorie
usw.

Die tabelle besteht derzeit schon aus 40.000 einträgen.

Über ein formular auf meiner Seite will ich in dieser Tabelle nach bestimmten begriffen suchen.

Also so select * from tabelle where xxxx LIKE name usw.

Da ich nun wirklich wenig Ahnung habe und es ja nur ein freizeitprojekt ist, interessiert mich, ob diese lösung viel sinn macht, und wie sich das ganze bei der doppelten anzahl von einträgen verhält (geschwindikeit usw.)

Vielleicht kann mir ja jemand eine Antwort für meine Frage bzw. Problem liefern .... bin sinst ziemlich verzweifelt.

Danke!
 
Hi!

Also 40000 Datensätze ist noch nicht wirklich viel.
Ich habe schon mit MySQL Datenbanken gearbeitet, die ca. 1,5 Mio Datensätze in Tabellen hatten.
Hast Du in Deiner Tabelle einen Primary Key gesetzt? Mit dem wird die Selektierung der Daten deutlich schneller!

redlama
 
Hallo, danke für die antwort.

Primary Key soweit ich alles richtig verstehe, habe ich gesetzt auf die ID !

Gibts sonstnoch was , was man mahcne kann?
 
Wenn Du mit Datenbanken anfängst, schau Dir doch mal die Normalisierung an. Dies ist der wesentliche Bestandteil von relationalen Datenbanken.
Kategorie könnte zum Beispiel der Normalisierung wiedersprechen. Du hast ja wenig semantische Informationen Preis gegeben, also was die Felder bedeuten, welchen Typ sie haben, wie ihr Inhalt aussieht und ob sie in anderen Tabellen Fremdschlüssel sind.
Um so eine Datenbankstruktur zu beurteilen oder zu "kritisieren" müßte man schon die ganze Datenbank sehen

Gruß hpvw
 
Tabelle:


id int(13) Nein auto_increment
name varchar(250) Nein
Number varchar(50) Nein
title varchar(250) Nein
kurzbeschreibung text Nein
anzeige decimal(10,2) Nein 0.00
Img varchar(250) Nein
link varchar(250) Nein
categorieID int(12) Nein 0
categorieName varchar(250) Nein
ausID int(12) Nein 0
Prefix varchar(10) Nein
Preis decimal(10,2) Nein 0.00
auswertung varchar(10) Nein
Currency_Symbol varchar(5) Nein
description text Nein
words varchar(250) Ja NULL


Keine verbindung zu anderen Tabellen.
So ist der aufbau, bei der suche, benötige ich 4 felder und eines zum sortieren, bei der ausgabe benötige ich fast alle felder.
 
Bei den meisten Feldern kann ich mir keinen Reim drauf machen, was sie bedeuten, aber bei categorieID und categorieName bin ich mir relativ sicher, dass es nicht normalisiert ist.
Hier handelt es sich vermutlich um eine 1:n Beziehung. Vermutung: Jeder Eintrag der Tabelle gehört einer bestimmten Kategorie aus einer begrenzten Auswahl an Kategorien an.
1:n-Beziehungen werden mit zwei Tabellen modelliert. In Deinem Beispiel: Eine Tabelle Categories mit ID (Primärschlüssel) und Name, dazu die eigentliche Inhaltstabelle, die nur CategoryID (als Fremdschlüssel) enthält (nicht den Kategorienamen) und so auf den entsprechenden Eintrag in der Tabelle Categories, wo der entsprechende Kategoriename steht verweist.

Gruß hpvw
 
Zurück