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, 6720 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
Ähnliche Inhalte
Microsoft Office
gelöst Access 2016 installieren bei bestehenden Home and Business 2016 (4)

Frage von Huibuh2010 zum Thema Microsoft Office ...

Datenbanken
gelöst Access 2010 Filter zurücksetzen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Microsoft Office
gelöst Nach Office 2010 SP2 Update - Kein Sharepoint export zu Access möglich (1)

Frage von paddl82 zum Thema Microsoft Office ...

LAN, WAN, Wireless
Access Point (VLAN, Multi-SSID) legt Netzwerk lahm (8)

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

Heiß diskutierte Inhalte
Windows Installation
Eine etwas (wirklich) speziellere Frage: Windows 10-Installation über (11)

Frage von DerFurrer zum Thema Windows Installation ...

Linux
gelöst Boot failed: not a bootable disk (10)

Frage von Fleckmen zum Thema Linux ...

Multimedia & Zubehör
gelöst Iphone 6 prob (8)

Frage von jensgebken zum Thema Multimedia & Zubehör ...

Router & Routing
Cisco887VAW -VPN NAT-Freigabe (8)

Frage von Serial90 zum Thema Router & Routing ...