AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Performance verbessern
Thema durchsuchen
Ansicht
Themen-Optionen

Performance verbessern

Ein Thema von Luncustaf · begonnen am 8. Dez 2006 · letzter Beitrag vom 7. Jan 2007
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#41

Re: Performance verbessern

  Alt 10. Dez 2006, 19:06
und wo soll ich den erstellen?
was ist FK? Fremd..?

oder anders gesagt - jede tabelle hat natürlich noch die spalte ID - die als primary key definiert ist.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#42

Re: Performance verbessern

  Alt 10. Dez 2006, 19:09
kategorie
ID Integer Primary Key
name string //namen der kategorien

unterkat
ID integer
kat integer //hauptkategorie -> Foreign Key (ID in Tabelle kategorie)
unter string //name der unterkategorie

Poste mal die Metadaten (Am Besten von Admintool erzeugen lassen)
Markus Kinzler
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#43

Re: Performance verbessern

  Alt 10. Dez 2006, 19:15
was meinst du mit metadaten?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#44

Re: Performance verbessern

  Alt 10. Dez 2006, 19:16
So, habe das jetzt mal direkt in MySQL getestet. Funktioniert wunderbar. Ich habe dabei genau deine Struktur benutzt. Was für eine MySQL-Version benutzt du?

Oh, sehe gerade das hast du ja angeben. MySQL5 benutzte ich auch.

Verwunderte Grüsse
Thorsten
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#45

Re: Performance verbessern

  Alt 10. Dez 2006, 19:16
Zitat von omata:
So, habe das jetzt mal direkt in MySQL getestet. Funktioniert wunderbar. Ich habe dabei genau deine Struktur benutzt. Was für eine MySQL-Version benutzt du?

Verwunderte Grüsse
Thorsten
5.0

€: hmm ich hab den code nunmal local getestet und da geht es - wenn ich es auf dem externen server probiere geht es nicht.

gruß
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#46

Re: Performance verbessern

  Alt 10. Dez 2006, 19:17
Zitat:
was meinst du mit metadaten?
Die Beschreibung dr tabellen mit Feldern, deren typen und die Beziehungen zwischen den Tabellen.
Du hast ja was von ID-Feldern geschrieben, welche in deiner obigen Übersicht nicht vorhanden waren.
Markus Kinzler
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#47

Re: Performance verbessern

  Alt 11. Dez 2006, 08:52
tabelle kategorie
SQL-Code:
  `Id` int(6) unsigned NOT NULL auto_increment,
  `name` char(100) NOT NULL,
  PRIMARY KEY (`Id`)
tabelle unterkat
SQL-Code:
  `Id` int(6) unsigned NOT NULL auto_increment,
  `kat` char(100) NOT NULL,
  `unter` char(100) NOT NULL,
  PRIMARY KEY (`Id`)
tabelle rezepte
SQL-Code:
  `Id` int(6) unsigned NOT NULL auto_increment,
  `name` char(100) NOT NULL,
  `unterkat` char(100) NOT NULL,
  `kategorie` char(100) NOT NULL,
  PRIMARY KEY (`Id`)
tabelle zutaten
SQL-Code:
  `Id` int(6) unsigned NOT NULL auto_increment,
  `kategorie` char(100) NOT NULL,
  `unterkat` char(100) NOT NULL,
  `name` char(100) NOT NULL,
  `zutat` char(50) NOT NULL,
  `menge` char(10) NOT NULL,
  `mass` char(10) NOT NULL,
  `zubereitung` blob NOT NULL,
  PRIMARY KEY (`Id`)
hoffe das ist das richtige - wie gesagt beziehungen gibt es eigentlich keine zwischen den tabellen mit fremdschlüssel usw - da ich auch gar net zu 100% weiß wie man die unter mysqlfront anlegt - ich kenn das nur von access aus der schule damals mit dem rüberziehen der felder.


gruß
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#48

Re: Performance verbessern

  Alt 11. Dez 2006, 08:58
Hallo,

zur Syntax (habe ich von FB, aber sollte ähnlich sein)

table_detail:
Id Integer (hier unwichtig)
MasterId Integer (Id, also Primärschlüssel, der Mastertabelle)

table_master
Id Integer (Primärschlüssel)


alter table table_detail
add constraint FK_table_detail_DetailId
foreign key (MasterId)
references table_master(Id)


Und falls es sowas bei mysql schon gibt

on delete CASCADE


Heiko

PS:
Ich glaube mich zu erinnern, dass es mal ne heftige Diskussion
zu foreign keys bei mysql gab.
Es gab ne Menge Leute, die gesagt hatten:
"Das brauchen wir nicht, das macht die DB nur langsam"
Stand sogar im 3er Handbuch so drin.
Heiko
  Mit Zitat antworten Zitat
Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#49

Re: Performance verbessern

  Alt 11. Dez 2006, 16:32
hi,

also ich habe nun ein paar neue tabellen angelegt - ich würde die gerne mit euren tipps perfektionieren.

tabelle: kategorien
SQL-Code:
  `ID` int(11) NOT NULL default '0',
  `NAME` varchar(100) NOT NULL default '',
  PRIMARY KEY (`ID`)
tabelle: unterkategorien
SQL-Code:
  `ID` int(11) NOT NULL default '0',
  `NAME` varchar(100) NOT NULL default '',
  `kname` int(11) NOT NULL default '0',
  PRIMARY KEY (`ID`)
tabelle: rezept
SQL-Code:
  `ID` int(11) NOT NULL default '0',
  `NAME` varchar(100) NOT NULL default '',
  `kname` int(11) NOT NULL default '0',
  `uname` int(11) NOT NULL default '0',
  PRIMARY KEY (`ID`)
tabelle: zutat
SQL-Code:
  `ID` int(11) NOT NULL default '0',
  `zutat` varchar(100) NOT NULL default '',
  `menge` varchar(100) default NULL,
  `mass` varchar(100) default NULL,
  `zubereitung` blob NOT NULL,
  `kname` int(11) NOT NULL default '0',
  `uname` int(11) NOT NULL default '0',
  `rname` int(11) NOT NULL default '0',
  PRIMARY KEY (`ID`)
kname, uname, rname - sind jeweils FK's - mit bezug auf die einzelnen zugehörigen tabellen haltet ihr diese aufteilung für sinnvoll?

gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#50

Re: Performance verbessern

  Alt 11. Dez 2006, 17:19
Hallo,

ein paar zarte Hinweise hatte ich dir ja schon in Beitrag #23 gegeben. Ich will sie gerne noch etwas präzisieren:

Code:
Kategorien: ID, KAT_ID, iPos, Name
Rezepte: ID, KAT_ID, NAME, Zubereitung
Zutaten: REZ_ID, iPos, Bezeichnung, Masseinheit, Menge
ID sind automatisch vergebene Schlüssel (autoincrement). iPos ist ein Sortierkriterium und steuert die Reihenfolge der Einträge. Bei meiner Namenskonvention ist KAT_ID ein Fremdschlüssel und zeigt auf ID in der Tabelle Kategorien.

Mehr Tabellen brauchst du eigentlich nicht. Die Tabelle Kategorien ist rekursiv angelegt und könnte so auch eine Gliederung beliebiger Tiefe aufnehmen. Das Schlüsselkonzept hast du wohl noch nicht so richtig verinnerlicht. Nicht die String-Felder sind Fremdschlüssel, sondern deren Schlüsselwerte aus der jeweiligen Lookup-Tabelle.

Wenn du dich mit der spontanen Erstellung eines physischen Datenmodells noch schwer tust, dann fange vielleicht besser mit einer ER-Modellierung an. Das geht auch ohne Werkzeuge und rein textuell.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz