 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
Social network 2010/2011 Clicca QUI per vedere il messaggio nel forum |
asgar |
Originally posted by pirlo21
[B]
questo vuol dire che dobbiamo creare delle tabelle apposite x contenere i dati delle statistiche e le viste x ciò che riguarda l'utente?
questa |
pirlo21 |
non ne capisco molto il senso...cioè ok per le viste, ma che senso ha creare una tabella con gli stessi dati delle tabelle di partenza? Le statistiche non posso calcolarle con delle query direttamente dalle tabelle di partenza?
Dovrei quindi farmi la tabella:
gioco, numero di utenti che lo possiedono (ad esempio) e tenerla aggiornata con dei trigger ad ogni modifica? Cosa che io farei con una query senza creare un altra tabella |
number15 |
Prova a leggere nei post precedenti che si parlava di viste materializzate (non ricordo se era questo il caso).
Teoricamente avresti delle query molto più leggere da eseguire visto che non servirebbero le join.
Di contro c'è che sta tabella va continuamente aggiornata.
Conviene? Dubito in un progettino del genere, ma se è richiesto... |
Guccio |
Scusate ho un dubbio riguardo le categorie di utenza: devo crearle nel database, assegnandogli i relativi permessi, e poi far connettere dall'applicazione gli utenti che appartengono a questa categoria attraverso questo account? Oppure devo creare un account per ogni utente della categoria con i relativi permessi? |
Guccio |
Un'ultima cosa...le tabelle che contengono le statistiche vanno inserite nel modello e/r?
essendo entità a sè stanti mi chiedevo se non sia inutile |
fcaridi |
Qualcuno sa suggerire eventuali tools di supporto allo sviluppo in php?
Cakephp puo' tornare utile?
Ve ne sono altri ...?
Grazie |
*°§_-??? |
Originally posted by fcaridi
Qualcuno sa suggerire eventuali tools di supporto allo sviluppo in php?
Cakephp puo' tornare utile?
Ve ne sono altri ...?
Grazie
Se hai familiarità con eclipse io mi ero trovata bene con PDT http://www.eclipse.org/pdt/ |
blue_tech |
ho un problema... ho una procedura che esegue due comandi:
fa il DROP di una tabella se esiste;
Crea la tabella precedentemente eliminata;
poi ho il trigger che richiama la procedura quando accade un evento.
Il problema è che a fronte dell'evento io ottengo l'errore:
"Explicit or implicit commit is not allowed in stored function or trigger. "
Cosa c'è che non va? La procedura è così:
code:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `procedura`()
BEGIN
drop table if exists tabella;
CREATE TABLE tabella SELECT a FROM b WHERE c AND d;
END
help :( |
number15 |
Se sposti il codice della procedura dentro il trigger che la chiama? |
blue_tech |
non mi permette nemmeno di crearlo segnalandomi lo stesso errore... :/ |
number15 |
Credo che il problema sia la drop nel trigger che non vuole.
Col truncate e la insert hai provato? |
blue_tech |
mi da l'errore anche solo con la create table...
io devo eliminare la tabella se già esiste e subito dopo crearla.
truncate e insert non agiscono sulla tabella ma sulle righe... sbaglio?
e poi ho letto questo che sconsiglia il truncate http://inderpreetsingh.com/2010/09/...ion-or-trigger/ |
number15 |
Credo si riferisca a myisam, visto che su innodb la truncate non cancella la tabella e la ricrea.
Intendevo qualcosa del tipo:
CREATE TABLE tabella SELECT a FROM b WHERE c AND d if not exists tabella;
truncate table tabella;
INSERT INTO tabella SELECT a FROM b WHERE c AND d;
Edit: nella create potresti usare il like o l'as (controlla) |
number15 |
Se rompe ancora il cazzo, prova a creare la tabella fuori dal trigger e dentro al trigger metti solo la truncate e la insert |
blue_tech |
provo così e vediamo cosa succede per ora grazie ;) |
number15 |
Nel caso puoi usare REPLACE al posto di truncate+insert. |
blue_tech |
dunque confermo che la TRUNCATE provoca lo stesso messaggio di errore...
Per risolvere basta seguire il consiglio dell'articolo che ho linkato sopra
in sostanza al posto di:
TRUNCATE TABLE nometabella
bisogna mettere:
DELETE FROM nometabella
(senza l' * )
In sostanza:
1) creo la tabella la prima volta a mano
2) creo la procedura che svuota la tabella e la riempie di nuovo con i dati aggiornati
Così sembra funzionare tutto.
Grazie :D |
number15 |
Ottimo.
Ma è innodb la tabella su cui esegui la truncate?
Perché truncate = delete from senza where, quindi non capisco perché non vada.
Edit: ecco la spiegazione:
For an InnoDB table before version 5.0.3, InnoDB processes TRUNCATE TABLE by deleting rows one by one. As of MySQL 5.0.3, row by row deletion is used only if there are any FOREIGN KEY constraints that reference the table. If there are no FOREIGN KEY constraints, InnoDB performs fast truncation by dropping the original table and creating an empty one with the same definition, which is much faster than deleting rows one by one.
Si vede che non hai fk allora. |
blue_tech |
si è innodb... il problema stando all'articolo nasce da questa osservazione:
Depending on version and storage engine, TRUNCATE can cause the table to be dropped and recreated. This provides a much more efficient way of deleting all rows from a table, but it does perform an implicit COMMIT. You might want to use DELETE instead of TRUNCATE.
In pratica la TRUNCATE fa una commit implicita mentre la delete no e quindi ecco la differenza. |
number15 |
Si si, infatti ti ho postato la spiegazione. Dalla versione 5.0.3 la truncate è diventata una drop + una create, mentre prima era una semplice delete. |
blue_tech |
già ;)
oggi provo ad implementare tutto e faccio tutte le prove del caso ma da quel che ho visto ieri direi che funziona tutto :) |
blue_tech |
confermo che funziona tutto... ho implementato 3 viste materializzate con i relativi trigger e procedure e nell'utilizzo ho verificato che funziona tutto correttamente :) |
blue_tech |
abbiate pazienza sto sistemando gli ultimi punti mancanti e ho un problema con il punto dove chiede che i giochi che dopo un tot di tempo non vengono presi da un numero di utenti, vengano cancellati in automatico... sinceramente non saprei come fare... ho sentito parlare di cron, sto guardando gli eventi in mysql ma non capisco bene come farlo...
so che ad ogni inserimento dovrei far partire un timer che controlli al suo scadere se qualcuno ha usato il suddetto gioco e se non tovo nessuno devo cancellare il gioco...
ma tecnicamente come cribbio lo faccio? :/ |
number15 |
Guarda qualche pagina fa che ne avevo discusso con un altro ragazzo.
Per cron non so aiutarti nello specifico, ma, ripeto, mi sembra 'complesso' per un progettino.
Puoi sennò fare col trigger che avevo consigliato all'altro ragazzo.
Comunque sentirei il prof per capire bene cosa vuole |
blue_tech |
gli ho già scritto per chiedere una delucidazione su una richiesta ma non mi ha ancora risposto -_-' quasi non ci spero che mi possa aiutare... |
blue_tech |
ma un trigger cmq non basta... nel senso che sicuramente sarà un trigger a far partire il timer, ma il controllo e l'eventuale eliminazione deve farlo qualcos'altro... |
number15 |
Puoi fare un trigger che fai partire dopo una qualche azione e dentro gli fai fare il controllo sulle date.
Con cron non è una azione a far partire un trigger, ma Ad esempio fai che ogni giorno alle 5 di mattina va eseguita una query di delete controllando le date e fine |
blue_tech |
ok credo di aver risolto però una cosa non mi viene... come gli dico in un trigger:
modifica il dato di una tabella quando la primarykey è uguale a questo codice che ho appena inserito in pippo?
il trigger si attiva after insert on PIPPO
EDIT:
spiego meglio con un esempio:
1) inserisco in PIPPO la coppia cod1,cod2
2) si attiva il trigger
come gli dico:
Aggiorna cod3 in PLUTO dove PLUTO.cod1= cod1 che ho appena inserito
??? |
number15 |
Non ho capito.
La pk è sempre in pippo?
Prova a far un esempio.
Il costrutto potrebbe essere:
IF NEW.codice = (SELECT xxx FROM xxx)
THEN
UPDATE tabella |
blue_tech |
mmm ho appena risolto bypassando il problema...
riaggiorno lo stato del campo in PLUTO per tutte le righe facendo un normale confronto... così funziona ;) |
Guccio |
Raga ma voi le tabelle delle statistiche le avete rapresentate anche nel diagramma e/r? se si come? |
pirlo21 |
qualcuno ha consegnato in questa sessione 26-30 settembre? |
blue_tech |
si ho portato ieri il mio e c'erano già altre buste sulla scrivania... non erano molte ma non so se erano tutte... |
pirlo21 |
anche io ieri ma ho trovato chiuso e l'ho lasciato nella posta :)
calendario orali?? sapete più o meno quanto ci vuole prima che esca? |
Gnappo89 |
non ne ho idea... |
blue_tech |
sul sito diceva solo che l'avrebbe pubblicato dopo il 30... teniamo d'occhio il sito e vediamo un pò... :/ |
drakess81 |
Ciao,
anche io ho consegnato ieri ma purtroppo ho fatto un pasticcio dell'ultimo minuto: tentando di mettere i CSS non mi compilava più nulla. Ho consegnato una versione che compila ma cecchia di 3 giorni quindi con pochi dati nel network e qualche bug.
Che voi sappiate la prova avverrà caricando il CD consegnato e quindi sarò valutato sulla versione zoppa oppure posso sistemare le cose per la prova e caricare tutto on line?
Qualcuno può descrivere come avverrà/quanto dura? |
number15 |
Io portai il mio portatile con il quale feci vedere il progetto.
Loro avevano in mano solo lo schema ER e il dump per guardare i trigger e la struttura. |
antares85 |
è uscito il calendario delle discussioni.
ognuno dovrebbe vedere il suo giorno ed il suo orario collegandosi alla solita piattaforma accessibile dal link postato dal prof. |
blue_tech |
potrebbero anche fare le cose un pò meglio...
dovete loggarvi e poi a sinistra andare su iscrizione esami per vedere il tutto e anche lì ci si trova davanti ad una schermata con mille info contrastanti... -_-'
nella mia dice:
data esame -> 12/10/11
iscrizione esame -> 03/10/11
info esame -> 19/10/11 ore 10.30
Non gli viene in mente che magari data esame e info esame sono un pò ambigue? mi presento il 12 o il 19? XD vabbè tengo buono il 19 visto che c'è anche l'ora, che dite? |
pirlo21 |
anche a me è scritto come te ma alle ore 11 quindi credo che vada bene il 19...
A proposito di date, spero che questa cosa sia flessibile perchè io ho superato lo scritto a settembre 2010 e in teoria questo appello è quello di settembre 2011, non ottobre (per la regola che il risultato di un esame è valido per un periodo massimo di un anno)...speriamo |
drakess81 |
Pirlo: Per quanto riguarda l'aver fatto l'esame a settembre 2010 ti posso tranquillizzare: sono nella stessa situazione ed il prof. mi ha scritto che va bene questa sessione ma non oltre.
Purtroppo io mi sono iscritto ma sotto "info" non vedo nessun orario. A qualcun'altro è capitato? |
blue_tech |
non dovresti iscriverti... devi andare a sinistra nella sezione iscrizione esami e dovrebbe già esserci la riga del tuo appello... |
drakess81 |
Avevo l'appello sotto "applli disponibili" e mi sono iscritto... ora è sotto "info appello" ma non c'è indicazione di orario... |
blue_tech |
ti conviene mandare una mail al prof |
pirlo21 |
voi vi state preparando qualcosa per la discussione?? vengono fatte anche domande di teoria? |
drakess81 |
Tranquillo, la discussione a me non l'ha fatta il professore ma una ragazza (non so chi fosse).
1) Analisi schema concettuale: Non devono essere violate el forme normali, se c'è qualcosa di anomalo può chiderti se viene violate una forma normale e quale. Se c'è qualche gerarchia magari ti può venir chiesto il tipo ma non ci sono quesiti di teoria.
2) Si passa poi a provare l'applicazione sul vostro PC ed in particolare si osserva la funzione per l'affinità degli amici e gli altri quesiti principali. Eventuali registrazioni utente o elementi grafici hanno peso basso o nullo quindi non vale la pena perderci tempo.
Il tutto dura meno di 20 minuti; non so se anche il professore operi così.
Se il sito è malfunzionante si conferma il voto dello scritto, se qualcosa non va (come a me) si aggiunge 1 o 2 punti.
In bocca al lupo! |
blue_tech |
Ma verbalizzano direttamente il voto finale su libretto? |
Guccio |
Originally posted by kermit63
dunque, il testo dice che le statitiche per gli analisti devono essere materializzate (immagino tabelle e non viste). ma cosa conviene quindi fare?
tabella REPORT dei giochi (o attributi in GIOCO), con ID gioco come pk e attributi percentuali di proprietari, media voti ecc
tabella PROFILO degli utenti (o attributi in UTENTE) con ID utente come pk e numero di giochi posseduti, provati, votati ecc.
in questo caso ogni aggiornamento/cancellazione di una comporterebbe il far aggiornare entrambe le tabelle (impiegandoci troppo ovviamente).
Quale soluzione quindi?
Ciao, ma come hai tradotto tu il fatto che vuole " numero di giochi posseduti/provati in relazione al numero medio dei giochi posseduti/provati da tutti gli utenti"? |
|
|
|
|