Frage zu Tabellenstruktur für Kunden

alex130

Erfahrenes Mitglied
Hallo,
ich habe eine Frage und zwar, muss ich für eine Anwendung die Kunden in einer Datenbank speichern nun stellt sich die Frage, ob ob ich Privat- und Firmenkunden in getrennten Tabellen speichern soll.
Ich habe hier mal zwei Möglichkeiten aufgeschrieben.

Möglichkeit 1:
Code:
Kunden:
- ID
- Strasse
- Plz
- Ort
- Personenart (Firma oder Privat)
....

Privatkunden:
- ID (ist ein ForeignKey, mit dem diese Tabelle mit der Kunden Tabelle zusammen hängt.)
- Vorname
- Nachname
....

Firmenkunden:
- ID (FK)
- Firmenname
....
Das wäre die erste Möglichkeit, also dass alle Kunden in der Tabelle Kunden stehen und dort sind halt alle Felder, welchen es bei beiden Kundengruppen gibt, die Kundenspezifischen Daten sind in der jeweiligen Tabelle.

Möglichkeit 2:
Code:
Kunden:
- ID
- Personenart
- Vorname
- Nachname
- Strasse 
- Plz 
- Ort
- Firmenname
....
Hier würden also alle Kunden in einer Tabelle stehen.

Kann mir bitte jemand helfen, ich weiß nun nicht wie ich es lösen soll.
Lieber wäre mir natürlich Methode 2, aber ich denke für die Performance besser wäre Methode 1, oder?
Andererseits könnte ich ja bei der Seite "Kunden anzeigen" abfragen, um welche Personenart es sich handelt und dann nur die jeweiligen Felder auslesen, dann dürfte der Unterschied bezüglich Performance doch eigentlich nicht so groß sein, oder?

Ich hoffe ihr versteht, was ich meine und könnt mir helfen.
Danke

LG Alex
 
Hi,

welche Felder haben denn Firmenkunden, die Privatkunden nicht haben (und umgekehrt)? Ist der Unterschied so groß?

Andererseits könnte ich ja bei der Seite "Kunden anzeigen" abfragen, um welche Personenart es sich handelt und dann nur die jeweiligen Felder auslesen, dann dürfte der Unterschied bezüglich Performance doch eigentlich nicht so groß sein, oder?

Der Punkt ist wohl eher, dass Du an der Stelle entscheiden musst, welche Tabelle Du joinen musst.

LG
 
Hi,
danke für die schnelle Antwort.
Also bei den Privatkunden habe ich 12 Felder ohne die ID.
Bei Firmenkunden habe ich ca. 3 Felder ohne die ID.
LG Alex
 
Hi,

also die reine Anzahl der Felder spielt da jetzt erstmal nicht die wichtigste Rolle (Datenbankdesign gestaltet sich da schon ein bischen komplizierter...).
Was sind das für Felder? Welche haben alle Kunden, welche nur Privatkunden und welche nur Firmenkunden?

LG
 
Code:
Kunden:
- ID
- Personennr
- AdressVerwendCd
- Personencd
- PersArtCd
- LandesCd
- PLZ
- Ort
- Strasse
- Hausnr
- Zusatz
- Kto
- BLZ
- Bank
- KomGeschaeftlich
- KomPrivat
- KomMobil
- KomEmail
- KomSonstiges

Firmenkunden:
- ID
- Kurzname
- Name
- SonstPersArtCd

Privatkunden:
- ID
- Vorname
- Familienname
- Geschlecht
- Gebdat
- Staatsb
- FamilienstandCd
- Titel
- Beruf
- LegArtCd
- LegDatum
- LegNummer
- LegBehoerde

So das wären die 3 Tabellen.
Mich würde halt jetzt interessieren, welche Nachteile ich hätte, wenn ich alles in einer Tabelle mache...
Danke

LG Alex
 
Hi,

Mich würde halt jetzt interessieren, welche Nachteile ich hätte, wenn ich alles in einer Tabelle mache...

das würde halt einiges an Speicherplatz verschwenden, da immer einige Felder leer sind.
Ob das Aufteilen in 3 Tabellen für Dich Nachteile bringt, hängt davon ab, welche Art von Abfragen auf die Tabellen Du so benötigst.

LG
 
Ok, also wäre Methode 1 besser, oder?
Von den Abfragen her stört es mich eigentlich nicht wirklich, da ich eben entweder einen Left JOIN mache, oder ich frage zuerst ab, welche PersonenArt es ist...
Danke

LG Alex
 
Hi,

Ok, also wäre Methode 1 besser, oder?
Von den Abfragen her stört es mich eigentlich nicht wirklich, da ich eben entweder einen Left JOIN mache

Du müsstest (wenn Du Kunden aus beiden Kategorien abfragen willst) 2 JOINS machen.
Methode 1 kann zu Lasten der Perfomance gehen, das kommt auf Deine Abfragen an, da musst Du Dich halt mal einlesen und evtl. benchmarken.

LG
 
Ich dachte von der Performance ist Methode 1 besser, da nicht so viele leere Felder sind...?
LG Alex
 

Neue Beiträge

Zurück