php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.07.2006, 14:50  
Erfahrener Benutzer
 
Registriert seit: 26.11.2004
Beiträge: 205
c-f-g
Standard Datenbankdesign: Reloaded

Wäre echt nett, wenn sich das mal jemand (der sich damit auskennt) anschauen könnte - sieht mehr aus, als es ist

Also angefangen beim ER-Modell:



Daraus abgeleitet das relationale Datenbankschema:



Nun zum Problem. Die Beziehungstabellen (erhalten, erfassen, besitzen, hat) müßte man nun ja noch irgendwie in den Gegenstandstabellen (Kunden, Sendung, Quittung, Packstuecke, Status) über den Fremdschlüssel integrieren können. In dem Buch was ich hier vor mir liegen habe wird das von der Beziehungsart (einfach-einfach, einfach-komplex, komplex-komplex) abhängig gemacht.

Wenn ich es richtig sehe, dann können komplex-komplexe Beziehungen nicht vereinfacht werden, d.h. erhalten, erfassen, besitzen sollten nicht weiter vereinfachbar sein. Ist das korrekt?

Die Tabelle der einfach-komplexen Beziehung (hat) sollte wegrationalisiert werden können, wenn ich das richtig sehe. Und zwar, indem ich einen Fremdschlüssel aus Sendung in Quittung implementiere. Ist das korrekt?

Vielen Dank!
c-f-g ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.07.2006, 15:24  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard Re: Datenbankdesign: Reloaded

Zitat:
Zitat von c-f-g
Wenn ich es richtig sehe, dann können komplex-komplexe Beziehungen nicht vereinfacht werden, d.h. erhalten, erfassen, besitzen sollten nicht weiter vereinfachbar sein. Ist das korrekt?
Das ist richtig. Bei einer M:N-Beziehung brauchst du die Beziehungs-Tabelle.

Wobei mir nicht ganz klar ist, warum bspw. Status <-> Sendung M:N sein soll. Ein Status gehört doch eindeutig zu genau einer Sendung und nicht zu mehreren Sendungen (oder wozu hast du die Zeit/Datum Attribute)?

Genauso gehören doch Packstücke sicher zu genau einer Sendung und nicht zu mehreren?....Aber vielleicht ist das in der Praxis ja anders als ich mir das Vorstelle.


Zitat:
Die Tabelle der einfach-komplexen Beziehung (hat) sollte wegrationalisiert werden können, wenn ich das richtig sehe. Und zwar, indem ich einen Fremdschlüssel aus Sendung in Quittung implementiere. Ist das korrekt?
Ich weiß nicht was für eine Notation du da verwendest und warum da m unc c stehen - aber ja "hat" kann man weglassen falls eine Quittung eindeutig zu einer Sendung gehört - über einen Fremdschlüssel ind Quittung jup.


In deinem ER-Diagramm kommen Attribute doppelt vor - z.B: ZNam2 hängt 2 mal an Sendung - was genau willst du denn in Sendung speichern? Das sieht mir irgendwie noch komisch aus. (was ist znam1, was znam2)? Sieht für mich so aus als gehört Sendung nochmal in mehrere Typen aufgespaltet.
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 28.07.2006, 15:51  
Erfahrener Benutzer
 
Registriert seit: 26.11.2004
Beiträge: 205
c-f-g
Standard Re: Datenbankdesign: Reloaded

Erstmal danke

Zitat:
Zitat von Werbegeschenk
Wobei mir nicht ganz klar ist, warum bspw. Status <-> Sendung M:N sein soll. Ein Status gehört doch eindeutig zu genau einer Sendung und nicht zu mehreren Sendungen (oder wozu hast du die Zeit/Datum Attribute)?
Eine Sendung kann mehrere Stati haben, z.B. beladen um 8:00, in Zustellung um 10:00, zugestellt um 12:00 hätte ich vielleicht noch besser beschreiben sollen
Aber der Rest stimmt - was für eine Beziehung ist es dann?

Zitat:
Genauso gehören doch Packstücke sicher zu genau einer Sendung und nicht zu mehreren?....Aber vielleicht ist das in der Praxis ja anders als ich mir das Vorstelle.
Das stimmt - eine Sendung kann ein oder mehrere Packstücke haben. Aber da es mehrere Sendungen gibt die jeweils Packstücke haben können, dachte ich, es wäre ein m:n-Beziehung. Ist es dann eine Sendung---1---besitzt---n---Packstücke?

Zitat:
Ich weiß nicht was für eine Notation du da verwendest und warum da m und c stehen - aber ja "hat" kann man weglassen falls eine Quittung eindeutig zu einer Sendung gehört - über einen Fremdschlüssel ind Quittung jup.
Eine Sendung kann keine Quittung oder eine Quittung haben, nämlich genau dann, wenn die Sendung quittiert wird. Ist es dann wiederum eine Sendung---1---hat---c---Quittung?

Zitat:
In deinem ER-Diagramm kommen Attribute doppelt vor - z.B: ZNam2 hängt 2 mal an Sendung - was genau willst du denn in Sendung speichern? Das sieht mir irgendwie noch komisch aus. (was ist znam1, was znam2)? Sieht für mich so aus als gehört Sendung nochmal in mehrere Typen aufgespaltet.
Jede Sendung hat Start und Ziel. In den XML-Dateien, wo ich es herausparse sind zwei Namensfelder enthalten, die auch bei einer Suche dann wieder getrennt ausgewiesen werden müssen.
c-f-g ist offline   Mit Zitat antworten
Alt 28.07.2006, 18:18  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard Re: Datenbankdesign: Reloaded

Zitat:
Zitat von c-f-g
[...]
Eine Sendung kann mehrere Stati haben, z.B. beladen um 8:00, in Zustellung um 10:00, zugestellt um 12:00 hätte ich vielleicht noch besser beschreiben sollen ;)
Aber der Rest stimmt - was für eine Beziehung ist es dann?
Dann ist es eine 1:N-Beziehung und du kannst somit wieder eine Relation streichen - "erhalten".

Zitat:
Genauso gehören doch Packstücke sicher zu genau einer Sendung und nicht zu mehreren?....Aber vielleicht ist das in der Praxis ja anders als ich mir das Vorstelle.
Das stimmt - eine Sendung kann ein oder mehrere Packstücke haben. Aber da es mehrere Sendungen gibt die jeweils Packstücke haben können, dachte ich, es wäre ein m:n-Beziehung. Ist es dann eine Sendung---1---besitzt---n---Packstücke?[/quote]Du solltest dir evtl. nochmal daüber klar werden was diese Zahlen/Zeichen angeben.
In diesem Fall ist es eine 1:N Beziehung. Ein Eintrag in der "Tabelle" Packstück gehört zu genau einem Eintrag in der "Tabelle" Sendung. Ein Eintrag in der "Tabelle" Sendung gehört zu einem oder mehreren Einträgen in der "Tabelle" Packstücke...




Zitat:
Zitat:
Ich weiß nicht was für eine Notation du da verwendest und warum da m und c stehen - aber ja "hat" kann man weglassen falls eine Quittung eindeutig zu einer Sendung gehört - über einen Fremdschlüssel ind Quittung jup.
Eine Sendung kann keine Quittung oder eine Quittung haben, nämlich genau dann, wenn die Sendung quittiert wird. Ist es dann wiederum eine Sendung---1---hat---c---Quittung?
Es ist eine 1:1 Beziehung.

Zitat:
Jede Sendung hat Start und Ziel. In den XML-Dateien, wo ich es herausparse sind zwei Namensfelder enthalten, die auch bei einer Suche dann wieder getrennt ausgewiesen werden müssen.
[/quote]Dann ist das so aber glaube ich noch nicht ganz optimal dein ER-Diagramm. ...

Der Entitiy-Typ Sendung gehört glaube ich in mehrere aufgespalten.... Sendung, verbindet, Orte oder so...;)
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 28.07.2006, 19:08  
Erfahrener Benutzer
 
Registriert seit: 26.11.2004
Beiträge: 205
c-f-g
Standard Re: Datenbankdesign: Reloaded

Zitat:
Zitat von Werbegeschenk
Zitat:
Zitat von c-f-g
Jede Sendung hat Start und Ziel. In den XML-Dateien, wo ich es herausparse sind zwei Namensfelder enthalten, die auch bei einer Suche dann wieder getrennt ausgewiesen werden müssen.
Dann ist das so aber glaube ich noch nicht ganz optimal dein ER-Diagramm. ...

Der Entitiy-Typ Sendung gehört glaube ich in mehrere aufgespalten.... Sendung, verbindet, Orte oder so...
Mhh vorher hatte ich alle Attribute von Sendung die mit S beginnen in der Relation Start und alle die mit Z beginnen in der Relation Ziel. Da aber jedes dieser Attribute nur 1x je Sendung auftreten kann, dachte ich ich kann sie auch genausogut in die Relation Sendung packen.
Was genau spricht denn dagegen?

€: Oooooh ich sehe gerade, ich habe die Attribute kopiert, aber vergessen das Z gegen S zu tauschen, daher wahrscheinlich Deine Verwirrung.

Also es gibt SOrt und ZOrt und das gilt auch für die übrigen Attribute.

€2: Habe das obige ER-Modell mal entsprechend der Beziehungen abgeändert. Mußt wahrscheinlich aber reloaden. Sieht das Beziehungstechnisch jetzt gut aus?
c-f-g ist offline   Mit Zitat antworten
Alt 29.07.2006, 13:52  
Erfahrener Benutzer
 
Registriert seit: 26.11.2004
Beiträge: 205
c-f-g
Standard

Ich würde jetzt in Kunden den Fremdschlüssel SNr# und in Sendung die Fremdschlüssel QNr#, PNr# und StNr# einfügen wollen.

Korrekt?
__________________
Zitat:
Deine Signatur ist zu lang.
c-f-g ist offline   Mit Zitat antworten
Alt 29.07.2006, 15:51  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard Re: Datenbankdesign: Reloaded

Zitat:
Zitat von c-f-g
€2: Habe das obige ER-Modell mal entsprechend der Beziehungen abgeändert. Mußt wahrscheinlich aber reloaden. Sieht das Beziehungstechnisch jetzt gut aus?
Ich denke schon, aber ich bin ejtzt auch nicht gerade ein Spezialist was DB-Modellierung angeht...
Allerdings hast du gesagt es gibt 0 oder 1 Quittung pro Sendung. Dann wäre es hier nicht 1:c sondern 1:1...

Zitat:
Ich würde jetzt in Kunden den Fremdschlüssel SNr# und in Sendung die Fremdschlüssel QNr#, PNr# und StNr# einfügen wollen.

Korrekt?
Nein, das wird so nicht gehn.
Überleg mal du hast Kunde einen Datensatz für Kunde Alfred und er gibt jetzt 2 Sendungen auf - geht nicht.

Es muss genau umgekehrt. In Sendung solltest du einen Fremdschlüssel auf die Tabelle Kunden anlegen. Genauso wie die ganzen anderen Fremdschlüssel auch nicht in Sendung gehören sondern in die anderen Tabelle (Also Packstücke hat ein feld mit einem Fremdschlüssel auf die Sendung....etc. pp.)
Aber vielleicht hast du das ja auch so gemeint...
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 29.07.2006, 17:24  
Erfahrener Benutzer
 
Registriert seit: 26.11.2004
Beiträge: 205
c-f-g
Standard

Laut dem Buch hier steht c für 0 oder 1.

Ist mir jetzt auch aufgefallen es muss wohl genau andersherum sein.

Vielen Dank soweit jetzt wird's erst richtig spannend mit den SQL-Befehlen
__________________
Zitat:
Deine Signatur ist zu lang.
c-f-g ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbankdesign mit wiederholung shocky Datenbanken 2 15.01.2007 15:37
Submitbutton sbmitted und reloaded einen Frame? Jojo1 HTML, Usability und Barrierefreiheit 1 26.04.2005 16:23
[Erledigt] [SQL] Datenbankdesign Datenbanken 5 12.04.2005 08:30
Datenbankdesign für Shop mit unterschiedlichen "Typen&a PHP Tipps 2005 27 20.01.2005 16:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbankdesign, datenbankdesign feld status

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:03 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.