Tu invece intendi definire in maniera precisa l'entità di "ensemble" intesa come insieme di esecutori, giusto?
Si, vorrei delineare un profilo specifico per il "gruppo" nel caso mi trovassi nella situazione di dover attribuire ad un brano, come esecutore, un ensemble e non un singolo interprete.
Da un punto di vista strettamente tecnico, è totalmente superfluo e oltretutto ti incasina parecchio la struttura del db.
Sull'inutilità della definizione degli ensemble però ho dei dubbi, nel senso che non potrei mai gestire direttamente con la sola tabella "esecutori" l'eventualità di dover assegnare un gruppo di esecutori ad un singolo brano. Nel primo post avevo indicato la struttura della tabella "esecutori" e, così com'è, non mi permetterebbe di far fronte a questa evenienza, qualora si presentasse.
Se però hai la necessità di farlo, allora l'analisi si complica. A questo punto si potrebbe dire che l'esecutore di un brano sarà sempre un singolo esecutore oppure un solo ensamble? Perché se è così, la tabella di cui sopra diventa superflua e al suo posto avrai quella con gli ensemble.
E' questo il punto! l'esecutore di un brano potrà essere, a seconda dei casi, o un singolo interprete o un'insieme di esecutori. Da questa situazione è nata la difficoltà nell'organizzare la struttura del database. Non creado di aver compreso l'ultima frase, ma forse ti riferivi alla tabella che crea la relazione tra brani/esecutori con l'aggiunta deli ensemble.
Ora però nasce il problema di come gestire l'associazione fra la tabella dei brani e le altre due (quella degli esecutori e quella degli ensemble). Il modo tecnicamente più corretto sarebbe quello di avere una colonna "esecutore" e una colonna "ensemble" (sempre sulla tabella brani) e valorizzarne uno solo dei due, a seconda dei casi.
Direi che ci siamo quasi, ammesso che quando dici tabella "brani" fai riferimento alla tabella già esistente, quella che attualmente relaziona i brani con i singoli esecutori. Se non è così, ti chiedo scusa ma non ho capito!
Comunque, per il momento ho creato la seconda tabella per i gruppi
codice:
CREATE TABLE `ensemble` (
`id` tinyint(3) NOT NULL auto_increment,
`nome` varchar(30) NOT NULL,
`provenienza` tinyint(3) unsigned NOT NULL,
`note` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
e ho modificato quella esistente, per la relazione, aggiungendo l'altro campo per i gruppi
codice:
CREATE TABLE `brani_esecutori` (
`id_brano` smallint(5) NOT NULL,
`id_esecutore` smallint(5) NOT NULL,
`id_ensemble` tinyint(3) NOT NULL,
KEY `id_esecutore` (`id_esecutore`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Mettendo per un attimo da parte il discorso puramente tecnico, seguendo la sola logica di organizzazione dei dati, faresti così oppure, te lo chiedo indubbiamente per la maggiore esperienza che hai sull'argomento, ti regoleresti diversamente? Grazie di tutto...