Welche Struktur für Adressdatenbank?

Hallo,

ich bin gerade dabei, eine Datenbank einzurichten, die einfach Adressen von irgendwelchen Leuten speichern soll. Mein erster Gedanke war ja eine Tabelle mit je einer Spalte für jedes gewünschte Attribut. Also eine Spalte „Name“, eine „Vorname“, usw. So ist wohl der Standart für solche Sachen, oder?
Aber wie wäre es denn, wenn ich lediglich eine dreispaltige Tabelle anlege, die die Spalten „ID“ (eindeutige ID), „Attribute“ (z.B. Name) und „Value“ (z.B. Huber) hat? Wäre doch viel flexibler. Wenn jetzt plötzlich noch eine Mail-Adresse zu den Adressen hinzukommen soll, brauch ich keinerlei Datenbankänderungen. Ok, die Abfrage wird wohl etwas komplexer.
Wie seht ihr das? Was ist das beste Konzept?

Gruß
Jochen

Da brauchst noch ein Feld…

Oder wie willst Du sonst sagen können, welcher physische Datensatz zu welchem logischen Datensatz gehört?

Was ich davon halte…?
Nun - kein Kommentar… Leg doch zwei Tabellen an - eine feste Tabelle mit den Standardattributen und eine variable Tabelle (ähnlich wie Dein Vorschlag) mit den benutzerdefinierten Feldern.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Aber wie wäre es denn, wenn ich lediglich eine dreispaltige
Tabelle anlege, die die Spalten „ID“ (eindeutige ID),
„Attribute“ (z.B. Name) und „Value“ (z.B. Huber) hat?

Hab ich mich wohl etwas mißverständlich ausgedrückt. Die „ID“ soll natürlich bei allen Sätzen, die zusammengehören gleich sein. Nur eine „Gruppe“ von Datensätzen, die eben z.B. einer kompletten Adresse entspricht, soll eindeutig identifizierbar sein.

Da brauchst noch ein Feld…

Oder wie willst Du sonst sagen können, welcher physische
Datensatz zu welchem logischen Datensatz gehört?

Dann hat sich das wohl erledigt, oder?

Wenn ich jetzt z.B. 1000 Adressen habe und jede Adresse hat 10 Attribute, habe ich schon 10000 Datensätze. Bei der anderen Variante wären es nur 1000, aber eben größere. Wie wirkt sich das z.B. aufs Suchen oder den Speicherplatz der Datenbank aus?

Gruß
Jochen

hi!

ich bin gerade dabei, eine Datenbank einzurichten, die einfach
Adressen von irgendwelchen Leuten speichern soll. Mein erster
Gedanke war ja eine Tabelle mit je einer Spalte für jedes
gewünschte Attribut. Also eine Spalte „Name“, eine „Vorname“,
usw. So ist wohl der Standart für solche Sachen, oder?

genau so ist es

Aber wie wäre es denn, wenn ich lediglich eine dreispaltige
Tabelle anlege, die die Spalten „ID“ (eindeutige ID),
„Attribute“ (z.B. Name) und „Value“ (z.B. Huber) hat? Wäre
doch viel flexibler. Wenn jetzt plötzlich noch eine
Mail-Adresse zu den Adressen hinzukommen soll, brauch ich
keinerlei Datenbankänderungen. Ok, die Abfrage wird wohl etwas
komplexer.
Wie seht ihr das? Was ist das beste Konzept?

vergiß es! die db-verwaltung wird zwar wesentlich einfacher (hast ja nur mehr eine tabelle), allerdings der zugriff (egal wie) wird erheblicher komplexer (und natürlich auch langsamer) und der hauptteil wird wohl eher an der abfrage und wartung von den adressen liegen - und dann wirst du dich selber verfluchen … du versuchst eine eigene logische datenbank zu bauen, deren zugriffe programatisch gesteuert werden müssen -> hölle!

die meiste zeit bei der erstellung der datenbank sollte man eigentlich beim entwurf vergeuden - genau wie du es ansprichst: welche werte brauche ich? welche werte könnte ich brauchen? (ach was haben wir damals noch gelacht, als jemand meinte, wir könnten ja ein feld „mobil-telefon-nummer“ oder „e-mail-adresse“ dazuhängen) wie löse ich nun dieses datenknäuel auf? plz und ort in eine oder in zwei tabellen, straße extra oder wird es egal sein, wenn’s mal „sängergasse“ und mal „saengerg.“ heißt?

aus leidvoller erfahrung kann ich dir nur sagen, man kann ein datenmodell auch zu-tode-auflösen; dies ist aber nur ratsam, wenn du die db modellierst und nicht damit arbeiten mußt und nix mehr damit zu tun haben wirst

grüße
tomh