• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

MariaDB - Datenbank

jonas_101

Well-Known Member
Themenstarter #1
Hallo,

ich wollte einem Kumpel helfen. Dieser ist behindert und sucht einen neuen Job. Dazu wollte ich eine Datenbank erstellen. Ich hatte die folgenden Idee: Eine Tabelle mit Berufen. Eine Tabelle mit den körperlichen Anforderungen. Diese sollen eher allgemeiner Natur sein. Z.B. "wenig stehen", "viel stehen", "überwiegend stehen". Dann noch eine Tabelle mit den "Leiden". Z.B. "schwerhörig", "taub", "sehen eingeschränkt", "sehen stark eingeschränkt" usw. Diesen Tabelleneinträge wollte ich nun mit einem "Primary Key" greifbar machen.

Verknüpfen wollte ich die Tabellen wie folgt: Tabelle 1 (Berufe) mit Tabelle 2 (körperl. Anforderungen). So das jedem Beruf ein oder mehrere körperl. Anforderungen zugeordnet werden können. Bspw:
Zimmermann -> Gleichgewicht, stehend
oder
Bürokaufmann -> viel sitzen, viel telefonieren
oder
Kellner -> viel laufen, viel tragen
usw.
Ich hoffe soweit ist das verständlich.

So weit so gut. Nun komme ich zur Abfrage. Diese sollte so gestaltet sein, dass ich jetzt sage:
Ich nehme aus Tabelle 3 (Leiden) taub, als Ergebnis kommen die Berufe die kein "viel telefonieren" enthalten.

Vielleicht hat jemand eine Idee.

Vielen Dank für eure Aufmerksamkeit und eure Bemühungen.

Nette Grüße

Jonas
 

jonas_101

Well-Known Member
Themenstarter #2
Hallo,

okay ich hab mit dem Ganzen ein wenig rumgespielt. Das mit den drei Tabellen habe ich, so wie ich es wollte, nicht hinbekommen. Jetzt habe ich die Berufe und die "körperlichen Anforderungen" in eine Tabelle gepackt. Die Tabelle sieht nun wie folgt aus:
---
MariaDB [Berufswahl]> select * from Berufe WHERE Berufe LIKE "Asphalt%";
+----+-----------------+----------------------------------------+
| id | Berufe | körpl_Anforderungen |
+----+-----------------+----------------------------------------+
| 8 | Asphaltbauer/in | schwere körperliche Arbeit, im Freien |
+----+-----------------+----------------------------------------+
1 row in set (0.00 sec)

MariaDB [Berufswahl]>​
---

Das sieht nun nicht so optimal aus, ist es auch nicht. Die "körperlichen Anforderungen" wiederholen sich.
Die dritte Tabelle habe ich jetzt weggelassen. Dafür wollte ich die Abrfrage über 'REGEXP' machen. Hier habe ich nun das Problem mit den Wiederholungen, also dem mehrfachen Auftreten in "körperlichen Anforderungen".
Das sieht dann so aus:
---
MariaDB [Berufswahl]> select * from Berufe WHERE körpl_Anforderungen REGEXP "[^schwindelfrei]";
+----+----------------------------------------------------------------+-------------------------------------------------------+
| id | Berufe | körpl_Anforderungen |
+----+----------------------------------------------------------------+-------------------------------------------------------+
| 1 | Altenpflegehelfer/in | schwer tragen, eigenverantwortlich, mobil |
| 2 | Altenpfleger/in | schwer tragen, eigenverantwortlich, mobil |
| 3 | Anlagenmechaniker/in | räumliches Denken, schwindelfrei, freundlich |
| 4 | Anlagenmechaniker/in – Rohrsystemtechnik | räumliches Denken, schwindelfrei, freundlich |
| 5 | Anlagenmechaniker/in – Sanitär-, Heizungs- und Klimatechnik | räumliches Denken, schwindelfrei, freundlich |
| 7 | Arzthelfer/in | freundlich, deutliches Sprechen, weiterbilden |
| 8 | Asphaltbauer/in | schwere körperliche Arbeit, im Freien |
| 11 | Augenoptiker/in | freundliche, sitzen, laufen, Feinmechnik |
| 29 | Berufskraftfahrer/in | viel sitzen, konzentriert, Führerschein |
| 31 | Beton- und Stahlbetonbauer/in | schwere körperliche Arbeit, im Freien, schwindelfrei |
| 32 | Betonfertigteilbauer/in | schwere körperliche Arbeit, im Freien, schwindelfrei |
| 50 | Dachdecker/in | schwere körperliche Arbeit, im Freien, schwindelfrei |
| 67 | Estrichleger/in | schwere körperliche Arbeit |
+----+----------------------------------------------------------------+-------------------------------------------------------+
13 rows in set (0.00 sec)

MariaDB [Berufswahl]>​
---
Eigentlich sollten nur die Einträge erscheinen, die kein "schwindelfrei" enthalten. Machen sie natürlich nicht, weil ich die Wiederholungen in der Spalte "körpl_Anforderungen" haben.

Hat jemand vielleicht eine Idee?

Danke für eure Aufmerksamkeit und eure Bemühungen.

Nette Grüße

Jonas
 

darktrym

Fahnenträger
#3
Vielleicht gehe ich da zu akademisch heran, aber seit wann werden Attribute wie "sehr" und "viel" in Datenbanken gepackt? Normalerweise drückt man das mit Zahlen aus und interpretiert diese. Dann sehen auch die SQL-Anfragen lesbarer aus und es ist leichter das auf multilingual umzustellen. Die ganze Umsetzung klingt in meinen Ohren irgendwie falsch.
 

klimaschreck

Well-Known Member
#5
eine Variante: du machst aus der einen Spalte körperliche Anforderungen mehrere Spalten, z.B. eine Spalte für körperliche Arbeit, eine Spalte für sitzen, eine Spalte für schwindelfrei, usw. Dort wird dann je nach Job ein Wert eingetragen. So kannst du dann wie gewünscht filtern.
 

jonas_101

Well-Known Member
Themenstarter #6
Hallo klimaschreck,

danke für den HInweis. Dann brauch ich das Ganze nicht mehr in mehrere Tabelle aufteilen. Ich würde die Tabelle dann wie folgt aufbauen:

"köperl_Anforderung" -> Berufe

schwindelfrei | feinmechanik
--------------------- | ---------------------
Zimmermann | Akkustiker
Augenoptiker

Die Suche würde sich dann auf die "körperl_Anforderungen" beschränken und ich bekomme alle Berufe aus der jeweilige Spalte. Dann habe ich bei den Berufen Wiederholungen, doch damit kann ich leben.

Danke für deine Hilfe.

Nette Grüße

Jonas