Frage zum DB Design
steffi
- datenbank
Hi,
benötige dringend Euren Rat. Habe 2 Tabellen zu erstellen, sodass später die User angeben können, an welchen Themen sie interessiert sind.
Die erste Tabelle ist relativ klar, sie enthält die möglichen Themen.
TID(autoincrement,primary key),Category,Topic
also z.b.:
1|Internet|VoIP
2|Medien|TV
(insgesamt sind ca 30 Optionen gegeben.)
dann ist da aber noch die Tabelle, die für jeden User festhalten soll, welche der Themen er als interessant angegeben hat. Nun könnte man einfach
UID(Userid),TID1,TID2 usw machen. aber das ist undenkbar in dem Fall, da die erste Tabelle nicht konstant bleibt. Ab und zu kommt ein Thema hinzu oder weg. Abgesehen davon hätte die Tabelle sonst ca 31 Felder, was sich hier auch nicht so anschickt.
Also war meine Folgerung eine solche einfache Tabelle:
UID;TID
wenn nun für UID=111 ein Datensatz mit TID=2 vorhanden ist, wäre dieser also an Medien/TV interessiert. Wäre ja toll...
Aber wird die Tabelle nicht sehr groß, wenn eine Menge an Usern Ihre (max 30) Interessen angibt?
Gibt es eine bessere oder noch fexiblere Lösung hierfür?
Danke für Tipps
yo,
UID(Userid),TID1,TID2 usw machen. aber das ist undenkbar in dem Fall, da die erste Tabelle nicht konstant bleibt.
genau, vergiss einfach diesen ansatz....
Also war meine Folgerung eine solche einfache Tabelle:
UID;TID
... und verfolge genau diesen weiter. zwischen user und themen gibt es eine n:m beziehung, die mit einer weiteren tabelle aufgelöst werden muss. und genau das macht dieser ansatz.
Aber wird die Tabelle nicht sehr groß, wenn eine Menge an Usern Ihre (max 30) Interessen angibt?
nah, alles im lot.
Ilja
Hi nochmal,
UID;TID
in dem Fall kann auch auf einen tabelleneigenen Key verzichtet werden?
auch wenn immer empfohlen wird, in jeder Tabelle ein ID Feld mit autoincrement zu erstellen?
Danke
yo,
in dem Fall kann auch auf einen tabelleneigenen Key verzichtet werden?
auch wenn immer empfohlen wird, in jeder Tabelle ein ID Feld mit autoincrement zu erstellen?
doch, UID und TID bilden einen zusammengesetzten primär-schlüssel, wobei jede einzelne spalte fremdschlüssel der jeweiligen tabelle (entität) ist.
Ilja
Hallo Freunde des gehobenen Forumsgenusses,
Aber wird die Tabelle nicht sehr groß, wenn eine Menge an Usern Ihre (max 30) Interessen angibt?
Die Tabelle hat nur zwei Felder, die je 4 oder 8 Bytes groß sind, und nur einen Index (unique key über beide Felder), verbraucht also bei 100k Einträgen gerade mal ~880KB für Daten und AFAIK etwa genau so viel für den Index.
Gruß
Alexander Brock
yo,
und nur einen Index (unique key über beide Felder)
ich würde zwei indexe setzen, den zusammengestzten pk und einen weiteren, über die spalte der beiden, welcher als zweiter beim pk angeführt ist.
Ilja
...
Ich würde es auf 3 Tabellen aufteilen.
Eine mit den Themen.
Eine mit den Userdaten. (uid)
Die Dritte Tabelle wäre dann für den User und seine Themen.
Also,
-ID- -UID- -THEMENID-
LG
kEv*