Entity Realtionship Model erstellen

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

ich habe die Aufgabe, eine Fahrplan mittels Datenbank abzubilden, also Zugname, Zugnummer, Start, Ziel, Ankunftszeit, Abfahrtszeit und aktuellen Ort so abzuspeichern, damit die Abfragen möglichst einfach werden,

Jetzt hab ich es mal mit einer Tabelle versucht, was aber keinen Sinn macht:

Code:
Nummer    Name    Start       Ziel               Ankunftszeit         Abfahrtszeit       aktueller Ort
2               xy         Berlin    München          null                        8:40                  Berlin         
2               xy         Berlin    München          10:30                     10:40                Hamburg
2               xy         Berlin    München          11:22                     11:33                Dortmund
2               xy         Berlin    München          15:30                     15:35                Nürnberg
2               xy         Berlin    München          17:10                     null                   München

Da dies keinen Sinn macht, habe ich es mal mit 3 Tabellen versucht -> Zug, Fahrplan und Reihenfolge,

Also in der Tabelle Zug speichere ich alles, was zu einem Zug gehört + ID, in der Fahrplantabelle speichere ich Ankunftszeit, Abfahrtszeit und wieder eine ID und diese ID ist der Foreignkey für die Tabelle Zug und zwischen den beiden Tabellen schalte ich noch eine Tabelle, welche mir die Reihenfolge der aktuellen Orte angibt,

Macht das eurer Meinung nach so Sinn, oder wäre ein anderer Ansatz besser,

lg
 

DocRandom

Top Contributor
Moin!

Ich würde für die Zuege und Haltestellen je eine Tabelle erstellen.
Für den Fahrbetrieb eine eigene, die jeweils per Relation auf die beiden Tabellen verweist.

Also in etwa so:
Table Train:
  • ID -> Primary Key
  • Name -> Name
  • alles was sonst noch zum Zug gehört
Table Station:
  • ID -> Primary Key
  • Name -> ;)
  • weitere Attribute zur Station
Table RoadMap:
  • ID -> Primary Key
  • Train-ID -> Zug
  • Station-ID -> Station
  • Ankunft -> Date/Time
  • Abfahrt -> Date/Time

lg
DocRandom
 

MQue

Top Contributor
Ich habs mal so designed,
bin für jede Kritik offen, vor allem was die verbindungen zwischen den Entitys angeht

train.JPG
 
G

Guest

Gast
maki hat gesagt.:
Ist nicht ok.
Normalisier dass doch mal.


Aha, und was heißt das dann konkret? was kann ich da noch machen, ich vermute mal du meinst die 3 Normalformen,
die Daten sollen atomar sein usw.!!??
 
M

maki

Gast
Schon mal gesucht? google etc. sind voll von Infos, du musst es ja nicht gleich in die 7. Normalform (ja, die gibt es auch) bringen, aber ein bisschen eingeninitiative solltest du schon zeigen.

Relationship 2 ist seltsam bzw. nicht ausfühhlich genug, die Tabelle Roadmap ist auch seltsam...

Sammle doch erstmal alle Nomen dass du zumindest einen Überblick über die notwendigen Entitäten zu bekommen.
 
G

Guest

Gast
DocRandom hat gesagt.:
Moin!

Ich würde für die Zuege und Haltestellen je eine Tabelle erstellen.
Für den Fahrbetrieb eine eigene, die jeweils per Relation auf die beiden Tabellen verweist.

Also in etwa so:
Table Train:
  • ID -> Primary Key
  • Name -> Name
  • alles was sonst noch zum Zug gehört
Table Station:
  • ID -> Primary Key
  • Name -> ;)
  • weitere Attribute zur Station
Table RoadMap:
  • ID -> Primary Key
  • Train-ID -> Zug
  • Station-ID -> Station
  • Ankunft -> Date/Time
  • Abfahrt -> Date/Time

lg
DocRandom


wie könnte ich dann in den oberen Tabellen z.B.: den Fahrplan des Zuges "Goethe" von Berlin nach München abfragen, sodass ich die einzelnen Stationen aufgelistet bekomme?
 

kama

Top Contributor
Hallo,

@Michael1234
warum heißt der Primärschlüssel in den Tabellen nicht einfach "ID"? Und warum setzt Du meistens vor die Attribute noch den Tabellen (Entity) namen davor?

Sieht später die Klasse auch so aus?
Code:
public class Train {
    private Long train_id;
    private String trainName;
...
}
Ich würde eher vermuten, dass Deine Klassen später so aussehen:
Code:
public class Train {
    private Long id;
    private String name;
...
}
Oder machst Du das auch später in den Datenbank Tabellen auch so?
In der Tabelle TRAIN eine Spalter "TRAIN_NAME" ?


Wenn Du nachher mit z.B. Hibernate arbeitest verkompliziert das die Arbeit nur.

MfG
karl Heinz Marbaise
 
G

Guest

Gast
Mir wäre es mehr um die Abfrage gegangen, vielleicht kann sich ja noch jemand entschließen
 

kama

Top Contributor
Hallo,

Tja ...
Code:
CREATE TABLE TRAIN (
  ID bigint not null,
  NAME VARCHAR(255)
);

CREATE TABLE STATION (
  ID bigint not null,
  NAME VARCHAR(255)
);

CREATE TABLE FROMTO (
  ID bigint not null,
  FK_TRAIN BIGINT not null,
  START VARCHAR(255),
  ZIEL VARCHAR(255)
);

CREATE TABLE ROADMAP (
  ID bigint not null,
  FK_TRAIN BIGINT not null,
  FK_STATION BIGINT NOT NULL,
  ABFAHRT TIMESTAMP,
  ANKUNFT TIMESTAMP
);

insert into fromto (Id, FK_TRAIN, START, ZIEL) values (1, 1, 'Berlin', 'München');
insert into fromto (Id, FK_TRAIN, START, ZIEL) values (2, 2, 'Aachen', 'Frankfurt');

insert into train (Id, name) values (1, 'Goethe');
insert into train (Id, name) values (2, 'Braun');

insert into station (Id, name) values (1, 'München');
insert into station (Id, name) values (2, 'Frankfurt');
insert into station (Id, name) values (3, 'Stuttgart');
insert into station (Id, name) values (4, 'Berlin');
insert into station (Id, name) values (5, 'Aachen');
insert into station (Id, name) values (6, 'Köln');
insert into station (Id, name) values (7, 'Siegburg');
insert into station (Id, name) values (8, 'Mannheim');

-- Strecke von Berlin nach München
--   1. Berlin
--   2. Frankfurt
--   3. München
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (1, 1, 4, '2008-01-01 12:00:00.000000', '2008-01-01 11:55:00.000000');
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (2, 1, 2, '2008-01-01 14:50:00.000000', '2008-01-01 14:45:00.000000');
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (3, 1, 1, '2008-01-01 17:17:00.000000', '2008-01-01 17:12:00.000000');
-- Strecke Aachen Frankfurt
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (1, 2, 5, '2008-01-01 08:39:00.000000', '2008-01-01 08:36:00.000000');
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (2, 2, 6, '2008-01-01 09:15:00.000000', '2008-01-01 09:19:00.000000');
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (3, 2, 7, '2008-01-01 09:40:00.000000', '2008-01-01 09:36:00.000000');
insert into roadmap (id, FK_TRAIN, FK_STATION, ABFAHRT, ANKUNFT) values (3, 2, 2, '2008-01-01 10:30:00.000000', '2008-01-01 10:27:00.000000');


select 
        T.NAME AS ZugName,
        S.NAME AS STATION, 
        R.ABFAHRT AS ABFAHRT, 
        R.ANKUNFT AS ANKUNF 
    from
        FROMTO F,
        train T, 
        station S, 
        roadmap R
    where
            F.START = 'Berlin'
        AND F.ZIEL = 'München'
        AND F.FK_TRAIN = R.FK_TRAIN
        AND R.FK_TRAIN = T.ID
        AND R.FK_STATION = S.ID
    order by R.ANKUNFT ASC;
Der Erste Versuch ist am Punkt, wo ich die Abfrage zusammen gebaut habe (OHNE FROMTO Tabelle) gescheitert...das wird richtig Kompliziert.....mit einer Weiteren Tabelle (FROMTO) wird das Ganze ein wenig einfacher....Da benötige ich nur noch Start und Ziel....

MfG
Karl Heinz Marbaise
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
J Netbeans 11 und Eclipse JPA 2.5 Entity wird nicht gefunden Datenbankprogrammierung 4
D MySQL Transaktionen in Entity-Class Datenbankprogrammierung 15
T Ebean Not an Entity Datenbankprogrammierung 1
V HSQLDB detached entity passed to persist: server.Employee Datenbankprogrammierung 4
H Entity in Java implementieren Datenbankprogrammierung 13
Y Entity must be managed to call remove Datenbankprogrammierung 1
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
T IllegalArgumentException: Person[ id=null ] is not a known entity type.??? Datenbankprogrammierung 0
R eclipselink - referenzierte Entity löschen Datenbankprogrammierung 0
Z ER Diagramm erstellen (Entity-Relationship) Datenbankprogrammierung 4
B Feld in einer @Entity als Text speichern Datenbankprogrammierung 5
K Entity-Klassen generieren Datenbankprogrammierung 4
D Datenbank Entity Datenbankprogrammierung 3
C Hibernate Liste mit allen Objekten einer Entity Datenbankprogrammierung 17
T org.hibernate.MappingException: entity class not found Datenbankprogrammierung 4
D org.hibernate.MappingException: Unknown entity mit Annotations Datenbankprogrammierung 9
P Hibernate -> SQL verwenden und keine Entity Datenbankprogrammierung 19
M Problem mit @Entity Datenbankprogrammierung 18
R JPA, Spring, löschen einer Entity Datenbankprogrammierung 2
P Neues Attribut in Entity-Klasse Datenbankprogrammierung 3
QDog JPA: Entity "laden" und später updaten Datenbankprogrammierung 4
M ER Model Begrenzung auf Zeiteinheiten. Datenbankprogrammierung 11
D ArrayIndexOutOfBoundsException bei Update von JTable und Model Datenbankprogrammierung 13
Dragonfire Entwurfsfragen zur Anbindung an einer MySQL DB - Klassenstruktur zum Data Model Datenbankprogrammierung 5
M Model View Komponente für Swing Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben