Re: Beziehung läßt sich nicht erstellen
Verfasst: So 3. Feb 2019, 11:12
Hallo Robert,
Wenn in MySQL/MariaDB die Datensätze einer "View" auch dann nicht bearbeitbar sind, wenn nur eine einzige Tabelle incl. Primärschlüssel verwendet wird (eine solche Abfrage ist ja immer bearbeitbar, problematisch wird es nur bei Joins über mehrere 1:n-Verknüpfungen, weil dann die Datensätze nicht mehr eindeutig zugeordnet werden können), wie speichert man denn dann eine bearbeitbare Abfrage in phpMyAdmin, so daß die View unter "Tabellen" in LO angezeigt wird und die Datensätze mit LO bearbeitet werden können?
Datenbanken ohne Beziehungen mit referentieller Integrität sind Mist.
Ich habe endlich herausgefunden, wie ich sowohl mit phpMyAdmin als auch in LO die Beziehungen erstellen kann (Connector: MySQL(nativ) ). Ich mußte das Tabellenformat auf "InnoDB" umstellen (voreingestellt ist immer MyISAM). Wenn dann ein Index auf dem Fremdschlüsselfeld existiert (mit oder ohne UNIQUE, also genauso wie in Access), ließ sich die Beziehung erstellen. Die in LO erstellte Beziehung ist auch in phpMyAdmin angekommen, d.h. im Gegensatz zu Access konnte LO die Beziehung direkt auf dem Server erstellen.
Jetzt kann das nicht mehr passieren, daß beim Löschen eines Datensatzes auf der 1-Seite ein verweister Eintrag in der n-Tabelle stehen bleibt.
Bei zwei Beziehungen mußte ich zuvor die Fremdschlüsseldatensätze bereinigen, da bereits Schlüsselverletzungen entstanden waren und daher die Beziehung nicht eingerichtet werden konnte. Nach der Bereinigung ging es dann.
Erstellen einer Beziehung im Tab "Designer" in phpMyAdmin geht aber immer noch nicht und die Anordnung der Tabellen im Designer-Fenster läßt sich nicht speichern. Nach jedem neuen Aufruf der Designer-Seite sind die Tabellen wieder auf einem Haufen überlappend zusammen gewürfelt. Angezeigt werden die Beziehungslinien dort aber. Zum Glück lassen sich die Beziehungen in phpMyAdmin auch über "Struktur --> Beziehungsansicht" erstellen. Nicht so schön grafisch, aber es funktioniert hier gut. Nur möchte ich natürlich die Beziehungen auch schön grafisch angezeigt bekommen ohne jedesmal die Tabellen übersichtlich anordnen zu müssen, damit ich den Überblick behalte. Woran könnte es liegen, daß die Designer-Seite nicht gespeichert werden kann?
Ein Problem mit LO habe ich noch:
Ich konnte ja ein Index in LO für ein Feld erstellen und dieser Index wurde mir dann auch in phpMyAdmin angezeigt. Soweit gut. Aber wenn ich die Tabelle erneut zum Bearbeiten öffne, dann wird mir der erstellte Index nicht mehr angezeigt In phpMyAdmin ist er aber weiterhin vorhanden. Wie kommt das? Wie kann ich in LO mir anzeigen lassen, welche Indizes für eine Tabelle bzw. ein Feld erstellt wurden?
Doch. In MS SQL geht das . Sowas haben wir auf der Arbeit. Tabellen einer gekauften Datenbank mit einer eigenen Datenbank per View verbunden. Die Datensätze der View ließen sich ganz normal bearbeiten. Wäre ja auch schlecht, wenn das nicht gehen würde, denn dann sind Views unbrauchbar (Berichte hat man doch eher selten, die Hauptaufgabe ist doch das Bearbeiten der Datensätze).Ansichten kannst Du in keiner Datenbank anschließend mit Daten versehen.
Eine View ist doch auch nur eine gespeicherte Abfrage. In Access nennt sich das "gespeicherte Abfrage"; In MS SQL "View".Falls Access so etwas kann, dann versteckt es hinter dem Begriff "Ansicht" auch nur eine Abfrage, wie sie in Base in der GUI erstellt wird.
Wenn in MySQL/MariaDB die Datensätze einer "View" auch dann nicht bearbeitbar sind, wenn nur eine einzige Tabelle incl. Primärschlüssel verwendet wird (eine solche Abfrage ist ja immer bearbeitbar, problematisch wird es nur bei Joins über mehrere 1:n-Verknüpfungen, weil dann die Datensätze nicht mehr eindeutig zugeordnet werden können), wie speichert man denn dann eine bearbeitbare Abfrage in phpMyAdmin, so daß die View unter "Tabellen" in LO angezeigt wird und die Datensätze mit LO bearbeitet werden können?
Datenbanken ohne Beziehungen mit referentieller Integrität sind Mist.
Ich habe endlich herausgefunden, wie ich sowohl mit phpMyAdmin als auch in LO die Beziehungen erstellen kann (Connector: MySQL(nativ) ). Ich mußte das Tabellenformat auf "InnoDB" umstellen (voreingestellt ist immer MyISAM). Wenn dann ein Index auf dem Fremdschlüsselfeld existiert (mit oder ohne UNIQUE, also genauso wie in Access), ließ sich die Beziehung erstellen. Die in LO erstellte Beziehung ist auch in phpMyAdmin angekommen, d.h. im Gegensatz zu Access konnte LO die Beziehung direkt auf dem Server erstellen.
Jetzt kann das nicht mehr passieren, daß beim Löschen eines Datensatzes auf der 1-Seite ein verweister Eintrag in der n-Tabelle stehen bleibt.
Bei zwei Beziehungen mußte ich zuvor die Fremdschlüsseldatensätze bereinigen, da bereits Schlüsselverletzungen entstanden waren und daher die Beziehung nicht eingerichtet werden konnte. Nach der Bereinigung ging es dann.
Erstellen einer Beziehung im Tab "Designer" in phpMyAdmin geht aber immer noch nicht und die Anordnung der Tabellen im Designer-Fenster läßt sich nicht speichern. Nach jedem neuen Aufruf der Designer-Seite sind die Tabellen wieder auf einem Haufen überlappend zusammen gewürfelt. Angezeigt werden die Beziehungslinien dort aber. Zum Glück lassen sich die Beziehungen in phpMyAdmin auch über "Struktur --> Beziehungsansicht" erstellen. Nicht so schön grafisch, aber es funktioniert hier gut. Nur möchte ich natürlich die Beziehungen auch schön grafisch angezeigt bekommen ohne jedesmal die Tabellen übersichtlich anordnen zu müssen, damit ich den Überblick behalte. Woran könnte es liegen, daß die Designer-Seite nicht gespeichert werden kann?
Ein Problem mit LO habe ich noch:
Ich konnte ja ein Index in LO für ein Feld erstellen und dieser Index wurde mir dann auch in phpMyAdmin angezeigt. Soweit gut. Aber wenn ich die Tabelle erneut zum Bearbeiten öffne, dann wird mir der erstellte Index nicht mehr angezeigt In phpMyAdmin ist er aber weiterhin vorhanden. Wie kommt das? Wie kann ich in LO mir anzeigen lassen, welche Indizes für eine Tabelle bzw. ein Feld erstellt wurden?