Hi @all,
ich programmiere gerade mit Java und versuche mit der javadb(derby) eine Anwendung zu schreiben, welche die Stunden für Personal speichert und sie auch ausrechnet. Jetzt habe ich mal mit einem SQL-Editor die Datenbank "designed". Das sind meine ersten Versuche mit SQL und relationalen Datenbanken und ich dachte vielleicht kann hier einer seine Meinung zu meinem Modell mitteilen. Was ist falsch, fehlerhaft und nicht optimal?
Anmerkungen zu Buchstaben und DataTypes:
A=AutoIncrement
N=NotNull
P=Primary Key
F=Foreign Key
D=Default Value
status= sollte eigentlich boolean werden. Die Idee dahinter ist es den Mitarbeiter auf den Status "aktiv" oder "passiv" zu setzen. z.B. Mitarbeiter verlässt das Unternehmen, und wird dann auf "passiv" gesetzt. Schlussendlich soll es dann so sein, dass der Mitarbeiter wenn er gelöscht wird, auch die Einträge in der Tabelle tbl_stunden und tbl_urlaub gelöscht werden. Soweit ich das jetzt weiß, unterstützt javadb kein boolean und man soll sich smallint bedienen.
date und time= auch hier habe ich mich an den Datentypen der javadb orientiert.
Der Code sieht folgendermaßen aus:
Für Anregungen bin ich dankbar!
Beste Grüße
ich programmiere gerade mit Java und versuche mit der javadb(derby) eine Anwendung zu schreiben, welche die Stunden für Personal speichert und sie auch ausrechnet. Jetzt habe ich mal mit einem SQL-Editor die Datenbank "designed". Das sind meine ersten Versuche mit SQL und relationalen Datenbanken und ich dachte vielleicht kann hier einer seine Meinung zu meinem Modell mitteilen. Was ist falsch, fehlerhaft und nicht optimal?
Anmerkungen zu Buchstaben und DataTypes:
A=AutoIncrement
N=NotNull
P=Primary Key
F=Foreign Key
D=Default Value
status= sollte eigentlich boolean werden. Die Idee dahinter ist es den Mitarbeiter auf den Status "aktiv" oder "passiv" zu setzen. z.B. Mitarbeiter verlässt das Unternehmen, und wird dann auf "passiv" gesetzt. Schlussendlich soll es dann so sein, dass der Mitarbeiter wenn er gelöscht wird, auch die Einträge in der Tabelle tbl_stunden und tbl_urlaub gelöscht werden. Soweit ich das jetzt weiß, unterstützt javadb kein boolean und man soll sich smallint bedienen.
date und time= auch hier habe ich mich an den Datentypen der javadb orientiert.
Der Code sieht folgendermaßen aus:
Code:
/* SQLEditor (Generic SQL)*/ CREATE TABLE 'tbl_einsatzort' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'orte' CHAR(10), PRIMARY KEY ('id') ); CREATE TABLE 'tbl_einsatztyp' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'typ' CHAR(10), PRIMARY KEY ('id') ); CREATE TABLE 'tbl_mitarbeiter' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'vorname' CHAR(30) NOT NULL, 'nachnahme' CHAR(30) NOT NULL, 'sollstunden' DOUBLE NOT NULL, 'eintrittsstunden' DOUBLE NOT NULL, 'id_einsatzort' INTEGER NOT NULL, 'id_einsatztyp' INTEGER NOT NULL, 'status' SMALLINT(1) DEFAULT '0', 'sollurlaub' DOUBLE NOT NULL, 'vorurlaub' DOUBLE NOT NULL, PRIMARY KEY ('id') ); CREATE TABLE 'tbl_pause' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'pause' DOUBLE NOT NULL, PRIMARY KEY ('id') ); CREATE TABLE 'tbl_tagtyp' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'tagtyp' CHAR(20) NOT NULL, PRIMARY KEY ('id') ); CREATE TABLE 'tbl_stunden' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'datum' DATE NOT NULL, 'id_mitarbeiter' INTEGER NOT NULL, 'anfang' TIME NOT NULL, 'ende' TIME NOT NULL, 'id_pause' INTEGER NOT NULL, 'id_tagtyp' INTEGER NOT NULL, PRIMARY KEY ('id') ); CREATE TABLE 'tbl_urlaub' ( 'id' INTEGER NOT NULL AUTO_INCREMENT, 'id_mitarbeiter' INTEGER NOT NULL, 'von' DATE NOT NULL, 'bis' DATE NOT NULL, PRIMARY KEY ('id') ); ALTER TABLE 'tbl_mitarbeiter' ADD FOREIGN KEY ('id_einsatzort') REFERENCES 'tbl_einsatzort' ('id'); ALTER TABLE 'tbl_mitarbeiter' ADD FOREIGN KEY ('id_einsatztyp') REFERENCES 'tbl_einsatztyp' ('id'); ALTER TABLE 'tbl_stunden' ADD FOREIGN KEY ('id_mitarbeiter') REFERENCES 'tbl_mitarbeiter' ('id'); ALTER TABLE 'tbl_stunden' ADD FOREIGN KEY ('id_pause') REFERENCES 'tbl_pause' ('id'); ALTER TABLE 'tbl_stunden' ADD FOREIGN KEY ('id_tagtyp') REFERENCES 'tbl_tagtyp' ('id'); ALTER TABLE 'tbl_urlaub' ADD FOREIGN KEY ('id_mitarbeiter') REFERENCES 'tbl_mitarbeiter' ('id');
Beste Grüße
Comment