• Hallo Gast!
    Noch bis zum 20.07. kannst Du an unserer Umfrage zum Hersteller des Jahres teilnehmen! Als Gewinn verlosen wir unter allen Teilnehmern dieses Mal eine Grafikkarte Eurer Wahl für bis zu 1.000 EUR - über eine Teilnahme würden wir uns sehr freuen!

MySQL: Abhängigkeit einer Tabelle von einer anderen

DEYS

Neuling
Thread Starter
Mitglied seit
11.05.2004
Beiträge
646
Ort
Berlin
Hi, ich habe eine Datenbankstruktur in MySQL, bei der Aufgaben von Leuten gespeichert sind.
Zur besseren Verarbeitung mit PHP hab ich eine Tabelle, welche die Aufgabenbereiche auflistet und sie mit einer ID versieht, und eine andere, welche diese Bereiche als Spalten hat, wobei die IDs der Teammitglieder als Schlüssel stehen und die Zellen mit Bool-Werten gefüllt sind.

Das sie in etwa so aus:

Tabelle "Bereiche":
ID | Bereich
-----------
1 | Bereich 1
2 | Bereich 2
3 | Bereich 3
...

"Aufgaben":
ID | Bereich 1 | Bereich 2 | Bereich 3| ....
-----------------------------------------
1 | _0______ | ___1____ |_0______
2 | _1______ | ___0____ |_1______
3 | _0______ | ___1____ |_1______

Nach der Erläuterung meiner Tabellestruktur nun die Frage:
Gibt es eine Möglichkeit, die Spaltenanzahl und -beschriftungen von "Aufgaben" abhängig von "Bereiche" zu machen, d.h., dass sich Änderungen bei "Bereich" auf "Aufgaben auswirken?
Zum Beispiel will ich erreichen, dass beim Hinzufügen eines Aufgabenbereichs in "Bereiche" die Tabelle "Aufgaben" automatisch um eine Spalte mit dem gleichen Namen erweitert.
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Du könntest dir eine eigene Funktion in deinem Php-Script schreiben, welches automatisch beide Tabellen verwendet.
Kannst es ja so einrichten, dass du einfach die normalen Parameter wie bei einer normalen Abfrage verwenden kannst, so kannst du das dann leicht in vorhandene Scripte integrieren.
 
Du meinst, dass ich beim Abarbeiten eines Scriptes gucke, ob der entsprechende Aufgabenbereich existiert und wenn nicht, dann die entsprechende ALTER-Anweisung einbaue?

Also gibt's keine SQL-only Lösung?
 
Jup ungefähr so habe ich es gemeint.
Aber ob MySQL das schon "von Haus" aus kann, weiß ich nicht
 
schau dir mal das themengebiet "referenzielle integrität" an ;)

edit: versteh aber das problem nicht: wenns nen neuen aufgabenbereich gibt muss es doch nicht zwigend gleich ne neue aufgabe geben oder ??
 
Zuletzt bearbeitet:
Der Blick auf Wikipedia sagt mir, dass es sich nur um eine inhaltliche Abhängigkeit handelt: Schlüssel der einen Tabelle ist Fremdschlüssel der anderen.
Ich will aber 'ne formelle Abhängigkeit: Änderungen der Zeilen der einen Tabelle bewirken Änderungen an den Spalten der anderen Tabelle.
Ich erstelle nur dann einen neuen Aufgabenbereich, wenn ein Teammitglied diesen auch übernimmt.

Vllt. zum besseren Verständnis mal ein Bsp.:
Ich habe ein neues Teammitglied, welches als erstes auch musizieren will.
Deshalb füge ich in der Tabelle "Bereiche" eine neue Zeile mit dem Wert MUSIK ein.
Automatisch soll nun die Tabelle "Aufgaben" um die Spalte MUSIK erweitert werden.
Das ist das, was ich anstrebe.
 
ja musst halt schaun ob mysql sowas kann, ich mach sowas immer über php
 
ich wuerde das datenbank layout ganz anders aufbauen.

die erste tabelle kann so bleiben... allerdings wuerde ich in der aufgaben tabelle nur noch folgendes machen:

Code:
ID | Bereiche  |
----------------
1  | 1,3,6,8,9 |
2  | 3,7,9     |
3  | 2,4,6,9   |
d.h. du speicherst einfach in welchen bereichen ein teammitglied tätig ist. also wenn ein mitglied einem bereich garnicht zugeordnet ist, dann nimmt es dort auch nicht teil.
oder ein andere möglichkeit wäre folgende. ebenfalls die erste tabelle wieder so lassen wie sie ist und die andere dann folgendermaßen:
Code:
ID | Bereich  |
---------------
1  | 1        |
1  | 4        |
1  | 7        |
1  | 9        |
2  | 2        |
2  | 6        |
3  | 2        |
um dort zb rauszubekommen in welchen bereichen ein teammitglied tätig ist tust du folgendes:
Code:
 SELECT Aufgaben.*, Bereiche.Bereich FROM Aufgaben LEFT JOIN Bereiche ON Aufgaben.Bereich = Bereiche.ID;
 
Ich habe die erste Möglichkeit von dir auch schon in Betracht gezogen.
Aber ich hab mich entschieden, auf Mehrfachattribute zu verzichten.
Ich hab bereits eine Lösung gefunden.
Die lässt sich auch leichter über Scripts verändern.

Trotzdem danke für die Tipps.
 
mysql kann das wenn du INNODB als tabellentyp verwendest statt INNODB
 

Ähnliche Themen

Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh