Datenbank basteln

  • C#
  • .NET (FX) 4.0

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Redjo.

    Datenbank basteln

    Hallo,

    ich möchte mir eine kleine Datenbank bauen. Bzw eher ein kleines Programm in dem ich meine Filme/andere Informationen aufbewahre.

    Ich wollte dazu jetzt eine WPF-Oberfläche aufbauen und in diese dann Informationen laden, wenn diese ausgewählt werden... diese Informationen zu speichern ist jetzt etwas, was ich so noch nie gemacht habe... Da meine SQL-Kenntnisse eher bescheiden sind, habe ich mir gedacht, dass ich für jeden Informationssatz (die immer gleich aufgebaut sind) eine .txt anlege. So kann man Informationen auch schnell editieren oder weitergeben... oder ist das eher unpraktisch? Soll ich mich in SQL einarbeiten und eine "richtige" Datenbank aufbauen?
    Servus,

    du musst dir überlegen ob du eine Datenbank willst, dann nimm eine Datenbank. Dataset mit XML als Datensenke ist keine Datenbank!
    Willst du keine Datenbank dann nimm zum Beispiel Dataset mit XML als "BackEnd".

    Meiner Meinung nach: nimm eine Datenbank. Nutze Normalisierung, nutze Views und nutze Stored Procedures.
    Damit ist dein Frontend relativ egal
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Ich sehe hier folgende Möglichkeiten :
    • Du kannst hier nen voll aufgeblaßenen SQL-Server nehmen, und dich ein wenig in SQL einarbeiten. wenn es nur um Filme etc. geht, ist da nicht viel von nöten. Ebenfalls wenn dir Datenredundanzen egal sind. sonst wirds etwas komplizierter.
    • Du könntest auch so etwas wie SQLite nehmen. Dadurch verwaltet das Programm seine Daten "selbst". Man brauch keinen "Server" um abfragen machen zu können. Nach wie vor SQL
    • Du könntest ein Dataset verwenden, dass eine entsprechende Tabellenstruktur aufweist. Dieses kann per ReadFromXml und WriteToXml mit den Daten aus einer .xml Datei gefüllt werden.
    • Du könntest Klassen anlegen, die die nötigen Daten beinhalten. Jede instanz einer Klasse entspricht dann einem Datensatz. Wenn du diese in einer Liste aufbewahrst, kannst du mit einem Serializer deiner Wahl das ganze in eine Datei schreiben und wieder Lesen.
    • Du könntest natürlich für jede Tabelle ne .txt anlegen, dir ein entsprechendes Format ausdenken und dann entsprechend darin lesen und schreiben.

    Wenn du wirklich nichts mit SQL zu tun haben willst, Empfehle ich dir das DataSet, da man hier einen designer hat, import und export von Daten bereits erledigt ist, und man einfach an die Daten heran kommt.
    SQLite wäre vllt was.
    SQL an sich ist wirklich sehr einfach. INSERT, DELETE, CREATE, SELECT etc sind schon sehr powerful und sicher einfacher und schneller bei
    größeren Datensätzen. Außerdem lohnt es sich immer, sowas zu können ;)

    Man könnte auch json serialisieren.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    nach meiner Erfahrung ist SqlServerCe für .Net-Progger am kompatibelsten.
    Die Dateibasierung ermöglicht dir, das komplette Projekt auch mal zu zippen -inklusive Daten - und beim Empfänger läufts dann einfach - ohne dass Connectionstrings anzupassen wären, oder iwelche Provider-Dlls erst noch zu installieren wären.
    Und auf jeden Fall keine Text-Datei!
    Ein relationales Datenmodell unterscheidet Datentypen und weist Beziehungen auf.
    Für beides müsstest du dir sehr was listiges selbst ausdenken, denn das Text-Format an sich gibt das nicht her.
    das angehängte Bild soll mal die angedachte Oberfläche zeigen...

    natürlich munter erweiterbar... aber fürn Anfang soll halt Text, mind. 1 Bild angezeigt werden ...und diese Daten dann gespeichert werden... wie mir scheint, wäre SQL unumgänglich... habt ihr noch Tipps (außer die Tipps von @ErfinderDesRades zu Datenbanken) um sowas zu bewerkstelligen?
    Bilder
    • Datenbank.png

      13,02 kB, 1.152×648, 235 mal angesehen
    ja darum geht es mir ja gerade... ich weiß zwar wie ich meine Oberfläche gestalten möchte, weiß aber noch nicht wie ich den Rest handhabe...deswegen wollte ich mich jetzt kundig machen, wie ich am besten das ganze speichern kann um daraufhin mein Projekt in diese Richtung zu planen/aufzubauen
    ich nehm immer den Dataset-Designer.
    Aber es gibt auch Entity-Framework-Designer, und viele Datenbank-Managment-Systeme haben auch Designer, gute oder schlechte.
    Für manche DBs muss man extra-Manager installieren, für andere weiß ich gar kein.
    Der Access-Designer gefällt mir, der von SqlServer ist so lahm wie monströs, von SqLite und SqlCe weiß ich gar kein Designer.

    Theoretisch kannst du auch auf ein Blatt Papier malen, und hast dann halt hinterher das Vergnügen, deine Zeichnung in gültiges Sql zu übersetzen.
    Da hier schon mit manuellem SQL und DataSets sowie dem ganzen unkomfortablen Kram hantiert wird, schlage ich einfach mal EntityFramework Code First mit SQLCe Backend vor.
    Entity Framework - Schnellstart
    Entity Framework - Code First
    MigrateDatabaseToLatestVersion
    Da du in WPF arbeitest hier noch einige hilfreiche Dinge:
    RX
    LINQ
    ObservableCollection<T>Binding

    Zudem solltest du dir das MVVM-Prinzip anschauen.
    Wenn du das alles beherrschst, ist es ein Leichtes deine Anwendung umzusetzen.

    Schreib dir einfach deine Codebase (es reicht ein DbContext mit ein paar DbSets auf deine Klassen). Der Rest wird dir vom EntityFramework abgenommen.
    Migration: Automatisch
    Erzeugung der Datenbankdatei: Automatisch
    Erzeugen der Datenstruktur: Automatisch
    Aktualisieren der Daten: Automatisch
    Was du manuell machen musst? DbContext.SaveChanges() bzw. await DbContext.SaveChangesAsync()
    Im Anhang die geforderten Bilder des SQLite-Managers.
    Bilder
    • SQLite-Screen1.PNG

      64,68 kB, 1.545×873, 232 mal angesehen
    • SQLite-Screen2.PNG

      50,14 kB, 1.545×873, 204 mal angesehen
    • SQLite-Screen3.PNG

      16,59 kB, 364×432, 193 mal angesehen
    • SQLite-Screen4.PNG

      10,95 kB, 364×432, 200 mal angesehen
    • SQLite-Screen5.PNG

      71,93 kB, 1.545×873, 211 mal angesehen
    • SQLite-Screen6.PNG

      47,81 kB, 1.545×873, 212 mal angesehen