PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   SQL / Datenbanken (https://www.php-resource.de/forum/sql-datenbanken/)
-   -   Datenbank Aufbau (https://www.php-resource.de/forum/sql-datenbanken/84764-datenbank-aufbau.html)

joeCrack 14-06-2007 18:53

Datenbank Aufbau
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi,

also ich habe mal ein Bild aus dem DBDesigner von meiner jetztigen Datenbankstruktur gemacht. Ich hab, wie zu sehen, eine Haupttabelle "Kunde" die alle Primärschlüssel der anderen Tabellen enthält. Ist der aufbau ansich so korrekt oder gibt es grobe Fehler. Ich mache solch eine DB nciht alzu häufig und wäre sehr dankbar, wenn ihr mir ein wenig helfen könntet.

Vielen Dank

joe

penizillin 14-06-2007 19:05

1. etwas mehr normalisieren wäre besser, d.h. tabelle "inhaber" soll eine spalte "id" bekommen, über die man aus der tabelle "kunde" (statt ih_name) an die daten des inhabers drankommt. das gilt für alle tabellen, z.b. kt_nr (das programm kann übrigens die verknüprfungen bestimmt auch darstellen).

2. 50 zeichen können schnell knapp werden.

3. was sind "konditionen"?

4. tel, fax und "kd_seit" sind keine integer!

joeCrack 14-06-2007 19:36

wieso sind den tel,fax,kunde seit keine integer?
hmmmm.... ich versteh nicht ganz wie du das meinst....
also als ID würde ich jetzt einfach mal spontan eine running number nehmen zB. aber ich komme doch eigentlich optimal an die daten des inhabers. bei jeder abfrage frage ich nach der gleichheit des namens und hole mir die daten. was würde den eine ID bringen. bzw an was für eine ID hast du gedacht?
vielen dank für die hilfe

penizillin 14-06-2007 19:42

Zitat:

wieso sind den tel,fax,kunde seit keine integer?
warum ist denn 0309999999 oder +1579999999 ein integer? zur erinnerung: integer sind ganze zahlen (i.d.r.) zwischen -2147483648 und 2147483647.

und warum ist ein datum ("kunde seit") eine ganze zahl?

eine id ist numerisch und (meistens) auto increment, lässt also keine zweideutigkeiten zu und lässt sich super indizieren.

joeCrack 14-06-2007 19:54

okey und was schlägst du vor für telefonnummern???
du hast natürlich recht das die indetifikation eindeutiger wird - änder ich dadurch denn die abfrage die ich mache? nein oder ... ich frage natürlich weiterhin nach dem ID der in beiden tabellen gleich ist. also ich benutzte das auto inkrement feld nicht sondern ich füge es einfach nur in den untertabellen hinzu. und es dient nur zur identifikation. also ih_name laß ich auch in der kunden tabelle stehen.

wahsaga 14-06-2007 22:08

Zitat:

Original geschrieben von joeCrack
okey und was schlägst du vor für telefonnummern???
Na ganz bestimmt keinen Zahlen-Datentyp.

Telefonnummern haben nämlich idR. eine führende Null - Zahlen aber nicht.

ministry 14-06-2007 22:57

Zitat:

bei jeder abfrage frage ich nach der gleichheit des namens und hole mir die daten. was würde den eine ID bringen.
Vor allem Geschwindigkeit, weil sich über Strings schlecht indizieren lässt. Außerdem stell dir das Chaos vor, wenn jemand seinen Namen ändert o.ä.

joeCrack 15-06-2007 11:51

Also als erstes nochmals vielen Dank für die Hilfe. Ich verstehe nicht wie ich über die Nummern eine SELECT abfrage machen soll. Wenn in der Kunden-Datenbank eine bestimmte Umsatzzahl eines bestimmten Kunden gesucht wird, dann suche ich doch nach dem Namen. Ich kann doch schlecht nach 22 suchen oder irgendeiner beliebigen Zahl. Woher soll ich denn die assoziation des zu der Nummer gehörigen Namens erhalten. Und wenn jemand seinen Namen ändert dann suche ich ja auch nach dem anderen Namen. Ich habe keine statischen Abfragen gespeichert. Wenn ich nun sage ich frage immer nach "Harry" und der schriebt sich nun neuerding "Harrie" dann wird das auch so bei der suche nach dem Kunden angegeben. Ich schreibe ja NIE in den Quellcode SELECT ..... "Harry" - nur dann hätte ich doch das von dir angesprochene Problem oder nicht? Ich glaube ja das von der Performanze her die Nummern mehr Sinn machen. Nur muß ich dann doch stehts erst per suche des Namens die Nummer des Kunden holen und dann wieder die nächste Abfrage zu machen.

penizillin 15-06-2007 11:56

ist das nicht erschreckend, dass du ein system zu irgendeiner kundenverwaltung schreibst, ohne auch nur ein mal ein buch über sql in der hand gehalten zu haben? die absoluten grundlagen, die in jedem buch, in jeder dokumentation stehen...

du weißt nicht, wie eine suche mittels LIKE funktioniert? informiere dich doch wenigstens ein bißchen über die technologie, mit der du arbeitest, bevor du "drauflos codest".

ministry 15-06-2007 11:57

Zu JOINs bitte auch ganz dringend was durchlesen... :rolleyes:

joeCrack 18-06-2007 16:18

was hat denn die like abfrage damit zu tun und der join ....
warum soll ich ein running number feld da drin haben ....
ein kunde wird gesucht .... dieser ist namentlich bekannt ....
die suche wird also so aussehen das ich in kunde und konto nach dem in beiden tabellen gleichen identifikator schaue ,... nämlich die Kontonummer .... wozu brauche ich hier die running number ... warum indetifiziert diese genauer .... was kann den exakter sein als eine kontonummer ...

wahsaga 18-06-2007 16:25

OffTopic:
Vielleicht fängst du statt mit den vorgeschlagenen Fachbüchern doch lieber erst mal mit einem an, welches dir grundlegende Dinge des schriftlichen Ausdrucks in deutscher Sprache nahe bringt.

joeCrack 18-06-2007 16:39

leute ist doch gut ... ich habe an meiner uni eine datenbankklausur mit 1.5 bestanden und habe bücher gelesen ... trotzdem sind mir einige sachen noch nciht klar .... urteilt doch nicht gleich so schnell nur weil ihr selber die CRACKS seid. simple frage und ich wäre euch dankbar wenn ich eine antwort bekommen könnte.

wahsaga 18-06-2007 16:51

Nein, so "simpel" ist eine Fragestellung eben nicht, wenn du dir nicht die geringste Mühe gibst, diese verständlich und strukturiert zu formulieren, sondern nur Satzfragmente mittels Auslassungszeichen aneinanderreih(er)st.


Ich für meinen Teil habe keine Lust, derart gestellte Fragen erst mal zu dechiffrieren.
Du willst etwas von anderen, also halte ich es für das mindeste, dass du dir bei der Formulierung etwas Mühe gibst.

joeCrack 18-06-2007 17:05

gottohgotohgott. nochmal ohne punkt:

Wenn ich einen Kunden suche und die zu ihm gehörige Bankverbindung. Dann wird der Name eingegeben und dann suche ich in der Tabelle Kunde nach dem Namen, der dazugrhörigen Kontonummer und dann ziehe ich mit durch die Kontonummer die Bankverbindung.
Wie wird durch das auto increment feld meine sucher verbessert?


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

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG