Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Access Tabellenstruktur transitive Abhängigkeit? 3.Normalform

Frage Entwicklung Datenbanken

Mitglied: 48897

48897 (Level 1)

30.05.2007, aktualisiert 18.06.2007, 6713 Aufrufe, 3 Kommentare

Hallo,

ich habe folgende Frage...

Ich habe 2 Tabellen - die eine heisst Stammdaten.Mitarbeiter und die andere Vertragsdaten. Zur Tabelle Vertragsdaten habe ich jedoch noch eine Frage: Mir ist aufgefallen, dass ich die Tabelle ja noch weiter trennen muss, oder?
Aktuell habe ich in der Tabelle Vertragsdaten:

VertragsID als Primärkey
Personalnr.
Vollzeit/Teilzeit (als Wertliste)
Arbeitszeitanteil
Tarifgruppe
Befristung (Ja/Nein)
Beginn Arbeitsvertrag
Ende Arbeitsvertrag

Bei weiterem Überlegen dachte ich mir jedoch folgendes - und ich bin mir nicht sicher ob es so korrekt ist ...

Ich müsste die Tabelle doch eigentlich in eine "Vollzeit/Teilzeit"-Tabelle (wo Beginn und Ende mittels Datum/Uhrzeit gespeichert wird) + eine "Tarifgruppen"-Tabelle (wo Beginn und Ende mittels Datum/Uhrzeit gespeichert wird) + in eine "Arbeitszeitanteil"-Tabelle (wo Beginn und Ende mittels Datum/Uhrzeit gespeichert wird) untergliedern. Wegen der 3.Normalform, oder? Ich weiss eben nicht ob das so korrekt ist, aber da ich dann später Auswertungen machen möchte die sich auf Zeiträume beziehen und sich die oben genannten Inhalte der Tabellen ändern können ohne dass sich der Rest ändert - dachte ich es mir halt so ?! Ein weiterer Punkt ist, dass mir die Angabe der Befristung ganz wichtig ist, da ich später auch einfach mal eine Abfrage machen will, wie viele befristete Verträge ich im Unternehmen habe. Nun dachte ich an ein Feld Befristung ja/ nein - bloss dann müsste ich auch wissen bzw. eintragen von wann bis wann die Befristung geht --> also wenn ich ja anklicke, dann muss man Beginn und Ende des Arbeitsvertrages eingeben, wenn ich keine Befristung habe, dann muss ich nur den Beginn des Arbeitsverhältnisses angeben. So hätte ich jetzt 5 Tabellen ?

Tabelle Vollzeit/Teilzeit
Tabelle Tarifgruppe
Tabelle Arbeitszeitanteil
Tabelle Befristung ja
Tabelle Befristung nein

Danke schon im Voraus für Tipps!
Mitglied: Biber
30.05.2007 um 19:43 Uhr
Moin polly15,

willkommen im Forum.

Der Grad der (wünschenswerten) Normalisierung hängt aber auch von Euren Realitäten bzw. Prozessen ab.
Konkret in diesem Fall solltest Du zwei Fragen noch ein wenig ausloten vor dem Tabellendesign:

  • Was willst Du später auswerten (können)? Welche Fragestellungen können an die DB gerichtet werden?
  • Hat denn jede/r Mitarbeiter/in genau eine Vertragsnummer oder bekommt er/sie nicht nur einen geänderten Arbeitsvertrag, sondern eine neue VertragsID bei einem Wechsel z.B. von Teilzeit auf Vollzeit? Wie ist es bei einem Tarifwechsel? Bei Wechsel von befristet in unbefristet?

Wenn es jeweils neue VertragsID gibt (und sei es nur als angehängte LaufendeNummer, also VID 4711-01, 4711-02, 4711-03....), dann kannst Du das Modell sauber bekommen.
Dann hat jede VertragsID ganz klar ein "Beginn" und ein "Ende"-Datum.
Dass die Zeiträume überschneidungsfrei sind, ist in der Realität so und kann zusätzlich noch programmtechnisch in der GUI sichergestellt werden.

Und welcher Vertrag heute, an den Iden des März oder zu einem beliebigen Zeitpunkt gültig ist, war oder sein wird, lässt sich jederzeit rekonstruieren (=auswerten).

Somit bleiben:
  • Tabelle MA-Stamm (mit PersNr, Name, Vorname, Geburtstag, Adresse....Eintritt, Aus/Abtritt..)
  • Tabelle Vertragsdaten (PK sind VertragsID, falls VertragsID wie oben beschrieben eindeutig) mit den Attributen PersNr, GültigAb, GültigBis, Voll/TZ, Tarifgruppe,...

Das Attribut "befristet" kann entfallen - wenn kein Bis-Datum des Vertrags existiert, ist es unbefristet.
Das Attribut "Arbeitszeitanteil" kann ich inhaltlich nicht interpretieren (=kenn ich nich')

Gruß
Biber
Bitte warten ..
Mitglied: Boy1980HH
30.05.2007 um 20:07 Uhr
Hallo polly15,

Wenn ich mir so die Daten anschaue, die du in der Datenbank speichern möchtest und später auch entsprechend auswerten willst, reicht es vollkommen aus wenn du 2-3 Tabellen dazu benutzt. Wenn du die Datenbank sauber nach der 3. Normalform konzipieren möchtest, wären wirklich diverse weitere Tabellen notwendig. Dann aber suaber die Daten zu speichern und später auch entsprechend auszuwerten ist/ wäre wesentlich komplexer....

Wenn ich eine Datenbank konzipiere schaue ich zwar auch auf die Normalformen und halte mich auch daran, aber nur bis zu einem gewissen Grad und selten 100%ig. Und der Grad ist bei mir meistens immer dan erreicht, wenn ich bei entsprechenden Reports später übermäßig Probleme habe/häte die ich programm(ier)technisch nicht mehr realisieren kann. Soll heißen, nicht immer ist es zweckmäßig eine Datenbank sauber bis in die 3. Normalform zu konzipieren.

Wenn ich mir deine Daten so anschaue würde ich deine beiden Tabellen nutzen. Je nachdem welche Daten zusätzlich in den Bereich "Tarifgruppe" fallen, würde ich das ggf. noch in eine weitere/ extra Tabelle auslagern.
Das Datenfeld "Befriestung" kannst du dir sparen, da das redundant zu "Beginn Arbeitsvertrag"/ "Ende Arbeitsvertrag" wäre. Wenn es sich um einen unbefristeten Arbeitsvertrag handelt, würde ich bei "Ende Arbeitsvertrag" entweder nichts oder einen utopisch hohen Wert (z.B. 31.12.9999) speichern. Bei einem befristeten Arbeitsvertrag dagegen ebend das entsprechende Datum. Über das Datum hast du nun jederzeit die Möglichkeit herrauszubekommen, ob es sich um einen befristeten oder unbefristeten handelt....

Gruss, Maik
Bitte warten ..
Mitglied: 48897
18.06.2007 um 21:25 Uhr
Hallo Biber, Hallo Maik,

vielen Dank für Eure Ideen/ Gedanken. Es hat mir wieder einige Anregungen gegeben noch einmal über meine DB-Struktur nachzudenken. Bin aber noch am geistigen Entwurf!

Also nochmals vielen Dank!!!!
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Batch & Shell
CMD cURL Access Token parsen (2)

Frage von maddig zum Thema Batch & Shell ...

LAN, WAN, Wireless
Access Point: Ubiquiti UAP AC PRO Einschätzung Reichweite (4)

Frage von TimMayer zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
Freifunk über vorhandene Access Points ausstrahlen (4)

Frage von Uwoerl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Direct Access mit VPN aufbau (6)

Frage von geocast zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...