Relationale Datenbank mit 2 Verweisen auf eine Datatable

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Rizzle.

    Relationale Datenbank mit 2 Verweisen auf eine Datatable

    Moin,

    ich möchte mir eine Prozessvariablendatenbank anlegen und möchte 2 Datatables mit entsprechenden Beziehungen mit den Sprachen verbinden.
    Das der Ausschnitt des Datasets worum es geht hab ich angehängt.

    Da wird mein problem deutlich, ich möchte die TextID in 2 Tabellen nutzen und das erlaubt mir VB nicht, weil er in beiden Tabellen zu jeder ID einen eindeutigen Verweis haben möchte.
    Ich bin aber nicht genug Datenbankexperte um zu wissen wie ich das löse, wenn die Beziehungen wegnehme, aktualisiert er beim Schreiben die Verweise nicht mehr.

    Kann mir jemanden einen Tipp dazu geben?

    Beste Grüße
    Bilder
    • Dataset.png

      37,61 kB, 936×636, 148 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rizzle“ ()

    Ist grad schwer dahinterzusteigen, was da bei dir wie funktionieren soll. Du hast dir aber ne schöne "Ringschaltung" gebaut.
    Wirst nicht drum rum kommen 2 Text-Tabellen zu erstellen. 1x für AlarmText und 1x für AlarmgruppeText.

    Alternativ: Warum packst du nicht in beide Tables jeweils die beiden Spalten TextDeutsch und TextEnglisch mit rein?
    Meiner Meinung nach muss man das nicht "auslagern"..

    Dann ist mir noch aufgefallen:
    Tabelle Alarm: GruppenID -> AlarmgruppeID
    Tabelle AlarmText: AlarmeID -> AlarmID
    Tabelle AlarmgruppeText: GruppeID -> AlarmgruppeID

    sieht mir irendwie spanish aus alles.. sonst beschreib' mal ein bisschen, was da gemacht werden soll. ggf. kann man dann bei der Modellierung helfen
    Edit1: Ich würde das schon so lösen:


    Edit2: Wenn du zwingend "Textbausteine" brauchst:
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „tragl“ ()

    Ich habe mir eine Listbox programmiert die continuierlich in einem Thread die Steuerung pollt und die Fehlerbits ausliest und dafür brauche die Texte und Adressen

    Es gibt von der Maschine mehrere Alarmbereiche / Gruppen: Kranbrücke, Hubwerk, Fahrwerk, Anbindungen.... die in der Fehlerbox genannt werden müssen und dann brauche ich den eigentlich Alarmtext (sowas wie Motor wurde zu heiß).
    Für die Alarme brauche ich noch die Adresse in der Steuerung, das sind DBnummer, Adresse und Bitnummer. Für die Archivierung brauche auch noch Zeiten aber das kommt später.

    Ich habe die Sprache ausgelagert, weil ich icht glaube dass das bei den beiden Sprachen bleibt, sodass ich nur eine Tabelle erweitern muss. Und ich dachte ich kann manche Sprachsachen mehrfach benutzen, die Config und Statusmeldungen will ich auch so speichern.
    Jo, das mit den Sprachen ist so ne Sache - da musste ja später für jede "Sprachversion" auch noch aufwändig programmieren, was wann angezeigt wird.
    Dann müsstest du bei Variante 2 meiner Screenshots bleiben, dann hast du zumindest für die beiden Fälle deine "Textbausteine".

    Bau dir am besten mal ein kleines simples Test-Szenario und schau, ob du damit an dein Ziel kommst... und das Ganze am Besten erstmal mit DataSet-Only ohne Datenbank dahinter, dann kannst du
    bei Bedarf das Testprojekt hier hochladen und wir können drüber schauen.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Rizzle schrieb:

    sondern es gibt keine Chance von 2 Tabellen die gleiche SprachenTabellen zu nutzen?


    Soweit ich das beurteilen kann in diesem Zusammenhang nicht. Damit baust du dir einen Ring und jede vernünftige Datenbank wird dir das verweigern
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    ich sehe da eiglich kein Problem. Nur die Relationen sind falschrum.
    Text.ID muss PrimärKey sein, und die Tabellen AlarmgruppeText und AlarmText verweisen mit je ihrem Fremdschlüssel darauf.
    Das würde jdfs. funktionieren.
    Obs sinnvoll oder überkandidelt ist, Betextung über eine m:n-Relation - also mit ZwischenTabelle - zuzuordnen wäre eine andere Diskussion.
    Kannst du das eventuell visualisieren, damit ich mir vorstellen kannst, was du meinst?

    Ich wollte das so gestalten, weil noch Einstellungen wie Wegwerte, Zeitwerte, Geschwindigkeiten und Optionen dazukommen und die auch alle Texte für den User brauchen welche sich bestimmt überschneiden werden und hätte daher schon gerne die Lösung mit einer Sprachtabelle =).

    Rizzle schrieb:

    es gibt keine Chance von 2 Tabellen die gleiche SprachenTabellen
    Warum sollte das nicht möglich sein?
    Splitten würde ich erst, wenn du so viele Texte und Textgruppen hast, dass es unübersichtlich wird.

    Als ID würde ich übrigens einen String nehmen, sowas wie ​EngineTooHot oder ​ENGINE_TOO_HOT
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Rizzle schrieb:

    Kannst du das eventuell visualisieren, damit ich mir vorstellen kannst, was du meinst?
    Du hast es doch schon fast visualisiert.
    Nur die Relationen AlarmgruppeText-Text und AlarmText-Text müssen genau andersrum.
    Also wo das Schlüsselchen ist muss die liegende 8, und wo die liegende 8 ist das Schlüsselchen.