Καλημερα εχω μια εργασια στην οποια φτιαχνω μια βαση δεδομενων και πρεπει να γεμισω τους πινακες μεσω 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 διευκολύνσεις δωματίων.
Γεμισμα πινακα βασης δεδομενων μεσω javas
Συντονιστές: WebDev Moderators, Super-Moderators
-
- Δημοσιεύσεις: 2
- Εγγραφή: 10 Απρ 2014 10:42
-
- Δημοσιεύσεις: 2
- Εγγραφή: 10 Απρ 2014 10:42
Γεμισμα πινακα βασης δεδομενων μεσω javas
Εγω κανω κατι τετοιο
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".
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
πρέπει πρώτα να φτιάξεις τα ιεραρχικά επίπεδα πχ
και μετά τα δευτερεύοντα:
μπορείς να τα κάνεις και τα 2 στην ίδια συνάρτηση διαχωρίζοντας τα με ένα if που να τσεκάρει αν έχουν δηλωθεί τα όλα τα parent ή όχι (μετράς [count] πόσες εγγραφές έχουν δεδομένα στο nameFac αλλά όχι στο parentnameFac)
Αυτό συμβαίνει επειδή έχεις ορίσει ξένο κλειδί το parentnameFac να συνδέεται με το nameFac του ίδιου πίνακα, οπότε για να εισάγει δεδομένα στο ξένο κλειδί πρέπει αυτά να προϋπάρχουν στο nameFac.
Κώδικας: Επιλογή όλων
INSERT INTO public.\"Facility\" VALUES ('hotel_facility_%d','')
Κώδικας: Επιλογή όλων
INSERT INTO public.\"Facility\" VALUES ('Room_facility_%d_%d','hotel_facility_%d')
Αυτό συμβαίνει επειδή έχεις ορίσει ξένο κλειδί το parentnameFac να συνδέεται με το nameFac του ίδιου πίνακα, οπότε για να εισάγει δεδομένα στο ξένο κλειδί πρέπει αυτά να προϋπάρχουν στο nameFac.
"There is only one problem with common sense; it’s not very common."
– Milt Bryce
– Milt Bryce
Μέλη σε σύνδεση
Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης