Γεμισμα πινακα βασης δεδομενων μεσω javas

Γενικές συζητήσεις για SQL και SQL Servers (RDBMS)

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
douladoula
Δημοσιεύσεις: 2
Εγγραφή: 10 Απρ 2014 10:42

Γεμισμα πινακα βασης δεδομενων μεσω javas

Δημοσίευση από douladoula » 10 Απρ 2014 10:54

Καλημερα εχω μια εργασια στην οποια φτιαχνω μια βαση δεδομενων και πρεπει να γεμισω τους πινακες μεσω java.Το προγραμμα αφορα ενα συστημα διαχειρισεις κρατησεων ξενοδοχειων.Το θεμα ειναι οτι εχω κολλησει σε ενα ερωτημα και δεν καταλαβαινω πως πρεπει να το κανω,δεν καταλαβαιω την εκφωνηση.


Εχω τρεις πινακες

RoomFa(idRoom,nameFac),idRoom,nameFac=>Pk,nameFac=>Fk στο nameFac του facility

HotelFa(idHotel,nameFac)=>idHotel,nameFac=>pk,nameFac=>Fk στο nameFac του facility

Facility(nameFac,parentnameFac)=>nameFac=>Pk,parentnameFac=>Fk στο nameFac του Facility


Το ερωτημα ζηταει να γεμισω τον πινακα Facility με βαση την παρακατω εκφωνηση
:


Δημιουργήστε δύο ιεραρχίες διευκολύνσεων, μία για τα ξενοδοχεία και μία για τα δωμάτια. Τα ονόματα των διευκολύνσεων είναι της μορφής: hotel_facility_n0_n1_n2_n3_n4 room_facility_n0_n1_n2_n3_n4 όπου n0, n1, n2, n3 και n4 είναι ακέραιοι που αναφέρονται στον αύξοντα αριθμό των διευκολύνσεων που είναι πρόγονοι της διευκόλυνσης (n0, n1, n2, n3) μέχρι να φτάσουμε και στο επίπεδο 4 (n4). Προφανώς για τα ανώτερα επίπεδα τα ονόματα περιέχουν λιγότερους αριθμούς. Π.χ. η πρώτη διευκόλυνση ξενοδοχείου στο επίπεδο 0 έχει όνομα hotel_facility_1, ενώ η πρώτη διευκόλυνση-παιδί της στο επίπεδο 1 έχει όνομα room_facility_1_1. Δημιουργήστε, ακολουθώντας αυτούς τους κανόνες ονομασίας, 100 διευκολύνσεις ξενοδοχείων και 60 διευκολύνσεις δωματίων.

douladoula
Δημοσιεύσεις: 2
Εγγραφή: 10 Απρ 2014 10:42

Γεμισμα πινακα βασης δεδομενων μεσω javas

Δημοσίευση από douladoula » 10 Απρ 2014 11:29

Εγω κανω κατι τετοιο



for (int i = 1 ; i <= 10 ; i++){
for (int j = 1 ; j <= 5 ; j++ ){
String query = String.format("INSERT INTO public.\"Facility\" VALUES ('hotel_facility_%d','Room_facility_%d_%d')",i,i,j);


και οταν παω να το τρεξω μου εμφανιζει αυτο :ERROR: insert or update on table "Facility" violates foreign key constraint "Facility_parentnamefacility_fkey"
Detail: Key (parentnamefacility)=(Room_facility_1_1) is not present in table "Facility".

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Γεμισμα πινακα βασης δεδομενων μεσω javas

Δημοσίευση από giannis17 » 11 Απρ 2014 10:39

πρέπει πρώτα να φτιάξεις τα ιεραρχικά επίπεδα πχ

Κώδικας: Επιλογή όλων

INSERT INTO public.\"Facility\" VALUES &#40;'hotel_facility_%d',''&#41;
και μετά τα δευτερεύοντα:

Κώδικας: Επιλογή όλων

INSERT INTO public.\"Facility\" VALUES &#40;'Room_facility_%d_%d','hotel_facility_%d'&#41;
μπορείς να τα κάνεις και τα 2 στην ίδια συνάρτηση διαχωρίζοντας τα με ένα if που να τσεκάρει αν έχουν δηλωθεί τα όλα τα parent ή όχι (μετράς [count] πόσες εγγραφές έχουν δεδομένα στο nameFac αλλά όχι στο parentnameFac)

Αυτό συμβαίνει επειδή έχεις ορίσει ξένο κλειδί το parentnameFac να συνδέεται με το nameFac του ίδιου πίνακα, οπότε για να εισάγει δεδομένα στο ξένο κλειδί πρέπει αυτά να προϋπάρχουν στο nameFac.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Απάντηση

Επιστροφή στο “Βάσεις Δεδομένων και SQL - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες