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

Σχεδιασμός βάσης δεδομένων


we_will_rise

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

Δημοσ.

Καλησπέρα,

 

ετοιμάζω ένα πρόγραμμα διαχείρισης ενός καταστήματος λιανικής πώλησης ειδών δώρου. Βρίσκομαι στην φάση σχεδίασης της βάση δεδομένων και αντιμετωπίζω ένα πρόβλημα. Θέλω όταν τρέχει το πρόγραμμα ο πωλητής, να εισάγει τα Barcode των ειδών που θα πουλήσει και όταν πατά Πώληση (πχ) να επεμβαίνει στην βάση δεδομένων και να κάνει τα εξής: να αφαιρεί την εγγραφή του προϊόντος (να μην υπάρχει πλέον το Barcode) και μειώνει το απόθεμα αυτού του προϊόντος από την αποθήκη. Αυτό που δεν καταλαβαίνω, είναι το πως θα είναι ο πίνακας Products. Η μόνη λύση που μου έρχεται είναι:

 

Products

barcode (πεδίο πολλαπλών τιμών)

productName (primary key)

productCategory (foreign key references on Categories.productCategory)

quantity

supplierName (foreign key references on Suppliers.supplierName)

buyPrice

sellPrice

 

και κατά την πώληση να μειώνεται το Quantity κατά 1 και να διαγράφεται η αντίστοιχη τιμή από το πεδίο Barcode. Ωστόσο αυτό μου φαίνεται κάπως περίπλοκο ως προς την υλοποίηση. Μπορεί κάποιος να μου προτείνει μία άλλη λύση, έστω και με περισσότερους από 1 πίνακες.

Δημοσ.

Να έχεις ίσως πίνακες

[barcodes] με barcode_id, barcode

[products] με product_id, description, sell_price, buy_price και οτι άλλο θες για τo product

[categories] με category_id, description

[suppliers] με supplier_id, supplier, και λοιπά στοιχεία του supplier (ανάλογα τι θες)

 

και όλα αυτά τα 'δένεις' σε ενα master πίνακα.

Δημοσ.

Να έχεις ίσως πίνακες

[barcodes] με barcode_id, barcode

[products] με product_id, description, sell_price, buy_price και οτι άλλο θες για τo product

[categories] με category_id, description

[suppliers] με supplier_id, supplier, και λοιπά στοιχεία του supplier (ανάλογα τι θες)

 

και όλα αυτά τα 'δένεις' σε ενα master πίνακα.

 

εννοείς και στον barcodes να υπάρχει ένα product_id?

και το απόθεμα πως θα το υπολίζω/πειράζω;

Δημοσ.

Αν το barcode ειναι μοναδικό τότε η ποσότητα οφείλει να ειναι 1, τουτέστιν δεν υπάρχει λόγος ύπαρξης. Όμως το ProductName δεν μπορεί να είναι κλειδί.

 

Αν το barcode δεν ειναι μοναδικό (πχ όλες οι κάρτες με τον αγιο-Βασίλη έχουν το ίδιο) τότε το barcode οφείλει να είναι detail στο είδος

Δημοσ.

Αν το barcode ειναι μοναδικό τότε η ποσότητα οφείλει να ειναι 1, τουτέστιν δεν υπάρχει λόγος ύπαρξης. Όμως το ProductName δεν μπορεί να είναι κλειδί.

 

Αν το barcode δεν ειναι μοναδικό (πχ όλες οι κάρτες με τον αγιο-Βασίλη έχουν το ίδιο) τότε το barcode οφείλει να είναι detail στο είδος

 

Έχεις δίκιο. Θα μιλήσω με τον πελάτη για να μάθω αν ισχύει κάτι τέτοιο επειδή αυτό αλλάζει τελείως την κατάσταση.

Δημοσ.

Χωρίς να μπω στο σχήμα μια παρατήρηση. Σε ένα σύστημα προιόντων/πωλήσεων ποτέ μα ποτέ δεν κάνεις physical delete στα δεδομένα. Είτε κάνεις logical delete με το status του προιόντος έιτε μεταφέρεις σε ιστορικό πίνακα είτε και τα δύο. Σκέψου ότι ένα προιόν μπορεί για κάποιο λόγο να επιστραφεί.Επομένως πρέπει να υπάρχει στην βάση. Επίσης είναι λογικό η επιχείρηση να θέλει να γνωρίζει ποια προιόντα έχει παραλάβει,πουλήσει καθώς και να παίρνει απαντήσεις σε ερωτηματα του τύπου.

 

-- Πόσα προιόντα τις τάδε κατηγορίας πούλησα αυτόν τον μήνα/έτος ?

-- Ποια προιόντα πούλησαν περισσότερο ανα εποχή ?

-- Ποιο είδος προιόντων που πούλησα στις γιορτές μου απέφερε περισσότερο κέρδος ?

 

κτλ

Δημοσ.

Χωρίς να μπω στο σχήμα μια παρατήρηση. Σε ένα σύστημα προιόντων/πωλήσεων ποτέ μα ποτέ δεν κάνεις physical delete στα δεδομένα. Είτε κάνεις logical delete με το status του προιόντος έιτε μεταφέρεις σε ιστορικό πίνακα είτε και τα δύο. Σκέψου ότι ένα προιόν μπορεί για κάποιο λόγο να επιστραφεί.Επομένως πρέπει να υπάρχει στην βάση. Επίσης είναι λογικό η επιχείρηση να θέλει να γνωρίζει ποια προιόντα έχει παραλάβει,πουλήσει καθώς και να παίρνει απαντήσεις σε ερωτηματα του τύπου.

 

-- Πόσα προιόντα τις τάδε κατηγορίας πούλησα αυτόν τον μήνα/έτος ?

-- Ποια προιόντα πούλησαν περισσότερο ανα εποχή ?

-- Ποιο είδος προιόντων που πούλησα στις γιορτές μου απέφερε περισσότερο κέρδος ?

 

κτλ

 

Πριν λίγο μίλησα με τον πελάτη και μου είπε ακριβώς αυτό! Ότι συχνά κάποιος πελάτης τους επιστρέφει αγορές και πρέπει κάπως να το κάνω με το πρόγραμμα. Σίγουρα δεν θα γίνεται delete εγγραφής αλλά μόνο μείωση/αύξηση του αποθέματος. Επίσης αυτό που ειπώθηκε σχετικά με τα barcode πιο πάνω ισχύει. Δηλαδή πολλά είδη έχουν το ίδιο barcode.

 

Σχετικά με αυτό με τι επιστροφές, καμιά ιδέα για το πως θα το υλοποιήσω;

Δημοσ.

Πριν λίγο μίλησα με τον πελάτη και μου είπε ακριβώς αυτό! Ότι συχνά κάποιος πελάτης τους επιστρέφει αγορές και πρέπει κάπως να το κάνω με το πρόγραμμα. Σίγουρα δεν θα γίνεται delete εγγραφής αλλά μόνο μείωση/αύξηση του αποθέματος. Επίσης αυτό που ειπώθηκε σχετικά με τα barcode πιο πάνω ισχύει. Δηλαδή πολλά είδη έχουν το ίδιο barcode.

 

Σχετικά με αυτό με τι επιστροφές, καμιά ιδέα για το πως θα το υλοποιήσω;

Έχεις ένα πίνακα που κρατάει το προϊόν και ένα πίνακα που κρατάει τις κινήσεις του προϊόντος (αγορά-πώληση-επιστροφή κτλ). Ο πρώτος πίνακας γενικά μένει ίδιος (προσθέτεις απλά κάθε καινούριο προϊόν). Ο δεύτερος κάνει καινούρια εγγραφή για κάθε δοσοληψία. Υπόλοιπο βγάζεις με sum στις κινήσεις που αφορούν το προϊόν που σε ενδιαφέρει.

 

 

Sorry κι όλας, αλλά απ' ότι βλέπω είσαι λίγο rookie στο αντικείμενο... Έχεις σκεφτεί σοβαρά σε τι πας να μπλέξεις; Δεν ξέρω τις συνθήκες κάτω από τις οποίες πας να φτιάξεις αυτό θες να φτιάξεις αλλά είναι σα να θες να φτιάξεις αεροπλάνο και για αρχή ψάχνεις αν βολέυουν περισσότερο οι βίδες ή τα πριτσίνια. Που να φτάσεις δηλαδή και στα ζητήματα αεροδυναμικής!!!

 

Φιλικά πάντα. Δεν έχω πρόθεση να μειώσω τη θέληση και τον ενθουσιασμό σου.

 

Δημοσ.

Έχεις ένα πίνακα που κρατάει το προϊόν και ένα πίνακα που κρατάει τις κινήσεις του προϊόντος (αγορά-πώληση-επιστροφή κτλ). Ο πρώτος πίνακας γενικά μένει ίδιος (προσθέτεις απλά κάθε καινούριο προϊόν). Ο δεύτερος κάνει καινούρια εγγραφή για κάθε δοσοληψία. Υπόλοιπο βγάζεις με sum στις κινήσεις που αφορούν το προϊόν που σε ενδιαφέρει.

 

 

Sorry κι όλας, αλλά απ' ότι βλέπω είσαι λίγο rookie στο αντικείμενο... Έχεις σκεφτεί σοβαρά σε τι πας να μπλέξεις; Δεν ξέρω τις συνθήκες κάτω από τις οποίες πας να φτιάξεις αυτό θες να φτιάξεις αλλά είναι σα να θες να φτιάξεις αεροπλάνο και για αρχή ψάχνεις αν βολέυουν περισσότερο οι βίδες ή τα πριτσίνια. Που να φτάσεις δηλαδή και στα ζητήματα αεροδυναμικής!!!

 

Φιλικά πάντα. Δεν έχω πρόθεση να μειώσω τη θέληση και τον ενθουσιασμό σου.

 

 

Καλά καλά ούτε την σχολή δεν τελειώσα ακόμα και είναι το πρώτο βαρύ πρότζεκτ που πιάνω και σίγουρα είμαι rookie :). Είναι καλός μου φίλος ο πελάτης και το θέλει για "πρόχειρη" ας πούμε χρήση. Οπότε και όλα σκατά να πάνε δεν παίζει κάτι. Πιο πολύ για εμπειρία και εξάσκηση το κάνω... Πολύ χρήσιμη η συμβουλή σου και λογικά θα την ακολουθήσω ;) Ευχαρίστως θα δεχτώ κι άλλες.

Δημοσ.

 

 

πριτσίνια ή βίδες είναι καλύτερα? :P

 

 

 

we_will αφού είναι φίλος και δε το θέλει και για "σοβαρή" δουλειά όντως δες το πιο πολύ σαν εκμάθηση.

Δές εδώ να πάρεις μια ιδέα των πεδίων που μπορεί να χρειάζεται να έχει ο πίνακας προμηθευτών και προϊόντων..

http://www.princeton.edu/~rcurtis/ultradev/ecommdatabase.html

Δημοσ.

Έχεις ένα πίνακα που κρατάει το προϊόν και ένα πίνακα που κρατάει τις κινήσεις του προϊόντος (αγορά-πώληση-επιστροφή κτλ). Ο πρώτος πίνακας γενικά μένει ίδιος (προσθέτεις απλά κάθε καινούριο προϊόν). Ο δεύτερος κάνει καινούρια εγγραφή για κάθε δοσοληψία.

 

Σε τι θα εξυπηρετήσει κάτι τέτοιο; (εννοώ το να ξέρεις την κάθε κίνηση του προϊόντος)

 

Πιστεύω πως από το πεδίο quantity και μόνο μπορείς να κάνεις τη δουλειά. Για τιμή -1 το προϊόν δεν είναι διαθέσιμο γενικά (δεν το φέρνει πλέον το μαγαζί). Οι τιμές από 0 και πάνω δηλώνουν πόσα κομμάτια υπάρχουν διαθέσιμα.

Δημοσ.

Σε τι θα εξυπηρετήσει κάτι τέτοιο; (εννοώ το να ξέρεις την κάθε κίνηση του προϊόντος)

 

Πιστεύω πως από το πεδίο quantity και μόνο μπορείς να κάνεις τη δουλειά. Για τιμή -1 το προϊόν δεν είναι διαθέσιμο γενικά (δεν το φέρνει πλέον το μαγαζί). Οι τιμές από 0 και πάνω δηλώνουν πόσα κομμάτια υπάρχουν διαθέσιμα.

 

Ακριβώς αυτό που λέει. Μπορείς να ξέρεις τι, πότε και για πόσο(€) κινήθηκε ένα προϊόν. Αν ξέρεις ότι τέλη Νοέμβρη 2010 ανέβηκαν οι πωλήσεις Χριστουγενιάτικων καρτών, μπορείς από τέλη Οκτώβρη 2011 να παραγγείλεις τις καινούριες στον προμηθευτή σου, ώστε να τις έχεις όταν αρχίσουν να τις ζητάνε. Επίσης αμα από την πώληση του 70% της προμήθειας βλέπεις ότι το προϊόν έχει καλύψει το κόστος όλης της παρτίδας και έχει δώσει τα αναμενόμενα κέρδη, μπορείς το τελευταίο 30% να το σπρώξεις σε χαμηλές τιμές για να μη σου μείνει στο ράφι τώρα που τελειώνει η σαιζόν.

Δημοσ.

Καλημέρα και καλές γιορτές.

Χωρίς να θέλω να σε ξενερώσω, θα σου πρότεινα να συμβουλέψεις τον πελάτη σου να κινηθεί σε έτοιμη εμπορική(ή εμπορολογιστική) λύση. Σε τέτοια προγράμματα είναι ΑΠΙΣΤΕΥΤΑ χρονοβόρο για σένα, να σου κάνει την ανάλυση ο πελάτης σου. Θα φτάσεις στο σημείο, να έχεις πληρωθεί για "ένα απλό προγραμμάτακι" και να έχεις φτάσει να συντηρείς εφαρμογή που από μόνη της χρειάζεται τμήμα υποστήριξης.

Δημοσ.

Καλημέρα και καλές γιορτές.

Χωρίς να θέλω να σε ξενερώσω, θα σου πρότεινα να συμβουλέψεις τον πελάτη σου να κινηθεί σε έτοιμη εμπορική(ή εμπορολογιστική) λύση. Σε τέτοια προγράμματα είναι ΑΠΙΣΤΕΥΤΑ χρονοβόρο για σένα, να σου κάνει την ανάλυση ο πελάτης σου. Θα φτάσεις στο σημείο, να έχεις πληρωθεί για "ένα απλό προγραμμάτακι" και να έχεις φτάσει να συντηρείς εφαρμογή που από μόνη της χρειάζεται τμήμα υποστήριξης.

 

Όπως προείπα ο πελάτης μου είναι φίλος μου και δεν θέλει να πάει σε εμπορική λύση και να πετάξει λεφτά σε κάτι που δεν θα χρησιμοποιήσει ούτε στο 10% των δυνατοτήτων του... Εγώ ένα προγραμματάκι διαχείρισης αποθήκης του κάνω, όχι τίποτα εξτρίμ.. Το πιο τρελό που μου ζήτησε είναι όταν πουλάει κάτι, να το αφαιρεί απ'το απόθεμα... Αυτό μόνο.. Αν αυξηθούν οι απαιτήσεις του φυσικά και δεν θα αναλάβω να κάνω έργο ομάδας προγραμματιστών. Ευχαριστώ πάντως για την συμβουλή σου :)

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

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

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