Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

idontknow

unregistriert

31

15.11.2010, 21:00

naja so wie ich das sehe wollt ihr mehrere spalten machen und in jeder Spalte ein Wort der entsprechenden Sprache speichern?

Also sowas:

Deutsch | Englisch | Französisch

x | x |

Oder das Substantiv der Sprache als PK nehmen?
Ich weiß btw was die 1./2./3. Normalform ist, aber muss es nur nochmal nachlesen (habne das in der Schule durchgenommen)

verrueckt1993

Frischling

Beiträge: 85

Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr

  • Private Nachricht senden

32

15.11.2010, 21:12

Nicht mehrere Spalten, mehrere Tabellen. Ich versuche noch einmal, es dir zu erklären.

Also, zuerst würde man das folgendermaßen anlegen:

Deutsch - Englisch - Latein
tun, machen - (to) do - facere

In der 1. NF sähe das dann folgendermaßen aus (die 1. NF besagt, dass in einer Zelle nicht mehrere Werte stehen dürfen.)
Deutsch - Englisch - Latein
tun - (to) do - facere
machen - (to) do - facere

In der 2. NF teilt man das dann in mehrere Tabellen auf:
Deutsch - Englisch
tun - (to) do
machen - (to) do

Deutsch - Latein
tun - facere
machen - facere

idontknow

unregistriert

33

15.11.2010, 21:17

Hmm achso. Dann habe ich aber jedes Wort doppelt in der Datenbank!
Naja mal schauen ich muss da erst nochmal komplett durchsteigen und mit dem C# Wrapper klarkommen :).

verrueckt1993

Frischling

Beiträge: 85

Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr

  • Private Nachricht senden

34

15.11.2010, 21:26

Du hast nur die Wörter doppelt, für die es mehrere Bedeutungen in der anderen Sprache gibt. Durch die mehreren Tabellen sparst du es dir dazu, wenn du von Deutsch zu Englisch übersetzen willst, noch sämtliche anderen Sprachen mitzuladen (so wäre es mit nur einer Tabelle). Dass das auf die Performance schlagen würde, kannst du dir selbst denken, nehme ich mal an (;

idontknow

unregistriert

35

15.11.2010, 21:30

Jap, hab mich natürlich mit der Möglichkeit befasst :).
Aus Performance Sicht sicherlich die beste Idee. Ich werd mal morgen noch kucken was ich überhaupt alles an Featuers haben will ect. und dann entscheiden aber wird wohl mit hoher Wahrscheinlichkeit auf deinen Vorschlag hinauslaufen ;).

Danke an alle Helferchen =D

verrueckt1993

Frischling

Beiträge: 85

Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr

  • Private Nachricht senden

36

15.11.2010, 21:33

Keine Ursache. Wenn du magst, können wir das gerne gemeinsam machen, ich hab noch keine Ahnung von C# und Datenbankanbindung.

Kontaktmöglichkeiten findest du im Profil, wenn du magst (;

idontknow

unregistriert

37

15.11.2010, 21:35

Werd dich mal im Skype adden. Siehste ja dann ich pack meinen FOrennamen in diese Message :D. Bin jetzt nur Off, muss noch lernen ect.

verrueckt1993

Frischling

Beiträge: 85

Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr

  • Private Nachricht senden

38

15.11.2010, 21:39

Okay, ich freu mich drauf (:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

39

15.11.2010, 23:21

Der Ansatz "eine Tabelle pro Sprache" ist aber auch nicht gut (Begründung siehe meinen Beitrag weiter oben). Warum nicht eine Tabelle für Sprachen und eine für die Worte? Damit reduziert es sich auf folgendes:
t_language (ID_lang; char[200]) -> 1:Deutsch,2:Englisch,....
t_word(ID_word, ID_lang, char[200]) -> 1:(1,tun),2:(1,machen),3:(2,do),4:(2,make)
t_word_word(ID_word,ID_word2) ->
(1,2) wäre ein synonymeintrag für tun <-> machen
(1,3) tun <-> do
(2,3) machen <-> do
(4,3) machen <-> make

P.S: Performance wird viel zu oft überbewertet. Viel wichtig ist ein möglichst simpler/allgemeiner/generischer Ansatz. Vorallem sollte man sich bei SQL nicht gedankten über die Performance machen. Immerhin gibt es DBSystem die für mehrere Milliarden Datensätze ausgelegt sind. Im Zweifel nutzt man als ein solches.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

verrueckt1993

Frischling

Beiträge: 85

Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr

  • Private Nachricht senden

40

16.11.2010, 10:12

Hm, guter Einwand. Ich hab mir das ganze seit gestern Abend mal durch den Kopf gehen lassen. Vom Grundgedanken her hätte ich jetzt für jede Entität und für jede Beziehung eine Tabelle angelegt. Man könnte also eine Tabelle für jede Sprache anlegen, in der jedem Wort eine ID zugewiesen wird. Dann könnte man Tabellen für die Beziehungen anlegen, die nur die beiden IDs der Wörter enthalten. Ich denke, so könnte man auf einen gemeinsamen Nenner kommen, oder? Hier wird dann zwar für jede Sprache eine Tabelle angelegt, die Redundanzen der Wörter allerdings vermieden, was ja das eigentliche Problem war.

Zur Performance: Es ging mir mehr um die saubere Programierung als um die reine Performance. Klar würde man erst bei größeren Datensätzen Probleme bekommen, allerdings wird man ohne zu normalisieren nicht weit kommen.

Werbeanzeige