2010-12-30 9 views
0

Ich bin neu in SQL. Ich schaue auf die Erstellung einer Datenbank, wo ein Wert in einer Tabelle ist ein Zeiger auf eine andere 'ganze' Tabelle (nicht nur ein Wert in der anderen Tabelle ... aber die Tabelle selbst). Wie kann man das erreichen und wie kann man eine SQL-Anweisung schreiben, um auf Daten in der Kindtabelle zuzugreifen? Ich werde mit den folgenden Tabellen illustrierenUntergeordnete Tabellen definieren und Datensätze von ihnen abrufen

Projekt:

ID Name Site    Client   Progress 
------------------------------------------------------ 
1 Bronx 99-Beans Street Mr.Smith   **1 
2 Mandy 4-Apt Clinton  Mrs. Cross  **2 
3 Ani 7-Magbo,Jos, NG FRN, 9ja   **3 

Bronx:

Task Description    Start  Finished Handler 
------------------------------------------------------------- 
1 Remove Top-Soil   07:50:33  12:10:05 Jack 
2 Break Ground   13:00:20  15:33:52 Grader 
3 Spray Fertilizer  15:55:30  17:15:23 Suzie 

Beachten Sie, dass die zweite Tabelle hat seinen Namen von dem Name Wert von Project @ id = 1. Die ID könnte immer noch diesen Zweck erfüllen, in diesem Fall würde die Tabelle '1' ... heißen, was ziemlich seltsam ist, aber zumindest erklärt dies die Art der Beziehung, die die Tabellen haben sollten. Löschen eines Datensatzes in der 'Projekt' Tabelle sollte auch die zugehörige Progress-Tabelle (mit dem Namen des Datensatzes) * löschen. Wie kann man & Abfragetabellen mit dieser Beziehung in SQL erstellen?

+1

Warum genau brauchen Sie eine neue Tabelle für jede Zeile in "Projekte"? Dies ist zwar möglich, aber es ist nicht so, wie relationale Datenbanken verwendet werden sollten. Vielleicht sollten Sie einen Schlüssel-> Wert oder eine Objektdatenbank verwenden? – pablochan

+0

Schlechter Entwurf .... – PurplePilot

+0

@pablochan: Könnten Sie mehr Licht auf Schlüsselwert- oder Objektdatenbanken werfen? – twohot

Antwort

0

In der Projekttabelle müssen Sie sicherstellen, dass das ID-Feld nicht nur eindeutig ist, sondern auch das Feld Name. Da Sie Tabellen in der Datenbank mit dem Namensfeld erstellen möchten, würde dies bei Duplikaten ein Problem darstellen. Als nächstes würde ich von meinem Programm aus die Projekttabelle aufrufen, den Tabellennamen lesen und diesen Namen an eine andere Abfrage für das spezifische Projekt übergeben. In dem Fall, in dem die spezifische Tabelle Bronx beispielsweise aus der Projekttabelle entfernt wird, könnten Sie einen Auslöser in die Projekttabelle schreiben, der besagt, dass Sie die projektspezifische Tabelle löschen, die in der Spalte Zeile aufgeführt ist. Die untere Zeile ist nur ein Teil dessen, was Sie tun müssen, kann in SQL auftreten, während der Rest in Ihrem Programm verwaltet werden sollte.

+0

Eigentlich greife ich aus einem Python3-Skript auf diese Tabellen zu. Ich sehe dich zeigen. Vielen Dank. – twohot

Verwandte Themen