.dsy:it. Pages (11): « 1 2 3 [4] 5 6 7 8 » ... Last »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ informatica triennale (http://www.dsy.it/forum/forumdisplay.php?forumid=211)
-- Social network 2010/2011 (http://www.dsy.it/forum/showthread.php?threadid=41459)


Posted by Snakethesniper on 20-03-2011 17:01:

Per dare un'idea di quello che ho scritto sopra, copio qui lo schema logico di un esercitazione presente sul sito:
Proprietario (codice, telefono, indirizzo)
• PersonaFisica (codice, CF, nome, cognome)
• PersonaGiuridica(codice, PI, denominazione)

Con codice in Proprietario come chiave primaria e Codice in PersonaFisica e PersonaGiuridica come chiave primaria e chiave esterna.
Ora, se volessi fare una query che, dato un codice di un proprietario mi venga segnalato se è una persona fisica o una giuridica come potrei fare?


Posted by zandrek on 20-03-2011 20:22:

Non ho letto i tuoi messaggi precedenti comunque con questa query trovi i nomi dei proprietarifisici
SELECT nome
FROM Proprietario, PersonaFisica
WHERE Proprietario.codice = PersonaFisica.codice

ovviamente se tu inserissi sta roba in un db o in un progetto potresti fare una funzione che se la query precedente non torna nulla allora sul "sito" fai comparire qualche avviso o roba simile...


Posted by number15 on 20-03-2011 20:30:

Originally posted by Snakethesniper
Per dare un'idea di quello che ho scritto sopra, copio qui lo schema logico di un esercitazione presente sul sito:
Proprietario (codice, telefono, indirizzo)
• PersonaFisica (codice, CF, nome, cognome)
• PersonaGiuridica(codice, PI, denominazione)

Con codice in Proprietario come chiave primaria e Codice in PersonaFisica e PersonaGiuridica come chiave primaria e chiave esterna.
Ora, se volessi fare una query che, dato un codice di un proprietario mi venga segnalato se è una persona fisica o una giuridica come potrei fare?


Non sto capendo il tuo problema.

Quell'implementazione dell'esempio è fatto ad minchiam.

Aggiungi nella tabella proprietario un campo tipo, che realizzi con un enum(persona fisica, persona giuridica, entrambi) (nomi decenti e, se esclusiva, 'entrambi' va via).

A quel punto hai l'informazione che ti serve nella tabella, senza if, join e robe strane.

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Snakethesniper on 20-03-2011 20:45:

Originally posted by number15
Non sto capendo il tuo problema.

Quell'implementazione dell'esempio è fatto ad minchiam.

Aggiungi nella tabella proprietario un campo tipo, che realizzi con un enum(persona fisica, persona giuridica, entrambi) (nomi decenti e, se esclusiva, 'entrambi' va via).

A quel punto hai l'informazione che ti serve nella tabella, senza if, join e robe strane.

Si ci avevo pensato infatti. Allora da questo una domanda, se io nel progetto creo 3 entità per le 3 tipologie di giochi (collegate all'entità Gioco tramite l'id_gioco per esempio) e metto all'entità gioco il campo Tipo, se dovessi fare una query che dato il nome di un gioco ne richiede tutte le informazioni, dovrei fare un'inner join con tutte e 3 le entità giusto? E in tal caso è considerata una cosa fattibile oppure troppo incasinata? Dico a livello di analisi del progetto da parte del professore


Posted by Snakethesniper on 20-03-2011 20:53:

Uhm forse ho detto una mezza cavolata...
In pratica, quello che vorrei realizzare è fare in modo che se viene fatta una query su un gioco vengano visualizzate tutte le informazioni relative, quindi per esempio se è un videogioco voglio che vengano visualizzate solo le informazioni relative a quella tipologia e non anche quelle delle altre. Per questo motivo volevo un campo che specificasse la tipologia in modo che poi venivano visualizzate solo gli attributi di quella determinata tipologia e non quelli delle altre... Non so se si capisce cosa intendo


Posted by number15 on 20-03-2011 20:56:

Allora, da quanto ho capito tu avrai una tabella GIOCO che si specializza in 3 tabelle, una per ogni tipologia di gioco, con una gerarchia, immagino, di tipo totale esclusivo.

A quel punto, una volta che tu hai l'id, fai la join tra gioco e la tabella specializzata che ti interessa in base al tipo del gioco.

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Snakethesniper on 20-03-2011 21:22:

Originally posted by number15
Allora, da quanto ho capito tu avrai una tabella GIOCO che si specializza in 3 tabelle, una per ogni tipologia di gioco, con una gerarchia, immagino, di tipo totale esclusivo.

A quel punto, una volta che tu hai l'id, fai la join tra gioco e la tabella specializzata che ti interessa in base al tipo del gioco.

ecco, esattamente! Ma si può fare? Premetto che php non l'ho ancora guardato e l'esame l'ho fatto a gennaio quindi sono un po' arrugginito a riguardo, ma è possibile fare un confronto tra il valore di un attributo e il nome di un'entità?


Posted by number15 on 20-03-2011 21:39:

edit: esempio del cazzo, penso a qualcosa di meglio

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by number15 on 20-03-2011 21:58:

Abbiamo questa situazione:
gioco(id_gioco, gioco, tipo, genere)
videogioco(id_gioco, console, v.m.)
gioco_di_società(id_gioco, durata, nr._giocatori_minimo)

Vuoi stampre una tabella con l'elenco dei giochi generale.

-Esegui questa query:
(select id_gioco,gioco, tipo, genere from gioco)

-crei una tabella con 3 campi: icona tipologia del gioco (basata sul valore del campo tipo), nome del gioco, genere.

-al click sul nome del gioco, vuoi mostrare le informazioni aggiuntive del gioco.

Facciamo che hai cliccato su Nba2k11:
if tipo = videogioco
select console, vm
from videogioco
where id_gioco = '$id_gioco'

-stampi i valori dei campi


Questa è proprio un'applicazione base.

Un altro esempio, per cui ti è fondamentale il campo tipo, è:
'Mostrami i nomi di tutti i videogiochi".
Ti basta fare:
select gioco
from gioco
where tipo ='videogioco'

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Snakethesniper on 20-03-2011 22:24:

Originally posted by number15
Abbiamo questa situazione:
gioco(id_gioco, gioco, tipo, genere)
videogioco(id_gioco, console, v.m.)
gioco_di_società(id_gioco, durata, nr._giocatori_minimo)

Vuoi stampre una tabella con l'elenco dei giochi generale.

-Esegui questa query:
(select id_gioco,gioco, tipo, genere from gioco)

-crei una tabella con 3 campi: icona tipologia del gioco (basata sul valore del campo tipo), nome del gioco, genere.

-al click sul nome del gioco, vuoi mostrare le informazioni aggiuntive del gioco.

Facciamo che hai cliccato su Nba2k11:
if tipo = videogioco
select console, vm
from videogioco
where id_gioco = '$id_gioco'

-stampi i valori dei campi


Questa è proprio un'applicazione base.

Un altro esempio, per cui ti è fondamentale il campo tipo, è:
'Mostrami i nomi di tutti i videogiochi".
Ti basta fare:
select gioco
from gioco
where tipo ='videogioco'

ok finalmente mi sono schiarito le idee, grazie!
un'ultima puntualizzazione, nello schema ER basta che semplicemente credo una associazione tra Gioco e le varie tipologie giusto? Tipo:
Gioco <-- --> Videogioco
Gioco <-- --> Gioco da tavola
Gioco <-- --> Gioco di carte


Posted by number15 on 20-03-2011 22:27:

Si, e indichi la cardinalità.

La parte delle generalizzazioni/specializzazioni mi ricordo che è fatta molto bene sulle slide della prof.
C'è sia come rappresentarle nel diagramma ER sia come passarle in relazionale.

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Snakethesniper on 20-03-2011 22:40:

Originally posted by number15
Si, e indichi la cardinalità.

La parte delle generalizzazioni/specializzazioni mi ricordo che è fatta molto bene sulle slide della prof.
C'è sia come rappresentarle nel diagramma ER sia come passarle in relazionale.

sisi, quelle me le ricordo, era appunto per avere una conferma. Ti rigrazio moltissimo, sei stato di grande aiuto :-D


Posted by blue_tech on 21-03-2011 15:48:

Dunque sto iniziando ora a preparare il progetto ma non mi son chiare varie cose... Primo il discorso delle viste:

dice che il profilo con amici e giochi deve essere fatto tramite viste materializzate. Ora qui nasce il primo problema.

1) come materializzo effettivamente le viste? cioè se faccio una create view creo la vista ok ma come la materializzo?

2) anche le statistiche vanno fatte con viste materializzate e qui il problema al punto 3

3) tutto va tenuto aggiornato con i trigger quindi dovrei aggiornare le viste che però vengono fatte su più tabelle e quindi praticamente è infattibile perchè un aggiornamento è fattibile su viste fatte su una sola tabella

Chi mi chiarisce un pò sto discorso delle viste?

EDIT: tolto il PS avevo sbagliato a digitare un nome nel comando :P

Grazie a chi mi schiarirà un pò le idee...


Posted by number15 on 21-03-2011 16:25:

Dai un'occhiata qua, dovrebbe aiutarti.
http://blog.fl3x.de/2005/10/26/mate...views-in-mysql/

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Snakethesniper on 21-03-2011 16:41:

Una delucidazione sui giochi degli utenti.
Visto che il risultato finale che devo ottenere è un'entità "Giochi_Utente" con attributi ID_Gioco,ID_Utente, Tipo,Voto*,Recensione* (o almeno io l'ho pensata così, ovvero tenendo la superclasse e mettendo l'attributo Tipo), nello schema ER posso creare un'associazione chiamata appunto "giochi utente" con i suoi 3 attributi che collega le entità gioco e utente? In questo modo poi con il passaggio a schema logico verrà fuori la relazione/entità decisa prima no?


All times are GMT. The time now is 19:41. Pages (11): « 1 2 3 [4] 5 6 7 8 » ... Last »
Show all 151 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.