phpbuddy.eu
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 23.03.2004, 19:26   #1
TP-Supporter
 
Benutzerbild von P4r4
 
Registriert seit: Feb 2002
P4r4 ist auf einem guten Weg

ERM - Wie füge ich am günstigsten Daten ein?


Hi,

folgendes:
Ich habe ein Personalien-Datenbankmodell normaliesiert.

Ich habe einen Entity-Typ namens personalien mit folgenden Attributen:

id, email, handy, gebid, nameid, vornameid, strasseid, hausnrid, plzid, ortid, lk1id, lk2id, telid

Die Attribute mit der Endung id stehen jeweils in einer n:1 Beziehung zu einem Entity-Typ dessen Namen identisch mit dem Teil vor id ist.
Bspl.:
zu gebid gehört das Entity-Typ: geb;
zu nameid gehört das Entity-Typ: name;
...
(AUßER: lk1id, lk2id. Dazu gehört der Entity-Typ lk mit den Attributen: lkid und lkname)



Diese Entity-Typen haben jeweils die Attribute (z.B. bei geb) gebid und geb.

Die Dazugehörigen Tabellen habe ich auch schon in MySQL erstellt. (Dies SQL-Datei habe ich angehängt)
_______________
Wenn ich nun eine Person in die Datenbank aufnehmen will, wie setze ich das am sinnvollsten um?

Zunächst müsste doch überprüft werden, ob bereits ein identischer Eintrag in einer den Tabellen geb, name, vorname, strasse, hausnr, tel, lk, ort oder plz vorhanden ist.

Wenn keiner vorhanden ist, muss ein neuer Eintrag in den entsprechenden Tabellen erstellt und die neue id in die taballe personalien übernommen werden.
Wenn einer vorhanden ist, so muss nur die id des bereits vordhandenen Eintrags übernommen werden.

Wie kann ich nun dies am besten mit einer möglichst geringen Anzahl von SQL-Querys umsetzen?

(Einigermaßen verständlich? )
Angehängte Dateien
Dateityp: txt personalien.txt (1,8 KB, 42x aufgerufen)
__________________
"Rücksichtslose Kritik ist allein der freien Wissenschaft würdig, und jeder
wissenschaftliche Mann muß sie willkommen heißen, auch wenn sie auf ihn
selbst angewendet wird"
(Friedrich Engels 1820 - 1895).
___________
Smilies gefällig?
P4r4 ist offline   Mit Zitat antworten


Alt 23.03.2004, 20:13   #2
seb
TP-Veteran
 
Registriert seit: Jan 2002
seb bringt sich richtig einseb bringt sich richtig ein
Wow...dafür dass das, wenn ich die in deiner Erklärung vorkommenden Begriffe "lk1" und "lk2" richtig interpretiere, eine Abiturienten-Datenbank werden soll, gehst du die Sache ganz schön gründlich an....ein bisschen zu gründlich, würd ich sagen.

Welchen Sinn soll es haben, für jede Eigenschaft einer Person eine eigene Tabelle anzulegen, wenn keine davon mehr speichert als einzigen Wert?

Okay, du sparst vielleicht ein paar Bytes an Speicherplatz ein, wenn es im Jahrgang 10 Leute gibt, die "Matthias" heißen, und der String "Matthias" so nur 1x statt 10x gespeichert werden muss.

Aber auch nur auf den ersten Blick. Für mich sieht das nach ner Milchmädchenrechnung aus: Wahrscheinlich benötigen die zusätzlichen Tabellendefinitionen mehr Speicherplatz, als du damit bei ein paar hundert gespeicherten Personen einsparst.

Und selbst bei einer Million Datensätzen hättest du bestenfalls ein paar hundert Kilobyte rausgeholt.

Ich bezweifel sehr, dass das den zusätzlichen Implementierungsaufwand und den Performanceverlust durch das bei jedem Lesevorgang erforderliche "Zusammensuchen" der Daten aus den verschiedenen Tabellen (wenngleich der natürlich genauso unter die Kategorie "praktisch nicht wahrnehmbar" fällt) wert ist.

Fazit: Bleib einfach bei einer Tabelle. Damit würde das Hinzufügen einer neuen Person exakt einen Query kosten - das wären dann so wenige wie möglich .

Geändert von seb (23.03.2004 um 20:22 Uhr).
seb ist offline   Mit Zitat antworten
Alt 23.03.2004, 21:30   #3
TP-Supporter
 
Benutzerbild von P4r4
 
Registriert seit: Feb 2002
P4r4 ist auf einem guten Weg
Hi,

danke für deine Antwort.

Es ist nichtmal für einen Jahrgang ... es ist nur für einen Kurs

Also es ist für unseren Informatikkurs. Wir behandeln gerade Datenbanken und mein Lehrer hat mich gebeten einen Part daraus zu übernehmen. Dabei soll eine Kurs-Datenbank erstellt werden, in der wir weitgehendst normalisieren.
Grundsätzlich hast du recht! Es würden kaum Anomalien auftreten, wenn ich EINE Tabelle nehmen würde. Nur wir sollen das halt so lösen, um das Prinzip zu verdeutlichen.

Das ERM habe ich schon entwickelt und vorgestellt und in Tabellen einer MySQL-DB haben wir das auch schon umgesetzt.
Das nächste mal würden wir dann an das Eingeben der Daten gehen. Wie das geht ist mir schon klar, nur wie und wo kann ich mir Querys dabei sparen?
Gibt es eine Möglichkeit eine Art if-Anweisungen in ein Query einzubauen?
... Ansonsten würde ich den großteil über PHP lösen.

Danke
Para
__________________
"Rücksichtslose Kritik ist allein der freien Wissenschaft würdig, und jeder
wissenschaftliche Mann muß sie willkommen heißen, auch wenn sie auf ihn
selbst angewendet wird"
(Friedrich Engels 1820 - 1895).
___________
Smilies gefällig?

Geändert von P4r4 (23.03.2004 um 21:32 Uhr).
P4r4 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
ERM - Wie füge ich am günstigsten Daten ein? ERM - Wie füge ich am günstigsten Daten ein?
« Caching Probleme | thumbnails: habe bild in wirrwarr uebersetzt »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:09 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67