sqlite index oder table

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Montag 10. März 2008, 19:59

Hi Alle,

Bei sqlite werden zwei verschiedene Typen unterschieden, table und index.
Wo ist der Unterschied zwischen den beiden Typen index und table?
Welchem Typ entsprechen die unten aufgeführten Daten?

Für mein Programm habe ich mir eine baumartige Datenstruktur für meine sqlite Datenbank überlegt. Die mit folgenden Daten gefüttert wird,
  • Monster
    • Ork
      • LE 30
      • GS 7
    • Gnom
      • LE 25
      • GS 5
    • Zwerg
      • LE 35
      • GS 6
und,
  • Landschaftstyp
    • Wald
      • Ork 10%
      • Gnom 20%
      • Zwerg 3%
    • Fluss
      • Ork 5%
      • Gnom 20%
      • Zwerg 1%
    • Berg
      • Ork 10%
      • Gnom 3%
      • Zwerg 30%
Für die Ansicht habe ich in Qt4 ein QTreeView Objekt, wo ich erst alle Namen der vorhandenen Tabellen oder/und Indices auflisten will. Allerdings weiß ich nicht welchen Typ ich habe, index oder table?

Der Befehl zum einlesen aller ? lautet,

Code: Alles auswählen

tabUebersicht = 'Select name FROM sqlite_master WHERE type=* ORDER BY name'
Grüße Markus
BlackJack

Montag 10. März 2008, 20:53

Es gibt nur Tabellen für Daten. Indexe kann man auf Tabellen anlegen um Suchanfragen zu beschleunigen. Und baumartige Strukturen musst Du in Tabellen umwandeln.

Vielleicht solltest Du erst einmal Grundlagen zu relationalen Datenbanken lernen.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Dienstag 11. März 2008, 03:00

BlackJack hat geschrieben:Es gibt nur Tabellen für Daten. Indexe kann man auf Tabellen anlegen um Suchanfragen zu beschleunigen. Und baumartige Strukturen musst Du in Tabellen umwandeln.

Vielleicht solltest Du erst einmal Grundlagen zu relationalen Datenbanken lernen.
Eine Tabelle deren Elemente auf Tabellen verweist?!

Also ein Index wäre also eine Durchnummerierung der Zeilen in der Tabelle?
Wo steht das erklärt?

Grüße Markus
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 11. März 2008, 09:03

Es gibt da verschiedene Varianten wie man das lösen könnte.

Die Frage ist, haben Monster immer die gleiche Anzahl von Eigenschaften (in deinem Beispiel zwei)?
Wenn ja, dann eine Tabelle mit den Feldern:
  • ID, Monstertyp, Eigenschaft-1, Eigenschaft-2
Wenn nein, dann zwei Tabellen:
  • Tabelle 1:
    • ID, Monstertyp
    Tabelle 2:
    • ID, Monster-ID, Eigenschaft
Im django ORM kann sowas so aussehen:

Code: Alles auswählen

class Monster(models.Model):
    id = models.AutoField(primary_key=True)
    monstertyp = models.CharField(max_length=255)

class MonsterEigenschaft(models.Model):
    id = models.AutoField(primary_key=True)
    monster = models.ForeignKey(Monster)
    eigenschaft = models.CharField(max_length=255)
(Das "id" Feld läßt man normalerweise weg, das macht django automatisch. Hab ich aber extra mit aufgeführt)
Siehe http://www.djangoproject.com/documentation/db-api/

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Dienstag 11. März 2008, 11:12

@feldmann_markus: Ein Index ist eine Datenstruktur innerhalb der Datenbank mit der man (bestimmte) Suchanfragen (vielleicht) beschleunigen kann. Ich glaube nicht, dass Dich das jetzt schon interessieren sollte.

Nachlesen kann man in "Datenbanksysteme" von Kemper/Eickler, aber es sollte eigentlich auch zu jeder grösseren Datenbank Doku geben, wo das relationale Modell und Normalformen erklärt werden. Es gibt auch einen Wikipedia-Artikel: Relationale Datenbank.
Antworten