Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Brauche Hilfe für meine Hausarbeit

Begonnen von Sash, Januar 19, 2015, 18:24:49

⏪ vorheriges - nächstes ⏩

Sash

Tag liebe Foren-Kameraden,

für eine Hausarbeit muss ich mich momentan mit Access beschäftigen. So richtig viel Erfahrung habe ich aber leider noch nicht sammeln können. Deswegen kam ich auch recht schnell an die Grenzen meiner Kenntnisse. Vielleicht könnt ihr mir ja mit freundlichen Rat beseite stehen.
Hier folgend kommt die Aufgabenstellung Wort für Wort.

In den folgenden Aufgaben geht es um die Erstellung einer Datenbank, die Informationen über Bestellungen (z. B. in einem Internet-Shop) enthält.
1. Entwurf im ER-Modell: Die zu erstellende Datenbank soll folgenden Entities enthalten:

  • Kunde mit den Attributen Kundennummer (Primärschlüssel), Vorname, Nachname
  • Bestellung mit den Attributen Bestellnummer (Primärschlüssel), Datum, bezahlt, ausgeliefert
  • Artikel mit den Attributen Artikelnummer (Primärschlüssel), Beschreibung, Preis

und folgende Beziehungen Attribute in Klammern):

bestellt: Beziehung zwischen Kunde und Bestellung, wobei jeder Bestellung genau ein Kunde zugeordnet ist. Einem Kunden können aber mehrere Bestellungen zugeordnet sein.
enthält (Anzahl): Beziehung zwischen Bestellung und Artikel. Eine Bestellung enthält i. a. mehrere Artikel. Umgekehrt kann ein Artikel in verschiedenen Bestellungen auftreten. Attribut ist die Anzahl des jeweiligen Artikels in der Bestellung.

Stellen Sie den Entwurf im ER-Modell mit allen Entities, Attributen, Beziehungen und dem Beziehungstyp (1:1, 1:n, n:m) auf einem Blatt Papier grafisch dar.

2. Umsetzung ins relationale Modell: Welche Tabellen benötigen Sie für die Da-tenbank im relationalen Modell? Überlegen Sie insbesondere, wie die Beziehung "enthält" umgesetzt wird. Welche Spalten benötigen die Tabellen? Verwenden Sie sinnvolle Datentypen.
Hinweis: Eine n:m-Beziehung muss mit einer eigenen Tabelle umgesetzt wer-den. Der Primärschlüssel wird den aus den beiden Fremdschlüsseln der an der Beziehung beteiligten Entities gebildet. In unserem Fall repräsentiert die Tabelle der Beziehung "enthält" die Bestellpositionen. Nennen Sie diese Tabelle "Position".


  • Ergänzen Sie Ihr ER-Modell um das Relationenschema.
  • Legen Sie eine neue (zunächst leere) Datenbank Bestellungen_[Ihr Nach-name] an.
  • Erstellen Sie die Tabellen mit den geeigneten Feldern und Datentypen im Entwurfsmodus.
  • Stellen Sie mit Hilfe des Beziehungsfensters die Beziehungen zwischen den Tabellen her.


3. Dateneingabe:
Legen Sie zunächst mindestens 5 Kunden und 10 Artikel an.
Legen Sie mindestens 5 Bestellungen an (wobei mehreren Kunden auch mehr als eine Bestellung zugeordnet sein sollte, dafür können auch Kunden ohne Bestellung dabei sein). Um in der Bestellung den Kunden einzustellen, ver-wenden Sie ein Kombinationsfeld.
Verwenden Sie bei der Tabelle "Position" Kombinationsfelder zur Einstellung der Bestellung und des Artikels. Geben Sie für jede Bestellung mehrere Artikel an.

4. Formulare: Erstellen Sie zur Vereinfachung der Dateneingabe folgende Formu-lare

  • Je ein Autoformular zur Erfassung von Kunden und Artikeln
  • Ein gemeinsames Formular zur Erfassung einer Bestellung mit ihren Positionen
[/i]


Die Tabellen für Artikel, Kunde und Bestellung sind kein Problem. Beiden Beziehungen bin ich mir nicht hundertprozentig sicher. Im wesentlichen habe ich folgende Probleme.

Frage 1: Wie soll ich die Tabelle "Positionen" richtig erstellen. Ich habe der Bestellnummer, der Artikelnummer und der Kundennummer immer den Autowert zu gewiesen. Wenn ich die Tabelle "Position" erstelle, muss ich dann als Felddatentyp "Zahl" verwenden?

Frage 2: Habe ich dann noch Primärattribute zu vergeben?

Frage 3:  Wie kann ich die Nummern (Artikel-Nr, Bestellung-Nr, Kunden-Nr) als "Autowert anlegen" und sie ab 10000 an loszählen lassen?

Frage 4: Wie verwirkliche ich die n:m Beziehung?
Mein Gedanke hier war folgender:
Bestellung 1-->n Position
Position n-->m Artikel
Macht das Sinn?

Wie ihr wahrscheinlich richtig erkennt, habe ich praktisch null Ahnung von dem Ganzen. Umso mehr hoffe ich auf eure Hilfe. Ich bin euch auf jeden Fall schon jetzt dankbar.

Gruß Sascha
  •  

database

Grüß dich Herr Kamerad,

hier findest du keine Selbstbedienungshausaufgabenerstellungsgemeinschaft - bitte dieses nicht zu überlesen!

Was hast du denn bislang über Datenbankerstellung gelernt?
Hast du dich mit dem Thema Normalisierung beschäftigt?
Was ist ein ERM?
Was ist ein Relationenmodell?

Hmmmm....

zu 1)
Was ist ein Autowert in Access? Welchen Datentyp stellt dieser Autowert dar?
Autowerte entsprechen dem Datentyp 'Long Integer' daher muss ein zugeordneter Fremdschlüssel ebenfalls vom Typ 'Long Integer' sein.

zu 2)
Wenn du die Tabelle 'Positionen' meinst ... was steht in der Angabe?
Du sollst aus den beiden Fremdschlüsseln in dieser Tabelle einen Primärschlüssel erzeugen.
Dieses wird im Tabellenentwurf durch markieren der entsprechenden Felder und Klicken auf das Schlüsselsymbol gelöst

zu 3)
Wenn du Autowerte verwendest beginnen diese in der Regel bei 1 zu zählen.
Man spricht in dem Fall z.B. auch von der ID eins in der Tabelle gespeicherten Datensatzes.
Meist werden diese Primärschlüssel mit dem Namen der Tabelle und dem Zusatz ID benannt   also   ArtikelID, KundenID, etc.
In deinem Fall interpretiere ich die Angabe aber so, dass in deinen Tabellen keine Autowerte sonden die realen Artikelnummern, Kundennummern und Bestellnummern als Primärschlüssel eingesetzt werden sollen.
Den Startwert des Autowerts kann man durch einen SQL-Befehl festlegen - was aber hier keinen Sinn ergibt,
da 'sprechende' Nummern wie Rechnungsnummern, Bestellnummern, Artikelnummern, Kundennummern usw. - wie auch in deinem Fall - nicht aus Autowerten gebildet werden sollen (Gefahr von 'Lücken' in fortlaufenden Nummernkreisen!).

zu 4)
Ich gebe dir eine kleine Hilfestellung zum ERM und dem Relationenmodell - die Antwort zur Frage 4 solltest du daraus ablesen können. Das Feld 'Positionsnummer' in der Tabelle 'tblPositionen' ist ein KANN und kein MUSS

So und dann schaust du dir die Links in meiner Signatur an - speziell Nummer 5 und in der Signatur des Benutzers DF6GL findest du die Links Nummer 1 und 1a. Hier findest du ein Menge Informationen über Datenbankdesign, Tabellengestaltung und das Thema Normalisierung - schau da unbedingt rein!

  •  

Sash

Hallo Database,

zuerst mal ein großes Danke Schön für deine Hilfe. Ich wollte nicht den Eindruck erwecken, dass ich hier meine Hausarbeit von anderen erstellen lasse. Ich habe auch nur einen kleinen anfänglichen Teil gepostet. Es gibt noch einige nachvollgende Aufgaben an denen ich mich auch immer erst mal alleine probieren werde. Der Grund warum ich nach Hilfe gesucht hatte ist einfach der, dass ich gar nicht weiter gekommen bin. An der Stelle noch mal Danke Schön. ;) Das sollte mich um einiges weiterbringen, hoffe ich. Ich führe mir deinen Input nochmal heute Abend zu Gemüte.

Zu deinen Fragen... Gelernt hatte ich noch nicht viel von Access. Wir hatten in der Uni nur einen Wochenends-Crash-Kurs gehabt (Ich mache meinen Master in Maschinenbau neben den Beruf). Da kam leider nicht sehr viel wissen herum. Den Rest sollten wir uns irgendwie selbst aneignen. So Dinge wie Relationsmodell und ER-Modell hatten wir gelernt. Von Normalisierung höre ich heute zum ersten mal.

Die Antwort zu 1 und 3 habe ich verstanden. Das sollte kein Problem sein. Bei der 2 habe ich jetzt beschlossen die Artikel-Nr, etc. nicht als Autowert zu erstellen. Entweder ich vergebe extra Nummern oder ich addiere den Autowert auf den einen fixen Wert wie 10.000. So ala Excel falls das möglich ist.

Bei der 4 bin ich leider noch ratlos, weil die Tabelle "Positionen" ja ausdrücklich gefordert wurde???

Ich versuche mich heute abend noch mal dran, wenn ich von der Arbeit zurück komme. Bin offiziell noch am arbeiten ;)

Und jetzt zum dritten mal Danke Schön. Du hast mir schon mal weiter geholfen  :)
  •  

database

Alles klar, ich wollte es nur kurz erwähnen, da hier immer wieder in der Richtung Versuche gestartet wurden Hausaufgaben 'abzuziehen'  ;)

Das mit der Tabelle 'Positionen' war so gemeint, dass sie im Relationenmodell bereits enthalten ist und den Vorgaben entsprechen sollte.
Das Feld 'Positionsnummer' habe ich als 'Kann-Feld' eingetragen, dazu gab es keine Vorgabe - so ließen sich die einzelnen Bestellpositionen bereits auf Tabellenebene durchnummerieren - dieses ist auch im Zuge einer Abfrage möglich, hat aber den Nachteil, dass eine Position keine fixe Nummer erhält (Sortierung in der Abfrage verändert u.U. die Nummer der Position) .

Zitat...oder ich addiere den Autowert auf den einen fixen Wert wie 10.000

Davon würde ich persönlich abraten, da du im Falle einer Datensatzlöschung ein 'Loch' in der fortlaufenden Nummerierung erzeugst.

Du kannst eine fortlaufende Nummerierung auch durch ...

Max(Artikelnummer) + 1

während der Eingabe im Formular - und nur dort sollten Daten eingegeben werden - erzeugen. Wenn du Artikelnummer z.B. per VBA vergibst ist eine der Möglichkeiten:


Me.Artikelnummer = NZ(DMax("Artikelnummer","tblArtikel")+1,10000)


Diesen Code hinterlegst du im Ereignis 'Nach Aktualisierung" z.B. des ersten Feldes im Formular, das nicht 'Artikelnummer' ist oder im gleichen Ereignis des FORMULARS.
Der Code erzeugt eine neue Artikelnummer, die um 1 höher ist als die letzte und wenn noch keine vorhanden ist wird 10000 eingetragen.

Bei weiteren Fragen und Unklarheiten ... nachfragen  :)
  •