Hilfe bei Datenbank

Dieses Thema im Forum "Programmieren" wurde erstellt von hallodudu, 31. Januar 2006.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Also wir wollen in Infoformatik ein Programm für eine Bibliothek erstellen. Dazu wollen wir ne Datenbank erstellen in der alle Bücher drinne sind und dann ne Benutzeroberfläche von der aus man in der Datenbank suchen und Bücher einfügen kann. Wie würdet ihr so was realisieren?
     
  2. toriho

    toriho Byte

    Registriert seit:
    25. Januar 2006
    Beiträge:
    15
    Hi!

    Als Datenbank könnt ihr mySQL nehmen, die ist kostenlos.
    Dann müßt ihr im Prinzip noch einen Client programmieren, dafür gibt es soviele Möglichkeiten wie Programmiersprachen: C++, Java, C#, VB, PHP über Apache Server, und, und, und ...
     
  3. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Ist mySQl nicht nur für ne Homepage? Wenn es nicht so ist, wie erstellt man eine SQL Datenbank ohne SQL Server also als Datei auf dem rechner? Bei ner Homepage würde ich so was ohne Probleme hin bekommen. Aber wie geht so was als Programm. Kennst du dafür nen Tutorial?
     
  4. kuhn73

    kuhn73 Megabyte

    Registriert seit:
    4. Juli 2003
    Beiträge:
    1.489
    Für ein Informatik-Projekt (Gymnasium nehme ich an) sollte eine MS-Access-Datenbank doch voll genügen. Tutorials dafür gibt es doch wie Sand am Meer.
    Alles andere wäre sowieso zu überdimensioniert und hätte wohl auch keinen Sinn...
     
  5. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Ne das soll schon nen richtiges Programm werden mit c oder sonst was.
     
  6. c24

    c24 Byte

    Registriert seit:
    21. März 2005
    Beiträge:
    71
  7. toriho

    toriho Byte

    Registriert seit:
    25. Januar 2006
    Beiträge:
    15
    Eine Datenbank hat zunächst nichts mit einer Homepage zu tun. Jede Datenbank ist ein Programm, welches meist als sog. Server läuft, d.h. man kann mittels Client Befehle zur DB senden und erhält Daten vom Server zurück. Die Befehle folgen dabei der SQL-Syntax (hier gibt es Unterschiede je nach verwendeter Datenbank).
    Ob man jetzt eine DB verwendet, um Daten für eine Web-Anwendung (deine Homepage) zur Verfügung zu stellen, oder um eine CD-Verwaltung mittels einem Client in VB zu implementieren, ist Jacke wie Hose.

    Wenn ihr euer Projekt in C programmieren wollt, könnt ihr z.B. die mit mySQL gelieferte Client-Library verwenden, um Befehle aus dem Programm heraus an die DB zu senden.
    Unter Windows könnte die DB dabei als Service im Hintergrund laufen.

    Es gibt für kleinere Ansprüche auch eine SQL-DB namens Hypersonic. Diese hat den Vorteil, als sehr schlanke Library (oder bei Java als jar File) zur Verfügung zu stehen. Die kann man also mit der Anwendung zusammen ausliefern, somit muß sich ein Benutzer eures Programmes nicht darum kümmern, eine DB zu installieren.
     
  8. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Also verstehe ich das richtig auf dem PC müsste dann keine DB installiert sein. Gibt es noch eine andere möglichkeit so was ohne DB zu realisieren? Also wir wollen genau gesagt eine Tabelle haben mit Titel, Autor, Kategorie und Erscheinungsjahr. In dieser Tabelle soll man suchen können und auch neue Bücher rein machen können. Ist das auch ohne DB möglich? Wir haben bisher in der Schule nur mit Oberon gearbeitet, also bitte einfach erklären.
     
  9. toriho

    toriho Byte

    Registriert seit:
    25. Januar 2006
    Beiträge:
    15
    Morgen !!

    Wenn ich das richtig sehe, erwartet ihr keine "riesigen" Datenmengen, sondern eine überschaubare Geschichte (laß es ein paar Tausend Bucher sein).
    In diesem Fall könntet ihr die Daten einfach in einer Datei speichern. Ihr überlegt euch ein Format (z.B. csv) und schreibt die Daten zeilenweise in eine Datei. Beim Programmstart wird die Datei gelesen und im Speicher gehalten. Das geht eben dann, wenn die Datenmenge nicht groß ist.
    Natürlich muß man die Datei und den Stand im Speicher synchron halten.
    Wenn man z.B. ein paar Dutzend Einträge erstellt hat und dann der Rechner abschmiert, ist das sehr ärgerlich, wenn zwischendurch nicht gespeichert wurde :-)

    Ein andere, sehr schöne, Möglichkeit ist es, XML als Format zu wählen. Damit könnt ihr baumartige Strukturen abbilden, Attribute verwalten, etc.
    Außerdem gibt es eine Menge Bibliotheken, die euch das ganze Filehandling abnehmen würden, und, last but not least, ist XML sowieso eine Technologie, mit der man sich beschäftigen sollte...
     
  10. kalweit

    kalweit Hüter der Glaskugel

    Registriert seit:
    18. April 2000
    Beiträge:
    31.485
    Keine gute Idee. Die Gründe hast du ja schon genannt. In der heutigen Zeit kann man sich durchaus auf den Cache des Systems verlassen.


    Grundsätzlich ja, allerdings erzeugt das eine erheblich größere Datei und verbraucht mehr Ressourcen durch den Parser (welcher ja auch erst mal noch zusätzlich geschrieben werden muss) als z.B. csv - ich stehe auf dem Standpunkt, wenn Daten keiner Baumstruktur bedürfen, sollte man sich auch nicht da hinein zwängen.
     
  11. toriho

    toriho Byte

    Registriert seit:
    25. Januar 2006
    Beiträge:
    15
    Sehe ich anders: Erstens brauchst du für jedes Format einen Parser, der erst geschrieben werden muß. Zweitens dürften die paar Kilobyte für den Parser heutzutage kein Thema sein. Drittens ist XML ein standardisiertes Format, welches von einer Unmenge von Applikationen gelesen werden kann, was hilfreich ist, wenn man die Daten irgendwann weiterverarbeiten will. Viertens kann man XML mittels einer DTD automatisiert validieren, was zur Datenkonsistenz beiträgt.
    Und fünftens ist eine Baumstruktur durchaus hilfreich:

    Z.B.:

    <bibliothek>
    <autor name="Konsalik">
    <buch name="Wie auch immer" isbn="1232323">
    <umschlagtext>
    Ein ganz tolles Buch
    </umschlagtext>
    </buch>
    <buch name="Noch ein Buch" isbn="67676767">
    <umschlagtext>
    Ein echter Konsalik
    </umschlagtext>
    </buch>
    </autor>
    <autor name="Tolkien">
    <buch name="Herr der Ringe" isbn="343434">
    <umschlagtext>
    Super.
    </umschlagtext>
    </buch>
    </autor>

    ...

    </bibliothek>
     
  12. kalweit

    kalweit Hüter der Glaskugel

    Registriert seit:
    18. April 2000
    Beiträge:
    31.485
    Sicher, aber ein ein einfacher Split eines Strings ist wohl um ein vielfaches effizienter, als ein XML-Parser.


    Es geht nicht um den Parser, sondern die Daten. Schließlich willst du das ja im Speicher erledigen...

    Konsalik;Wie auch immer;1232323;Ein ganz tolles Buch
    ;Noch ein Buch;67676767;Ein echter Konsalik
    Tolkien;Herr der Ringe;343434;Super.

    ^^ - den Unterschied bei ein paar tausend Datensätzen kannst du dir allein ausrechnen


    Das war doch garnicht das Ziel der Aufgabenstellung.


    ...davon war nie die Rede und wäre bei Bedarf mit einer sehr simplen Exportfunktion machbar.


    Für die Aufgabenstellung absolut unwichtig.


    Die Daten liegen in keiner Baumstruktur vor.

    Gruss, Matthias

    PS: Was hast bis jetzt an Programmen realisiert und wo kann man sich das anschauen...?
     
  13. lazyjo

    lazyjo Byte

    Registriert seit:
    19. August 2005
    Beiträge:
    88
    habt ihr im unterricht datenbanken behandelt (ja? - kott sei dank?)

    du solltest deinen lehrer vielleicht noch mal fragen was er erwartet. wenn das prog tatsächlich benutzt werden soll, sollten auch ein paar grundregeln von datenbanken beachtet werden: daten nicht im speicher halten (es sei denn ihr implementiert ein transaktionsmanagement mit log-file), schlüsselattribute verwenden (ja! - kott sei dank!), usw.

    ich würde für jede tabelle ein file erstellen, die files über die schlüssel verknüpfen, und die files nur kurzzeitig öffnen (für multiuser: schreib- u lesesperren beachten/setzen/erzeugen)

    oder besser gleich mit access zusammenklicken.

    oder access + oberfläche über odbc.

    gruß
    jo
     
  14. toriho

    toriho Byte

    Registriert seit:
    25. Januar 2006
    Beiträge:
    15
    Hast du schon mal einen XML-Parser implementiert? Dabei hält man doch nicht das XML-File als solches im Speicher, dann bräuchte man ja keinen Parser. Die Daten aus dem File werden ja wohl in eine interne Darstellung übernommen, auf dieser kann gesucht, geändert, hinzugefügt werden, dann schreibt man das wieder als XML raus.




    Das war doch garnicht das Ziel der Aufgabenstellung.



    Die ich mir sparen kann, wenn ich gleich ein vernünftiges Format wähle.


    Datenkonsistenz ist immer wichtig.

    Falsch. Warum soll man bitte x-mal den Namen des gleichen Autors speichern, wenn sich das mit einer Hierarchisierung elegant vermeiden läßt? Abgesehen davon, daß bei deiner Vorgehensweise eine Suche über die Datensätze um z.B. alle Bücher eines Autors zu finden linear abläuft (je mehr Datensätze desto lahmer).

    Such dir was aus: http://heinzerling.com/d_proj.htm
     
  15. kalweit

    kalweit Hüter der Glaskugel

    Registriert seit:
    18. April 2000
    Beiträge:
    31.485
    Aha - damit taugt dann XML doch nur noch als Austauschformat. :idee: Wenn ich die XML-Quelle erst in eine interne Darstellung parsen muss, kann ich doch auch diese interne Darstellung auch gleich selbst speichern...


    Das versuche ich zu vermeiden, wo es nur geht.


    Weil das Normalisieren bis in die letzte Ebene für mich persönlich der größte Schwachsinn ist. In Bezug auf die Speichernutzung ist der Ansatz sicher unschlagbar, nur was nützt es, wenn das zu Lasten der Ausführungsgeschwindigkeit geht. Ich bevorzuge die Datenstruktur an Hand der Aufgabenstellung festzulegen. Natürlich hat diese Methode einen entscheidenen Nachteil: Man muss bereits vorher die Aufgabe und deren Ergebnisse eindeutig definiert haben und darf sie nicht zu früh in Teilaufgaben zerhackstücken. Komischer Weise funktioniert das Erweitern der Aufgaben trotzdem erstaunlich problemlos ;)

    Gruss, Matthias

    PS: Bitte keine Grundsatzdiskussion zu den angeschnittenen Themen, dort können wir nicht auf einen Nenner kommen. Dazu passen meine Ansichten nicht in die "normale" Softwareentwicklung ;)
     
  16. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Also wir haben bisher in der Schule Sortierprogramme und so was mit Oberon geschrieben. Datenbanken haben wir net behandelt, deshalb versteh ich im moment von dem was ihr hier geschrieben habt fast nur Bahnhof. Das ist so ne Art Ablussprojekt auf das es 3 Noten gibt. Da ich eine 1 will musste ich mir was schwereres aussuchen. Ich arbeite im moment an einem Programm mit TP (da findet man mehr Hilfestellungen im Netz als bei Oberon), was das ganze mittels einer Datei verwirklichen soll. Würde aber gerne eine Datenbank nutzen. Bei einer Homepage habe ich so was schon häufig gemacht, aber noch nicht als Programm.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen