Ciao a tutti.
Caspita, da un semplice esercizio sulle finestre incorporate siamo giunti alla progettazione di un database per gestire un sistema di ordini...Thing is changing direbbero oltre oceano.
Bene!!!
Tanto per aggiungere un poco di carne al fuoco e per sollecitare ulteriormente la discussione, si potrebbe dire che nell'ambito di Database Relazionali il concetto di Client/Server non si riferisce alle macchine, ma al software. PostgreSQL, MySQL, MariaDB ed altri sono Client/Server perché costituiti da due distinte entità ciascuna delle quali svolge il proprio compito, l'una senza l'altra sono perfettamente inutili. Il Server si occupa di mantenere e gestire, semplificando molto, i dati sotto forma di tabelle, indici, viste ecc. ecc. il Client si rivolge al Server, tramite interrogazioni SQL, per ottenere i dati e restituirli all'utente. In tutto questo non trovo nulla che implichi l'utilizzo di più computer. Le due entità possono essere ospitate dalla stessa macchina.
Personalmente credo che se devi progettare un database per la gestione di dati uniformi come una rubrica telefonica, una collezione musicale o catalogare le foto delle vacanze SQLite sia perfetto, Firefox e Thunderbird lo utilizzano per gestire Segnalibri e Contatti. Ma laddove i dati siano disomogenei, correlati tra loro e magari ad accesso concorrenziale, la scelta cade inesorabilmente su un RDBMS, volevo scrivere PostgreSQL, ma voglio concedere qualche possibilità anche ad altri, anche se utilizzi un solo computer.
Passando alla struttura del DB concordo con le osservazioni fatte da Tornu, alle quali aggiungerei che relativamente agli articoli bisognerebbe prevedere la gestione delle confezioni e delle promozioni. Ti faccio un esempio pratico.
Le fascette metalliche che si utilizzano per fissare i raccordi in gomma, possono essere vendute singolarmente, in confezioni da 10 da 20 o da 100; in pratica lo stesso articolo (la fascetta) diventa più articoli differenti (x10, x20, x100).
Tabella Articoli:
includerei un campo per il codice a barre.
il campo Art_Iva lo trasformerei in FK sulla tabella Aliquote che contiene le aliquote iva.
Tabella Testata Ordini:
introdurrei i campi Data_Creazione e Data_Evasione
Tabella Clienti:
non userei il campo Cli_Sconto in quanto la percentuale di sconto può variare in base all'articolo; una minuteria può godere di uno sconto diverso rispetto ad un utensile o un macchinario. Bisognerebbe prevedere una struttura di tabelle per gestire le scontistiche dei clienti in base alle categorie merceologiche.
io non ho mai preso in considerazione MySql e tanto meno PostgreSQL di cui so... praticamente niente.
Sono interessatissimo a questi database (sinceramente più a PostgreSQL anche se deve essere tostissimo avendo una logica diversa rispetto ai database relazionali classici) ma non trovi che per introdurre una persona che nulla sa di programmazione e database a questi tipi nati per servire dei client, ci voglia gente con...
No. Non credo tu voglia scrivere la Bibbia della progettazione database, materia complessa ed il cui studio non finisce mai, sono però convinto che sia meglio iniziare con gli strumenti giusti.
Il progetto mi interessa e sicuramente nei limiti delle mie conoscenze e del tempo disponibili parteciperò.