ciao a tutti, rieccomi a sottoporvi un interessante quesito per un nuovo database su cui devo mettere le mani per costruire delle view "dinamiche" e normalizzate per la visualizzazione dei dati presenti nelle mie tabelline delle lingue.

la struttura di base da cui prelevare i dati è questa


codice:
delimiter $$

CREATE TABLE `lingue` (
  `idlingue` int(11) NOT NULL AUTO_INCREMENT,
  `idbk_utenti` int(11) NOT NULL,
  `alfa3` varchar(3) DEFAULT NULL,
  `default` enum('on','off') DEFAULT 'off',
  `status` enum('on','off') DEFAULT 'on',
  `alfa2` varchar(2) DEFAULT NULL,
  PRIMARY KEY (`idlingue`),
  KEY `fk_lingue_bk_utenti1` (`idbk_utenti`),
  CONSTRAINT `fk_lingue_bk_utenti1` FOREIGN KEY (`idbk_utenti`) REFERENCES `bk_utenti` (`idbk_utenti`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=big5$$



delimiter $$

CREATE TABLE `lingue_contenuti` (
  `idlingue_contenuti` int(11) NOT NULL AUTO_INCREMENT,
  `idlingue` int(11) NOT NULL,
  `idriferimento` int(11) DEFAULT NULL,
  `tabellariferimento` varchar(255) DEFAULT NULL,
  `testo` varchar(65000) DEFAULT NULL,
  `tipologia` enum('testo','etichetta') DEFAULT 'testo',
  `status` enum('on','off') DEFAULT 'on',
  PRIMARY KEY (`idlingue_contenuti`),
  KEY `fk_lingue_contenuti_lingue1` (`idlingue`),
  CONSTRAINT `fk_lingue_contenuti_lingue1` FOREIGN KEY (`idlingue`) REFERENCES `lingue` (`idlingue`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1$$

nella tabella lingue vengono definite le lingue, mentre in lingue contenuti vengono definiti i nomi estesi delle lingue in ogni lingua.
esempio:

codice:
 tab lingue 

idlingue | idbk_utenti | alfa3 | default | status | alfa2
------- |------------|------|--------|-------|-------
1         | 1              | ita    | on       | on      | it
2         | 1              | eng   | off       | on      | en


tab lingue_contenuti 

idlingue_contenuti | idlingue      | idriferimento | tabellariferimento| testo  | tipologia | status
------------------|------------|-------------|-----------------|--------|---------|-------
1                        | 1              | 1               | lingue               | italiano | testo     | on
2                        | 1              | 2               | lingue               | inglese  | testo     | on
3                        | 2              | 1               | lingue               | italian   | testo     | on
4                        | 2              | 2               | lingue               | english  | testo     | on
lo scopo è di arrivare ad avere una vista normalizzata per la quale per ogni lingua definita ho tutti i dettagli della lingua

esempio (con i dati di cui sopra):

codice:
 view lingue 

idlingue | idbk_utenti | alfa3 | default | status | alfa2 | testoITA | testoENG
                                                     (lingue)
------- |------------|------|--------|-------|-------|---------|------------
1         | 1              | ita    | on       | on      | it       | italiano  | italian
2         | 1              | eng   | off       | on      | en     | inglese   | english
oltre a questo, essendo lingue e contenuti aggiornabili da parte dell'amministratore del sito la view dovrebbe aggiornarsi nel tempo per cui se vado ad aggiungere la lingua francese si aggiungerà non solo la riga per la nuova lingua ma anche la colonna del testoFRA nella view.

a livello teorico dovrebbe essere possibile, però dopo anni di assoluta non curanza del codice, non so se
1) sia davvero possibile farlo
2) come farlo

ergo chiedo una zampa a chi ha maggiore esperienza in questo campo per avere alemno qualche dritta in merito così da poter delegare a mysql tutto lo sforzo di gestione della view così da doverla poi solo interrogare (questo in vista del fatto che dovrò crearne altre per un sacco di altre parti del gestionale in costruzione)

per ora grazie dell'interessamento e dell'aiuto!

lamechian


PS
non ho postato la tabella utenti che al momento non è fondamentale in quanto per i fini della view da sviluppare potrebbe contenere anche il solo idbk_utenti.