Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: silentwolf am Februar 26, 2019, 10:25:50

Titel: Tabellenstruktur Perioden Und Turnus
Beitrag von: silentwolf am Februar 26, 2019, 10:25:50
Hallo mal wieder )
wollte nur Fragen ob jemand mir eine kleine Unterstützung mit einer DB Stuktur geben könnte.

Folgendes möchte ich erreichen.
Projekte haben verschiedene Projekt Anfangsdatum und Enddatum.. z.B. 1/12/2018-4/4/2019
in diesem Zeitraum soll ein Turnus täglich stattfinden.
Dazu habe ich mal eine tblObjekte, tblTurnus, tblObjTurnus erstellt also eine n:m Beziehung mit der tblObjTurnus als Verknüpfungstabelle.
Soweit noch kein größeres Problem.
Nun kann es aber sein das verschiedene Objekte den gleichen Turnus haben oder auch gleiche Projekt Anfang und Enddatum haben.
dazu hab ich mal eine tblPeriode erstellt mit AnfangsDatum und Enddatum ..
Nun kann es aber vorkommen das ein Objekt zu verschiedenen Perioden verschiedene Turnus haben kann.
Sagen wir mal Objekt A vom 1/1/19-31/1/19 einen Turnus von 7xpro Woche und ab 1/2/19-15/3/19 1xpro Woche.

Wie sollte man das am besten in den Tabellen lösen damit auch gewisse Validierungen berücksichtigt werden können.
z.B. ein Objekt darf nicht mehrere Perioden enthalten die im gleichen Zeitraum enthalten sind.

Objekt A .............Periode 1 ..........von 1/1/19-31/1/19..........Turnus A = 7xWoche
Objekt A .............Periode 2...........von 15/1/19-8/3/19..........Turnus B=1xWoche

Hier sollte die Periode 2 nicht möglich sein da der Anfangswert zwischen der ersten Periode sich befindet.

Kann mir hier jemand ein bisschen Helfen?
Wäre sehr dankbar.

mfg

Albert


Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: ebs17 am Februar 26, 2019, 11:54:32
Objekt, Projekt, Turnus, Periode ... kläre bitte erst einmal die Begrifflichkeiten und die bestehenden Abhängigkeiten. Zumindest ich habe das nicht verstanden.
Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: silentwolf am Februar 26, 2019, 12:33:46
Hallo Eberhard,
danke für Deine Nachricht.
Im Moment habe ich es so tblObjekte 1:n beziehung zu tblObjektPeriode
tblTurnus 1:n als Nachschlagetabelle für tblObjektPeriode
Dann kann ich aber keine Perioden(Zeiträume) für mehrere Objekte nutzen.
Deshalb dachte ich mir zuerst eine tblPerioden(Zeiträume) Mit Anfangsdatum und Enddatum anlegen die ich dann für verschiedene Objekte nutzen könnte.
Turnus also ist eine Tabelle die die häufigkeit darstellen soll wie oft dieses Objekt betreut werden soll. Also 1xtäglich oder 1xwöchentlich usw.
Dieser Turnus kann sich aber ändern zu einer gewissen Periode.
z.B. Objekt A in der Periode 1/1/19 bis 31/1/19 mit einen Turnus von 1xtäglich
das selbe Objekt A kann in einer anderen Periode 1/2/19-28/2/19 mit einen Turnus von 1xwöchtentlich sich ändern.
Jetzt hätte ich eben eine Tabelle mit verschiedenen Perioden angelegt DatumVon, DatumBis... und eine tblTurnus mit einen Feld wie z.B. 1xwöchentlich, 1xmonatlich, 2xwöchentlich und so weiter.
Hier wäre meine überlegung gewesen eine tblObjektTurnus als Zwischentabelle für tblObjekte und tblTurnus.
Also eine n:m Beziehung.
Hoffe das ist so nun verständlicher?

Gruß
Albert

Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: ebs17 am Februar 26, 2019, 17:42:32
Der Begriff Projekt war also nur eine leere Worthülse und ist zu streichen.

Ansonsten: Ich halte viel von Tabellen, das ist das Brot für einen Datenbänkler. Allerdings müssen sie sinnvoll und zweckerfüllend sein. Eine Tabelle nur für Zeiträume erschließt sich mir nicht. Zwei Datumswerte (von, bis) kann man direkt an den Sachverhalt setzen statt sie über zwei zusätzliche Long-Schlüssel anzubinden. Das gibt speichermäßig wenig Overhead, ist aber viel einfacher zu behandeln ... man muss ja auch noch funktionierende Abfragen schreiben.

Also: Es gibt eine Tabelle Objekte und dazu eine n-Tabelle Betreuung. Die Tabelle Betreuung bekommt neben dem Fremdschlüssel auf Objekte die Felder Beginn und Ende sowie die Felder Intervallart und Intervallhäufigkeit. In diese Felder kommen die Werte, die man bei DateAdd als erste zwei Argumente verwenden würde. Somit könnte man hier unmittelbar Zeitraum und Intervalle in Einzeltermine auflösen (über Hilfstabelle). Der Beginn darf dann an dem üblichen Wochentag liegen, an dem die Betreuung primär stattfinden sollte.
Doppelte Betreuungen könnte man hier dann gleich bei Datensatzanlage prüfen und vermeiden.

Ob man dann für ww, dd, q eine Extra-Nachschlagetabelle zur Erläuterung, dass es sich da um Wochen, Tage, Quartale handelt, verwendet, kann man selber entscheiden. Eine Rolle dürfte die nur für Userunterstützung bei Dateneingabe sowie für Darstellungen nach außen haben.
Aber über einen hier sprechenden Schlüssel statt dummer Autowerte spart man sich nachfolgend einigen Abfrageaufwand und gewinnt Übersicht für eigentliche Aufgaben.
Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: silentwolf am Februar 26, 2019, 19:07:52
Hallo Eberhard,

Danke für Deine Mühe!
Habe hier mal ein Bild von der Struktur angehängt könntest Du Dir die mal ansehen und mir sagen ob Du das so gedacht hast?
Die tblIntervalHaeufigkeit soll natürlich ein Feld mit IntHAnzahl (Zahl) Feld enthalten.
Ideal wäre ja wenn man dann aus diesen Tabellen einen Wochenplan erstellen könnte mit allen Objekten mit den dazugehörigen Wochentagen bzw. datum gedruckt werden können.


mfg

Albert
Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: ebs17 am Februar 26, 2019, 19:42:09
Zitatob Du das so gedacht hast?
Kommt darauf an und nein.
Keine Ahnung, was sich hinter IntAID verbirgt. Und warum man eine Häufigkeit gleich einfach Zahl  in eine eigene tabelle legen und mit zwei weiteren Zahlen anbinden muss, erschließt sich mit nicht. Datenmodellierung hat nicht nur mit Dogmen  (das muss so sein) zu tun, sondern auch mit Funktionalität inklusive Einfachheit. Komplexität bekommt man alleine, wenn man sich dann richtigen Aufgaben zuwendet, über das Zusammenhängen der Tabellen per JOIN hinaus.

ZitatIdeal wäre ja wenn man dann aus diesen Tabellen einen Wochenplan erstellen könnte mit allen Objekten mit den dazugehörigen Wochentagen bzw. datum gedruckt werden können.
Ja, könntest Du das denn mit Deiner Gestaltung?

Mit meinem Vorschlag zzgl. einer Kalendertabelle/Hilfstabelle wäre ich dazu in der Lage.
Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: silentwolf am Februar 26, 2019, 19:50:00
Hallo,
tblIntervalArt und tblIntervalHauefigkeit das hab ich halt als seperate Tabelle ausgelagert

IntAID Autowert
IntHID Autowert

Wie meinst Du das mit der Kalendertabelle/Hilfstabelle? Steh ein bisschen auf den Schlauch gerade ...

Na bin mir sicher das Du das hinbekommst aber bei mir sieht das schon noch ein bisschen anders aus leider..

Es kommt auch vor das einige Objekte die selben Anfangsdatum und Enddatum haben deshalb war ich zu Beginn der Meinung diese Daten in eine seperate Tabell aufzulisten. Nur zur Info ;)
Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: ebs17 am Februar 26, 2019, 21:48:06
Als Ansatz (ungetestet, da aus Abstraktion heraus geschrieben):
SELECT
   O.ObjName,
   B.BetrVorgang,
   DateAdd(B.IVArt, B.IVHaeufigkeit * T.I, B.BetrVon) AS Termin
FROM
   T999 AS T,
   tblObjekte AS O
      INNER JOIN tblBetreuung AS B
      ON O.ObjID = B.BetrObjIDRef
WHERE
   T.I BETWEEN 0 AND DateDiff(B.IVArt, B.BetrVon, B.BetrBis)

T999 aus Grundlagen - SQL ist leicht (1) - Hilfstabellen (https://www.ms-office-forum.net/forum/showthread.php?t=298414)

Ansonsten: Wenn Du nur sequentiell liest, müsstest Du evtl. mehrere Durchläufe probieren, um Dir entgangene Sequenzen auch zu erschließen. Ich werde nicht jedes "hab ich halt ..." kommentieren.

Wenn Du denkst, Du kommst so besser, tue es einfach.
Titel: Re: Tabellenstruktur Perioden Und Turnus
Beitrag von: silentwolf am Februar 27, 2019, 10:12:01
Hallo Eberhard,

danke werde es mir genau ansehen.

Melde mich wenn ich noch etwas brauche.

Vielen Dank erstmal!

Albert