Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    esercizio database consiglio

    ho queste tabelle in MYSQL

    ALBUM (ID_album, titolo, data creazione,visibilita)
    FOTO (percorso, album,nome)

    con vincolo int ref tra ID_ALBUM e percorso

    dovrei estrarre l album che contiene piu foto.
    io ho fatto cosi come segue e la query mi sembra che torni dai risultati che dà.

    /*OP18 ALBUM CHE CONTIENE PIU FOTO*/

    SELECT ALBUM,TITOLO,MAX(NUMEROFOTO)
    FROM (

    SELECT ALBUM,TITOLO,COUNT(*) AS NUMEROFOTO
    FROM ALBUM JOIN FOTO ON ALBUM=ID_ALBUM
    GROUP BY ALBUM
    ORDER BY COUNT(*) DESC

    ) AS NUMEROFOTODESC


    DUBBI:

    1. Se per esempio ci sono tre album che hanno lo stesso numero di foto e risulta il massimo mi restituisce solo quello che prende per primo.
    Mi potrebbe anche andar bene , ma credo ci sia un metodo piu intelligente di farlo.

    2 . Non sono sicuro dell eleganza di mettere la tabella derivata con l alias. Ci sarebbe un modo per evitarla?


    Altra domanda che allego in questa per non aprire un altro messaggio, esiste un modo per evitare gli join? Mi spiego ho visto gli esami orali del corso di basi dati e il prof chiedeva (ma forse ho sbagliato io a interpretare la domanda) quale altro modo esisteva per diminuire l uso massiccio di join in un progetto.

    grazie in anticipo per le risposte.

  2. #2
    Ciao per quanto riguarda l'ultima domanda, effettivamente ce uno studio che riguarda l'uso del join dove si e' notato che e' una delle operazione piu utilizzata nell'sql ma anche una delle piu dispendiose.

    Ovviamente e' utilissimo usare join solo che risulta dispendioso perche' prima va a creare una tabella grande contenente tutti i dati che hanno soddisfatto la condizione di join e poi va ad applicare le selezioni per ridurre il numero di dati.

    Sono stati studiati dunque metodi per cercare di ridurreil peso che una join ha sulle prestazoni di un sistema. In particolare un metodo che si e' visto produrre buoni risultati e' di : Anticipare le selezioni. Quindi prima fare le selezioni e poi ai solo risultati delle selezioni applicare il join in questo modo si ha un ottimo incremento di prestazioni.

    Ancora di piu possiamo ottenere se sui campi su cui applichiamo le proiezioni definiamo degli indici!!!

  3. #3
    grazie mille!

    per le altre due domande invece hai qualche consiglio?

  4. #4
    per prendere il primo elemento in maniera fatta bene c'è la funzione FIRST

    si usa cosi : SELECT FIRST(nome_colonna) FROM nome_tabella

    ti restituisce solo il primo della lista.

    per quanto riguarda l'alias nella query io lo trovo elegante rispetto ad altri metodi infatti si usa spesso

  5. #5
    WOW non sai quanto mi sollevi l animo.. sto facendo un progetto per l uni e ne sto facendo un uso intensivo di questi alias... non sapendo come usano fare loro a lezione dato che non seguo chè lavoro avevo questo timore.

    grazie ancora!

  6. #6
    Ciao e in bocca al lupo per il progetto

  7. #7
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679

    Re: esercizio database consiglio

    Originariamente inviato da Akeryone
    ho queste tabelle in MYSQL
    ...

    DUBBI:...
    Operando con mysql esiste la clausula LIMIT molto utile per i massimi, ovvero invece di prendere il MAX di qualcosa, ordini le righe come vuoi e poi aggiunti LIMIT 1
    Così
    codice:
    select id_album,titolo,count(*) as quanti from foto,album
    where foto.album=album.id_album
    group by titolo
    order by quanti desc limit 1
    Altra domanda che allego in questa per non aprire un altro messaggio, esiste un modo per evitare gli join?
    No
    Mi spiego ho visto gli esami orali del corso di basi dati e il prof chiedeva (ma forse ho sbagliato io a interpretare la domanda) quale altro modo esisteva per diminuire l uso massiccio di join in un progetto.

    grazie in anticipo per le risposte.
    Finalmente un docente che, magari, ha un minimo di esperienza concreto.

    In questo caso la risposta è:
    nessuno, se non si denormalizza lo schema.

    Riguardo al merito segnalo che le funzioni count, group by e order sono estremamente "dolorose", la prima inerentemente, le altre per la necessità di avere indici (se ne esistono di adeguata selettività ed utilizzabilità)

  8. #8
    grazie per le risposte...
    .. ho un altro dubbio ... mi sono accorto che all'atto di documentare le dipendenze funzionali ho delle tabelle (a fine proggetto ) che non hanno dipendenze funzionali.

    Potrebbe essere un errore?

    esempio:

    ALLEGANOTA (messaggio, nota) ----- messaggio è chiave! ----
    messaggio → nota

    Dato che ogni dipendenza funzionale coinvolge una chiave della relazione, essa è in forma normale di “Boyce e Codd” (BCNF)


    in effetti vorrei concludere come scritto , ma realmente non posso , perchè messaggi diversi possono relazionarsi con note uguali. Tipo facebook una nota può essere allegata a piu messaggi!!!

    quindi mi chiedo: è corretto che ci sia una tabella senza dipenza funzionale? ha senso? o è sintomo di qualcosa di sbagliato nella progettazione dei diagrammi er?

    però a logica dovrebbe funzionare proprio cosi com 'e'!

    pensare di ovviare al fatto di non avere dipendenze funzionali introducendo ovunque chiavi surrogate.. in tal modo ogni chiave surrogate fa dipenza funzionale col resto degli attributi . esempio:

    ALLEGANOTA (ID,messaggio, nota) ----- ID è chiave! ----
    ID → messaggio nota

    cosi ci sarebbe veramente dipendenza funzionale in quanto ad ogni ID corrisponde biunivocamente un messaggio, nota


    Intanto Auguri di Buon Natale!

  9. #9
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Lo schema ER non ha nulla a che vedere con le dipendenze funzionali, che sono entità semantiche, e non sintattiche.

    Francamente non ho capito benissimo cosa ti turba, riformula magari sinteticamente

  10. #10
    la mia domanda è: ogni tabella deve avere almeno una dipendenza funzionale ?

    leggendo la relazione di un altro studente ho visto come lui alla fine elenca per ogni tabella una dipendenza funzionale! Questa è la cosa che mi turba perchè nella mia relazione alla fine non ho per ogni tabella una dipendenza funzionale. Quindi sono andato in panico.

    non so se mi sono spiegato... nel caso ditemelo che vorrei chiarirmelo questo punto. recupero almeno 3 mesi!


    grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.