Zugriffsmöglichkeiten auf SQL-Datenbank

ofc97

Neuer Benutzer
Beiträge
4
Hallo zusammen,

ich lerne mich gerade in das Thema SQL Datenbanken ein und komme an zwei Punkten nicht weiter.

- Relationale Datenbanken verstehen - OK
- Normalisierungsformen - OK
- Backendlösungen sind alle Datenbank Management Systeme die es gibt (MS SQL Server, MySQL, MariaDB, etc.) - richtig?

Aber wie greift der Endbenutzer auf die Daten im SQL-Server zu?
Ich habe verstanden, dass das mit PHP geht. Dazu muss man eine Website Programmieren und designen. Gewisse Felder und Buttons erstellen und diese mit Funktionen und SQL-Befehlen verbinden.

Dann habe ich verstanden, dass man mit allen möglichen Programmiersprachen wie C#, VB.NET, Java, React, Python etc. Eine GUI programmieren und somit dem Endbenutzer den Zugriff auf den SQL-Server bzw. auf die Daten ermöglichen kann.

Aber sind das die einzigen Möglichkeiten oder gibt es da auch einfachere Lösungen. z.B. fertige Programme die man für seine Datenbank anpassen kann, etc?

Könntet ihr mich bitte aufklären. Ich möchte mir einen Lernpfad zusammenstellen und mich in der Materie vertiefen aber ich will nicht falsch anfangen und unnötig viel Zeit mit Programmiersprachen verlieren, wenn das nicht unbedingt erforderlich ist.

Desweiteren wäre SQL und XML auch ein Thema das ich nicht ganz durchblicke. Ich habe z. B. Eine große Datenbank das in XML-Dateien ausgelagert wurde. Dem liegt auch eine XSD-Datei bei das die Struktur anscheinend vorgibt. Ich müsste anhand dieser XSD-Datei eine SQL-Datenbank erstellen mit Beziehungen. Jedoch finde ich nichts im Internet, das ich verstehen und einen Schritt weiterkommen könnte.

Vielen lieben Dank schonmal für eure konstruktiven Antworten.

Ömer
 
Werbung:
XML und XSD sind Dateien, XML die Daten, XSD die Schemadefinition.
XML ist einfach erstmal Text und geduldig, nimm einen alten Editor und ändere XML Daten, kein Problem. Nimm eine XSD Datei dazu und ein geeignetes Tool und prüfe, ob Deine Änderungen erlaubt sind laut XSD Schema.

Dass Du nur mit SQL auskommst, kann sein, wenn Du Datenmodellierer bist oder Datenbankentwickler. DB und SQL werden häufig nur als dummer Datenspeicher genutzt und sind m.E. unterbewertet. Sie können grundsätzlich viel mehr als Daten speichern, je nach Hersteller noch viel mehr. Ja und manche kosten sogar Geld in der Anschaffung.

PHP kannst Du als Werkzeug betrachten, um DB Clients zu entwicklen, ebenso wie Java, C#, Visual Basic ..
Mit DB Management Tools / IDE kannst Du direkt mit der DB interagieren. Wenn Du SQL beherrscht, brauchst Du kein Programm. :) Wenn Du bestimmte DB nutzt, die selbst nicht nur Datenhaltung, sondern auch eine eigene Programmierbarkeit bieten, gilt das umso mehr.
Jede DB liefert ein Kommandozeilenprogramm für puren SQL Betrieb, damit geht alles. Vielleicht nicht unbedingt, wie man es sich heute vorstellt, mit grafischer UI usw.
Am Ende möchtest Du vielleicht einen Report ausdrucken, Serienemails, Statistiken, ... meist kommt man um spezifische Programme für Endanwender nicht herum.
 
Also SQL ist die Sprache in der du oder deine Anwendung mit dem DB Management System sprichst um Daten zu schreiben, zu lesen oder verarbeiten zu lassen. Manche DBMS sprechen auch andere Sprachen, so kannst du z.B. Funktionen auch in anderen Sprachen direkt im DBMS laufen lassen.

Wenn du PHP verwendest hast du keine Anwendung die direkt mit dem DBMS spricht sondern das macht dann der Webserver. Es kann also noch weitere Instanzen zwischen Frontend (Applikation, Webseite) und Backend (DBMS) geben, manche Applikationen verwenden ODBC-Treiber um mit Datenbanken zu sprechen.

Es gibt fertige Produkte (wir haben z.B. ein CRM) die sehr flexibel in der Gestaltung von Masken sind wo du dann die Tabellen der Datenbank nutzen kannst. Da ist dann kein oder wenig Code nötig um Ein- oder Ausgaben zu machen. Diese Anwendungen sind häufig sehr verschieden und mal mehr mal weniger flexibel. Du kannst z.B. auch mit Excel direkt Abfragen an eine Datenbank schicken und dir in die Tabelle laden.
 
Vielen Dank für die Antworten.

Konkret nochmal zu dem Thema XML:
Es liegen mir ca. 150 XML Dateien und eine XSD-Schema-Datei vor. Das sind Daten aus einer großen Datenbank die in XML-Dateien ausgelagert wurden. Zudem habe ich eine Schnittstellenbeschreibung, die die Primärschlüssel und den Ursprung eines Attributs (FK?) angibt.

1.) Welche Möglichkeiten gibt es, anhand der XSD-Schema-Datei eine Datenbank nachzubilden, d. h. eine Datenbank samt Tabellen und Beziehungen zu erstellen?
2.) Wie können XML-Dateien dann in diese Datenbank eingelesen werden?

Ich habe sehr lange nach "XML to SQL" oder "SQL Datenbank mit XSD erstellen" gesucht, komme aber nicht auf eine weiterführende Informationen.

Muss ich mir selbst eine Anwendung programmieren, das die XML-Dateien ausliest und je nach Regel/Kriterum die Daten in eine Datenbank importiert oder gibt es fertige Tools dafür?
Was ich bisher halbwegs verstanden habe ist, das Microsoft SSIS (SQL Server Integration Services) ein Tool bietet, das für den XML Import in eine SQL Datenbank genutzt werden kann.

Danke und viele Grüße
Ömer
 
vermutlich 150 xml files, die verschiedene Exporte / Stände des immer gleichen XSD sind?

Generell:
Ein XSD beschreibt hierarchische Datenstrukturen. Das lässt sich nicht in allen Fällen in relationale (Datenbank) Modelle transformieren.
Daraus folgt, man braucht, kann und muss vielleicht gar nicht ein komplettes XSD in ein relationales Modell wandeln.
Besonders nicht, wenn konkrete (endliche) Daten vorliegen, die es zu verarbeiten gilt.
Ein Weg könnte sein (klingt vielleicht etwas bescheuert, aber..):
Ein neues (hoffentlich schlankeres) XSD aus den XML Daten generieren. Daraus dann ein Datenmodell erzeugen. Mindestens mit dem Original abgleichen und sehen, was weg kann.

Ich kenne die MS Produkte und deren Möglichkeiten nicht, ein paar Stichworte für ein Umsetzung:
- zunächst ein Klassenmodell (Java, C#, abstrakt, ..) aus XSD generieren, daraus mit Persistenztools ein Datenmodell
- Einsatz spezieller Werkzeuge / Libs, z.B. XSLT, XML Spy, XSD Tool in VS
- Nutzung von Datentools, die XML importieren, transformieren, exportieren können (besonders, wenn es nur um eine einmalige Sache geht und nicht wiederholt werden muss)
 
Das Problem ist halt die komplett andere Struktur von relationalen Daten und XML Daten. Da die Daten ursprünglich aus einer relationalen Datenbank kommen kann man sie natürlich auch wieder in eine solche importieren, aber: Deine XSD beschreibt nur, wie die Daten in XML aufgebaut sind, nicht wie sie in SQL aufgebaut waren.

Wenn du eine Beschreibung und noch Primärschlüssel und Fremdschlüssel (FK) hast dann ist das natürlich super. Theoretisch kann dir aber immer noch einiges an Infos fehlen über die ursprüngliche Struktur. Das merkst du auch ggf. erst nach 1 Mio Datensätze das jetzt plötzlich mal was definiert ist was du vorher noch nie hattest, dir also eine Tabelle fehlt. Oder ein Atribut hat plätzlich statt wie sonst 20 Zeichen oder weniger mal 2000 Zeichen und dann knallts halt beim Import.

Ganz abgesehen davon ist es viel Arbeit. Alle Tabellen müssen definiert werden, alle XML-Felder müssen selektiert und in die passenden Spalten geschrieben werden. Das ganze dann am besten noch mit Referentieller Intigrität und so, nervt halt erstmal. Sinnvoller und leichter wäre es direkt in einem anderen (tabellarischen) Format zu exportieren und damit zu importieren. XML als Transportmedium macht i.d.R. wenig Sinn.
 
Den Antworten entnehme ich folgendes:
1. Anhand der Schnittstellenbeschreibung eine Datenbank anlegen.
2. dann in einer Programmiersprache den Code schreibe um die XML Dateien einzulesen und damit die Daten umin die DB importieren.

Die DB ist eine DB von einer Behörde. Der Grunddatensatz soll einmalig eingelesen werden, dann folgen im 3 Monate Rythmus Aktualisierungsdateien, die wieder und wieder importiert werden müssen.
 
Das ist nicht die einfachste Lösung, geht aber auf jeden Fall. Auch mit SQL kannst du XML Daten öffnen und verarbeiten, du musst halt alles selbst definieren. Auch was bei schon vorhandenen Datensätzen passieren soll.

Aber grundsätzlich gibt es auch keine automatische Lösung für das ganze, ich kenne zumindest keine, ist immer Handarbeit. Tabellen als Export wären aber deutlich weniger Arbeit als XML.
 
Wie kann man das direkt in SQL abbilden, könntest du bitte etwas ausholen bzw. Schlüsselwörter mitgeben, wonach ich googln könnte, um mich darin zu vertiefen?

Wie kann man z. B. In MySQL XML einlesen. Mit welchen SQL Befehlen kann man das machen?
 
Wenn es zyklisch und automatisiert nach einem definierten Interface (XSD) läuft, würde ich es so genau wie möglich nachbauen. Die Frequenz spielt da kaum noch eine Rolle.
Auch wenn es theoretisch schwierig bis "unmöglich" sein kann, XML vollständig zu importieren*, man darf vermuten, dass die XML Daten selbst wiederum aus einem Datenmodell stammen. Das könnte man als erhebliche Erleichterung ansehen (und man könnte auch einfach mal nach diesem Modell fragen. Aber wahrscheinlich wird auch niemand garantieren, dass das XSD die relationale Quelle exakt abbildet).

Wie auch immer, mit guten DB kann man wie oben verlinkt sehr gut auf XML direkt zugreifen. Dabei ist wichtig, dass man es vollständig abgreift und am anderen Ende in ein wasserdichtes, relationales Modell reinschiebt (das dann bei fehlerhafter Transformation meckert und Fehler wirft).

* Am Ende kannst Du auch XML in der DB direkt ablegen (wenn sie das wie Postgres bspw. unterstützt) und transparent weiterverarbeiten. Das würde man wohl nicht generell machen, aber vielleicht für komplexe Sonderfälle, die selten vorkommen bzw. für eine eigene Verarbeitung irrelevant sind. Das gilt auch oder stärker, wenn es sowieso nur um Datenhaltung ohne Weiterverarbeitung, Analyse, Suchfunktionen usw. geht.
 
Wenn du PHP verwendest hast du keine Anwendung die direkt mit dem DBMS spricht sondern das macht dann der Webserver. Es kann also noch weitere Instanzen zwischen Frontend (Applikation, Webseite) und Backend (DBMS) geben, manche Applikationen verwenden ODBC-Treiber um mit Datenbanken zu sprechen.
Ich kenne keinen Webserver, der mit DBMS Systemen spricht. Das macht alles die Webanwendung.
 
Werbung:
Hallo zusammen,

ich lerne mich gerade in das Thema SQL Datenbanken ein und komme an zwei Punkten nicht weiter.

- Relationale Datenbanken verstehen - OK
- Normalisierungsformen - OK
- Backendlösungen sind alle Datenbank Management Systeme die es gibt (MS SQL Server, MySQL, MariaDB, etc.) - richtig?

Aber wie greift der Endbenutzer auf die Daten im SQL-Server zu?
Ich habe verstanden, dass das mit PHP geht. Dazu muss man eine Website Programmieren und designen. Gewisse Felder und Buttons erstellen und diese mit Funktionen und SQL-Befehlen verbinden.

Dann habe ich verstanden, dass man mit allen möglichen Programmiersprachen wie C#, VB.NET, Java, React, Python etc. Eine GUI programmieren und somit dem Endbenutzer den Zugriff auf den SQL-Server bzw. auf die Daten ermöglichen kann.
Backendlösungen KÖNNEN DBMS sein, müssen es aber nicht. Ein Backend kann auch aus einem Dienst + DBMS bestehen. Wie Endbenutzer auf die Daten im SQL Server zu greifen nutzt Du jeden Tag und hast es hier im Forum benutzt. Es muß immer ein Frontend geben was programmiert werden muss. Sonst kannste mit nem Datenbanksystem nix anfangen und bringst nicht mal Daten rein.
 
Zurück
Oben