Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από Apostolis_38 » 23 Ιουν 2011 14:56

:D :D :D
Να του πεις οτι εδώ το θέμα μας είναι το
Akis_gr49 έγραψε:Θέλω να πάρω όλα τα user_id που ανήκουν στο "x" forum_id.
αν αυτός θέλει κάτι άλλο να βρει τον pimpogio να του πει τι θα κάνει :hammer:

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από dva_dev » 23 Ιουν 2011 16:49

Apostolis_38 έγραψε:
pimpogio έγραψε:
Apostolis_38 έγραψε:Αλλος τρόπος είναι να παραλείψεις τον πίνακα users_forums και να φτιάξεις τον forums με πεδία user_id, forum_id, forum_title και primary key τον συνδυασμό user_id,forum_id.
μην το κανεις αυτο.. ειπαμε κανονικοποίηση

:D :D :D :D

Για δώσε μου έναν καλό λόγο να μην το κάνει.
Γιατί όταν θα θέλει να βάλει 100 χρήστες σε 1 forum θα πρέπει να φτιάξει το ίδιο forum 100 φορές και όχι 1.
Γιατί όταν θα θέλει αργότερα να αλλάξει τον τίτλο σε κάποιο forum δεν θα το κάνει σε 1 εγγραφή, 1 φορά για αυτό το 1 forum αλλά σε 100
Γιατί όταν αργότερα θα θέλει να φτιάξει κάποιο (ή πολλά) subforum αυτού του forum δεν θα μπορεί να το κάνει.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από Apostolis_38 » 24 Ιουν 2011 09:02

Αυτοί είναι 3 καλοί λόγοι.
Εγώ έναν ζήτησα.
:roll:

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από pimpogio » 24 Ιουν 2011 13:25

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

Χαρακτηριστικο παραδειγμα τετοιας προβληματικης βασης ειναι το wordpress... παραδειγμα προς αποφυγη που λεμε.

μια κανονικποιημενη βαση μεχρι 3nf ειναι η ενδεδειγμενη λυση για το 95% των web sites

απλος κανονας: 1 fact / 1 time / in 1 place

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από jpk » 24 Ιουν 2011 20:21

Akis_gr49 έγραψε: Users
user_id
user_name

Forums
forum_id
forum_title

user_forums
id
user_id
forum_id
Πάντως πραγματικά θα βοηθήσει στο μέλλον να έχεις ενοποιημένες συμβάσεις ονομασιών. Για παράδειγμα οι πίνακες με μικρά και τα πεδία - columns με κεφαλαία, ή ότι θες αρκεί να είναι μια σύμβαση που ακολουθείς παντού. Επίσης , δεν υπάρχει λόγος να λες π.χ. FORUM_ID στον πίνακα forums αρκεί ID (του forums είναι...)

pimpogio έγραψε: user_forums
user_id
forum_id

PK(user_id,forum_id) -> συνδιασμενο ΠΚ

το id ειναι πλεονασμος και δε χρειαζεται..
Μπορώ να σκεφτώ πολύ γρήγορα 4 λόγους γιατί είναι καλό (κατ' εμέ) να έχεις εκεί ID, ( ORM ή οποιαδήποτε μορφή απεικόνισης των εγγραφών σε λίστα αντικειμένων ,ενιαία λογική χρήσης των πινάκων με IDs -τόσο σε κώδικα όσο και πάνω στην βάση- , μεγαλύτερη ευελιξία μελλοντικών αλλαγών στην βάση - γιατί ο user_forums αποκτά δική του οντότητα , απλοποιημένα ερωτήματα ).

Παρόλα αυτά επειδή δεν είναι ακριβώς surrogate key (π.χ. ID) αντί για composite key (π.χ. δύο κολόνες του πίνακα) και επειδή εκεί ο συνδυασμός για το composite key γίνεται πάνω σε surrogate keys δεν θα μου φαινόταν δομικό λάθος η παράλειψη του ID. Είναι και αυτό ένα από τα θέματα που χρησιμοποιούνται και οι δύο μέθοδοι και επιλέγεις εσύ.
Τελευταία επεξεργασία από το μέλος jpk την 25 Ιουν 2011 00:09, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από ThyClub » 24 Ιουν 2011 21:05

pimpogio έγραψε:Χαρακτηριστικο παραδειγμα τετοιας προβληματικης βασης ειναι το wordpress... παραδειγμα προς αποφυγη που λεμε.
Από τις λίγες φορές που είπες κάτι αρνητικό για κάτι (software, service κτλ), και θελω να σου πω ένα:

ΠΕΣΤΑ ΧΡΥΣΟΣΤΟΜΕ :D

Δεν έχω ξαναδεί τέτοιο πράγμα...

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Sql ερώτημα - 2 fields, 1 table - LEFT JOIN και GROUP

Δημοσίευση από pimpogio » 25 Ιουν 2011 11:43

μα και για το joomla λεω αλλα ενταξει εκει δεν ειναι
τοσο σοβαρη η κατασταση...
εκει δεν εχουνε acid βαση αλλα ειναι normalized σε μεγαλο βαθμο... οποτε εκει ειναι ευκολες οι αλλαγες
και τα fixes

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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