Announcement

Collapse
No announcement yet.

Relationale Datenbank erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Relationale Datenbank erstellen

    Hallo,

    ich begreif das einfach nicht so ganz, wie ich eine Datenbank erstellen kann. Über Abfragen und so weiter habe ich viel gelernt, aber wie man nun eine Datenbank erstellt und aufbaut? Eine Mobile sdf-Datei welche mit einem Tableadapter verknüpft ist und eine Tabelle enthält brachte ich hin, kann aber die Daten nicht aufnehmen (das gibt wohl ein anderes Thema noch). Ich versuchte folgendes:
    - ein DataSet mit 2 Tabellen, welche verknüpft sind erstellen (z.B. eine Tabelle mit CDs, Platten und den Interpreten und eine Tabelle mit einer Schlüsselspalte und den zugehörigen Liedern auf der Platte. (Fremdschlüsselbeziehung) sowie
    das Selbe in SQL-Server 2005.
    Bei beiden Versuchen kam ich auf das Selbe:
    Code:
    VerknuepfteTesttabelle-Tabelle wurde gespeichert
    testTable_1-Tabelle
    - Beziehung "FK_testTable_1_VerknuepfteTesttabelle" kann nicht erstellt werden.  
    Die ALTER TABLE-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung "FK_testTable_1_VerknuepfteTesttabelle". Der Konflikt trat in der "testdatenbank"-Datenbank, Tabelle "dbo.VerknuepfteTesttabelle", column 'VerknuepfteKeyspalte' auf.
    im DataSet war es so (was wahrscheinlich etwa das Selbe heissen sollte) dass es nicht ging etwas in die Tabelle einzufügen da die Schlüsselspalte leer war.
    ABer wie kann ich denn eine leere Tabelle (bzw. zwei) erstellen? Man sollte ja eben die Daten eingeben können, auch über die Relation. Was muss ich da tun?
    Bei diesem Beispiel im SQL-Server wollte ich unabhängig einige Daten in die beiden Tabellen einfügen aber das half auch nichts, kan die selbe Meldung.

    Doofes Problem aber irgendwie steht das so nirgends (zumindest nicht wirklich in den Büchern zu .NET), es wird meist von einer bereits vollen Datenbank ausgegangen.

    Danke

  • #2
    Originally posted by C.M.Obrecht View Post
    Doofes Problem aber irgendwie steht das so nirgends (zumindest nicht wirklich in den Büchern zu .NET), es wird meist von einer bereits vollen Datenbank ausgegangen.
    So ist es. Das DataSet ist "nur" eine Datenmenge im Arbeitsspeicher und hat grundsätzlich nichts mit einer tatsächlich vorhandenen Datenbank zu tun. (Es kann auch die Repräsentanz einer xml-Datei oder einer csv-Datei sein oder völlig unabhängig von physikalischen Daten sein.) Der DbDataAdapter dient zur Verknüpfung zwischen DataSet und Datenbank; der TableAdapter ist so etwas wie eine Zusammenfassung von DataSet und DbDataAdapter.

    Damit wird es verständlich, wenn von einem DataSet aus keine Datenbank erzeugt werden kann (jedenfalls nicht mit einfachen Methoden). Es gibt lediglich die Möglichkeit, eine bereits vorhandene "leere" Datenbank zu öffnen und mit Tabellen zu füllen:
    1. Erstelle eine neue Datenbank mit einem Datenbank-Tool, z.B. dem Management Server (MS-SQL) oder IBExpert (Firebird) oder was auch immer.
    2. Erstelle eine DbConnection conn zu dieser Datenbank, vorzugsweise in einem using-Block.
    3. Erstelle zu conn einen DbCommand cmd mit dem nötigen Inhalt, z.B.:
      Code:
      CREATE TABLE Customers (
         ID Integer NOT NULL PRIMARYKEY,
         Prename varchar(35),
         Lastname varchar(35) NOT NULL );
    4. Führe diesen Befehl aus, vorzugsweise durch ExecuteNonQuery.
    5. Füge auf dem gleichen Weg auch alle Details ein, z.B. ForeignKeys.
    6. conn.Close nicht vergessen, aber bei einem using-Block überflüssig.

    Gruß Jürgen

    Comment


    • #3
      Damit wird es verständlich, wenn von einem DataSet aus keine Datenbank erzeugt werden kann (jedenfalls nicht mit einfachen Methoden). Es gibt lediglich die Möglichkeit, eine bereits vorhandene "leere" Datenbank zu öffnen und mit Tabellen zu füllen:
      Vielen Dank. Das ist mir ganz klar! Ich meinte damit natürlich, eine Datenbank im Arbeitsspeicher, mit den FKs und so weiter, z.B. zum als XML speichern. Wenn ich tatsächlich eine Datenbank möchte, dann erstelle ich diese gleich im Management Studio oder Designer was - bei einfachen Tabellen - genau wie beim DataSet auch klappte.

      Mein Problem ist nur das Erstellen einer Datenbank mit zwei Tabellen (oder mehr) und einer Relation bzw. Foreign Key, dass ich dann in keine der Tabellen Daten schreiben kann da sofort die o.g. Ausnahme erscheint. Das Problem habe ich bei beiden Verfahren, bei der richtigen Datenbank oder der DataSet-Struktur.

      Vielen Dank

      Comment

      Working...
      X