Πρόβλημα σχετικά με σχέση M:N - για database gurus

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

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

Απάντηση
Άβαταρ μέλους
beredim
Δημοσιεύσεις: 26
Εγγραφή: 28 Ιαν 2004 10:04

Πρόβλημα σχετικά με σχέση M:N - για database gurus

Δημοσίευση από beredim » 09 Ιούλ 2005 17:03

Υπάρχει θεωρία ή μέθοδος για το πώς να αντιμετωπίσουμε μια σχέση m:n σε instances της ίδιας οντότητας????

Ουσιαστικά αυτό που έχω είναι ένας πίνακας με ένα σύνολο αντικειμένων της ίδιας οντότητας τα οποία μπορούν (χωρίς να είναι υποχρεωτικό) να σχετίζονται με άλλα αντικείμενα της ίδιας οντότητας (του ίδιου πίνακα δλδ) ακόμα και με τον εαυτό τους.

Τα "λογικά" προβλήματα αρχίζουν να εμφανίζονται όταν δημιουργείται conflict στο attribute ενός αντικειμένου που καθορίζεται από αυτή τη σχέση.

π.χ. αν το special_attribute(Δ) καθορίζεται ως "α" από τη σχέση του με αντικείμενο Α και ως "α" από τη σχέση του με το αντικείμενο Β δεν υπάρχει πρόβλημα.
ΕΝΩ
αν το special_attribute(Δ) καθορίζεται ως "α" από τη σχέση του με αντικείμενο Α και ως "β" από τη σχέση του με το αντικείμενο Β τότε δημιουργείται σύγκρουση και πρέπει να προβλέψουμε κανόνες που θα επιλύσουν το conflict.

Έχω σκεφτεί λύσεις του στυλ:
"προτεραιότητα" (π.χ. όταν το special_attribute καθορίζεται από συνδυασμό διαφόρων αντικειμένων, τότε καθορίζεται από αυτό που έχει την υψηλότερη προτεραιότητα σε σχέση με τα άλλα)
ή "βάρος" (π.χ. το κάθε αντικείμενο έχει ένα συγκεκριμένο βάρος στη σχέση με άλλο αντικείμενο της ίδιας οντότητας. Έτσι το special_attribute(Δ) θα μπορούσε να ήταν 0.3α(λόγω σχέσης από το Α), 0.3α(λόγω σχέσης από το Β) και 0.7γ(λόγω σχέσης με το Γ). Έχουμε 0.7>0.3+0.3, άρα το special_attribute(Δ) γίνεται "γ".

Δυστυχώς, όμως, το πρόβλημα που θέλω να μοντελοποιήσω δεν είναι τόσο απλό:
Για παράδειγμα, το βάρος του Β στη σχέση Β-->Γ μπορεί να είναι 0.7, αλλά στη σχέση Β-->Δ να είναι 0.1.
Ομοίως, στις σχέσεις Α-->Γ και Β-->Γ το Α μπορεί να έχει προτεραιότητα, αλλά στις σχέσεις Α-->Δ και Β-->Δ μπορεί προτεραιότητα να έχει το Β.
Επιπλέον, τα βάρη και οι προτεραιότητες δεν είναι σταθερά. Σήμερα, μπορεί να είναι έτσι, αύριο αλλιώς.
Ακόμα, στο τελικό αποτέλεσμα δεν επιδρά μόνο το βάρος και η προτεραιότητα αλλά και το ίδιο το αποτέλεσμα της σχέσης.
π.χ. αν οι σχέσεις Α-->Γ,Β-->Γ,Γ-->Γ,Δ-->Γ,...,Ω-->Γ μας δίνουν όλες special_attribute(Γ)="0", αλλά υπάρχει έστω και μία σχέση Ω1-->Γ που μας δίνει special_attribute(Δ)="100" τότε έχουμε πιο σοβαρό conflict, απ' ότι αν η Ω1-->Γ μας δίνει "1".

Να σημειώσω σε αυτό το σημείο τα εξής σχετικά με το πρόβλημά μου:
1. Τα πιθανά αποτελέσματα μιας σχέσης Α-->Β είναι περιορισμένα σε αριθμό (περίπου 10)
2. Πιο πολύ μας ενδιαφέρει η σωστή αποθήκευση για 2, το πολύ 3 από τα πιθανά αποτελέσματα του συνόλου των σχέσεων. Δηλαδή, συγκρούσεις που περιέχουν τουλάχιστον μία από αυτές τις 2-3 "σημαντικές" τιμές είναι υπερβολικά σημαντικές και πρέπει να "επιλύονται", ενώ συγκρούσεις που δεν περιέχουν κάποια από αυτές τις τιμές θεωρούνται λιγότερο σημαντικές, ως και ασήμαντες, και θα μπορούσαν να μην επιλυθούν ή να επιλυθούν με απόφαση χειρότερης πρόβλεψης (π.χ. για όλες τις συγκρούσεις που περιέχουν τουλάχιστον την τιμή "5" και καμία από τις 2-3 σημαντικές τιμές που προανέφερα παίρνουμε την απόφαση ότι special_attribute="5")
3. Το σύνολο των εγγραφών στον πίνακα είναι περίπου 2000, οπότε καταλαβαίνετε ότι οποιαδήποτε λύση που περιλαμβάνει τη δημιουργία ξεχωριστών επιπλέον πινάκων για κάθε μια από τις εγγραφές, ξεφεύγει της λογικής.

Επειδή το post μεγάλωσε επικίνδυνα παραθέτω ξανά το αρχικό μου ερώτημα:

Υπάρχει θεωρία ή μέθοδος για το πώς να αντιμετωπίσουμε μια σχέση m:n σε instances της ίδιας οντότητας?

Έχει αντιμετωπίσει κανείς σας τέτοιου είδους πρόβλημα?

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27622
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πρόβλημα σχετικά με σχέση M:N - για database gurus

Δημοσίευση από cordis » 09 Ιούλ 2005 17:16

μπορείς να μας δώσεις λίγο από το σχήμα όπως το έχεις μέχρι τώρα για να καταλάβουμε καλύτερα;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
beredim
Δημοσιεύσεις: 26
Εγγραφή: 28 Ιαν 2004 10:04

Πρόβλημα σχετικά με σχέση M:N - για database gurus

Δημοσίευση από beredim » 09 Ιούλ 2005 19:01

Για να γίνει λίγο πιο κατανοητό το πρόβλημα που αντιμετωπίζω δείτε το συννημένο:

1. Στον αριστερό πίνακα βλέπετε τα δεδομένα όπως έχουν μέχρι τώρα σε xls. Η κάθε εγγραφή έχει ένα attribute, που το ονομάζω, για να γίνει πιο κατανοητό το πρόβλημά μου, ΧΡΩΜΑ. Το ΧΡΩΜΑ της κάθε εγγραφής καθορίζεται από αναφορά από κάποια άλλη:
π.χ. το αντικείμενο 5 δίνει στο ΧΡΩΜΑ του 1 την τιμή "ΚΟΚΚΙΝΟ"
π.χ. το αντικείμενο 3 δίνει στον εαυτό του ως ΧΡΩΜΑ την τιμή "ΠΡΑΣΙΝΟ"

Οι εγγραφές 6 και 10 δεν έχουν ΧΡΩΜΑ, με την έννοια ότι δεν αναφέρεται σε αυτές καμία άλλη εγγραφή.

Βλέπετε τα δημιουργούμενα conflicts στις εγγραφές 9 και 11.
Για το αντικείμενο 9 το conflict δεν έχει επιλυθεί.
Για το αντικείμενο 11 το conflict έχει επιλυθεί.

2. Οι δύο επόμενοι πίνακες είναι το πώς θα περάσουμε από xls σε βάση δεδομένων. Έτσι, σε έναν πίνακα αποθηκεύουμε όπως και πριν τις εγγραφές μας (παραλείποντας βέβαια το ΧΡΩΜΑ) και σε έναν δεύτερο πίνακα όλες τις διάφορες σχέσεις (π.χ. ότι το 8 δίνει στο 7 ΧΡΩΜΑ ΠΡΑΣΙΝΟ)

Το θέμα είναι πώς θα κινηθώ από δω και πέρα όσον αφορά τα conflicts. Οι κανόνες επίλυσης μέχρι τώρα είναι πολύ περίπλοκοι, δυναμικοί ακόμα και μη ντετερμινιστικοί (υπό την έννοια ότι η επίλυση ενός conflict μπορεί να εξαρτάται και από δεδομένα που δεν αποθηκεύονται στη βάση). Παρολαυτά, μερικοί από αυτούς μάλλον μπορούν να καθοριστούν αυστηρώς ώστε ο αριθμός των conflict να μειωθεί κατά το δυνατόν. Το θέμα είναι ποια στρατηγική να ακολουθήσω, καθώς τέτοιο πρόβλημα δεν έχω αντιμετωπίσει ξανά και γι' αυτό ψάχνω αν υπάρχει πουθενά σχετική θεωρία
Συνημμένα
schema.gif

take5
Δημοσιεύσεις: 22
Εγγραφή: 16 Ιουν 2005 14:16

Πρόβλημα σχετικά με σχέση M:N - για database gurus

Δημοσίευση από take5 » 11 Ιούλ 2005 18:05

"Το αυγό έκανε την κότα ή η κότα το αυγό?"
Χωρις να είμαι ειδικός έχω την εντύπωση ότι το συγκεκριμένω μοντέλο μπορεί να διεκδικίσει Νομπελ Μαθηματικών :lol: :lol:
Δεν ξέρω αν βοηθάει αλλά σε εφαρμογές που έχω δει το πρόβλημα αντιμετωπίζεται ως εξης.
Βήμα α) Βρισκουμε τα αντικείμενα χωρις εξάρτηση
Βήμα β) Βρισκουμε τα αντικειμενα που εξαρτουνται μόνο από αντικειμενα τυπου (α)
Βημα γ) Βρισκουμε τα αντικείμενα που εξαρτούνται από αντικειμενα τυπου (α) ή (β)
.
.
.
.
.
Βημα Τελικό) Καθορίζουμε μια σειρά ταξινόμησης για τα αντικείμενα που έχουν απομείνει(π.χ οι περισσότερες "αγνωστες" εξαρτήσεις) δίνουμε τιμή στο πρώτο με βάση τις εξαρτήσεις από γνωστά αντικείμενα και εφαρμόζουμε όλα τα παραπάνω βήματα.

Συνήθως αντικείμενα με εξάρτηση μόνο τον εαυτό θεωρούνται μη εξαρτούμενα

Υπάρχει μεγάλη πιθανότητα να μην κατάλαβα καν το πρόβλημα. Σε αυτή την περίπτωση συγνώμη προκαταβολικά για το ασχετο του μηνύματος :lol: :lol: :lol:

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27622
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Πρόβλημα σχετικά με σχέση M:N - για database gurus

Δημοσίευση από cordis » 11 Ιούλ 2005 18:57

να σου κάνω εγώ μια ερώτηση;

έστω ότι το 9 το θεωρούμε ως conflict ποια είναι η σωστή τιμή; αυτή που μπαίνει πρώτη ή αυτή που μπαίνει τελευταία;

σε τι πρέπει να το υλοποιήσεις; σε κάποια βάση δεδομένων; κι αν ναι σε ποιά;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

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

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

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