Delphi-PRAXiS
Seite 5 von 9   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Performance verbessern (https://www.delphipraxis.net/82215-performance-verbessern.html)

Luncustaf 10. Dez 2006 19:06

Re: Performance verbessern
 
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.

mkinzler 10. Dez 2006 19:09

Re: Performance verbessern
 
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)

Luncustaf 10. Dez 2006 19:15

Re: Performance verbessern
 
was meinst du mit metadaten?

omata 10. Dez 2006 19:16

Re: Performance verbessern
 
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

Luncustaf 10. Dez 2006 19:16

Re: Performance verbessern
 
Zitat:

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ß

mkinzler 10. Dez 2006 19:17

Re: Performance verbessern
 
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.

Luncustaf 11. Dez 2006 08:52

Re: Performance verbessern
 
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ß

hoika 11. Dez 2006 08:58

Re: Performance verbessern
 
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.

Luncustaf 11. Dez 2006 16:32

Re: Performance verbessern
 
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ß

marabu 11. Dez 2006 17:19

Re: Performance verbessern
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Seite 5 von 9   « Erste     345 67     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz