# DatenBank Modell



## Dit_ (13. Okt 2010)

Hallo
ich habe follgende Informationen die ich in DB speichern will.

bug_titel
bug_betreff
bug_fehlercode
bug_beschreibung
reporter_name
reporter_email
reporter_www
reporter_serverip
reporter_javaversion
reporter_os

ich könnte eine Tabelle erstellen und die liste als Spalten der Tabelle definieren.

Wäre das ok? 
Oder sollte ich mehrere Tabellen mit PrimaryKeys erstellen. Was wäre dabei der Vorteil?

Danke schon mal.


----------



## Gast2 (13. Okt 2010)

Dit_ hat gesagt.:


> Oder sollte ich mehrere Tabellen mit PrimaryKeys erstellen. Was wäre dabei der Vorteil?



All die Vorteile die du dir durch Normalisierung halt verschaffst: Vermeidung redundanter Datenhaltung, bessere Performance, Erweiterbarkeit etc.

Ob es sich lohnt zu normalisieren hängt ganz von deiner Anwedung ab, wie oft z.B. erwartest du dieselben Daten für "reporter" Datenfelder? 

In deinem Fall kann man das glaub ich nocht recht schmerzlos alles in einer Tabelle abfrühstücken. Es werden ja nicht aber tausende an Usern mehrer Millionen Fehlern auf eueren ET Server melden? (ist doch dafür, oder?)


----------



## michaeldbjava (13. Okt 2010)

Was hälst Du von JTrack? Ist ein kleines Tracking Sytem und schon fertig ...

JTrac - open source and customizable issue-tracking in Java


----------



## Gast2 (13. Okt 2010)

Du hast die Spalten doch eigentlich schon recht treffend benannt 
Mach doch einfach 2 Tabellen, bug und reporter. In der bug Tabelle würdest du dann noch eine zusätzliche Spalte reporter_id haben, die dann auf den Reporter referenziert. 

Würdest du alles in einer Tabelle speichern hättest du zwei nachteile:
- Sehr viele doppelte Reporter Daten die du speichern müsstest.
- Stell dir vor bei einem Reporter ändert sich mal die javaversion oder das OS. Du müsstest dann jede x-tausend Datensätze updaten und die neuen Daten eintragen. Teilst du das auf musst du nur einen einzigen Datensatz aktualisieren.


----------



## Dit_ (13. Okt 2010)

Danke euch erstmal.

Nächste Frage. Achtung Anfänger!

MYSQL


```
CREATE TABLE `bug_data` (
`bug_nr` INT NOT NULL AUTO_INCREMENT,
`bug_cath` VARCHAR( 100 ) NOT NULL ,
`bug_errornr` INT UNSIGNED NULL DEFAULT NULL ,
`bug_reporter_id` VARCHAR( 50 ) NOT NULL ,
`bug_title` VARCHAR( 50 ) NOT NULL ,
`bug_report` TEXT NOT NULL ,
`bug_date` DATETIME NOT NULL ,
`bug_status` TINYINT NOT NULL DEFAULT '-1'
PRIMARY KEY(bug_nr,bug_reporter_id)
)
```

So erstelle ich die erste Tabelle

Erstelle ich die zweite genau auf diese Weise?


```
CREATE TABLE `bug_reporter` (
`bug_reporter_id` VARCHAR( 50 ) NOT NULL ,
`bug_reporter_email` VARCHAR( 100 ) NULL ,
`bug_reporter_www` VARCHAR( 100 ) NULL ,
`bug_reporter_serverip` VARCHAR( 100 ) NULL ,
`bug_reporter_os` VARCHAR( 10 ) NULL ,
`bug_reporter_javaversion` VARCHAR( 100 ) NULL ,
PRIMARY KEY ( bug_reporter_id )
) ;
```

Wenn ja wie mache ich richtig Insert?

Danke schon mal.


----------



## Gast2 (13. Okt 2010)

Ja die zweite Tabelle erstellst du auf die selbe weise (ob die syntax korrekt ist hab ich aber nicht geschaut).
man schreibt in der regel auch nicht nochmal den tabellenprefix vor jede zeile.

so würd ich die tabellen aufbauen:

bug_data:
- id
- nr
- ... weitere daten ...
- reporter_id

bug_reporter:
- id (das hier ist die verknüpfung zur reporter_id)
- email
- www
- ... weitere daten ...



> Wenn ja wie mache ich richtig Insert?


Nen Insert machst du dann z.b. so:

INSERT INTO bug_data (nr, ... weitere spalten ..., reporter_id) VALUES (100, ... weitere spalten ..., 4);


----------



## Dit_ (13. Okt 2010)

axo gut zuerst eine Tabelle updaten dann die Reporter Tabelle. danke


----------

