Newsgroup: it.comp.appl.access
Titolo: "aiuto" gestione videonoleggio

ciao a tutti, cerco un aiuto.
Ho iniziato un database e vorrei sapere se
posso andare avanti.
sareste così gentili e pazienti per dirmi se quello
che ho fatto e esatto? grazie mille.(sono alle primissime armi)
ho creato
le tabelle così strutturate;
TABELLA CLIENTI
n° tessera (contatore e
chiave primaria)
nome (testo)
cognome(testo)
indirizzo(testo)
TABELLA
REGISTI
ID regista (contatore e chiave primaria)
regista (testo)
TABELLA GENERE
ID genere (contatore e chiave primaria)
genere (testo)
TABELLA FILM
ID film (contatore e chiave primaria)
titolo (testo)
ID
regista (numerico - con ricerca guidata da tabella registi)
attore 1
(testo)
attore 2 (testo)
ID genere (numerico - con ricerca guidata da
tabella genere)
anno (testo)
durata (testo)
prestito(noleggio)- (si/no)
infine una tabella prestiti (noleggi)non so se può essere utile.
ID
prestito (contatore e chiave primaria)
n° tessera (numerico)
ID film
(numerico) 
scadenza prestito (numerico)
di tutte queste tabelle ho
fatto le maschere.
le relazioni sono le seguenti:
TABELLA FILM uno a
molti con la TABELLA PRESTITI tramite il campo ID FILM.
TABELLA CLIENTI
uno a molti con la TABELLA PRESTITI tramite il campo n° tessera.
inoltre
la TABELLA FILM è in relazione uno a molti con le TABELLE REGISTI E GENERE.
un altro aiuto (lo so devo essere uno strazio- pardon)
come faccio a
noleggiare un film?
i movimenti (quali?) li faccio nella maschera prestiti
oppure?.
grazie a tutti, sarebbe bello potessi dare io degli aiuti, ma per
il momento non sono in grado magari in futuro.
ciao ciao.
--------------------------------
Inviato via 
http://usenet.iol.it

 ha scritto nel messaggio
news:62Z11Z154Z165Y...@usenet.iol.it...

Per esprimere un giudizio sull'architettura delle tabelle del tuo database,
occorrerebbe conoscere meglio le informazioni che il database deve fornire,
ricavandole appunto dai dati delle tabelle; dire che devi gestire un
videonoleggio è per me limitativo, causa la mia ignoranza delle
problematiche relative la gestione di un videonoleggio, specie se il
noleggio non è gratuito (solo prestiti).
Quindi mi limiterò a fare alcune considerazioni che poi tu valuterai quanto
siano utili al tuo progetto.
Innanzitutto mi creerei anche una tabella Attori (vedremo più avanti come
adoperarla) che abbia la seguente struttura:
IDAttore            Contatore e chiave primaria
Attore               Testo
Considerazioni sulla tabella prestiti: se devi mantenere una storia dei
prestiti effettuati ha significato di esistere, nel qualcaso sarebbe logico
inserici anche una data di inizio e una data di fine prestito; comunque sia
il campo che contiene la scadenza mi sembra logico che sia un campo di tipo
Data/ora e non di tipo Numerico. Se invece la tabella prestiti ti serve
solamente per sapere se un film è noleggiato (prestato), la eliminerei e
aggiungerei due campi nella tabella film: NumeroTessera (di tipo numerico
che contiene il valore zero se il film non è noleggiato oppure contiene il
numero tessera del cliente che ce lo ha in noleggio) e Scadenza (di tipo
Data/ora che avrà il valore Null se il film non è noleggiato oppure la data
presunta di restituzione se è noleggiato). Se questa soluzione ritieni sia
funzionale, puoi eliminare il campo *prestito* dalla tabella FILM, in
quanto, se il campo NumeroTessera di cui sopra è uguale a zero, significa
che il film non è noleggiato e lo è se detto campo è diverso da zero.
Per quanto riguarda la tabella FILM opererei le seguenti modifiche:
1) Assegnerei al campo *anno* un tipo dato Numerico e non Testo.
2) Assegnerei al campo *durata* un tipo dato Data/ora e non Testo.
3) Per quanto riguarda il campo *prestito* vedi quanto scritto nel capoverso
precedente.
4) Se decidi di inserire il campo NumeroTessera esegui per esso la ricerca
guidata da tabella CLIENTI.
5) eliminerei i due campi *attore1* e *attore2*
Poiché un attore interpreta più film ed un film è interpretato da più
attori, le tabelle Attori e FILM debbono essere messe tra di loro in
relazione molti-a-molti. Per realizzare ciò devi crearti un'altra tabella
che chiamerai tblAttFilm che avrà la seguente struttura:
IDAtFi            Contatore e chiave primaria
IDFilm            Numerico (con ricerca guidata da tabella FILM)
IDAttore         Numerico (con ricerca guidata da tabella Attori)
La tabella tblAttFilm deve essere in relazione uno-a-molti con la tabella
FILM in base ai campi IDFilm ed in relazione uno-a-molti con la tabella
Attori in base ai campi IDAttore.
Questa tabella ti conviene aggiornarla tramite una sottomaschera inserita
nella maschera con cui aggiorni la tabella FILM.
Per noleggiare un film farei invece così.
Mi creerei una query di selezione, chiamata Query1; baserei Query1 sulla
tabella FILM e farei in modo che mi restituisse solo i titoli e relativo
IDFilm dei film non noleggiati (campo NumeroTessera = zero).
Mi creerei quindi una maschera (chiamata Maschera1) con visualizzazione a
Maschera singola e che abbia come Origine record la tabella FILM. In
Maschera1 inserirei solo tre controlli associati ai campi Titolo,
NumeroTessera e Scadenza della tabella FILM.
Mi creerei quindi una seconda maschera con visualizzazione a Maschera
singola chiamata Maschera2; Maschera2 non dovrebbe avere Origine record e
dovrebbe contenere solamente una casella di riepilogo non associata chiamata
ElencoFilm. La casella di riepilogo dovrebbe avere come Origine riga la
query Query1.
A fronte dell'evento "Su doppio clic" della casella di riepilogo aprirei in
maniera filtrata Maschera1 così che mi verrebbero visualizzati solo i dati
relativi al film scelto sulla cesella di riepilogo con un doppio clic.
Alla chiusura di Maschera1 effettuerei un Requery della casella di
riepilogo.
Così facendo, per noleggiare un film dovresti aprire Maschera2; dall'elenco
contenuto nella casella di riepilogo dovresti scegliere con un doppio clic
il film da noleggiare; ti si aprirà Maschera1 con i dati del film scelto;
sceglierai il cliente che noleggia il film e digiterai la scadenza; chiudi
quindi Maschera1.
Se come soluzione ti piace e dovvessi trovare qualche difficoltà a
realizzarla, puoi sempre tornare a chiedere aiuto al NG.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------