Entwickler-Ecke

Datenbanken - wieviele tables in db?


foxy - Mo 24.02.03 08:58
Titel: wieviele tables in db?
guden
ich verwende gerade eine IbDatabase ... nun frag ich euch mal wieviele Tabels ich da einbauen kann???

also konkreter ... kann ich pro Datensatz in der einen DB, eine neue Table in der 2. DB machen?


UGrohne - Mo 24.02.03 10:12

Hmm, ich glaub, ich steh aufm Schlauch.

Warum willst Du pro Datensatz in einer 2. DB eine neue Tabelle aufmachen? Was hat das für einen Sinn, wenn Du 2 DBs verwendest? Eine reicht doch. Du kannst in eine DB nur durch den SPeicherplatz begrenzt unzählige neue Tabellen erstellen, aber ob das pro Datensatz Sinn macht? Ich denke nicht. Die DB ist die Grundlage des Programms und sollte eigentlich nicht so extrem dynamisch verändert werden, also nicht neue Tabellen zur Laufzeit erstellen. Denn ein anderer Client muss ja dann wieder rausfinden, welche Tabellen existieren und das ist dann meist nicht einfach mit einer SQL-Abfrage gemacht.

Ich denke, Dein Stichwort heißt zuerst einmal Normalisierung. Google einfach mal danach.


foxy - Mo 24.02.03 10:19

ich kann dir mein Problem sagen,

aber ich denke, das hast du schonmal gelesen.... und zwar geht es darum,

das ich Prodatensatz mehrere DateiPfade einfügen will
das heist ich habe eine Tabelle mit

-Firma
-strasse
-etc
-Files

In die Spalte Files kann ich bisher logischerweise eben nur eine File ablegen(keine File sondern Pfad)
aber ich muss mehrere ablegen können .... kannst du mir einen anderen ansatz geben??ß .... hab bisher üerlegt und das schien mir das este :?


UGrohne - Mo 24.02.03 10:43

Wie gesagt, heißt das Stichwort Normalisierung. In diesem Fall brauchst Du eine 1:n-Beziehung und die kannst Du so realisieren:

Das Feld Files kannste weglassen, Du brauchst nur in Deiner adress-Tabelle noch eine ID pro Datensatz. Dann brauchste eine zweite Tabelle, in der die Files stehen. Folgende Felder stehen da drin:

AID <--- das ist die ID des Datensatzes in der Adress-Tabelle
file <--- Pfad der Datei
evtl. noch zusätzliche Informationen.

Achja, AID DARF kein PrimayKey sein, weil mehrere gleiche Werte erlaubt sein müssen!!!

Das Problem ist, das am Anfang zu erkennen.... lies dir halt mal was zur normalisierung durch.

Brauchst Du einige Daensätze für mehrere andere (weil z.B. mehrere Firmen die gleichen Files verwenden (Stichwort Redundanz) melde Dich nochmal, da gibts auch ne Lösung für.


foxy - Mo 24.02.03 10:46

ich kuck erst mal nach normalisierung ... das hört sich gut an .... melde mich nacher nomma


foxy - Mo 24.02.03 11:05

also ich habe kein zufriedenstellendes ergebnis erhalten 6 ergebnisse bei google... und bei allen 6 nur 2-5 sätze ....
also wenn du ne page hast wäre ich dankbar


UGrohne - Mo 24.02.03 11:09

Ne Page im Moment nicht.... kauf Dir liebern Buch *g* Aber is eigentlich komisch, dass beim Googeln da nix kommt.... :(

Zu IB-Datenbanken allgemein finde ich folgendes net schlecht

"Interbase - Datenbankentwicklung mit Delphi" von Andreas Kosch

Da werden auch die verschiedenen Normalisierungslevel ganz gut erklärt

Gruß


foxy - Mo 24.02.03 11:25

hmm mal chef fragen ob der das bezahlt :)

aber thx


hansa - Mo 24.02.03 12:51

Zitat:
Relational database: Das Design von Datenbanken, das wir in Produkten wie Interbase, Oracle und Sysbase sehen. Basiert auf einer intensiven theoretischen Arbeit von E. F. Codd und Chris Date, folgt dieses Modell der Mengentheorie in der Mathmatik. Beziehungen werden durch Verbindungsattribute repräsentiert. Streng gesprochen muß das Schema einer Datenbank alle Normalformen, nähmlich die erste, zweite, dritte, Boyce-Codd und die fünfte durchlaufen, bevor es als "normalisiert" betrachtet werden kann. In der Praxis reicht es allerdings, ein Schema in die dritte Normalform zu führen, um als "normalisiert" zu gelten.


So, da steht was das ist. 8) Was daran wichtig ist, ist der Hinweis auf die Mengentheorie. Du hast nämlich Datenmengen, mit denen Du hantierst :!: Das ist mir aber zu trocken. Wahrscheinlich geht es wieder mal um Deine Bildchen, von denen jetzt endlich der entsprechende Dateiname in der DB gespeichert wird. :mrgreen:

Dein Ansatz ist aber schon verkehrt. Du hast mehrere Lieferanten, von denen aber zu jedem unterschiedlich viele Bilder gespeichert werden sollen. Das ist eine 1:n Beziehung. Wobei n für die Anzahl der Bilder steht. Aber es ist Unfug, eine festgelegte Anzahl von Bildern zusammen mit der Adresse des Lieferanten speichern zu wollen. Was Du brauchst sind 2 Tabellen. Eine für die Stammdaten des Lieferanten und eine zweite in der steht :

Zitat:
ID integer,
ID_LIEF integer,
FILENAME string;


Nun kannst Du die Namen aller Bilder eines Lieferanten übersichtlich in einem Grid oder so präsentieren und z.B. mit Doppelclick auf den entsprechenden Namen, das Bild anzeigen. So würde ich das jedenfalls machen. An alle Bilder eines Lieferanten kommst Du so:


Quelltext
1:
SELECT * FROM BILDER WHERE ID_LIEF = :ID                    


ID ist dabei die ID aus der LIEF-Table.


foxy - Mo 24.02.03 13:06

hmmm ist ja *popo* kompliziert ...
und ja ich habe nur den pfad ;)

....
also ich habe nun eine 2. tabelle mit den spalten
-ID_File
-File

nun muss ich ja noch irgendwie die 2 spalten verbinden .... brauch ich da eine extra datasource oder so???

das SQL script ist einleuchtend ... aber wie bekomme ich das hin, das datensatz1(ID1), der Kundentabelle, dann die richtigen files zugeordnet werden ..... ich muss da ja irgendwie sagen... was weis ich ...
bei ID1 (Kunde) soll ID1-5 (File) aufgerufen werden, falls so viele da sind .... den ansatz verstehe ich schon irgendwie .... :?


hansa - Mo 24.02.03 13:12

Wo ist denn überhaupt der Verweis, welches Bild zu welchem Lieferant gehört ? Eine ID_LIEF oder so sehe ich jedenfalls nicht. 8) 8) 8)


foxy - Mo 24.02.03 13:19

hmm ok kann ich noch machen ... aber wie erstelle ich den verweis das war die frage ... :)
und ich hab gedacht du haste keine zeit *gggg*


Lemmy - Mo 24.02.03 13:46

Hi Foxy,

ich habe auf meiner Seite ein Tutorial das sich mit den Grundlagen der DB-Programmierung beschäftigt. Schau Dir das mal an:
[url]http://www.delphi-tutorials.de/Tutorials/Datenbank Grundlagen.zip[/url]

Grüße
Lemmy


foxy - Mo 24.02.03 13:58

joa thx
das hatte ich schon ;)

aber dennoch thx ....
aso und grohne
buch ist bestellt chef bezahlt :)=