Προς το περιεχόμενο

Σχεση Μεταξυ Primary Key & Foreign Key


akil

Προτεινόμενες αναρτήσεις

Δημοσ.

καλημερα σε ολους ,εχω ενα προβληματακι και οποια βοηθεια δεκτη

λοιπον ,πανω σε sql server 2000

αν χρησιμοποιησω το πρωτευον κλειδι ενος πινακα1 σε ενα πινακα2 ως συνθετο πρωτευουον κλειδι ,δηλαδη στο πινακα2 το πρωτευον κλειδι του να εχει 2 ορισματα :

πινακας2 {

...............

...............

constaraint foreign key.......references Πινακας1 (πινακας1_ΙD)

constaraint primary_key ..........(πινακας2_ID,Πινακας1_ΙD).

 

θα ηθελα να μου πειτε τι σχεση δημιουργειται μεταξυ αυτων τον 2 πινακων

1:N ή M:N

Δημοσ.

σε ευαχριστω παρα πολυ φιλε random,θα ηθελα να ρωτησω και κατι ακομα αυτο το στησιμο που εχω αναφερει παραπανω ειναι ικανο να καλυψει το εξης ερωτημα :

εχω ενα πινακα ΟΧΗΜΑ και ενα πινακα ΙΔΙΟΚΤΗΤΕΣ και θελω για καθε οχημα να εχω απο ενα εως πολλους ιδιοκτητες και καθε ιδοκτητητης να εχει απο ενα εως πολλα οχηματα.Μπορω να χρησιμοποησω την υποδομη που εχω αναφερει παραπανω ;

Δημοσ.

Όχι...

Για να δημιουργήσεις μία M:M σχέση πρέπει να ορίσεις έναν ενδιάμεσο πίνακα που θα περιλαμβάνει τις εγγραφές Ιδιοκτήτης_ID, Όχημα_ID για κάθε ζευγος... αυτός ο πίνακας θα έχει κύριο κλειδί ένα πεδίο ID.

Δημοσ.

3 πινακες:

 

tbCARS (CarID, CarField1, CarField2...)

tbOWNERS (OwnerID, OwnerField1, OwnerField2...)

tbCarsOwners (ID, OwnerID, CarID)

 

tbCARS - tbCarsOwners >>> 1:N

tbOWNERS - tbCarsWowners >>> 1:N

 

ΑΡΑ

 

tbCARS - tbOWNERS >>> N:M

 

Τα κλειδιά φαντάζομαι εννοούνται ;)

Δημοσ.

παιδες σας ευχαριστω ολους ομως πανω σε αυτο που εχω στησει με τους 2 πινακες ,πινακας ΟΧΗΜΑ και πινακας ΟΔΗΓΟΙ. εχω τα εξης

ενα πρωτευον κλειδι πανω στον πινακα οχημα (id_ox).

Και πανω στον πινακα οδηγοι εχω 2 υποψηφια κλειδια ,ενα που ειναι το ξενο κλειδι απο τον πινακα οχημα το (id_ox). και ενα υποψηφιο κλειδι το (id_od)

και εχω δημιουργησει με αυτα τα 2 κλειδια ενα ενα συνθετο πρωτευον κλειδι το (id_od,id_ox) με 2 δηλαδη ορισματα.

και με αφηνει οταν παω να εισαγω δεδομενα πανω στον οδηγοι να εχω :

 

odhgos1-oxhma1

odhgos2-oxhma2

odhgos2-oxhma1

 

και εδω ειναι το ερωτημα μου ,τι τυπο σχεσης έχω ;

Δημοσ.

Μαλλον πρεπει να αλλαξεις το σχημα σου και να κανεις αυτο που λεει ο rapidshade.

Απο κλειδια:

Στον πινακα οδηγοι πρεπει να υπαρχει μονο το πρωτευον κλειδι του οδηγου.

Στον πινακα οχημα μονο το πρωτευον κλειδι του οχηματος

Ο ενδιαμεσος πινακας θα εχει τα 2 κλειδια αυτα (που ειναι πρωτευοντα για τους πινακες οχημα και οδηγο) σαν ξενα κλειδια, και αν θες μπορεις να τα κανεις συνθετο πρωτευον κλειδι σε αυτον τον πινακα. Ετσι γλυτωνεις το ξεχωριστο πεδιο για τον ενδιαμεσο πινακα και βεβαιωνεσαι οτι δεν θα υπαρχει διπλοεγγραφη της ιδιας σχεσης οχηματος και οδηγου.

 

Η σχεση που περιγραφεις εσυ δεν ειναι η καλυτερη δυνατη. Παρολο που οντως συσχετιζει πολλους οδηγους με πολλα οχηματα, η μια ΕΓΓΡΑΦΗ του πινακα οδηγοι σχετιζεται με πολλες απο τα οχηματα.

Ο μονος τροπος να σχετισεις τον οδηγο1 πχ με το οχημα1 και με το οχημα2 ειναι καταγραφοντας τον 2 φορες μεσα στον πινακα ΟΔΗΓΟΙ, μαζι με ολες τις αλλες πληροφοριες.

Φαντασου τωρα να ειχε ενας 30 οχηματα και να επρεπει να αλλαξεις τη διευθυνση του, η να ειχες γραψει λαθος το ονομα του...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...