Problemi algebra relazionale

di palladino.al il
45 risposte

Ciao a tutti, leggndo un po sul forum ho nottato che non sono io l'unico ad avere problemi nella compressione dell'argomento.

Ho capito cosa e come si usano le varie cose ma sto avendo probemi nella logica.

Faccio un esempio: ho questo schema: 

Film(CodiceFilm, Titolo, Regista, Anno, CostoNoleggio) 
Artisti(CodiceAttore,Cognome, Nome, Sesso, DataNascita, Nazionalità) 
Interpretazioni(CodiceFilm,CodiceAttore, Personaggio)

I punti sono: 

  1. i titoli dei film nei quali Henry Fonda sia stato interprete;  qui devo selezionare gli artisti che hanno quel nome (?)

45 Risposte

  • SE la richiesta e' 

    titoli dei film …

    PERCHE' devi selezionare gli artistiche hanno quel nome?

    1. NON CI SONO TANTI artisti con quel nome, C'E' SOLO UN artista con quel nome ;-)
    2. la selezione NON E' di quelle ‘banalotte’ ma richiede di comporre DIVERSE selezioni in modo opportuno e che vanno OPPORTUNAMENTE combinate

    .

    SENZA conoscere l'algebra relazionale, fare la query risulterebbe decisamente ‘oscuro’.

    AVENDO STUDIATO, la soluzione e' banalissima.

    Ma tanto per non essere troppo ‘oscuro’: si chiame JOIN, l'operazione che ti serve.

    Sia chiaro: NON DEVI studiare 1200 pagine di testo. 
    Saranno si e no un paio di paginette.

  • Allora conosco le proprietà di ogni "funzione". So che il join si usa per rendere unica la tabella (non è proprio così ma non mi venivano altri termini). Detto ciò sono proprio gli step che mi sono ancora ignoti

  • Diciamo che ‘no’, non conosci le proprietà di ogni ‘funzione’, visto che NON E' la JOIN che serve per rendere ‘unica' una tabella (sempre, se Interpretiiamo ENTRAMBI il termine ‘unico’ nello stesso modo, ma non e' detto)

    MA…. rullo di tamburi…. 

    SELECT DISTINCT…

    Va, da sé che le cose, per impararle, bisogna STUDIARLE. 

  • Scusa ma in algebra relazionale è no in sql… 

    Con la join (in base alla join) io creo una tabella dove in base al join utilizzato, viene creata la tabella  per esempio con il join, theta join  ecc

  • C'e' un mapping 1:1 tra algebra relazionale e SQL. 

    E visto che specifichi ‘algebra relazionale e non SQL’ allora devi parlare di RELAZIONI E NON di tabelle ;-) 

    Devi stare attento a queste sottigliezze ;-) 

    E' solo una questione di formalism, NON di concetto.

    Con la JOIN 

    NON CREI una tabella ma una relazione che e' “composizione” di due o piu' relazioni secondo una regola di “composizione”. Il JOIN classico e' un EQUIJOIN, cioe' un JOIN basato sull'equaglianza dei valori negli attributi selezionati. MA esistono diversi modi di di per fare la composizione. 

  • Si, su quello hai ragione. 

    Ecco xk ti ho detto, conosco questi ingredienti ma non riesco a fare una semplice espressione… PiuPiù che altro non riesco a navigare nelle tabelle… e a  pensare che quella la è la più semplice 

  • Up

  • 27/10/2024 - palladino.al ha scritto:


    Film(CodiceFilm, Titolo, Regista, Anno, CostoNoleggio) 
    Artisti(CodiceAttore,Cognome, Nome, Sesso, DataNascita, Nazionalità) 
    Interpretazioni(CodiceFilm,CodiceAttore, Personaggio)

    Hai creato le relazioni:
    Film.CodiceFilm uno-a-molti Interpretazioni.CodiceFilm
    Artisti.CodiceArtista uno-a-molti Interpretazioni.CodiceAttore ?

    Hai messo un campo Film.Regista…non sarebbe sbagliato, ma meglio sarebbe scrivere il Regista nella tabella Ruoli (ex Interpretazioni) con i campi…considera che ci sono (sia pur raramente) film con più registi.
    IDRuolo
    CodiceArtista
    Ruolo (qui nel caso di “regia” scrivi “regia”, in caso di personaggio scrivi il personaggio.

    Fin qui si parla di “progettazione database”, argomento coerente con la sezione del forum. Dopo di che..quale sarebbe il problema relativo a Henry Fonda? In quest'ultimo caso consiglio di aprire una nuova discussione nella relativa sezione dell'applicazione relativa (immagino Access).

  • 30/10/2024 - OsvaldoLaviosa ha scritto:


    27/10/2024 - palladino.al ha scritto:


    Film(CodiceFilm, Titolo, Regista, Anno, CostoNoleggio) 
    Artisti(CodiceAttore,Cognome, Nome, Sesso, DataNascita, Nazionalità) 
    Interpretazioni(CodiceFilm,CodiceAttore, Personaggio)

    Hai creato le relazioni:
    Film.CodiceFilm uno-a-molti Interpretazioni.CodiceFilm
    Artisti.CodiceArtista uno-a-molti Interpretazioni.CodiceAttore ?

    Hai messo un campo Film.Regista…non sarebbe sbagliato, ma meglio sarebbe scrivere il Regista nella tabella Ruoli (ex Interpretazioni) con i campi…considera che ci sono (sia pur raramente) film con più registi.
    IDRuolo
    CodiceArtista
    Ruolo (qui nel caso di “regia” scrivi “regia”, in caso di personaggio scrivi il personaggio.

    Fin qui si parla di “progettazione database”, argomento coerente con la sezione del forum. Dopo di che..quale sarebbe il problema relativo a Henry Fonda? In quest'ultimo caso consiglio di aprire una nuova discussione nella relativa sezione dell'applicazione relativa (immagino Access).

    Ma non è una query di sql ma di algebra relazionale

  • @palladino, lo so che non ci credi, ma algebra relazionale e SQL, 

    SONO (quasi) LA STESSA COSA. 

    ‘quasi’ perche' l'SQL fa qualcosa di PIU', NON di diverso, DI PIU'.

    Se uno senza il braccio destro ti tira un ‘ceffone’, tu ricevi ‘un ceffone’. Se te lo tira uno con entrambe le braccia, tu comunque ricevi un 'ceffone', l'unica differenza e' che quello con entrambe le braccia puo' fare DI PIU'! 

    Lo so, e' un esempio super-scemo ;-) 

  • E come faccio tradurre da sql in algebra relazionale? 

  • Che applicazione stai usando per il tuo database?

  • 31/10/2024 - OsvaldoLaviosa ha scritto:


    Che applicazione stai usando per il tuo database?

    per ora niente perché siamo facendo teoria.

    Ho trovato un tool che online mi fa da calcolatore di algebra relazionale

  • Sono corrette queste traduzioni? 

    R1(A1,A2) R2(A3,A4) ? 

    SELECT R1.A1, R2.A4 FROM R1, R2 WHERE R1.A2 = R2.A3

    PROJ A1,A4 (SELA2=A3 (R1 JOIN R2))

Devi accedere o registrarti per scrivere nel forum
45 risposte