πολλές υπηρεσίες πελάτη

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

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

Απάντηση
Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

πολλές υπηρεσίες πελάτη

Δημοσίευση από Serghio » 08 Ιαν 2013 12:43

Φτιάχνω μια εφαρμογή όπου ο πελάτης θα έχει την δυνατότητα να προσθέτει τις υπηρεασίες που προσφέρει σαν επιχείρηση/ελ.επαγγελματίας.

Το ερώτημα είναι πως μπορώ να το οργανωσω αυτό στην βάση δεδομένων.
Έχω φτιάξει ένα table όπου διατηρούνται τα βασικά στοιχεία της επιχείρησης του πελάτη-τηλέφωνο, όνομα κλπ, κάθε record του table αντιστοιχεί και σε ένα πελάτη-λογικά και οι υπηρεασίες εκεί θα πρέπει να πάνε.

Ομως αυτό έρχεται σε σύγκρουση με την αρχή ότι ένα field δεν μπορεί να έχει πάνω από ένα value.
Βέβαι πολλοί πελάτες έχουν κοινές υπηρεασίες, πράγμα που διευκολύνει τα πράγματα

Εδώ έχουμε μια σχέση many to many.Πολλοί πελάτες, πολλές υπηρεασίς(εφόσον σε μερικές περιπτώσεις πελάτες προσφέρουν κοινές υπηρεασίς).
Tι μπορώ να κάνω;

Να δημιουργήσω ξεχωριστό table υπηρεσιών;

Άβαταρ μέλους
billt
Δημοσιεύσεις: 1175
Εγγραφή: 20 Φεβ 2004 16:17
Τοποθεσία: Θεσσαλονίκη

πολλές υπηρεσίες πελάτη

Δημοσίευση από billt » 08 Ιαν 2013 13:30

Ναι, η δομή θα είναι περίπου:

table clients
client_id
client_name
service_id
....

table services
service_id
service_name
...

και τυποποιείς τις υπηρεσίες. Αν όμως θέλει ένας πελάτες να κάνει πολλαπλές υπηρεσίες, τότε :

- Αν υπάρχει καθορισμένος μέγιστος αριθμός υπηρεσιών (πχ 3) τότε ο πρώτος πίνακας γίνεται:

table clients
client_id
client_name
service_id_1
service_id_2
service_id_3
....

- Αν θέλεις να υπάρχει άπειρος αριθμός υπηρεσιών ανά πελάτη/επαγγελματία τότε χρειάζεσαι έναν επιπλέον πίνακα:

table clients_to_services
id
client_id
service_id

με πολλαπλές εγγραφές ανα πελάτη και δεν χρειάζεται το service_id στο πίνακα clients

Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

πολλές υπηρεσίες πελάτη

Δημοσίευση από Serghio » 08 Ιαν 2013 13:49

πάντως table υπηρεσιών(services) θα υπάρχει έτσι και αλλιώς. Το κατάλαβα καλά αυτό;

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

πολλές υπηρεσίες πελάτη

Δημοσίευση από burnmind » 08 Ιαν 2013 13:54

billt έγραψε:table clients_to_services
id
client_id
service_id
Στο παραπάνω, θα πρότεινα να μην υπάρχει το id και να είναι τα υπόλοιπα 2 primary keys. Γλυτώνεις τις διπλοεγγραφές χωρίς κόπο.

Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

πολλές υπηρεσίες πελάτη

Δημοσίευση από Serghio » 08 Ιαν 2013 13:57

Θα παίξω με foreign keys.
Πάντως υποθέτω, το clients & services table θα είναι τα child table και το table clients_to_services θα είναι το parent table

Απάντηση

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

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

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