Access SQL Probleme

Atreju93

Lieutenant
Registriert
Nov. 2010
Beiträge
595
Hallo zusammen

Ich hoffe ihr könnt mir helfen.
Ich muss für die Schule ein Projekt machen. Die Aufgabe ist, mit einem SQL - Trainer (von unserem Lehrer in c# programmiert) eine datenbank im .mdb - Format zu erstellen, mit SQL - Batchdateien Tabellen zu erstellen, mit SQL - Batch die Tabellen mit Testdaten füllen sowie mit SQL - Batch Beziehungen zu erstellen.
Zudem muss ein Frontend in c# programmiert werden, das Daten aus der DB auslesen kann.

Soweit kein Problem. Mit dem Trainer kann man eine neue . mdb Datei anlegen, und den Batchcode eingeben, der dann ausgeführt wird.

Ich erstellte eine neue .mdb und kreierte mit dem CREATE TABLE xxx befehl 4 Tabellen.
Die Beziehungen machte ich direkt im CREATE mit PRIMARY KEY (xxx_ID) sowie FOREIGN KEY (xxx_ID_FK) REFERENCES TABLE (xxx_ID) usw usw..

Auch das Einfüllen von Testdaten mit dem INSERT funktioniert wunderbar.
Am Ende hatte ich eine komplette .mdb Datei mit Tabellen, beziehungen und Testdaten, die ich (auch im Trainer enthalten) mit dem SELECT - Befehl auslesen konnte.

Nun Beinhaltet die Projektaufgabe aber auch, dass ich mittels DROP die Tabellen löschen kann.
Normalerweise kein Problem: DROP TABLE xxx; und schon ist es geschehen.

Nun:
Gibt mir der Trainer die Fehlermeldung, dass die Tabellen nicht gelöscht werden können, da sie in einer Beziehung sind.

Da habe ich gedacht kein Problem, die Bezihungen kann ich mittels ALTER TABLE xxx DROP CONSTRAINT xxx; löschen.

Nun stellt sich jedoch heraus, dass für die Bezihungen von dem SQL Trainer (der Intern die MS Access Engine braucht) zufällige Namen verwendet. z.b. Rel_8567EA06_8846_4D87.

Da ich aber für das Löschen den Namen wissen muss und er bei jedem Erstellen der Tabellen und Beziehungen anders ist, kann ich dies nicht in einem Batchscript festhalten.


nun meine Frage:

Wie kann ich die Beziehungen mit dem CONSTRAINT - Befehl erstellen und dabei einen mir geläufigen namen geben, damit ich mit DROP CONSTRAINT die Beziehung wider löschen kann?

Kurz gesagt muss ich folgendes können:

Mit SQL - Batch Tabellen erstellen
Mit SQL - Batch Beziehungen erstellen
Mit SQL - Batch Testdaten einfüllen
Mit SQL - Batch die Tabellen wider löschen.

Das Ganze muss ich dann vor der Klasse/Lehrer vorführen, also nixx mit vorher editieren!

Auf Wunsch kann ich auch den Code der SQL - Batchdateien hier posten.


Vielen Dank im Voraus

Gruss

Atreju
 
drop table wird in der von dir beschriebenen konstellation grundsätzlich nicht angewendet, es macht einfach keinen sinn. die referenzen sind ja nicht grundlos angelegt worden und werden i.d.r. für stammdaten genutzt. bewegungsdaten können gelöscht werden, was aber nicht mittels drop und create passiert sondern mittels truncate. wenn du teilweise löschen willst, dann mit delete. die aufgabe, aus einem einheiltlihcen datenabnkmodell beliebig eine tabelle zu löschen kommt der gleich, die sommerreifen während einer autobahnfart gegen die winterreifen auszutauschen. sinnfrei halt.
 
Dann hat uns unser Lehrer einen schönen Mist angegeben.

Ich arbeite streng nach Vorgaben. Kein Eigending oder sonstiges Zeugs.
ich werde diesen Beitrag, falls dies erlaubt ist, als Referenz angeben, da mein Lehrer dies Verlangt.

Gruss
 
ja sicher kannst du das. ich arbeite seit 10 jahren im bereich der datenbankmodellierung und auswertung und hatte das als studienschwerpunkt. ich hatte in sofern großes glück, dass ich als dozent nen absoluten profi hatte. ist leider an unis und fh keineswegs standard. ich vermute, dass ihr als aufgabe deshalb die tabellen löschen sollt, um zu sehen und zu verstehen, warum das nicht gehan kann und darf. nur tablelen ohne referenz können gelöscht werden und der grund liegt ja im wesen, sprich der benutzung, der referenz.
 
Zurück
Oben