Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Newbe braucht hilfe

Begonnen von alx, Februar 03, 2012, 14:23:37

⏪ vorheriges - nächstes ⏩

alx

Hi,

ich bin ein Access Newbe und würde gerne eine Datenbank erstellen.
Allerdings raffe ich das mit den Beziehungen nicht und überhaupt brauche ich mal einige Tipps von fähigen Leuten.

Mit der Datenbank handelt es sich um ein Hobby-Projekt. Ich möchte mit der DB Informationen aus einem (Browser)Spiel bündeln.

Die Datenbank soll folgende Informationen enthalten:

Spielername
Stadtname
Stadtposition
Stadteinwohner
Land
Stadtverteidigung
Stadtforschung

Im großen und ganzen habe ich aus jedem der Punkte oben eine Tabelle erstellt.

Nun soll die Datenbank mir verschiedene Möglichkeiten der Abfrage geben. z.B. "Welche Stadt ist in welchem Land und wie heißt der dazugehörige Spieler, etc." Auch andersrum soll das funktionieren: "Welche Städte befinden sich in Land XY".
Darüberhinaus soll diese Datenbank auch eine History haben, also "wieviele Einwohner hatte Stadt XY vor 5 Tagen" oder "zu welchen Ländern gehörte die Stadt bisher".

Außerdem möchte ich eine einfache Möglichkeit die Daten über ein Formular in die entsprechenden Tabellen schreiben.

Wie geh ich am besten vor?


Danke schonmal für eure Hilfe

mfg
alx

oma

Hallo alx,

herzlich willkommen im Forum.

Die Beziehungen zwischen Tabellen in einer DB sind sehr wichtig, das Verständnis basiert auf das Verständnis von relationalen Datenbanken.
In einer Db sollen konkrete Informationen jeweils nur einmal gespeichert werden, d.h. es sollem Datendedundanzen vermieden werden.
Zunächst mal ein triviales Beispiel: Stelle dir vor, in der DB sollen zu einer Person immer wieder verschiedene Beiträge gespeichert werden u. der Tabellenaufbau sähe wie folgt aus:

Max Müller  50€    03.03.2010
Max Müller  30€    04.03.2010
Eva  Bruhn  55€   11.11. 2010
Max Müller  44€    23.12.2009

Das hätte zur Folge, dass du bei jeder Beitragserfassung immer den Namen vollständig eingeben müsstes (und bei weiteren Daten wie Adresse auch diese!) Da das sehr unzweckmäßig wäre, werden 2 Tabellen angelegt!
Eine Adresse tblPersonen mit allen Daten zur Person und eine Tabelle tblBeiträge mit den Zahlungseingängen. Damit nun ein Zusammenhang zwischen den Tabellen besteht, erhält die Tabelle tblPersonen für jeden Datensatz ein Feld mit einen einmaligen Wert - Primärschlüssel- und die Tabelle tblBeiträge erhält dien Wert - Fremdschlüssel- sozusagen als "Verweis" auf die Person. Es besteht damit eine 1:N Beziehung: zu einer Person können n (beliebig viele) Beiträge erfasst werden.

Soviel mal in grober Form zu Beziehungen. Hierzu gibt es im Netz zahlreiche Beiträge!!

Zu deinem Anliegen: so wie ich die Bedeutung aus den Feldnamen verstehe musst du zunächst nur eine Tabelle mit allen den Feldern anlegen. Mache mal so eine Tabelle mit einigen Beispieldatensätzen und stelle diese DB ins Forum (Bitte inAccess200) und wir können dann gemeinsam das Ding weiterentwickeln.

Gruß Oma
nichts ist fertig!

Jonny

Hallo Oma,
du hast einen Tippfehler nicht Acc 200 sonder Acc 2000 - Acc 2003.

Gruß

Johann

alx

#3
Hallo Oma,

Ich habe jetzt mal den 1. Entwurf mit 2 Datensätzen fertig gemacht. Es fehlen aber noch Beziehungen und evtl. auch Felder für Fremdschlüssel.

Die Datenbank ist mit Access 2010 erstellt.

Gruß
alx

alx

hab jetzt nochmal eine .mdb datei erstellt und in die .zip Datei mit reingeschoben

[Anhang gelöscht durch Administrator]

database

Hallo,

kannst du vielleicht auch noch eine kurze Erklärung dazu abgeben, wie die Daten in den Tabellen zusammenhängen sollen?

ZitatDie Datenbank soll folgende Informationen enthalten:

Spielername
Stadtname
Stadtposition
Stadteinwohner
Land
Stadtverteidigung
Stadtforschung

Vielleicht sehe ich zu schlecht oder habe einen anderen Fehler, mit diesen Infos und den Feldbezeichnungen in den Tabellen kann ich keine rechten Kombinationen herstellen  :-\
Hmmmm....  wobei die 'Tabelle' oben schon massive Mängel aufweist - der Spielername hat da nichts zu suchen!



oma

Hallo alx,

mir geht es genauso: Ich habe mir deine Tabellen angesehen, kann aber keine Zusammenhänge erkennen, da mir die ganzen Feldbezeichnungen nix sagen.
Was ist Alliance , was ist die Power der gesamten Alliance usw....
Für jemanden, der sich in der Spielewelt nicht auskennt (so wie ich) kann mit den Feldbeschreibungen nichts anfangen.
Du müsstest also mal die einzelnen Felder und deren Zusammenhang erläutern, damit wir dann den datentechnischen Zusammenhang herstellen können.

Gruß Oma
nichts ist fertig!

alx

Hallo,

ich versuche mal die Grundzüge zu erklären.

Ein Spieler hat natürlich einen Spielernamen. Diesen Spielernamen kann manchmal (wenn er ein bestimmtes Item findet) vom Spieler geändert werden.
Unter dem Speilernamen hat der Spieler eine Stadt, die einmalige Koordinaten hat. Die Stadt kann manchmal (wenn er ein bestimmtes Item findet) zu anderen Koordinaten teleportiert werden.
In der Stadt, lebt die Bevölkerung. Je mehr Bevölkerung jemand hat, desto größer ist seine Macht(Power). Ich habe in der Tabelle einfach Bevölkerung mit Power gleichgesetzt, da im Spiel immer von Power und nie von Bevölkerung gesprochen wird. Die Power bestimmt das Level des Spielers und seinen Titel.
Jeder Spieler kann zusätzlich noch 6 Außenposten errichten. Diese haben wie die Stadt koordinaten die sich manchmal ändern können.

Ein Spieler kann Mitglied eines Landes (Allianz) sein. Eine Allianz kann maximal 120 Spieler haben. Es findet zum Teil ein reger Wechsel, der Spieler zwischen den Allianzen statt. Die Power der Allianz ist eine simple Addition der Power der Spieler.

Zusätzlich können vom Spieler noch Truppen(Troops) gebaut und Technologie(Research) erforscht werden.


Oben hab ich ja geschrieben, dass ein Spieler, seinen Namen, seine Positionen(Stadt und Außenposten) und Allianz ändern kann. Ich würde gerne dafür eine Art History haben.


ich glaube das wars.. :)

ich habe ein wenig weiter vor mich hin gebastelt und das ist bis jetzt dabei rausgekommen. Leider werden die Formulare und Abfragen nicht gespeichter, wenn ich als .mdb speicherer.

[Anhang gelöscht durch Administrator]

alx

Hallo,

Ich hab jetzt alles überarbeitet, nochmal ganz neu angefangen.

Das 1. formular zum anzeigen der gewünschten Spielerdaten funktioniert auch wunderbar.
Leider hapert es mit dem Eintragen von neuen Daten in den Unterformularen.

In den Unterformularen habe ich die History (s.o.) realisiert.

Evtl weiß ja jemand von euch was ich da falsch gemacht habe.


Gruß
alx


[Anhang gelöscht durch Administrator]

alx

Hallo mal wieder,

obwohl hier keine Antworten reinkommen, habe ich meine Datenbank, was das Anzeigen der Daten betrifft, fast fertig.

Leider funktioniert das Anlegen neuer Datensätze in einem der Formulare nicht.
Ich habe auch schon das Problem identifiziert.
In diesem Formular gibt es ein Unterformular das seine Daten aus einer Abfrage erhält.

Das Ergbenis dieser abfrage schränke ich durch folgendes Kriterium ein:

[Forms]![frmPlayer]![tblPlayer_ID]

Nun ist mir klar, dass bei einem neuen Datensatz vor der Eingabe neuer Daten dieses Feld noch nicht gefüllt ist.
Evtl. ist dieses Problem auch für eine Fehlermeldung verantwortlich, die ich bekomme wenn ich über diese Abfrage an die zugehörigen Tabellen neue Datensätze anfügen möchte:
Es können keine Datensätze eingefügt werden, der Verknüpfungsschlüssel der Tabelle 'tblPlayerPower'ist nicht in der Datensatzgruppe enthalten.

Darüber hinaus, werden mir Datensätze nicht angezeigt, wenn nicht mindestens ein Feld in einer verknüpften Tabelle mit referentieller Integrität gefüllt ist. Die Felder also NULL sind.


Wie löse ich dieses Probleme?

gruß
alx


[Anhang gelöscht durch Administrator]

bahasu

Zitat von: alx am Februar 10, 2012, 00:19:50
Leider funktioniert das Anlegen neuer Datensätze in einem der Formulare nicht.

Hi,
es wird leichter, sich in einer total fremden "Welt" zurechtzufinden, wenn Du mitteilst, welches der Formulare betroffen ist. Zum Suchen, wo denn nun die Macke ist, fehlt mir die Zeit.

Harald
Servus

alx

Hallo Harald,

Das Hauptformular ist frmPlayer
Im Unterformular ufoAlli kann ich das Feld Datum, bei neuen Datensatzes, nicht füllen.
Im Unterformular ufoPower bekomme ich die Fehlermeldung von der ich oben geschrieben habe.
Spieler werden nicht angezeigt wenn die Tabellen tblResearch und tblTroops keine Datensätze für diesen Spieler enthalten.

ich hoffe mit diesen Informationen steigst du durch meine "Welt" durch... :)

Gruß
alx

MzKlMu

Hallo,
in allen Deinen Formularen ist ein Wust von Dingen falsch.
Verknüpfen Von/Nach muss immer über ein Primärschlüssel und ein Fremdschlüssel laufen. Im Formular frmAlli also "Alliance_ID" > "ID". Wenn die PKs alle ID heisen, kann eine Vernüpfung Hafo/Ufo niemals über 2 IDs laufen.
Dein Abfrage für das Ufo (frmAlli) ist viel zu kompliziert. Auch die Zwischenabfrage ist übeflüssig. Nimm in die ein Abfrage für das Ufo nur die Tabellen/Felder mit auf die Du im Ufo sehen willst.

Das alles gilt sinngemäß für alle Formulare mit Ufo.

Du solltest auch erst mal grundsätzlich einiges bereinigen:
Nenn die PK Felder nicht einfach ID, sondern Player_ID den Fremdschlüssel dazu PLayer_ID_F. Du muss immer zweifelsfrei wissen welchen Schlüssel Du anprichst.
Weiterhin in allen Beziehungen RI setzen. Verknüpfungstyp immer auf 1 lassen (den Typ nur in Abfragen ändern, bei Bedarf).


Änder das mal, dann lädst Du die DB noch mal hoch.
Gruß Klaus

alx

Hallo,

ich habe jetzt die Primärschlüssel eindeutig benannt und aus den Abfragen die Felder rausgeworfen, die ich nicht im UFO sehen möchte. Leider funktioniert nun keins der Formulare mehr.

Deshalb habe ich die zwei Hauptformulare frmAlli und frmPlayer mit den dazugehörigen UFOs neu gemacht.
Ich kann nun zwar einen neuen Spieler erstellen aber wenn ich neue Daten im UFO ufoPwr oder ufoAlli bekomme ich weiterhin die oben beschriebene Fehlermeldung:

Es können keine Datensätze eingefügt werden, der Verknüpfungsschlüssel der Tabelle 'tblPlayerPower' ist nicht in der Datensatzgruppe enthalten.

Im Anhang, die geänderte Datenbank


Gruß
alx



[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

nimm für das Pwr-Ufo die gespeicherte Abfrage (qryPower) anstelle des falschen SQL-Strings in der Datenherkunft des Forms.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access