2010-12-15 4 views
1

Ich frage mich, ob es eine Möglichkeit gibt, einen Fremdschlüssel für eine Liste von ganzen Zahlen zu erstellen, die auf einzelne Integer-Elemente der Liste antworten.MYSQL: Erstellen einer Liste von Ganzzahlen (IDs), die für jedes Ganzzahlelement Fremdschlüsseleinschränkungen verwenden können?

Zum Beispiel habe ich eine "Übungen" -Tabelle. An diesem Tisch würde Ich mag zwei verwandte Spalten halten: „exercisesID“ „relatedExerciseIDs“

jedoch „relatedExerciseIDs“ ist ein VARCHAR kommagetrennte „exerciseID“ s enthält. Wenn Sie eine Übung aus der Tabelle löschen, sollten Sie alle Übungen mit der gelöschten "ÜbungsID" in der Liste "relatedExerciseIDs" entfernen.

Ist das möglich? Wie kann ich das machen?

Vielen Dank für Ihre Meinung! Ich würde auch interessiert sein, einen Spaltentyp anders als ein VARCHAR zu verwenden, wenn gezeigtes mögliches =)

Antwort

1

Alle Spaltenwerte sollten atomar sein.

Sie sollten keine Liste von irgendetwas haben, das Sie in einem einzelnen Wert abfragen möchten.

Der Weg, um Übungen zu anderen Übungen zu beziehen, ist mit einer zweiten Tabelle. Es wird zwei Spalten haben, die jeweils eine Trainings-ID enthalten, wobei beide Spalten eine Fremdreferenz der Übungstabelle sind.

+0

= S tonights wird eine lange Nacht dann hahaha ... danke! Ich habe eine Reihe von Spalten wie diese, also denke ich, dass ich für jeden einen Tisch machen muss. Ich hatte gehofft, dass es einen leichteren Weg gibt. Die Wahrheit ist schwer zu schlucken, denke ich. – Garrett

0

Der einzige Weg, dies zu tun, ist entweder über eine gespeicherte Prozedur oder in Ihrer Sprache der Wahl. Wenn Sie den Datensatz löschen, müssen Sie eine LIKE Abfrage ausführen, um einen beliebigen Datensatz mit dem Wert in Ihrem Feld mit Trennzeichen zu finden. Es ist wirklich nicht der beste Weg, um Dinge zu tun, und würde langsam wie die Hölle sein, da Sie dieses Feld nicht so indizieren können, wie Sie es brauchen.

Ihre absolut beste Wette wäre, eine andere Tabelle zu erstellen, um die Beziehungen zwischen den Übungen zu definieren, indem Sie nur zwei Übungs-ID-Felder verwenden (Übungs_ID, verwandte_Arbeits-ID).

Sie sollten auf Database Normalization nachlesen.

+0

Ich fühle mich so blöd = S ich nehme einen Kurs über Datenbanken, wo wir alles über normale Formen und den optimalen Weg gelernt haben, eine verlustfreie Datenbank zu organisieren ... Ich denke, ich bin ein wenig neu in der Anwendung der Schule in der Praxis. das, oder ich versage meine Prüfung nächste Woche! haha – Garrett

+0

@Garrett: Fühlen Sie sich nicht schlecht; Wir fangen alle irgendwo an. Du musst nur immer besser werden. Wenn Sie das im Hinterkopf behalten, werden Sie weit gehen. Viel Glück bei Ihrer Prüfung. – AgentConundrum

Verwandte Themen