{"id":55001499,"date":"2024-06-01T00:00:00","date_gmt":"2024-12-06T10:59:43","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1499"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datenmodell_Mitarbeiterverwaltung","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/","title":{"rendered":"Datenmodell Mitarbeiterverwaltung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b\" width=\"1\" height=\"1\" alt=\"\"><b>Eigentlich wollten wir nur ein kleines Datenmodell erstellen, das einige Tabellen enth&auml;lt, die alle Beziehungstypen und Felddatentypen abbildet. Dieses wollten wir als Beispiel f&uuml;r eine SQL Server-Migration verwenden. Allerdings ist das Datenmodell so umfangreich geworden, dass wir uns entschieden haben, dieses einmal in einem Beitrag vorzustellen. Es enth&auml;lt alle wichtigen Datentypen, alle Beziehungstypen und auch verschiedene Eigenschaften wie eindeutige und nicht eindeutige Indizes, Fremdschl&uuml;sselfelder, Felder, die den Wert Null enthalten d&uuml;rfen und solche, die es nicht d&uuml;rfen und vieles mehr. Dies ist ein Entwurf f&uuml;r ein solches Datenmodell, das keinen Anspruch auf Vollst&auml;ndigkeit hat &#8211; und es werden auch nicht alle Aspekte behandelt, die man vielleicht noch in einer solchen Verwaltung erwartet. Die Verwaltung von Geh&auml;ltern, Urlauben et cetera w&uuml;rden wir gegebenenfalls in weiteren Beitr&auml;gen vorstellen.<\/b><\/p>\n<h2>Verwalten von Mitarbeitern<\/h2>\n<p>Die Verwaltung von Mitarbeitern ist in Unternehmen, die eine relevante Anzahl Mitarbeiter haben, existenziell. In diesem Beitrag schauen wir uns an, welche Informationen eine Mitarbeiterverwaltung erfassen kann und wie diese auf die verschiedenen Tabellen aufgeteilt werden. Der Entwurf des Datenmodells erhebt keinesfalls den Anspruch auf Vollst&auml;ndigkeit. Wie schon im Einleitungstext erw&auml;hnt, gibt es nicht nur noch weitere Bereiche, die hier nicht erfasst werden, wie Lohnbuchhaltung oder Urlaubsverwaltung. Auch die hier vorgestellten Tabellen sind sicher nicht vollst&auml;ndig und decken nicht alle denkbaren Anwendungsf&auml;lle ab. Jedoch k&ouml;nnen Sie als Grundlage dienen, wenn Sie selbst einmal vor der Herausforderung stehen, eine Mitarbeiterverwaltung zu programmieren. Das Datenmodell enth&auml;lt au&szlig;erdem alle wichtigen Felddatentypen, Beziehungstypen, Beziehungseigenschaften, Indizes und Feldeigenschaften. Dies war die urspr&uuml;ngliche Motivation: Wir wollten ein Datenmodell erschaffen, mit dem wir die Migration von Access zum SQL Server dokumentieren k&ouml;nnen. Es ist jedoch sinnvoll, dieses Datenmodell auch einmal zu erl&auml;utern, damit deutlich wird, wo die Besonderheiten stecken.<\/p>\n<h2>Die Tabelle zum Verwalten der Mitarbeiter<\/h2>\n<p>Die wichtigste Tabelle ist die Tabelle <b>tblMitarbeiter<\/b>. Ihr Entwurf sieht wie in Bild 1 aus. Neben dem obligatorischen Prim&auml;rsch&uuml;sselfeld namens <b>MitarbeiterID <\/b>finden wir einige Felder f&uuml;r Name und Adresse vor, womit wir schon einmal den Datentyp <b>Kurzer Text <\/b>abgedeckt haben.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_001.png\" alt=\"Entwurf der Mitarbeitertabelle\" width=\"649,559\" height=\"708,2595\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Entwurf der Mitarbeitertabelle<\/span><\/b><\/p>\n<p>Diese Felder haben wir im Gegensatz zu einigen anderen Feldern mit dem Wert <b>Ja <\/b>f&uuml;r die Eigenschaft <b>Eingabe erforderlich <\/b>ausgestattet, damit diese immer gef&uuml;llt werden m&uuml;ssen.<\/p>\n<p>Die Anrede w&auml;hlen wir &uuml;ber ein Nachschlagefeld aus, das wir f&uuml;r das Feld <b>AnredeID <\/b>hinterlegen. Die damit verkn&uuml;pfte Tabelle hei&szlig;t <b>tblAnreden <\/b>und enth&auml;lt die beiden Felder <b>AnredeID <\/b>und <b>Anrede<\/b>. In dieser Tabelle haben wir f&uuml;r das Feld <b>Anrede <\/b>einen eindeutigen Index definiert (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_003.png\" alt=\"Entwurf der Tabelle tblAnreden\" width=\"549,559\" height=\"369,914\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Entwurf der Tabelle tblAnreden<\/span><\/b><\/p>\n<p>Damit stellen wir sicher, dass jede Anrede nur einmal eingegeben werden kann. Die Beziehungen zwischen der Haupttabelle und den Nachschlagetabellen wie <b>tblAnreden<\/b> werden &uuml;ber das Fremdschl&uuml;sselfeld der Tabelle <b>tblMitarbeiter <\/b>und dem Prim&auml;rschl&uuml;sselfeld der jeweiligen Nachschlagetabelle wie in Bild 3 definiert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_007.png\" alt=\"Verkn&uuml;pfung zwischen der Haupttabelle tblMitarbeiter und einer Lookuptabelle, hier tblAnreden\" width=\"424,5589\" height=\"235,2286\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Verkn&uuml;pfung zwischen der Haupttabelle tblMitarbeiter und einer Lookuptabelle, hier tblAnreden<\/span><\/b><\/p>\n<p>Das Land geben wir ebenfalls nicht als Text ein, sondern w&auml;hlen es &uuml;ber ein Nachschlagefeld aus, wobei die Daten in der Tabelle <b>tblLaender <\/b>stecken. Diese enth&auml;lt, wie f&uuml;r die meisten Lookuptabellen typisch, lediglich zwei Felder &#8211; das Prim&auml;rschl&uuml;sselfeld <b>LandID <\/b>und das Feld <b>Land <\/b>mit der L&auml;nderbezeichnung. Auch hier haben wir f&uuml;r einen eindeutigen Index definiert, diesmal f&uuml;r das Feld <b>Land<\/b>.<\/p>\n<p>Mit dem Feld <b>Geburtsdatum <\/b>decken wir das Datumsfeld ab.<\/p>\n<p>Das Feld <b>GehaltssteigerungProJahr <\/b>definieren wir mit dem Felddatentyp <b>W&auml;hrung <\/b>und stellen f&uuml;r die Eigenschaft <b>Format <\/b>den Wert <b>Prozentzahl <\/b>ein. So erhalten wir f&uuml;r die Werte dieses Feldes die Genauigkeit eines Dezimalfeldes und die Darstellung als Prozentzahl.<\/p>\n<p>Mit dem Feld <b>Foto<\/b> decken wir den Datentyp <b>Anlage <\/b>ab, der unter SQL Server so nicht verf&uuml;gbar ist &#8211; so viel vorneweg.<\/p>\n<h2>Memofeld mit verschiedenen Eigenschaften<\/h2>\n<p>Wir wollen auch Memofelder, die heute unter dem Felddatentyp <b>Langer Text <\/b>zu finden sind, abbilden, und zwar mit den verschiedenen speziellen Eigenschaften.<\/p>\n<p>In der Tabelle <b>tblMitarbeiter <\/b>finden wir so die beiden Felder <b>Lebenslauf <\/b>und <b>Notizen<\/b>. <b>Lebenslauf <\/b>ist ein Feld mit dem Datentyp <b>Langer Text <\/b>und den Standardeinstellungen. F&uuml;r das Feld <b>Notizen <\/b>haben wir den Wert der Eigenschaft <b>Nur anf&uuml;gen <\/b>auf <b>Ja <\/b>eingestellt. Das bedeutet, dass wenn wir &Auml;nderungen an dem Inhalt vornehmen, intern die neueste Version gespeichert wird, die vorherigen Versionen aber auch noch vorhanden sind. Diese k&ouml;nnen wir beispielsweise per VBA mit folgendem Befehl abrufen, hier im Format f&uuml;r das Direktfenster:<\/p>\n<pre>  ColumnHistory(\"tblMitarbeiter\", \"Notizen\", \"MitarbeiterID = 1\")<\/pre>\n<p>Oder wir klicken mit der rechten Maustaste auf das Tabellenfeld oder ein daran gebundenes Formularfeld und w&auml;hlen aus dem Kontextmen&uuml; den Eintrag <b>Spaltenverlauf anzeigen <\/b>aus, der den Inhalt wie in Bild 4 anzeigt. Beides ist nicht besonders komfortabel, sodass man sich ohnehin eine eigene Funktion zur Anzeige ausdenken muss.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_004.png\" alt=\"Inhalt eines Memofeldes mit aktivierter Eigenschaft Nur anf&uuml;gen.\" width=\"499,5589\" height=\"276,5048\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Inhalt eines Memofeldes mit aktivierter Eigenschaft Nur anf&uuml;gen.<\/span><\/b><\/p>\n<p>Und wenn man schon dabei ist, k&ouml;nnte man diese auch direkt so ersetzen, dass sie gar nicht verwendet werden muss. Wie das gelingen kann, zeigen wir im Beitrag <b>Textfeldhistorie in eigener Tabelle speichern <\/b>(<b>www.access-im-unternehmen.de\/1500<\/b>).<\/p>\n<p>Auf ein Memofeld mit dem Textformat <b>Rich-Text <\/b>kommen wir sp&auml;ter in einer anderen Tabelle zur&uuml;ck.<\/p>\n<p><b>Webseite <\/b>und <b>EMail <\/b>sind beides Felder mit dem Datentyp <b>Link<\/b>.<\/p>\n<p>Mit <b>Eintrittsdatum <\/b>und <b>Austrittsdatum <\/b>stellt die Tabelle weitere Felder des Datentyps <b>Datum\/Uhrzeit <\/b>bereit.<\/p>\n<p>Das Feld <b>Behindert<\/b>, mit dem wir den Datentyp <b>Ja\/Nein <\/b>abbilden, gibt an, ob der Mitarbeiter eine Behinderung aufweist.<\/p>\n<p>Behinderungsgrad ist ein Zahlenfeld, dem wir &uuml;ber das Format <b>Prozentzahl<\/b> die Ansicht als Prozentzahl hinzugef&uuml;gt haben &#8211; diesmal allerdings mit der Feldgr&ouml;&szlig;e <b>Single<\/b>, was mit einer geringeren Genauigkeit bei den Nachkommastellen einhergeht als bei Datentyp <b>W&auml;hrung<\/b>.<\/p>\n<p><b>ReligionID<\/b>, <b>GeschlechtID <\/b>und <b>SteuerklasseID <\/b>sind jeweils Fremdschl&uuml;sselfelder, die wir als Nachschlagefelder ausgelegt haben und die mit den Tabellen <b>tblReligionen<\/b>, <b>tblGeschlechter <\/b>und <b>tblSteuerklassen <\/b>verkn&uuml;pft sind.<\/p>\n<h2>Weitere Tabellen zum Verwalten von Lookupdaten<\/h2>\n<p>Bevor wir uns den &uuml;brigen Tabellen zuwenden, schauen wir uns noch alle Lookup- oder Nachschlagetabellen an, die wir neben <b>tblAnreden <\/b>und <b>tblLaender <\/b>noch ben&ouml;tigen. Diese hei&szlig;en wie folgt und enthalten die angegebenen Felder:<\/p>\n<ul>\n<li><b>tblGeschlechter <\/b>(Prim&auml;rschl&uuml;sselfeld <b>GeschlechtID<\/b>, Textfeld <b>Geschlecht <\/b>mit eindeutigem Index)<\/li>\n<li><b>tblReligionen <\/b>(Prim&auml;rschl&uuml;sselfeld <b>ReligionID<\/b>, Textfeld <b>Religion <\/b>mit eindeutigem Index)<\/li>\n<\/ul>\n<p>Sp&auml;ter ben&ouml;tigen wir noch zwei weitere Lookup-Tabellen, die wir allerdings nicht direkt mit der Tabelle <b>tblMitarbeiter <\/b>verkn&uuml;pfen, sondern &uuml;ber weitere Tabellen:<\/p>\n<ul>\n<li><b>tblPositionen <\/b>(Prim&auml;rschl&uuml;sselfeld <b>PositionID<\/b>, Textfeld <b>Position <\/b>mit eindeutigem Index)<\/li>\n<li><b>tblAbteilungen <\/b>(Prim&auml;rschl&uuml;sselfeld <b>AbteilungID<\/b>, Textfeld <b>Abteilung<\/b> mit eindeutigem Index)<\/li>\n<\/ul>\n<p>Eine Gemeinsamkeit aller Nachschlagetabellen ist, dass wir das Feld, das den nachzuschlagenden Wert enth&auml;lt, mit einem eindeutigen Index ausgestattet haben. Dazu haben wir die Eigenschaft <b>Indiziert <\/b>auf den Wert <b>Ja (Ohne Duplikate) <\/b>eingestellt.<\/p>\n<p>Au&szlig;erdem haben wir f&uuml;r diese Felder die Eigenschaft <b>Eingabe erforderlich <\/b>auf den Wert <b>Ja <\/b>eingestellt. Damit wird die Eingabe eines Wertes erzwungen, was sinnvoll ist, denn ein Datensatz in einer Nachschlagetabelle ohne Wert ist nicht brauchbar.<\/p>\n<h2>Tabelle f&uuml;r die Steuerklassen<\/h2>\n<p>Die Tabelle <b>tblSteuerklassen <\/b>ist eigentlich auch eine reines Lookuptabelle, allerdings enth&auml;lt diese neben dem Prim&auml;rsch&uuml;sselfeld <b>SteuerklasseID <\/b>und dem Feld <b>Steuerklasse <\/b>noch ein weiteres Feld namens <b>Beschreibung<\/b>. Der Entwurf dieser Tabelle ist in Bild 5 dargestellt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_011.png\" alt=\"Tabelle zum Speichern von Steuerklassen\" width=\"499,5589\" height=\"360,8945\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Tabelle zum Speichern von Steuerklassen<\/span><\/b><\/p>\n<h2>Geh&auml;lter der Mitarbeiter verwalten<\/h2>\n<p>Auch wenn wir keine Lohnbuchhaltung mit diesem Datenmodell erm&ouml;glichen wollen, so wollen wir doch zumindest die Geh&auml;lter der Mitarbeiter speichern k&ouml;nnen. Dazu legen wir nicht etwa weitere Felder in der Tabelle <b>tblMitarbeiter <\/b>an, sondern erstellen eine neue Tabelle namens <b>tblGehaelter<\/b>. Diese enth&auml;lt die Felder aus Bild 6.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_005.png\" alt=\"Tabelle zum Speichern von Geh&auml;ltern\" width=\"549,559\" height=\"437,8152\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Tabelle zum Speichern von Geh&auml;ltern<\/span><\/b><\/p>\n<p>Die Beziehung zwischen den beiden Tabellen <b>tblMitarbeiter <\/b>und <b>tblGehaelter <\/b>ist diesmal andersherum aufgebaut wie bei den bisher vorgestellten Nachschlagetabellen. Diesmal enth&auml;lt die Tabelle <b>tblGehaelter <\/b>das Fremdschl&uuml;sselfeld, hier namens <b>MitarbeiterID<\/b>, das mit dem Prim&auml;rschl&uuml;sselfeld der Tabelle <b>tblMitarbeiter <\/b>verkn&uuml;pft ist (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_006.png\" alt=\"Beziehung zwischen den Tabellen tblMitarbeiter und tblGehaelter\" width=\"424,5589\" height=\"214,9001\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Beziehung zwischen den Tabellen tblMitarbeiter und tblGehaelter<\/span><\/b><\/p>\n<p>Dadurch erreichen wir, dass wir zu jedem Mitarbeiter einen oder mehrere Datens&auml;tze in der Tabelle <b>tblGehaelter <\/b>speichern k&ouml;nnen. Warum ben&ouml;tigen wir das? Weil sich das Gehalt &auml;ndern kann und wir eine Historie dar&uuml;ber ben&ouml;tigen, wann ein Mitarbeiter welches Gehalt bezogen hat. Damit wir wissen, wann welches Gehalt bezahlt wurde, enth&auml;lt die Tabelle <b>tblGehaelter <\/b>die beiden Felder <b>VonDatum <\/b>und <b>BisDatum<\/b>, die angeben, in welchem Zeitraum dieser Datensatz g&uuml;ltig war.<\/p>\n<p>Bei einem Mitarbeiter, der noch in der Firma besch&auml;ftigt ist, sollte also immer genau ein Datensatz vorhanden sein, der im Feld <b>VonDatum <\/b>einen Wert enth&auml;lt und bei dem das Feld <b>BisDatum <\/b>leer ist. Dieses wird erst geleert, wenn ein neues Gehalt eingetragen wird oder wenn der Mitarbeiter das Unternehmen verl&auml;sst.<\/p>\n<p>F&uuml;r eine korrekte Lohnbuchhaltung k&ouml;nnten auch die Tabelle <b>tblSteuerklassen <\/b>auf diese Weise erweitern, aber dies soll nur ein Beispieldatenmodell sein und wir wollen es einfach halten.<\/p>\n<h2>Tabelle zum Verwalten des Urlaubsanspruchs<\/h2>\n<p>Bei der Tabelle zum Speichern des Urlaubsanspruchs haben wir wiederum eine Tabelle namens <b>tblUrlaubsansprueche <\/b>erstellt, die genauso aufgebaut ist wie die Tabelle <b>tblGehaelter<\/b>. Wir k&ouml;nnen den Anspruch f&uuml;r einen bestimmten Zeitraum in einem Datensatz speichern und wenn sich der Urlaubsanspruch in einem Jahr &auml;ndert, legen wir einen neuen Datensatz mit dem neuen Wert an.<\/p>\n<h2>Abteilungen eines Mitarbeiters verwalten<\/h2>\n<p>Bei der Abteilung eines Mitarbeiters oder auch bei den Abteilungen kann man beliebig tief ins Detail gehen. Die einfachste Variante ist, wenn jeder Mitarbeiter genau einer Abteilung angeh&ouml;rt. Das ist f&uuml;r die meisten F&auml;lle vielleicht aus ausreichend. In diesem Fall w&uuml;rde man die <b>Lookup<\/b>-Tabelle <b>tblAbteilungen <\/b>von der Tabelle <b>tblMitarbeiter <\/b>aus per Fremdschl&uuml;sselfeld verkn&uuml;pfen und k&ouml;nnte so f&uuml;r jeden Mitarbeiter einen Eintrag der Tabelle <b>tblAbteilungen <\/b>ausw&auml;hlen.<\/p>\n<p>Einen Schritt weiter gehen wir, wenn wir ber&uuml;cksichtigen wollen, dass ein Mitarbeiter die Abteilung wechseln kann. Dann ben&ouml;tigen wir bereits eine m:n-Beziehung zwischen den beiden Tabellen <b>tblMitarbeiter <\/b>und <b>tblAbteilungen<\/b>. Dazu f&uuml;gen wir dem Datenmodell eine weitere Tabelle namens <b>tblMitarbeiterAbteilungen <\/b>hinzu, die das obligatorische Prim&auml;rschl&uuml;sselfeld namens <b>MitarbeiterAbteilungID <\/b>enth&auml;lt.<\/p>\n<p>Au&szlig;erdem finden wir hier zwei Fremdschl&uuml;sselfelder namens <b>MitarbeiterID <\/b>und <b>AbteilungID<\/b>, mit denen wir jeweils einen Datensatz der Tabelle <b>tblMitarbeiter <\/b>einer Abteilung aus <b>tblAbteilungID <\/b>zuweisen k&ouml;nnen. Die Zugeh&ouml;rigkeit eines Mitarbeiters zu einer Abteilung ist nicht in Stein gemei&szlig;elt. Um nachvollziehen zu k&ouml;nnen, wann ein Mitarbeiter welchen Abteilungen angeh&ouml;rte, f&uuml;gen wir noch die beiden Felder <b>VonDatum <\/b>und <b>BisDatum <\/b>hinzu. Dieser Abschnitt des Datenmodells erscheint nun wie in Bild 8.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_010.png\" alt=\"Beziehung zwischen den Tabellen tblMitarbeiter und tblAbteilungen\" width=\"574,559\" height=\"182,2675\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Beziehung zwischen den Tabellen tblMitarbeiter und tblAbteilungen<\/span><\/b><\/p>\n<h2>Positionen eines Mitarbeiters<\/h2>\n<p>Auf die gleiche Weise wie die Abteilungen eines Mitarbeiters wollen wir die Positionen verwalten. Mit der Verwendung der Lookup-Tabelle <b>tblPositionen <\/b>und der m:n-Verkn&uuml;pfungstabelle <b>tbMitarbeiterPositionen <\/b>wollen wir sicherstellen, dass jeder Benutzer mehrere Positionen ausf&uuml;hren kann. Durch die Verwendung der beiden Felder <b>VonDatum <\/b>und <b>BisDatum <\/b>wollen wir au&szlig;erdem sicherstellen, dass wir nachvollziehen k&ouml;nnen, wann der Mitarbeiter welche Position bekleidet hat. Au&szlig;erdem kann ein Mitarbeiter so auch mehrere Positionen gleichzeitig abbilden (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_012.png\" alt=\"Beziehung zwischen den Tabellen tblMitarbeiter und tblPositionen\" width=\"574,559\" height=\"216,0734\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Beziehung zwischen den Tabellen tblMitarbeiter und tblPositionen<\/span><\/b><\/p>\n<h2>Vorgesetzte und Mitarbeiter<\/h2>\n<p>Schlie&szlig;lich fehlt noch die Abbildung der Hierarchie innerhalb des Unternehmens. Hier gehen wir der Einfachheit halber davon aus, dass jeder Mitarbeiter nur einen Vorgesetzten hat. Das k&ouml;nnte man hier auch anders interpretieren, denn jeder Mitarbeiter kann, wie wir oben festgelegt haben, zu mehreren Abteilungen geh&ouml;ren und somit kann er auch mehrere Abteilungsleiter als Vorgesetzte haben. Allerdings geht es hier immer noch um ein Beispiel, und in diesem wollen wir zumindest eine reflexive Beziehung abbilden. Daf&uuml;r gibt es zwei M&ouml;glichkeiten: <\/p>\n<ul>\n<li>Wir f&uuml;gen der Tabelle <b>tblMitarbeiter <\/b>ein Feld namens <b>VorgesetzterID <\/b>hinzu, das wir als Nachschlagefeld zu der gleichen Tabelle auslegen. Wir k&ouml;nnen also &uuml;ber dieses Feld festlegen, welcher Mitarbeiter der Vorgesetzte des aktuellen Mitarbeiters ist. Das hat allerdings den Nachteil, dass das Feld zumindest bei den Mitarbeitern der obersten Ebene leer ist.<\/li>\n<li>Die zweite M&ouml;glichkeit ist es, eine Verkn&uuml;pfungstabelle zur Herstellung der Beziehung zwischen zwei Mal der gleichen Tabelle herzustellen. Diese Tabelle namens <b>tblVorgesetzteMitarbeiter <\/b>hat ein Prim&auml;rschl&uuml;sselfeld namens <b>VorgesetzterMitarbeiterID <\/b>sowie zwei Fremdschl&uuml;sselfelder, die beide mit dem Feld <b>MitarbeiterID <\/b>der Tabelle <b>tblMitarbeiter <\/b>verkn&uuml;pft sind und die <b>VorgesetzterID <\/b>und <b>MitarbeiterID <\/b>hei&szlig;en.<\/li>\n<\/ul>\n<p>Diese Tabelle haben wir mit den beiden verkn&uuml;pften Instanzen der Tabelle <b>tblMitarbeiter <\/b>in Bild 10 dargestellt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_013.png\" alt=\"Herstellen einer reflexiven Beziehung &uuml;ber eine Verkn&uuml;pfungstabelle\" width=\"649,559\" height=\"235,6721\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Herstellen einer reflexiven Beziehung &uuml;ber eine Verkn&uuml;pfungstabelle<\/span><\/b><\/p>\n<h2>Zusammengesetzter, eindeutiger Index<\/h2>\n<p>Das Datenmodell soll m&ouml;glichst viele denkbare Konstellationen abbilden. Dazu geh&ouml;rt auch ein aus zwei Feldern zusammengesetzter, eindeutiger Index. Wir haben mehrere m:n-Beziehungen im Datenmodell. Bei den beiden Beziehungen zwischen den Mitarbeitern und den Abteilungen beziehungsweise Positionen k&ouml;nnen wir f&uuml;r die beiden Fremdschl&uuml;sselfelder keine zusammengesetzten Indexe definieren, weil wir so jede Kombination nur einmalig abbilden k&ouml;nnten. Es kann jedoch vorkommen, dass ein Mitarbeiter eine Weile f&uuml;r eine Abteilung arbeitet, dann nicht mehr und dann schlie&szlig;lich doch wieder zu dieser Abteilung geh&ouml;rt. Dies lie&szlig;e sich mit einem zusammengesetzten, eindeutigen Index nicht realisieren.<\/p>\n<p>Anders sieht es bei der Verkn&uuml;pfungstabelle zum Herstellen der reflexiven Beziehung von Vorgesetzten und Mitarbeitern aus. Hier soll jede Zuordnung nur einmal vorkommen. Also &ouml;ffnen wir die Tabelle <b>tblVorgesetzteMitarbeiter <\/b>in der Entwurfsansicht und aktivieren den Dialog <b>Indizes: tblVorgesetzteMitarbeiter<\/b>.<\/p>\n<p>Hier f&uuml;gen wir neben dem vermutlich bereits vorhandenen Eintrag f&uuml;r den Prim&auml;rschl&uuml;ssel noch einen weiteren Eintrag namens <b>UniqueKey<\/b> hinzu. Diesem weisen wir in der gleichen Zeile das Feld <b>VorgesetzterID <\/b>und darunter <b>MitarbeiterID <\/b>zu. Damit der Index eindeutig wird, stellen wir die Eigenschaft <b>Eindeutig <\/b>auf <b>Ja <\/b>ein (siehe Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_014.png\" alt=\"Anlegen eines zusammengesetzten, eindeutigen Indexes\" width=\"649,559\" height=\"397,7245\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Anlegen eines zusammengesetzten, eindeutigen Indexes<\/span><\/b><\/p>\n<h2>Standardwerte<\/h2>\n<p>Wir wollen auch pr&uuml;fen, wie die Migration zum SQL Server mit Standardwerten funktioniert. Deshalb legen wir einige Standardwerte an. Nehmen wir an, wir verwalten die Mitarbeiter in einer Branche mit &uuml;berwiegend m&auml;nnlicher Belegschaft, k&ouml;nnen wir beispielsweise die Eigenschaft <b>Standardwert <\/b>des Feldes <b>AnredeID <\/b>auf <b>1 <\/b>einstellen, wenn in der Tabelle <b>tblAnreden <\/b>der Eintrag mit dem Prim&auml;rschl&uuml;sselwert <b>1 <\/b>die Anrede <b>Herr <\/b>enth&auml;lt.<\/p>\n<p>F&uuml;r das Feld <b>Eintrittsdatum <\/b>legen wir als Standardwert den Ausdruck <b>=Datum() <\/b>fest, damit gleich beim Anlegen des Datensatzes das aktuelle Datum voreingestellt wird.<\/p>\n<h2>G&uuml;ltigkeitsregeln<\/h2>\n<p>Auch bei den G&uuml;ltigkeitsregeln wollen wir pr&uuml;fen, ob und wie diese &uuml;bernommen werden.<\/p>\n<p>Dazu f&uuml;gen wir sowohl eine G&uuml;ltigkeitsregel auf Feldebene als auch eine auf Tabellenebene hinzu.<\/p>\n<p>Wir haben die beiden G&uuml;ltigkeitsregeln f&uuml;r die Tabelle <b>tblMitarbeiter <\/b>hinterlegt. Die erste haben wir f&uuml;r das Feld <b>PLZ <\/b>hinterlegt. Sie legt fest, dass das Feld nur Werte mit einer L&auml;nge von vier oder f&uuml;nf Zeichen enthalten darf (siehe Bild 12).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_018.png\" alt=\"G&uuml;ltigkeitsregel f&uuml;r ein einzelnes Feld\" width=\"424,5589\" height=\"331,8062\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: G&uuml;ltigkeitsregel f&uuml;r ein einzelnes Feld<\/span><\/b><\/p>\n<p>Die zweite G&uuml;ltigkeitsregel legen wir auf Tabellenebene fest. Diese sorgt daf&uuml;r, dass eine Meldung erscheint, wenn das Eintrittsdatum gr&ouml;&szlig;er als das Austrittsdatum ist &#8211; was wiederum nur ber&uuml;cksichtigt wird, wenn beide Felder nicht Null sind (siehe Bild 13).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_019.png\" alt=\"G&uuml;ltigkeitsregel f&uuml;r mehrere Felder\" width=\"599,559\" height=\"199,297\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: G&uuml;ltigkeitsregel f&uuml;r mehrere Felder<\/span><\/b><\/p>\n<h2>Noch nicht ber&uuml;cksichtigte Felddatentypen<\/h2>\n<p>Damit wir bei einer Migration zum SQL Server alle Probleme testen k&ouml;nnen, die bei Verwendung diverser Felddatentypen auftauchen, haben wir in einer weiteren Tabelle noch Felder mit allen Felddatentypen untergebracht, die bisher noch nicht ber&uuml;cksichtigt wurden.<\/p>\n<p>Wir wollen allerdings nur die Datentypen verwenden, die &uuml;berhaupt &uuml;ber die Benutzeroberfl&auml;che von Access definiert werden k&ouml;nnen. Daher kommen in diesem Fall nur noch die komplexen Datentypen hinzu. Komplexe Datentypen sind Felder herk&ouml;mmlicher Datentypen wie <b>Byte<\/b>, <b>Decimal<\/b>, <b>Double <\/b>und so weiter, die jedoch als mehrwertige Felder ausgelegt wurden. Das hei&szlig;t, wir k&ouml;nnen je Feld mehr als einen Feldwert speichern beziehungsweise aus einer Liste ausw&auml;hlen. Diese Felder haben wir in einer eigenen Tabelle namens <b>tblComplex <\/b>angelegt &#8211; einfach nur um zu zeigen, wie der SQL Server beim Versuch, diese zu migrieren, reagiert (siehe Bild 14).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_03\/pic_1499_020.png\" alt=\"Mehrwertige Felder\" width=\"424,5589\" height=\"241,943\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Mehrwertige Felder<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>In diesem Beitrag beschreiben wir das Datenmodell einer Datenbank, die wir nicht in erster Linie f&uuml;r die Demonstration der Programmierung einer Anwendung nutzen wollen, sondern f&uuml;r die Migration eines Access-Datenmodells zum SQL Server. Diese beschreiben wir im Beitrag <b>Access und SQL Server: Der Migrations-Assistent <\/b>(<b>www.access-im-unternehmen.de\/18<\/b>). Es ist jedoch nicht ausgeschlossen, dass wir auch die eine oder anderen Programmiertechnik anhand dieser Beispieldatenbank vorstellen &#8211; vor allem nach der Migration zum SQL Server.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DatenmodellMitarbeiterverwaltung.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/AA50C2CD-3118-4C16-BE52-113E44FD63EA\/aiu_1499.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eigentlich wollten wir nur ein kleines Datenmodell erstellen, das einige Tabellen enth&auml;lt, die alle Beziehungstypen und Felddatentypen abbildet. Dieses wollten wir als Beispiel f&uuml;r eine SQL Server-Migration verwenden. Allerdings ist das Datenmodell so umfangreich geworden, dass wir uns entschieden haben, dieses einmal in einem Beitrag vorzustellen. Es enth&auml;lt alle wichtigen Datentypen, alle Beziehungstypen und auch verschiedene Eigenschaften wie eindeutige und nicht eindeutige Indizes, Fremdschl&uuml;sselfelder, Felder, die den Wert Null enthalten d&uuml;rfen und solche, die es nicht d&uuml;rfen und vieles mehr. Dies ist ein Entwurf f&uuml;r ein solches Datenmodell, das keinen Anspruch auf Vollst&auml;ndigkeit hat &#8211; und es werden auch nicht alle Aspekte behandelt, die man vielleicht noch in einer solchen Verwaltung erwartet. Die Verwaltung von Geh&auml;ltern, Urlauben et cetera w&uuml;rden wir gegebenenfalls in weiteren Beitr&auml;gen vorstellen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662024,66032024,44000021],"tags":[],"class_list":["post-55001499","post","type-post","status-publish","format-standard","hentry","category-662024","category-66032024","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Datenmodell Mitarbeiterverwaltung - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenmodell Mitarbeiterverwaltung\" \/>\n<meta property=\"og:description\" content=\"Eigentlich wollten wir nur ein kleines Datenmodell erstellen, das einige Tabellen enth&auml;lt, die alle Beziehungstypen und Felddatentypen abbildet. Dieses wollten wir als Beispiel f&uuml;r eine SQL Server-Migration verwenden. Allerdings ist das Datenmodell so umfangreich geworden, dass wir uns entschieden haben, dieses einmal in einem Beitrag vorzustellen. Es enth&auml;lt alle wichtigen Datentypen, alle Beziehungstypen und auch verschiedene Eigenschaften wie eindeutige und nicht eindeutige Indizes, Fremdschl&uuml;sselfelder, Felder, die den Wert Null enthalten d&uuml;rfen und solche, die es nicht d&uuml;rfen und vieles mehr. Dies ist ein Entwurf f&uuml;r ein solches Datenmodell, das keinen Anspruch auf Vollst&auml;ndigkeit hat - und es werden auch nicht alle Aspekte behandelt, die man vielleicht noch in einer solchen Verwaltung erwartet. Die Verwaltung von Geh&auml;ltern, Urlauben et cetera w&uuml;rden wir gegebenenfalls in weiteren Beitr&auml;gen vorstellen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-06T10:59:43+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Datenmodell Mitarbeiterverwaltung\",\"datePublished\":\"2024-12-06T10:59:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/\"},\"wordCount\":2918,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/a69beaeabd004e4d945ca5e60c82997b\",\"articleSection\":[\"2024\",\"3\\\/2024\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/\",\"name\":\"Datenmodell Mitarbeiterverwaltung - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/a69beaeabd004e4d945ca5e60c82997b\",\"datePublished\":\"2024-12-06T10:59:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/a69beaeabd004e4d945ca5e60c82997b\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/a69beaeabd004e4d945ca5e60c82997b\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenmodell_Mitarbeiterverwaltung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datenmodell Mitarbeiterverwaltung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Datenmodell Mitarbeiterverwaltung - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/","og_locale":"de_DE","og_type":"article","og_title":"Datenmodell Mitarbeiterverwaltung","og_description":"Eigentlich wollten wir nur ein kleines Datenmodell erstellen, das einige Tabellen enth&auml;lt, die alle Beziehungstypen und Felddatentypen abbildet. Dieses wollten wir als Beispiel f&uuml;r eine SQL Server-Migration verwenden. Allerdings ist das Datenmodell so umfangreich geworden, dass wir uns entschieden haben, dieses einmal in einem Beitrag vorzustellen. Es enth&auml;lt alle wichtigen Datentypen, alle Beziehungstypen und auch verschiedene Eigenschaften wie eindeutige und nicht eindeutige Indizes, Fremdschl&uuml;sselfelder, Felder, die den Wert Null enthalten d&uuml;rfen und solche, die es nicht d&uuml;rfen und vieles mehr. Dies ist ein Entwurf f&uuml;r ein solches Datenmodell, das keinen Anspruch auf Vollst&auml;ndigkeit hat - und es werden auch nicht alle Aspekte behandelt, die man vielleicht noch in einer solchen Verwaltung erwartet. Die Verwaltung von Geh&auml;ltern, Urlauben et cetera w&uuml;rden wir gegebenenfalls in weiteren Beitr&auml;gen vorstellen.","og_url":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/","og_site_name":"Access im Unternehmen","article_published_time":"2024-12-06T10:59:43+00:00","og_image":[{"url":"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Datenmodell Mitarbeiterverwaltung","datePublished":"2024-12-06T10:59:43+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/"},"wordCount":2918,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b","articleSection":["2024","3\/2024","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/","url":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/","name":"Datenmodell Mitarbeiterverwaltung - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b","datePublished":"2024-12-06T10:59:43+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/a69beaeabd004e4d945ca5e60c82997b"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Datenmodell_Mitarbeiterverwaltung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Datenmodell Mitarbeiterverwaltung"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001499"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001499\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}