Database Mysql per gestione prenotazioni

davidanna23

Utente Attivo
22 Lug 2012
43
0
0
Salve, dovrei creare un database con le istruzioni per gestire delle prenotazioni da database mysql. Come posso fare? Ho letto qualcosa sui database ma non sono molto pratico, per favore potreste aiutarmi? Grazie
 
Ciao, in attesa che qualcuno più esperto risponda, provo a scrivere come farei io.

Untitled_Document_Lucidchart.png
 
Ottimo grazie, ma queste sarebbero le tabelle no? Dove dovrei inserire i dati? Scusa ma sono poco esperto di mysql!
 
Si, lo schema sopra, sarebbe un esempio di come strutturare le tabelle. I rettangoli sono le tabelle, e poi le scritte sono i vari campi che ogni tabella avrà, naturalmente li sceglierai tu in base ai dati che ti interessa salvare. Ti ho evidenziato i campi in comune con lo stesso colore, in modo che quando dovrai fare la select avrai un campo in comune. ti faccio un esempio

Tabella partenze:
id_part| nome_part
1 Milano
2 Roma
3 Palermo

Tabella destinazioni:
id_dest | id_part | nome_dest
1 1 New York
2 1 San francisco
3 1 Cuba
4 2 Londra
5 2 Parigi
6 2 Venezia
7 3 Mosca
8 3 Egitto
9 3 Dubai

In questo modo quando farai la select, con id_part= 1 ti selezionerà solo le città associate....
PHP:
SELECT * FROM destinazioni WHERE id_dest = '1'

ti stampera: New York, San francisco, Cuba.

Spero, di averti fatto capire qualcosa :o
 
ciao
modificherei leggermente la tabella linea_bus
id | id_part | id_arr | orario | costo | note

questo perchè devo collegare l'orario non solo alla partenza ma anche all'arrivo (es)
partenza Palermo arrivo Bolzano
partenza Palermo arrivo Torino
 
Ragazzi siete fantastici, proprio quello che mi serve, non so come ringraziarvi. Ma il punto adesso è come li metto questi dati nel database, cioè, in che modo devo scrivere il file sql? Così come lo avete scritto voi? Non è troppo semplice?
 
Ragazzi, ho appena creato le tabelle, ho esportato il file sql. Me la dareste una controllatina prima di proseguire? Per assicurarmi che abbia fatto bene:
PHP:
-- phpMyAdmin SQL Dump
-- version 3.4.3.1
-- http://www.phpmyadmin.net
--
-- Host: davidanna23.com
-- Generato il: Lug 25, 2012 alle 15:54
-- Versione del server: 5.1.63
-- Versione PHP: 5.3.3-7+squeeze9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `cuffaro`
--

-- --------------------------------------------------------

--
-- Struttura della tabella `destinazioni`
--

CREATE TABLE IF NOT EXISTS `destinazioni` (
  `id_destinazione` int(11) NOT NULL,
  `nome_destinazione` int(11) NOT NULL,
  `id_partenza` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `linea_bus`
--

CREATE TABLE IF NOT EXISTS `linea_bus` (
  `id` int(11) NOT NULL,
  `id_partenza` int(11) NOT NULL,
  `id_destinazione` int(11) NOT NULL,
  `orario` int(11) NOT NULL,
  `costo` int(11) NOT NULL,
  `note` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `partenze`
--

CREATE TABLE IF NOT EXISTS `partenze` (
  `id_partenza` int(11) NOT NULL,
  `nome_partenza` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `utenti`
--

CREATE TABLE IF NOT EXISTS `utenti` (
  `id_utente` int(11) NOT NULL,
  `nome` int(11) NOT NULL,
  `cognome` int(11) NOT NULL,
  `email` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Utenti';

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
ciao
devi darci una ritoccatina

Codice:
CREATE TABLE IF NOT EXISTS `partenze` (
  `id_partenza` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `nome_partenza` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
l'id_partenza deve essere una chiave primaria e autoncrementarsi ad ogni inserimento
il nome_partenza non è un numero ma una stringa (bolzano)

Codice:
CREATE TABLE IF NOT EXISTS `destinazioni` (
  `id_destinazione` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `id_partenza` int(11) NOT NULL 
  `nome_destinazione` varchar(50) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
come sopra a parte che io per ordine logico metterei prima id_partenza poi nome_destinazione


Codice:
CREATE TABLE IF NOT EXISTS `linea_bus` (
  `id` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `id_partenza` int(11) NOT NULL,
  `id_destinazione` int(11) NOT NULL,
  `orario` int(11) NOT NULL,
  `costo` int(11) NOT NULL,
  `note` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
come sopra per l'id, poi
orario come pensi di inserirlo se es. 15:30 il campo sara varchar(5)
costo se in euro non dovrebbe essere un intero ma float es. per contenere 300.25
note non deve essere un numero ma una stringa


Codice:
CREATE TABLE IF NOT EXISTS `utenti` (
  `id_utente` int(11) NOT NULL,  AUTOINCREMENT, PRIMARYKEY
  `nome` int(11) NOT NULL,
  `cognome` int(11) NOT NULL,
  `email` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Utenti';
nome, cognome, email non sono numeri ma stringhe quindi varchar(250)
 
Perfetto, sistemato, scusa ma non sapevo se mettere int o varchar (250), non sapevo la differenza. Ecco il risultato:
Codice:
-- phpMyAdmin SQL Dump
-- version 3.4.3.1
-- http://www.phpmyadmin.net
--
-- Host: davidanna23.com
-- Generato il: Lug 25, 2012 alle 15:54
-- Versione del server: 5.1.63
-- Versione PHP: 5.3.3-7+squeeze9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `cuffaro`
--
-- --------------------------------------------------------

--
-- Struttura della tabella `partenze`
--

CREATE TABLE IF NOT EXISTS `partenze` (
  `id_partenza` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `nome_partenza` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------

--
-- Struttura della tabella `destinazioni`
--

CREATE TABLE IF NOT EXISTS `destinazioni` (
  `id_destinazione` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `id_partenza` int(11) NOT NULL 
  `nome_destinazione` varchar(50) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `linea_bus`
--

CREATE TABLE IF NOT EXISTS `linea_bus` (
  `id` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `id_partenza` int(11) NOT NULL,
  `id_destinazione` int(11) NOT NULL,
  `orario` int(11) NOT NULL,
  `costo` int(11) NOT NULL,
  `note` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


-- --------------------------------------------------------

--
-- Struttura della tabella `utenti`
--

CREATE TABLE IF NOT EXISTS `utenti` (
  `id_utente` int(11) NOT NULL,  AUTOINCREMENT, PRIMARYKEY
  `nome` varchar(250) NOT NULL,
  `cognome` varchar(250) NOT NULL,
  `email` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Utenti';

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Ma id_utente non dovrebbe essere anche varchar(250) o sbaglio? Poi mi sa che conviene inserire anche la password in utenti, vediamo se ho capito. Dovrei aggiungere un campo:
Codice:
`password` varchar(250) NOT NULL
Ma non in varchar mi sa, che tipo deve essere la password?
Per quanto riguarda gli orari, hai ragione tu, ma se vorrei far scegliere anche la data come faccio? Una nuova tabella, o lo aggiungo in partenze?
 
Ciao e scusa se rispondo solo adesso, ma ho avuto degli impegni!
Comunque grazie per le guide che mi hai linkato, proprio quello che cercavo. Ho iniziato a leggere la prima guida e mi è venuto un piccolo dubbio:
https://www.mrw.it/mysql/guide/installare-mysql-windows_301.html
Qui dice di scaricare un software per gestire i database dal sito ufficiale Mysql. Io fino ad ora l'ho gestito da Phpmyadmin. Dovrebbe essere la stessa cosa no? O cambia qualcosa?
 
Perfetto, ho studiato e ho capito abbastanza come funziona, anche se ancora non ho capito pasword che tipo di dato deve essere.
 
Perfetto, ho studiato e ho capito abbastanza come funziona, anche se ancora non ho capito pasword che tipo di dato deve essere.

In che senso? se intendi il tipo di campo, allora va bene anche un normale text, l'importante che quando salvi la password la cripti in md5 o meglio ancora in SHA1
 
Ok grazie, ho riscritto tutto, mi dareste una controllatina:
Codice:
CREATE TABLE IF NOT EXISTS `partenze` (
  `id_partenza` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `nome_partenza` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `destinazioni`
--

CREATE TABLE IF NOT EXISTS `destinazioni` (
  `id_destinazione` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `id_partenza` int(11) NOT NULL
  `nome_destinazione` varchar(50) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `linea_bus`
--

CREATE TABLE IF NOT EXISTS `linea_bus` (
  `id` int(11) NOT NULL, AUTOINCREMENT, PRIMARYKEY
  `id_partenza` int(11) NOT NULL,
  `id_destinazione` int(11) NOT NULL,
  `orario` varchar(5) NOT NULL,
  `costo` float NOT NULL,
  `note` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `utenti`
--

CREATE TABLE IF NOT EXISTS `utenti` (
  `id_utente` int(11) NOT NULL,
  `nome` varchar(250) NOT NULL,
  `cognome` varchar(250) NOT NULL,
  `email` varchar(250) NOT NULL,
  `password` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Utenti';

Domanda: dopo che l'ho scritto come lo importo in phpmyadmin, ho provato con importa, ma non cambia nulla!
Grazie ancora!
 
Ok, sistemato grazie, ma quando importo il file sql in phpmyadmin mi da errore e non cambia ne le tabelle ne niente! :(
 
ciao
se usi phpmyadmin nen serve che tu lo scriva da qualche parte e che poi lo importi
da phpadmin prima (se serve) crei database poi crei la tabella
 
Ah ok, allora ho capito. Bene il database sembra pronto. Questo è il risultato:
Codice:
-- Struttura della tabella `destinazioni`
--

CREATE TABLE IF NOT EXISTS `destinazioni` (
  `id_destinazione` int(11) NOT NULL AUTO_INCREMENT,
  `nome_destinazione` int(11) NOT NULL,
  `id_partenza` int(11) NOT NULL,
  PRIMARY KEY (`id_destinazione`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Struttura della tabella `linea_bus`
--

CREATE TABLE IF NOT EXISTS `linea_bus` (
  `id` int(11) NOT NULL,
  `id_partenza` int(11) NOT NULL,
  `id_destinazione` int(11) NOT NULL,
  `orario` int(11) NOT NULL,
  `costo` int(11) NOT NULL,
  `note` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struttura della tabella `partenze`
--

CREATE TABLE IF NOT EXISTS `partenze` (
  `id_partenza` int(11) NOT NULL AUTO_INCREMENT,
  `nome_partenza` varchar(11) NOT NULL,
  PRIMARY KEY (`id_partenza`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Struttura della tabella `utenti`
--

CREATE TABLE IF NOT EXISTS `utenti` (
  `id_utente` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(250) NOT NULL,
  `cognome` varchar(250) NOT NULL,
  `email` varchar(250) NOT NULL,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY (`id_utente`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Utenti' AUTO_INCREMENT=1 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Spero sia giusto, anche se non ho capito a cosa serve il primarykey che mi hai detto qualche giorno fa! Dove lo metto e a cosa serve?
 
ciao
la primarykey è indispensabile, serve per identificare univocamente il record, altrimenti come fa a sapere dove inserire, quale modificare, quale eliminare.
poi conviene che la primaru key sia autoincrementabile, cioè al primo inserimenti (tabella vuota) il primo record diventa 1, al secondo il nuovo record prende 2, ecc...
 

Discussioni simili