Zum Inhalt springen

Was haltet Ihr von diesem ERD, bitte um Kritik


pel

Empfohlene Beiträge

Also vom Text her wärs ok, leider hast das aber nicht so umgesetzt.

Laut deinem Modell hätte z.B. ein Fach genau eine Klausur. Bei den anderen ist es ähnlich.

Du musst die Beziehung genau umgekehrt abbilden. In die Klausurentabelle gehört ein Verweis auf das Fach. Analog verhält es sich bei den anderen Beziehungen.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja. Fach und schüler ist eine n:m Zuordnung. Ein Schüler kann mehrere Fächer haben und ein Fach wird von mehreren Schülern besucht.

das dachte ich mir auch schon, nur du liest die Beziehungen anders wie ich , daher fand ich meine Beziehung etwas komisch... :

Ein Schüler kann mehrere Fächer haben und mehrere Fächer werden von vielen Schülern besucht. <-- Dies verwirrte mich...

So habe es mal umgeschrieben und die M:N Beziehung aufgelöst.

Dann gibt es noch das Problem mit dem Vorfall , welcher vorher eine 1:N Beziehungen war, doch dann dachte ich nochmals drüber nach und eigentlich ist es auch eine M:N Beziehung. Siehe Bild was ich dort schrieb, was denkst du?

Habs jetzt aber nur mal überflogen.
Dafür sollte ich mich bei der Ärztekammer beschweren :D

Das Programm ist für meine Freundin(noch Referendar...) daher fällt der Lehrer hier untern Tisch :D

post-50970-14430448015956_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür sollte ich mich bei der Ärztekammer beschweren

Pff. Ihr Kassenpatienten könnt mir garnix :bimei

- In der Tabelle Fach ist immer noch eine Schüler Id

- Eine Auflösungstabelle hat einen eigene technischen PK und zwei Felder die dann, in Deinem Fall, ein Fach mit einem Schüler verbinden, keinen zusammengesetzten PK der diese Aufgabe übernimmt.

- Unterrichtsstunde und Unterrichtstag würd ich in einer Tabelle abspeichern. Man muss es nicht übertreiben ;-) Allerdings würd mich interessieren welchen Mehrwert an informtion du dadurch erhalten willst, denn es fehlt eine Verbindung zu einem Fach. Ein Stundenplan ist so nicht möglich.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Pff. Ihr Kassenpatienten könnt mir garnix :bimei
hm... abwarten das könnte sich noch ändern hier :D

- In der Tabelle Fach ist immer noch eine Schüler Id

yo und es scheint als hat sich in meinem Buch(Frank Geisler , Datenbanken 2.Auflage) ein Fehler eingeschlichen...

Kann es sein wenn du dir dieses Bild anschaust(ist ein Beispiel aus obigem Buch), dass der BERATER_ID FK ganz rechts überflüssig ist?? Er ergibt zumindest für mich keinen Sinn :D wenn ja, dann ist die SCHUELER_ID natürlich auch quark!

b10mflj9vn8pkv30t.png

- Eine Auflösungstabelle hat einen eigene technischen PK und zwei Felder die dann, in Deinem Fall, ein Fach mit einem Schüler verbinden, keinen zusammengesetzten PK der diese Aufgabe übernimmt.

habs mal verbessert: das mit dem zusammengesetzten PK war quark :rolleyes:

b10mipj5ff2bpwrnx.png

- Unterrichtsstunde und Unterrichtstag würd ich in einer Tabelle abspeichern. Man muss es nicht übertreiben ;-)

Beide Tabellen in eine Tabelle macht man ja nur wenn es eine 1:1 Beziehung wäre, ist hier ja aber nicht der Fall.

1 U.TAG hat N U.STD d.h. ein U.TAG verweist auf mehrere Unterrichtseinheiten die individuelle Inhalte und Hausaufgaben haben. Würde ich dies zu einer Tabelle zusammenfügen, so hätte solche Einträge in der Tabelle UNTERRICHT:


  1. DATUM_ID TAGESDATUM STUNDENNR INHALT HAUSAUFGABE
  2. 1............. 12.10.2008 ...... 1................bla.............bla
  3. 2............. 12.10.2008 ...... 2................test ...........test
  4. 3............. 12.10.2008 ...... 3................bla............... bla

das TAGESDATUM ist doch sehr redundant :D daher fände ich die Aufteilung auf 2 Tabellen ok.

Allerdings würd mich interessieren welchen Mehrwert an informtion du dadurch erhalten willst, denn es fehlt eine Verbindung zu einem Fach. Ein Stundenplan ist so nicht möglich.

HM... so ists wenn man sich zu sehr an bestehenden englischen Alternativprogrammen orientiert und deren Designfähler übernimmt :D

Das Fach ist eigentlich unwichtig bei dem Unterrichtstagesplaner, den die Bezeichnung für das Fach befindet isch in dem Klassennamen z.B. E7b heißt Englisch Klasse 7b.

Natürlich könnte man noch eine Spalte Fach einfügen neben die Spalte Klasse.

Doch wie würdest du da einen Beziehung herstellen?

1 U.STD hat 1 FACH ? also der Tabelle UNTERRICHtSSTUNDE das Feld "Fachname" hinzufügen? Das klingt ok ^^

b10nghilks2y9k8i5.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Er ergibt zumindest für mich keinen Sinn wenn ja, dann ist die SCHUELER_ID natürlich auch quark!

Für mich auch nicht. Es sei denn, dort wird redudant der bevorzugte Berater abgespeichert (falls es sowas gibt). Das nennt sich Denormalisierung, aber der von mir geschilderte Fall müsste natürlich auch im Buch so erklärt sein. Ansonsten macht es keinen Sinn.

das TAGESDATUM ist doch sehr redundant daher fände ich die Aufteilung auf 2 Tabellen ok.

Grundsätzlich hast Du natürlich recht. Allerdings gehört zu jedem Datenbankentwurf auch die schon angesprochene Denormalisierung, bei der man sich überlegt, welche Entitäten man sinnvollerweise zusammenlegen kann.

Das hat folgende Gründe:

- Vereinfachung des Datenmodells

- Vereinfachung der SQLs und des Applicationsdesigns

- Erhöhung der Performance

- Reduzierte Kosten wegen obiger Punkte. In einem normalen Projekt kannst pro Entität mal als Faustregel 25-30 Tsd Euro rechnen.

Man darf es natürlich nicht übertreiben, aber ein etwas umfangreicheres Datenmodell das sich in der 3 (oder sogar 4,5 NF) befindet ist in der Praxis praktisch nicht benutzbar.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

was mir grade aufgefallen ist.

du speicherst in der Tabelle Klausur die Note mit.

Das bringt nichts.

Für wen ist die Note?

Oder willst du für jeden Schüler einen eigenen eintrag in der Klausur anlegen?

Also auch mit Zwischentabelle arbeiten, die die Klausuren und die Schüler zusammenbringt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Grundsätzlich hast Du natürlich recht. Allerdings gehört zu jedem Datenbankentwurf auch die schon angesprochene Denormalisierung, bei der man sich überlegt, welche Entitäten man sinnvollerweise zusammenlegen kann.

Das hat folgende Gründe:

- Vereinfachung des Datenmodells

- Vereinfachung der SQLs und des Applicationsdesigns

- Erhöhung der Performance

- Reduzierte Kosten wegen obiger Punkte. In einem normalen Projekt kannst pro Entität mal als Faustregel 25-30 Tsd Euro rechnen.

Man darf es natürlich nicht übertreiben, aber ein etwas umfangreicheres Datenmodell das sich in der 3 (oder sogar 4,5 NF) befindet ist in der Praxis praktisch nicht benutzbar.

Yo mittlerweile kenne ich Denormalisierung/Normalisierung und dass die beiden sich die Waage halten sollten... schnelle bzw. effekte sql statements mit möglichst wenig joins sind das Ziel bei gleichzeit kontrollierter Redundanz :bimei

Enno:

was mir grade aufgefallen ist.

du speicherst in der Tabelle Klausur die Note mit.

Das bringt nichts.

Für wen ist die Note?

Oder willst du für jeden Schüler einen eigenen eintrag in der Klausur anlegen?

Also auch mit Zwischentabelle arbeiten, die die Klausuren und die Schüler zusammenbringt.

yo 1 KLause hat 1 Note also kommt das in eine Tabelle. Die Note ist für die Klausur. 1 Schüler hat N Klausuren / 1 Klausur gehört zu 1 Schüler = 1:N Beziehung. Warum brauche ich da eine Zwischen-/Auflösungtabelle?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nö. An 1 Klausur nehmen doch X Schüler teil. Oder irre ich mich?

Du willst also wenn 20 Schüler in der Klasse sitzen, für eine Klausur 20 Einträge in der Tabelle machen?

1 Schüler hat Y Noten in Y Klausuren

1 Klausur hat X Schüler als Teilnehmer.

Ich denke das kann man am besten über eine Zwischentabelle abbilden.

Notentabelle

KlausurID

SchülerID

Note

Datum

Ach Datum da drin. Damit kannst du dann auch die Nachschreibenote unterscheiden. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nö. An 1 Klausur nehmen doch X Schüler teil. Oder irre ich mich?

teilnehmen ist ja ein anderes Verb bzw. Ausdrucksweise... mit Klausur meine ich die Klassenarbeit(papierstück) selbst.

1 Schueler hat N Klausuren und jede Klausur hat 1 Note als Feld ist doch ok?

Du willst also wenn 20 Schüler in der Klasse sitzen, für eine Klausur 20 Einträge in der Tabelle machen?

1 Schüler hat Y Noten in Y Klausuren

1 Klausur hat X Schüler als Teilnehmer.

mit Y fange ich datenbanktechnisch nichts an :D

1 Schüler hat N Klausuren mit dem Feld Note.

1 Klausur wird von genau einem Schüler geschrieben.

Ach Datum da drin. Damit kannst du dann auch die Nachschreibenote unterscheiden. :)

Note ist Note egal wann die geschrieben wurde. Da wird nicht unterschieden warum auch.

1 Schüler hat N Vorfälle, aber hat 1 Vorfall N Schüler?

Das kommt drauf an wie man das ganze sieht finde ich. Wenn ich nur den Schüler in der DB haben will der z.B. das Opfen/Täter ist kann ich die anderen Beteiligten Namen in einen Bemerkungfeld schreiben. So würde 1 Vorfall hat 1 Schüler passen. Oder ich schreibe für 3 Schüler die beteiligt sind am Vorfall je einen Datensatz mit der gleich Vorfall ID eben was aber zuviel Aufwand ist. daher bevorzuge ich andere erstere Methode. Was meint Ihr - Herr Dotore? :floet:

Link zu diesem Kommentar
Auf anderen Seiten teilen

mit Klausur meine ich die Klassenarbeit(papierstück) selbst.

Das ist die falsche Sichtweise. In einer Entität werden keine Kopien verwaltet. Du schreibst ja ein und den selben Schüler auch nicht X mal in die Schülertabelle weil er X Fächer hat. Das machst Du aber mit den Klausuren.

1 Schueler hat N Klausuren und jede Klausur hat 1 Note als Feld ist doch ok?

Eine Klausur wird von X Schülern geschrieben und hat dementsprechend X Ergebnisse. Du speicherst nicht für jeden schüler nochmal den gleichen datensatz in der tabelle. das wäre redundanz die wir vermeiden wollen. Auch bei einer Denormalisierung würd ich das nicht machen.

Bedeutet: Enno hat recht und Du brauchst eine Auflösungstabelle z.B. Klausurergebnis

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bedeutet: Enno hat recht und Du brauchst eine Auflösungstabelle z.B. Klausurergebnis

ok ich hab nochmals alles Überflogen und alle Eure Vorschläge eingebaut, ja auch Erno`s Datum Vorschlag mit Nachklausur-Datum... denke es schadet net und für einen vergesslichen Lehrer kann das ganz nützlich sein :D

Fällt euch sonst noch was auf oder Verbesserungsvorschläge? Wie sagte mein Lehrer:"90% des Programmes macht das Datenbank-Design aus". Naja etwas übertrieben, scheint der hat noch nie programmiert ;)

post-50970-14430448040633_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnt Ihr mir noch sagen, wass der PrimaryKey in der Auflösungstabelle

für eine Bedeutung hat?

In einem guten Datenmodell sollte jede Tabelle einen PK haben. Zum einen ist das die Voraussetzung für ein normalisiertes ER-Modell (ohne PK kann man bei einer Tabelle nie von irgend einer Art von Normalisierung sprechen) und zum anderen kann man damit technisch eindeutig einen Datensatz identifizieren.

Also nimm ihn auch bei dir mit rein auch wenn du vielleicht momentan oder in dieser AW keinen direkten Nutzen davon hast.

Wie sagte mein Lehrer:"90% des Programmes macht das Datenbank-Design aus". Naja etwas übertrieben, scheint der hat noch nie programmiert

Er meinte wohl damit die Fähigkeiten die eine AW haben kann hängen zu 90% von dem ab was das Datenmodell liefert. Und damit hat er absolut recht. Applicationen kommen und gehen im laufe der zeit, die Daten bleiben. Und darum ist ein gutes DB Modell deutlich wichtiger als das ganze architektonische J2EE, .Net was auch immer Geplänkel drum herum.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

In einem guten Datenmodell sollte jede Tabelle einen PK haben. Zum einen ist das die Voraussetzung für ein normalisiertes ER-Modell (ohne PK kann man bei einer Tabelle nie von irgend einer Art von Normalisierung sprechen) und zum anderen kann man damit technisch eindeutig einen Datensatz identifizieren.

PK auch in einer Auflösungstabelle?? Mich wundert es nur, da dies in meinem DB-buch so nicht gezeigt wird... aber in dem einen bild siehe oben wirds so gezeigt,da hast recht. OK PK für jede TAbelle eingeplant bzw. LinQ afair erlaubt eh keine Tabellen ohne PK hehe von daher...

In der Tabelle Fach ist die Schüler_ID zuviel drin.

Du löst ja die Beziehung Fach <-> Schüler über die Zwischentabelle Schueler_Fach auf.

oh man ja das liegt an dem blöden tabellenkalk. programm mit dem ich das DB design mache , mal schauen was ob die neuen SQL 2008 server express/compact(free) Versionen bieten hinsichtlich Datenbank Design und Entitäten Visualisierung. Dann präsentier ich hier noch die letzte final version schön übersichtlich :) danke euch allen wieder was gelernt :e@sy :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Monate später...
Sonst besorg dir doch einfach Visio... ;)

Einfach, effizient, praktisch :D

zu teuer für das was ich brauche...

so habe mal wieder etwas Zeit an dem Projekt weiter zu arbeiten wie versprochen nach langer Zeit das Diagramm :D Bilder siehe Anhang.

Das andere Bild sprich die farbige Tabelle soll die Grafische Oberfläche bzw. den Unterrichtsplan darstellen in meinem Programm. Wenn ich ein Datum vor oder zurück springe via button_click werden alle Datensätze zu einem Datum geladen.

Daher habe ich damals eingeführt:

1 Unterrichtstag hat N Unterrichtsstunden.

Unterrichtstag:

date datum;

Unterrichtsstunde:

unterrichtsstunde_id

klasse

fach

activity

homework

Meine Frage ist jetzt wie verbinde ich jetzt die Tabellen Unterrichtstag und Unterrichtsstunde mit den Tabellen Schulklasse + Fach und den beiden Feldern activity+homework? Vielleicht ist ja jemand so nett und hilft mir bitte dabei das ganze etwas aufzudröseln? :)

post-50970-14430448148969_thumb.png

post-50970-14430448149306_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da fehlt die Beziehung Schüler - Note.

was macht in der Tabelle Vorfall der Name?

Soll das der Name des meldenden Lehrer sein?

Was ist hier wenn 1 Vorfall mehrere Schüler betrifft? auch mehrmals eintragen?

Also wieder Auflösungstabelle. :D

Bearbeitet von Enno
Link zu diesem Kommentar
Auf anderen Seiten teilen

Da fehlt die Beziehung Schüler - Note.

was macht in der Tabelle Vorfall der Name?

Soll das der Name des meldenden Lehrer sein?

huch dämliches maestro, der visual designer ist buggy in einem anderen diagramm stimmts: b40r5z7p4jxfryipl.png

Das ist der Vorname + Nachname des Schülers + die Schulklasse die man in der GUI auswählen kann. Danach wird alles in eine Tabelle eingefügt und als VORFALL angezeigt.

Diese Tabelle ist eine Liste für alle Vorfälle bei der man nach Klassenspalte bzw. vorname/nachname spalte sortieren kann.

Was ist hier wenn 1 Vorfall mehrere Schüler betrifft? auch mehrmals eintragen?

Also wieder Auflösungstabelle. :D

hm eigentlich reichte mir die 1:N dann wird die Akte zum Hauptäter :D hinzugefügt und die anderen Namen von Hand... yo hast recht das ist doch frickelei also nochmals hier verbessert:

b40u4fzvcf7gyfo6x.png

Was mich am meisten interressiert ist wie ich diese Beziehung lösen kann:

1 Unterrichtstag hat N Unterrichtsstunden.

Angezeigt werden je Zeile

1 :Klasse : Fach : Aktivität : Hauseaufgaben

2 ...

Klasse und Fach bestehen bereits nur ohne Beziehung und dann müsste man das ganze mit dem Unterrichtstag + Unterrichtsstunde verknüpfen (1:N) fällt dir dazu was weises ein wie sonst auch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok ich habs mal so probiert, was hälst du davon? wichtig ist die rote Seite:

Ich habe eine N:M Beziehung zwischen Schulklasse + Fach erstellt mit den 2 Attributen Inhalt + Hausaufgabe damit jede Schulklasse + Fach-Kombination individuelle Inhalte+Hausaufgaben haben kann. Und dazu noch eine 1:N Beziehung sprich 1 Unterrichtstag hat eine eindeutige Schulklase+Fach-Kombination mit individuellem Inhalt+Hausaufgaben.

b4174zsaqq2faojb7.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

so bin jetzt nochmals in mich gegangen, habe das GUI-Front-End aus meinem Kopf verdrängt, da es doch zu dominierend war und störte. Ich denke so dürfte die Information mittles select + join Abfragbar sein:

  1. Datum Stunde Klasse Fach Inhalt Hausaufgabe
  2. 15.10.2008 1 10b Mathe bla1 bla2
  3. 15.10.2008 2 10b English bla3 bla4
  4. 15.10.2008 3 10b Mathe bla5 bla6

Was meint Ihr zu unterem Bild?

b426h04rsbfryvqa6.png

Bearbeitet von pel
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...