Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Frage: beste DB-Struktur

Diskussion: Frage: beste DB-Struktur im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hi, ich möchte ein Programm schreiben, das auf eine MySQL-Datenbank zugreift. In der DB sollen Daten über bestimmte Objekte ...

Antwort
Alt 28.09.06, 21:49   #1 (permalink)
Senior Member
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard Frage: beste DB-Struktur

Anzeige

Hi,
ich möchte ein Programm schreiben, das auf eine MySQL-Datenbank zugreift. In der DB sollen Daten über bestimmte Objekte gespeichert werden. Jedes dieser Objekte soll kommentiert werden können von den Usern die das Programm benutzen. Die Anzahl der Kommentare ist also unbestimmt. Wie löse ich das am Besten? Ich kann ja nicht für jeden Kommentar die Anzahl der Spalten der Tabelle erhöhen etwa so:

Code:
  
Name          Info1        Info2      Info3      Kommentar1      Kommentar2        ...
Was mir noch einfällt ist für jedes Objekt in der Tabelle eine eigene anzulegen in der dann die Kommentare stehen. Der Name der "Details-Tabelle" muss dann irgendwo im Datensatz des Objekts zu finden sein.
Aber bevor ich das in Angriff nehme wollte ich eben mal fragen obs nicht doch einfacher geht. Bin nicht so bewandert auf dem Gebiet Datenbanken.
Achja: Als Sprache nehme ich Java. Kann man eigentlich Objekte in MySQL serialisieren?

mfg
Serow
Serow ist offline   Mit Zitat antworten
Alt 28.09.06, 21:56   #2 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Lightbulb

Praktisch wäre eine ID für jedes Objekt. Dann kannst du die Kommentare dazu in eine weitere Tabelle packen und mittels der ID als Fremdschlüssel darauf zugreifen. Ich stelle mir das in etwa so vor:


Code:
tab objekt
# id         <---+
  name           |
  info1          |
  info2          |
  info3          |
                 |
tab kommentar    |
# id             |
* id_objekt   ---+
  kommentar
Damit ist der Anzahl deiner Kommentare keine Grenze gesetzt.

Wegen der Serialisierung: Lass das Java machen und packe das Ergebnis in die Datenbank.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 28.09.06, 22:22   #3 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Ok, das klingt gut, so brauche ich nicht für jedes Objekt eine eigene Tabelle mit Kommentaren.
Was glaubst du ist performanter? Deine Methode oder alle Kommentare in einem Objekt in die erste Tabelle serialisieren?
Serow ist offline   Mit Zitat antworten
Alt 28.09.06, 22:33   #4 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Lightbulb

Kommt drauf an, was du unter einem "Objekt" verstehst. Wenn du damit ein Objekt mit Methoden und Eigenschaften meinst, dann wirst du um Serialisierung nicht rumkommen, denn Methoden lassen sich anderweitig in der Datenbank nicht unterbringen. Wenn es dir aber nur um Eigenschaften geht, dann würde ich die Tabelle entsprechend erweitern um eine Spalte je Eigenschaft (vorausgesetzt, deine Objekte haben alle die gleichen Eigenschaften, nur unterschiedliche Werte).
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 28.09.06, 22:35   #5 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Ich dachte an die Kommentare.
Einfach eine Liste von Strings in ein Object packen und es serialisieren.
Code:
Name  |  Info1  |  Info2  |  Info3  |   Comments
In dir Spalte "Comments" würde dann das Object mit den Strings reinkommen.

mfg
serow
Serow ist offline   Mit Zitat antworten
Alt 28.09.06, 22:57   #6 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Lightbulb

Von welcher Art "Objekt" du nun sprichst, ist aber immer noch nicht klar.

Die Frage, die sich stellt, ist: was willst du mit der Datenbank erreichen?

Wenn du nur eine persistente Datenhaltung willst, kannst du deine Objekte auch in Dateien aufs Dateisystem packen. Eine Datenbank lohnt sich erst dann, wenn du die Objekte strukturieren willst, wenn du auf bestimmte Eigenschaften Abfragen machen willst etc. Aber um beispielsweise auf einen einzelnen Kommentar zurückzugreifen, muss der auch separat in der Datenbank zu finden sein und nicht irgendwo zusammengepappt mit allen möglichen anderen Informationen in einer serialisierten Datenstruktur, von der MySQL keine Ahnung hat.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 28.09.06, 23:39   #7 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Also ich glaube immer wenn ich von "Objekt" gesprichen habe ist das gemeint, zu dem die Tabelle
Code:
Name | Info1 | Info2 | etc
gehört. Jede Zeile in dieser Tabelle würde dann ein "Objekt" sein. Wenn ich von "Object" spreche, meine ich eine von "Object" erbende Klasse in Java, die in der DB serialisiert werden soll.

Eine DB brauche ich allein deshalb schon, weil das Programm von mehreren Usern benutzt werden soll, die auch selber Daten ändern können, was aber für die anderen wiederum sichtbar sein soll. Also komme ich um eine DB die online ist nicht herum. Wenn nach diesen Kommentaren gefragt werden soll, müssen sowieso immer ALLE abgefragt werden, die dieses "Objekt" betreffen. Deswegen dachte ich man könnte sie alle in ein "Object" packen und serialisieren. Dann könnte man sich die zweite Tabelle sparen. Wenn jetzt aber die Leistung start darunter leiden würde, müsste ich mich ja für die andere Lösung entscheiden.
Also, kann jemand sagen wie das ist? Die Kommentare können locker 2MB größe String sein oder so. Meine Überlegung sieht jetzt so aus: Wenn es wirklich soweit kommen sollte, dass die Kommentare 2MB beanspruchen, sind es ja sooo viele, dass sie sich sowieso niemand alle anschaut. Deswegen wäre es vielleicht sinnvoller nur die letzten 100 Kommentre abzurufen, was mit der Serialisierungs-Variante ja nicht möglich wäre.
Liege ich mit dieser Einschätzung richtig?

mfg
serow
Serow ist offline   Mit Zitat antworten
Alt 12.10.06, 06:33   #8 (permalink)
 
Registriert seit: 15.05.06
Unicate Leistung: Facit NTK
Likes: 0
Standard

2. Normalform ist besser:
2 Tabellen:

1. Objekt:
-id
-name

2. Infos/Kommentare
-id
-objektid
-kommentar

Die Objekt ID bekommt halt immer die id des Objektes aus der Objekte Tabelle

lässt sich auch sehr gut durch nen JOIN befehl im SQL auslesen
Unicate ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Frage: beste DB-Struktur
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MASM - Struktur füllen rev Code Kitchen 4 29.07.06 15:48
Kernel Struktur naked_chef Linux/UNIX 11 05.06.06 19:57
Pointer von Struktur übergeben houdini2 Code Kitchen 2 06.11.04 17:22
Lan-Struktur? sabom.2d Linux/UNIX 4 07.08.03 10:12


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