WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Cd Datenbank in Access programmieren (http://www.wcm.at/forum/showthread.php?t=112974)

Deftones 22.10.2003 13:09

Cd Datenbank in Access programmieren
 
Hallo Forummitglieder!!

Hätte da eine frage (Bitte) da ich eine sehr sehr grosse (für mich) Music cd bestand habe (5 000stk ca) will ich mir einen datenbank anlegen damit ich mal ein klein wenig Ordnung in das caos bringe (doppelt gekaufte usw..) naja da meine kenntnisse was access angeht ned gut sind wollt ich euch fragen ob ihr mir nicht ein paar tipps geben könnt wie ich sowas anfange !!
(will es selber programmieren ich weis es gibt fertige db auch !!)

also danke mal für eure hilfe !!!

mfg
deftones

wbendl 22.10.2003 13:49

Hi!

Überleg dir als 1. was deine Anwendung können soll. Daraus ergibt sich, welche Daten du dafür speichern mußt.
Für den Funktionsumfang kannst du dir fertige Anwendungen als Tipgeber nehmen. (Was brauche/möchte ich, was nicht und was hätte ich gerne besser)

Im nächsten Schritt die Daten auf die Tabellen aufteilen. Das ist ein wichtiger Schritt. Such nach "Normalisierung von Datenbanktabellen" oder nur nach "Normalisierung". Da solltest du Informationen zu diesem Punkt finden.

Wenn du das geschafft hast, gehts an die Entwicklung der Oberfläche, also ans eigentliche programmieren.
Ab da kannst du konkrete Fragen ans Forum stellen, die hoffentlich auch beantwortet werden.

mfg

WB

Deftones 22.10.2003 20:23

danke
 
danke für die antwort
was ich will und was die access datenbank machen soll weis ich ja schon !

man soll eingeben/suchen nach

Name der Band
Name der CD
EAN nummer
ob es eine maxi doppel oder einfache cd ist
vieviele lieder oben sind und wie sie heißen (+ zeit)
und das jahr wo die cd herrauskam
und welche art von music (Metal, Pop, usw....)

nur weis ich leider ned wie ich jetzt anfangen soll ??
soll ich alles in eine tabelle schreiben oder alles extra ??
wo soll ich primärschlüssel vergeben..?

mfg
deftones

wbendl 22.10.2003 20:52

Hi!

Da sind wir wieder beim Stichwort Normalisierung. Da geht es darum, wie die Daten auf die Tabellen verteilt werden.

Beispiel:

tblSaenger (Daten zum Sänger: Name, ....)
tblCDs (Daten zur gesamten CD: ID de Sängers, ID der Kategorie, Titelzahl, EAN, ...)
tblKategorien (Liste der Kategorien)
tblSongs (Die einzelnen Lieder auf den CDs, ID der CD)

Jede Tabelle hat einen Pimärschlüssel (Autowert)

Die Verbindung zu einer anderen Tabelle erfolgt über die ID.

Falls möglich, würde ich dir empfehlen, die Oberfläche nicht mit Access, sondern mit VB zu programmieren. (Aber das ist eine andere Geschichte)

mfg

WB

Seidl 22.10.2003 22:33

Also mit den geforderten zu speichernden Infos, ist eine Tabelle für die CDs und eine für die Songs wahrscheinlich ausreichend. Bei der Auswahl der Tabellen ist es zwar für grössere Projekte immer ein Problem, den goldenen Mittelweg zwischen Atomisierung auf x-Tabellen oder im Extremfall der einen, gigantischen HoldsItAll-Tabelle zu finden, aber bei ca. 5000 Datensätzen stellt das auf heutigen Rechnern kaum ein Problem dar das viel Denkaufwand lohnt.
Höchstens könnte man sich über passende Schlüssel Gedanken machen. Die sind aber bei 5000 Datensätzen auch noch nicht wirklich von Belang. Da greift einem immer die Rechenleistung unter die Arme und sorgt für niedrige Antwortzeiten.
Natürlich ist das nur eine persönliche Meinung und soll weder andere Aussagen herabstellen, noch die ultimativ richtige Lösung für sich beanspruchen.

Mein Vorschlag:

Felder für tblCDs:
- Name der Band
- Name der CD
- EAN nummer
- ob es eine maxi- doppel- oder einfach-cd ist
- wieviele lieder die CD enthält
- das jahr in dem die cd erschienen ist
- welche art von music (Metal, Pop, usw....)

Felder für tblSongs:
- SongTitle
- ...

@wbendl: VB wäre sicher eine gute Idee wenn es sich um eine Anwendung handeln würde, die auch User ohne Access verwenden sollen. Da es sich aber anscheinend um eine private Anwendung handeln wird, würde VB doch den Schwierigkeitsgrad beträchtlich erhöhen, ohne für den Programmierer einen eigentlichen Vorteil zu bringen. (Es sei denn, du hast kein Access und willst die Anwendung später auch benutzen ;) )

PS: Sowas liesse sich unter Notes sehr einfach, schnell und effizient erledigen. Die Programmiersprache unterscheidet sich nicht wesentlich von VB. Nur die Objekte sind natürlich anders. Wäre aber IMHO trotzdem eine Überlegung wert.

wbendl 22.10.2003 23:13

@Seidl
Ich hab schon sowas. Ursprünglich mit Access 95 gemacht. Inzwischen sind aber fast alle Funktionen über eine VB-Oberfläche verfügbar.
Grund für die Portierung sind Probleme beim Umstieg auf neuere Versionen von Access. Nebenbei gibt mit VB mehr Möglichkeiten.

Für eine eigene Tabelle mit den Interpreten hab ich einen Grund:
Wenn der Interpret auch jedem Song zugeordnet ist, hat man bessere Möglichkeiten, Daten abzufragen. Z. B. alle Lieder eines Sängers.
Bei Sampler-CDs gibt es keinen gemeinsamen Interpreten für alle Titel.
Man müßte also zu jedem Lied den Interpreten eingeben. Ich glaube da lohnt sich die eigene Tabelle.

Bei der Kategorie ist das vielleicht nicht so tragisch. Eine eigene Tabelle verhinder allerding nicht nur Redundanz, sondern erleichtert auch eventuelle Änderungen.

Das einzige Problem sind die komplizierteren SQL-Statements. Aber die erstelle ich mit Hilfe Access. (Schäm)

mfg

WB

Deftones 23.10.2003 08:26

danke mal für die hilfe
 
nur eine frage hab ich trozdem noch :
wenn ich es so mache wie es wbendl sagt

tblSaenger (Daten zum Sänger: Name, ....)
tblCDs (Daten zur gesamten CD: ID de Sängers, ID der Kategorie, Titelzahl, EAN, ...)
tblKategorien (Liste der Kategorien)
tblSongs (Die einzelnen Lieder auf den CDs, ID der CD)

verstehe ich nicht wie ich die lieder mit den sängern unter einem hut bringe ?? wie bei einem sampler ??

mfg
deftones

ps danke für eure hilfe noch mal !!!!

wbendl 23.10.2003 09:06

Hi!

Also bei mir ist es so gelöst:

In jeder Tabelle ein Feld mit Autowert als Primärschlüssel.

tblCDs enhält ein Feld mit der ID des Interpreten und ein Feld mit der ID der Kategorie. (Für Sampler verwende ich "Diverse" als Interpret)

tblSongs enhält ebenfalls ein Feld mit der ID des Interpreten und ein Feld mit der ID der CD.

Damit ist jedem Lied auch ein Sänger zugeordnet, und die CD, auf der es sich befindet.

In der Oberfläche verwende ich zur Auswahl des Sängers ein Dropdown. Mit Auto-Vervollständigen geht das recht gut. Wenn kein passender Eintrag gefunden wird, öffnet sich ein Fenster zur Eingabe eines neuen Sängers.

Ich empfehle dir eine gute Planung. Bei 5000 CDs sind ca. 70 - 100000 Einzeltitel zu erfassen. Da rentieren sich ein paar Stunden nachdenken. Ich weiß aus eigener Erfahrung wie es ist, wenn man erst während der Dateneingabe die Schwächen des Programmes erkennt.

mfg

WB

Deftones 23.10.2003 11:28

alles klar
 
danke wbendl
ok werd am besten alles mal auf einen zettel kritzeln und dort mal die ganze sache durch denken !!

eine andere frage wegen mehr Möglichkeiten durch VB!?
Sollte ich das nochmal durch denken mit mit der datenbank unter Access ? gibts eine andere alternative zu access ?? was ICH leicht erlernen kann ??



mfg deftones

gaelic 23.10.2003 11:39

also da gibts im netzt sicher eigene programme für sowas (auch als quelltext)

ich würd auch eine sql-datenbank empfehlen (z.b. mysql), 1. ists einfach besser als access (da hast keine probleme nach einem update,...) 2. ist sql ein quasi standard bei datenbanken.

und es gibt sicher auch solch eine anwendung als php. somit kannst dus z.b. online stellen (mit passwortschutz) und von überall aus darauf zugreifen. unabhängig vom betriebssystem,...


ein ansatz, nur mit filmen, aber sicher leicht zu adaptieren:

http://www.powermovielist.com/

wbendl 23.10.2003 12:12

Hi!

Also wenn du mit VB noch nichts gemacht hast, wirds schwierig. Aber auch wenn du mit Access arbeitest, glaube ich nicht, daß du ohne VBA auskommst. Irgend eine Sprache wirst du auf jeden Fall lernen müssen.
VB und VBA sind so wie Zwillinge, aber vielleicht kannstu schon eine andere Sprache.

Zum Thema MySQL:
Das hab ich für mich auch schon überlegt. Allerdings braucht man dann einen Webserver mit PHP und MySQL.
Die Übertragung der Daten der Daten von der Jet-Engine zur MySQL-DB ist kein Problem. Der Zugriff von einer Oberfläche die mit Access oder VB erstellt wurde klappt auch. Für eine Web-Oberfläche mit PHP reichen meine Kentnisse von PHP nicht aus. Da müßte ich auf einige Features verzichten.
Aber vielleicht kommt das noch

mfg

WB

Deftones 23.10.2003 21:12

danke für die schnelle antwort
 
hmm mit php und mysql naja will ich ned viel machen es soll ja ned zu kompliziert werden das ganze und da ich dann einen webserver laufen lassen muss damit ich dann schauen kann welche cd ich da habe naja ist mir zu stressig !! aber danke noch mal für den link gaelic!!!

hmm ein bekannter meint was ich soll es gleich in Java schreiben dann ist es überhaupt OS unabhängig das ganze !!
nur da brauch ich auch auch mysql oder ??

naja und ne programiersprache lernen ist nie falsch

mfg
deftones

wbendl 23.10.2003 22:57

Hi!

Ich hab zwar keine Ahnung von Java, aber ich gehe davon aus, daß man damit auf alle gängigen Datenbanken zugreifen kann.

Die Frage ist, ob du einen Datenbank-Server verwenden willst.

Für "private" Anwendungen empfiehlt sich die MS Jet-Engine, die auch von Access verwendet wird. Die läuft auf jedem Windows-PC, und läßt sich mit Access leicht administrieren.
Eigentlich wüßte ich keine Alternative.

Wie ich vorher schon gesagt habe, kann man die Daten leicht in eine andere DB übertragen. Der spätere Umstieg auf eine "professionelle" Datenbank ist also kein Problem.

Mit der Auswahl des zu verwendenden DB-Systems bist du nicht automatisch an eine bestimmte Entwicklungsumgebung zu Erstellung der Oberfläche gebunden.

Bei der Programmierung der Benutzeroberfläche gibt es schon mehr Auswahl.

- Access ist am Anfang wahrscheinlich am leichtesten. Vieles kann mit Assistenten ohne Programmierkenntnisse gemacht werden. Ganz ohne VBA gehts aber wahrscheinlich nicht. Probleme gibts, wenn man auf eine neue Version umsteigt. Dann sind meistens einige Anpassungen notwendig.

- VB bietet mehr Möglichkeiten. Angeblich werden 70-80% aller DB-Oberflächen mit VB erstellt. Mit VB-Kentnissen kann man auch bei MS-Office ziemlich viel machen. Für viele andere Anwendungen ist VB aber eher umständlich.

- C ist für DBs zwar nicht ideal, dafür wären die Kenntnisse aber für andere Anwendungen brauchbar.

- Java läuft auf allen Rechnern. Ich kann aber nicht sagen, ob es sich für DBs eignet.

Die Liste ließe sich wahrscheinlich noch lange fortsetzen.
Ein gemeinsamer Nachteil aller Programmiersprachen ist, daß man eine entsprechende Entwicklungsumgebung braucht. Also zusätzliche Kosten, während Access fast jeder hat.

Die Wahl mußt du selber treffen.

gaelic 24.10.2003 11:09

ok, wenn nicht mit php, dann eben über c, auf eine sql datenbank zugreifen :)

die programme lassen sich auch eigentlich überall nutzen, da du ja den quelltext hast, und außerdem keine routinen verwendest die betriebssystemspezifisch sind.

in c gibt es sehr viele vordefinierte funktionen, die mit datenbanken zu tun haben.

aber sicher gibts auch da schon etwas fertiges. ich würd mal eine stunde googlen und nicht das rad neu erfinden.

kansas 24.10.2003 11:14

ich will ja eure programmierdiskussion nicht unterbrechen - aber wißt´s was mich an dem ganze abschrecken würde:

5000 cd´s reinzuklopfen - und dann vor allem noch die darauf zu findenden titel... sagen wir mal so ca. 10 pro cd = 50.000 titel...

gaelic 24.10.2003 11:49

da wär eine anbindung der datenbank an cddb wünschenswert, nur wer programmiert das? :)

kansas 24.10.2003 13:04

ich weiß - das ganze geht jetzt zuweit - aber nur rein aus interesse:

wär doch super wenn man aufgrund des strichcodes auf der cd den inhalt auslesen könnte... nur wirds so eine datenbank nicht geben, weil ja jeder hersteller seine eigenen strichcodes produziert. es sind ja nur die ersten stellen normiert,oder?

sonst wärs genial: einscannen und automatisch gleich titel, songs usw. haben... *träum*

aber jetzt nicht losschimpfen - weiß schon dass das nicht geht... :cool:

wbendl 24.10.2003 15:17

Also das mit CDDB gibt es schon, ist aber auchnicht das gelbe fom Ei.

mfg

WB

Deftones 25.10.2003 11:30

hm
 
naja wer ordung haben will muss (kurz) leiden naja irgendwann will auch in meiner geliebten cd sammlung ordnung bringen !! da wirt mir wohl nix anderes übrigbleiben alles alles einzutippen was ich wissen will !!

mfg
deftones

Deftones 28.10.2003 08:16

Hallo
 
Hallo Leute !!

Hab die Access CD-Datenbank angefangen.

hab ein zip datei hier angehängt hoffe auf gute ratschläge was ich noch verbessern kann oder sollte !! danke im voraus

mfg
deftones


Ps.: falls die datenbank was wird kann sie jeder natürlich kostenlos haben ;-)

Deftones 28.10.2003 08:17

ups
 
zip hat nicht funzt ?

wbendl 28.10.2003 19:53

Hi!

Ich habs mir kurz angesehen. Mehr geht nicht, weil in normal nur Access 97 verwende, und damit kann ich deine Datei nicht öffnen.

Auf jeden Fall solltest du auch in der Tabelle mit den Liedern eine ID einführen. Die wirst du später sicher brauchen.

Eventuell statt Makros Module verwenden. Du kannst vorhandene Makros mit einem Assistenten in VBA-Code übersetzen. Das hilft dir beim erlernen von VBA.

An den Formularen zur Dateneingabe ist wohl noch etwas Arbeit nötig.

Wenn du die Datenbank auch anderen zur Verfügung stellst, solltes eine Gültigkeitprüfung der eingegebenen Daten durchführen.

Jetzt ein Fall aus meiner Praxis:
Bei der Verwendung Hauptformular mit Unterformular hat der Benutzer einen Neuen Datensatz angelegt. Dann hat er zuerst Daten im Unterformular eingegeben. Da im Hauptformular noch kein Datensatz existierte, blieb das verknüpfte Feld leer.
Dadurch konnte dieser Datensatz später keinem übergeordneten Datensatz zugeordnet werden. Für den Benutzer war er verschwunden. In der Tabelle war er eine Datenleiche.

So und jetzt noch Gutes Gelingen

mfg

WB

Deftones 28.10.2003 22:55

ok
 
werd deinen rat folge leisten wbendl !!
danke noch mal für deine (eure9 hilfe !!

mfg
deftones


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag