Mi ero ripromesso di fare un post a settimana ma mi accorgo che ne sono passate oltre 3, percui parto con questo post per fare la parte più difficile dell'installazione di VFront, il Database su Mysql.
In realtà non è molto difficile, basta conoscere un pò di mysql e saper utilzzare phpmyadmin. Prima di tutto buttiamo giù un progetto semplice, seguendo le linee guida del wiki di VFront ed anche la sua demo di una discografia.
Darò per scontato che ci sia installato mysql server e client sul nostro pc con tanto di root password configurata. Certi di aver tutto pronto entriamo nel database
mysql -uroot -p
dopo aver inserito la password ci troviamo in una shell dove poter editare i nostri comandi, partiamo con una panoramica del nostro database:
show databases;
In realtà non è molto difficile, basta conoscere un pò di mysql e saper utilzzare phpmyadmin. Prima di tutto buttiamo giù un progetto semplice, seguendo le linee guida del wiki di VFront ed anche la sua demo di una discografia.
Darò per scontato che ci sia installato mysql server e client sul nostro pc con tanto di root password configurata. Certi di aver tutto pronto entriamo nel database
mysql -uroot -p
dopo aver inserito la password ci troviamo in una shell dove poter editare i nostri comandi, partiamo con una panoramica del nostro database:
show databases;
Database
information_schema
mysql
performance_schema
I DB listati sono quelli usati da Mysql percui non toccateli pena il danneggiamento del DB principale (in realtà può essere ricreato ma se ci sono dati non ho idea se recuperabili o meno).
Ora creeremo un database per la gestione delle filmografie:
create database moviedb;
use moviedb;
Il DB è creato ma è vuoto, deve avere delle tabelle da popolare in seguito con i record. Prima di passare alla creazione è doveroso pensare a come dovrà funzionare il DB perciò è necessaria una basilare progettazione. Prendendo spunto dal sito di VFront creeremo un DB che permetta di catalgoare i film per generi con i rispettivi attori e registi.
Le tabelle prese in considerazione saranno:
Genere
Attore
Regista
Film
Cast
La prima tabella sarà quella più semplice ossia GenereTBL
create table GenereTBL \
( id int not null auto_increment, \
Genere varchar(30), \
primary key (id));
Query OK, 0 rows affected (0.10 sec)
E' stata creata una tabella con queste caratteristiche:
- un indice (id) composto da interi ( 11 Byte) con caratteristiche auto incrementali, ossia un numero progressivo univoco, un contatore che aumenterà da solo il valore ad ogni record inserito senza intervento dell'operatore;
- un campo Genere alfanumerico di 30 Byte;
- la dichiarazione di chi sarà la chiave primaria (id);
Tutto questo è visibile con il comando
describe GenereTBL;
Ovviamente tutto questo è base base, per adesso delle altre feature come le Foreign Key non le uso. Passiamo ora alla creazione della tabelle FilmTBL, AttoriTBL, CastTBL, RegistaTBL e relativi indici dei campi più usati in ricerca:
- create table FilmTBL \
( id int not null auto_increment, \
Titolo varchar(50), \
id_regista int(11), \
id_genere int(11), \
Anno int(4), \
primary key (id));
- create table AttoriTBL \
( id int not null auto_increment,\
Attore varchar(50), \
Nazionalita varchar(30), \
primary key (id));
- create table CastTBL \
( id int not null auto_increment, \
id_film int(11), \
id_attore int(11), \
primary key (id));
- create table RegistiTBL \
(id int not null auto_increment, \
Regista varchar(50), \
primary key (id));
- alter table CastTBL add index (id_film);
- alter table CastTBL add index (id_attore);
- alter table FilmTBL add index (id_genere);
- alter table FilmTBL add index (id_regista);
Le spiegazioni sui comandi e l'uso degli indici probabilmente lo farò in un prossimo post ( quando? Una Jena veramente pigra ). Basta sapere ora che abbiamo una serie di tabelle con alcuni campi correlati tra loro, ad esempio FilmTBL è legato ai campi indice (id) delle tabelle RegistaTBL e GenereTBL, per consentire una ricerca più veloce nella ricerca del record. Ovviamente queste si vedranno con database di una certa importanza, non con questo. Oltretutto a volte l'avere troppi indici può essere controproducente, ma non è il caso di dilungarmi sulla questione.
In linea di massima il database è fatto, manca ancora una cosa importante per VFront, l'utente autorizzato ad accedervi. Solitamente quando si usa un DB tramite programmi esterni, cioè sempre a parte lo sviluppo e l'amministratore, si usa una utenza che abbia dei diritti limitati oppure diritti illimitati solo su un DB. In pratica nel nostro caso serve un utente di amministrazione locale, il DB moviedb, il quale potrà leggere, scrivere, modificare e cancellare, record e tabelle. Nel caso vorreste dare dei permessi solo in lettura, potrete gestire il sistema di account incorporato in VFront, il quale a dir la verità può darvi l'autenticazione LDAP, non sò se anche ai domini di una rete Windows.
Tornando a noi creiamo il nostro utente con diritti completi al DB moviedb:
- create user jenap@localhost identified by 'neurone';
- grant all privilegies from moviedb to jenap@localhost;
Fatto ora se uscite dalla console mysql e ritentate la connessione con l'utente jenap, noterete che al successivo
- show databases;
vi trovate solo 2 database
information_schema
moviedb
Tranquilli gli altri non se li è mangiati nessuno, ma non avendo i diritti per quei DB non siete autorizzati nemmeno a vederli. VFront chiederà il nome e la password dell'utenza del DB, che sarà questa. Ma alla schermata successva, come vedremo nel prossimo post, verà chiesto l'account di root. Il motivo è semplice, la caratteristica notevole di VFront è che l'interfaccia è inclusa in un DB, che può essere SQLlite o lo stesso MYSQL, per lavorare VFront chiede quella di root per accedere all'engine e creare un DB che sarà
nome.del.tuo.db_vfront
Come si capisce, prenderà il nome del DB originario aggiungendogli il _vfront, questo sarà il DB che conterrà i form, gli sql, i template dellle statistiche ed altro. Abbiamo finito. Ho cercato di fare una guida mirata in questo post, ma la realtà è che un DB come anche Mysql meriterebbe un intero sito per la quantità di informazioni. Non è escluso che ampli il discorso DB/Mysql ma al momento vorrei finire con VFront, che detto tra noi, mi stà dando delle soddisfazioni al lavoro. Devo ricordarmi di ringraziare l'autore.
Visto possiedo una certa età ( a Roma si dice "c'ho 'na certa" ) non è escluso abbia dimenticato o errato a scrivere, non fate i timidi e tiratemi le orecchie nei commenti per le eventuali correzioni.
Alla prossima, ah a proposito ora qualcosa di completamente diverso:
arulajeh.id Situs Berita Terbaru Dan Terbaik
Tambahkan Komentar