PDA

Vollständige Version anzeigen : Definitionsprobleme


chris32
25.09.2001, 08:19
Wir haben verschiedene Kunden die in verschiedenen Zeitungen/Zeitschriften inserieren. Nun möchte mein Chef, das man sofort sehen kann, welcher Kunden z.B. im Hamburger Abendblatt inserieren.

Momentan ist es so, dass wir für unsere Kunden verschiedene Ordner angelegt haben und in diesen Ordnern gibt es unterschiedliche Excellisten für die Zeitungen/Zeitschriften. Also der Ordner mit Kunde XY hat z.B. 5 Excellisten (Fachzeitschriften, Tageszeitungen, Fernsehzeitschriften usw.) In diesen Excellisten sind dann die verschiedenen Zeitungen/Zeitschriften mit Name, Adresse usw. aufgeführt. Meine Kollegin aus der Mediaabteilung muß jedesmal, alle Listen durchsehen um herauszufinden wer wo inseriert.

Nun bin ich die ganze Zeit am überlegen, wie ich die Tabellen am besten anlege. Unsere Kunden haben alle eine Kundennummer. Das ist noch relativ einfach. Die unterschiedlichen Excellisten haben aber keinen Primärschlüssel. Ist es klug einen Autowert zu vergeben? Lege ich für jeden Kunden eine Datenbank an oder ist es besser nach den Zeitungsarten (Fachzeitschriften, Tageszeitungen, Fernsehzeitschriften usw.) zu sortieren? Welche Feldschlüssel muß ich definieren um eine Beziehing zu den unterschiedlichen Tabellen herzustellen?

erwin
25.09.2001, 08:36
Ein gutgemeinter Tipp:

Bevor du anfängst deine Excel-Sheets i.e. Datenbank umzuwandeln, solltest du dich ein bisschen mit der Theorie relationaler DB-Systeme auseinandersetzen. Dann wird dir (hoffentlich :D) auch selbst bald klar werden, dass Konstrukte wie "für jeden Kunden eine eigene DB" oder Tabellen a'la "Umsatz1999April" in relationalen DB's absolut unsinnig und kontraproduktiv sind.

Die Daten in rel.DB's sollten immer in den Feldinhalten stehen und niemals in den Feldbezeichnungen !

so long erwin...

Neumi
25.09.2001, 08:46
Pro Kunde eine Datenbank?Du brauchst 3 Tabellen.

tblKunden:
KundeID ... Schlüssel
KundeName, Anschrift
(andere Daten)

tblZeitschriften
ZeitschriftID ... Schlüssel, kann auch Autowert sein
ZeitschriftName

tblKundeZeitschrift
KundeID
ZeitschriftID

Beide zusammen stellen den Primärschlüssel dar.
Hier wird eingetragen, welcher Kunde welche Zeitschrift liest. Du kannst hier auch zusätzliche Daten speichern, die sich aber nur auf die Beziehung Kunde/Zeitschrift und nicht auf den Kunden oder die Zeitschrift selbst beziehen.


Mit einer Abfrage im Stil von

SELECT tblKunden.KundeName, tblZeitschriften.ZeitschriftName
FROM (tblKunden INNER JOIN tblKundeZeitschrift ON tblKunden.KundeID = tblKundeZeitschrift.KundeID) INNER JOIN tblZeitschriften ON tblKundeZeitschrift.ZeitschriftID = tblZeitschriften.ZeitschriftID;

werden dann alle Kunden angezeigt und was sie jeweils lesen.

Wenn du die Abfrage nun um eine Bedingung erweiterst, kannst du z.B. alle Kunden anzeigen, die eine bestimmte Zeitung lesen.

chris32
26.09.2001, 08:13
Hallo Erwin,
eine konsktruktive Kritik hätte mir mehr geholfen. Ich habe hier 3 Bücher zum Thema Access vor mir liegen und setze mich sehr wohl mit der Theorie auseinander. Aber als Newbie ist es nicht immer so einfach alles zu verstehen.

erwin
26.09.2001, 18:15
@chris

das war ja nicht als Kritik sondern Anregung (vielleicht etwas flapsig formuliert ;) ) gemeint, ich kann ja nicht wissen was du sowieso machst oder nicht machst. Ich habe nur schon erlebt, dass Leute, welche sich mit Excel ganz gut auskennen, versuchen Excel-Sheets 1:1 in eine DB zu übernehmen - und davor warne ich, da das meist eine sehr schlechte Lösung (für eine rel.DB) ergibt.

Und dann hätte es auch nicht geholfen, wenn ich dir (bzgl. der etwas knappen Vorgabe deinerseits) ein DB-Design poste, welches ev. deinen Anforderungen gerecht würde, da du ohne einige grundlegende Kenntnisse bzgl. relationaler DB's, damit nicht wirklich "richtig" arbeiten könntest.

so long erwin...