Repository 32bit  Forum
Repository 64bit  Wiki

Aiuto relazione database

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Aiuto relazione database

Messaggioda darkstaring » mar ott 16, 2012 16:13

Sera a tutti :D ..
Mi sto incasinando tantissimo su delle associazioni tra tabelle sql.

In pratica ho una tabella UTENTI che deve tenere all'interno (nome, pass) per fare un login...

Poi ho altre 2 tabelle, una con le sedi ed un'altra con i dipendenti;
queste 2 tabelle sono relazionate tra loro con un'altra tabella (DIP_SEDI) poichè alcuni dipendenti possono lavorare in più sedi..

Ora il mio problema e che mi è stato chiesto che sia possibile effettuare il login sia come sede (e vedere quindi tutti i dipendenti di quella sede)
o come singolo dipendente..

Voi come avreste fatto le associazioni???
Non sò a dove collegarli sti dipendenti :D...

Io pensavo ad un'associazione tra DIP_SEDI e UTENTI in modo che ogni dipendente abbia una passowrd per ogni sede dove lavora
ma credo di fare casino...

Consigli???
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda 414N » mar ott 16, 2012 16:29

Stiamo parlando di argomenti di teoria dei database o stai già lavorando su un database fisico col quale interagisci da codice (Java, C#, C++ ecc.)?
Servirebbe qualche dettaglio in più, secondo me... Per esempio, quali sono le chiavi primarie ed esterne che hai scelto? Come fai a collegare un nome di un utente alle altre tabelle?
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2844
Iscritto il: mer feb 13, 2008 17:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Aiuto relazione database

Messaggioda darkstaring » mar ott 16, 2012 16:57

Sto parlando di un database già creato che sto interfacciando in PHP...
Quest'immagine mostra la struttura del DB per intero, comprese chiavi ecc...
Immagine

Non considerate la tabella utenti_sedi (la avevo creata perchè avevo capito che gli admin potevano gestire più sedi)
Invece ora ho capito che non è così e che
chi deve fare l'accesso è
il dipendente come singolo oppure
l'intera sede e mostrare quindi tutti i dipendenti di quella sede...

Sono ancora in fase testing
non mi prendete in giro :lol:

Io avevo intenzione come dicevo prima di relazionare "DIP_SEDI" ad "UTENTI"..
sò che nell'immagine mancano le chiavi esterne.. ma comunque secondo voi potrebbe funzionare aggiungendole???

Se avete qualsiasi consiglio è ben accetto
Grazie :D
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 9:57

Anche oggi mi sto azzuffando :D...

Non mi quadra la relazione per gli utenti..
Relazionando [utenti con dipendenti] & [utenti con sedi]
avrei 2 relazioni 1A1... quindi rindondanza....
Mentre invece collegando gli utenti a dip_sedi metto in relazione solo i dipendenti.....
Mentre ancora, mettendo i campi utente e pass direttamente nelle tabelle utenti e sedi credo di far ancora più casino...

E' il primo login che faccio..
Consigli?
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 12:32

Quindi, ci sono gli utenti e le sedi.
Un utente non appartiene a pù sedi, ma ad una sola?
Una persona (fisica) accende il pc e con user e password può vedere tutti gli utenti legati alla sede?
Qaul'è la differenzza tra utente e dipendente? Un dipendete è un utente?
E' questo che vorresti fare?
Avatar utente
lablinux
Packager
Packager
 
Messaggi: 641
Iscritto il: gio nov 27, 2008 13:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 13:05

lablinux ha scritto:Quindi, ci sono gli utenti e le sedi.
Un utente non appartiene a pù sedi, ma ad una sola?
Una persona (fisica) accende il pc e con user e password può vedere tutti gli utenti legati alla sede?
Qaul'è la differenzza tra utente e dipendente? Un dipendete è un utente?
E' questo che vorresti fare?


Un utente non appartiene a più sedi, ma ad una sola?
Più o meno, un 'utente dovrebbe poter essere sia una sede che un dipendente... se dipendente vede solo se sesso altrimenti tutti i dipendenti

Una persona (fisica) accende il pc e con user e password può vedere tutti gli utenti legati alla sede?
Se si ci logga come sede si devono vedere tutti i dipendenti di quella sede..

Qaul'è la differenzza tra utente e dipendente? Un dipendete è un utente?
Si...Il dipendente è un'utente come lo è la sede.

....Io stavo pensando ad un flag da usare nel form del login, magari una <select> con il tipo (dipendente o sede) per capire quale tabella deve interrogare
ed inserire nomeutente e passwd direttamente nella tabella del dipendente o della sede....
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 14:57

il campo di selezione non mi piace molto. L'informazione se lo user sia solo se stesso o l'azienda dovrebbe trovarsi sulla tabella user, ad esempio in un campo ruoli (roles)
1 = dipendente
2 = sede
3 = entrambe.
Ed in base al ruolo (1 o 2 o 3), mostri i dati.
Avatar utente
lablinux
Packager
Packager
 
Messaggi: 641
Iscritto il: gio nov 27, 2008 13:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 15:42

Si.. quello lo avevo già fatto propio come dici tu con il campo admin... Ma non avevo pensato che non ho bisogno di fare nessuna relazione, volevo a tutti i costi fare questa relazione :)
Quindi mi confermi che posso evitare relazioni da UTENTI?...
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 15:47

Una relazione serve, utenti (1-n ) sedi.
Avatar utente
lablinux
Packager
Packager
 
Messaggi: 641
Iscritto il: gio nov 27, 2008 13:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 15:59

Perchè?non capisco la relazione... una volta che qualcuno si logga, vedo il tipo, vedo chi è
e poi in base al tipo faccio quello che serve..no?
Non posso accedere anche così a i dati?
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda 414N » mer ott 17, 2012 16:28

Se il problema è solo un problema di visualizzazione non hai bisogno di creare tante associazioni.
Una volta che l'utente (che sia dipendente semplice o sede non importa) ha effettuato il login, tu il suo nome lo sai ed è proprio tramite quello che puoi individuarlo all'interno della tabella dipendenti o sedi, giusto?
Assodato questo e appurato che l'utente attualmente "loggato" sia una sede, puoi ricavare l'ID della sede con una semplice SELECT basata sul nome che conosci, poi ricavare tutti i dipendenti della sede con un join tra dip_sedi e dipendenti dove l'ID della sede è quello che hai ricavato precedentemente.
Ha senso o non ho capito una mazza? :)
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2844
Iscritto il: mer feb 13, 2008 17:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 17:27

Direi di si... Anche io adesso sono arrivato a questa conclusione....nessuna relazione da utenti, ma solo un controllo al momento del login.

Stavo cercando di incasinarmi da solo tentando di associarla a le altre tabelle a tutti i costi :).. :oops:
Adesso comunque provo a fare delle prove per vedere su tutto funziona..

Farò sapere come è andata...
Grazie a tutti :o
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 17:45

Mi permetto di darti un consiglio.
I dati che devi usare, note utente, id utente, ruoli, id sede, e altri dati che ti servono in modo ricorrente, salvale in una sessione. Altrimenti, ad ogni richiesta di una pagina devi fare una query, e se ci sono tanti utenti collegati, se il server su cui gira il db è lento (magari per elaborazioni batch), rischi di rallentare l'applicativo.
Avatar utente
lablinux
Packager
Packager
 
Messaggi: 641
Iscritto il: gio nov 27, 2008 13:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 17:46

lablinux ha scritto:Mi permetto di darti un consiglio.
I dati che devi usare, note utente, id utente, ruoli, id sede, e altri dati che ti servono in modo ricorrente, salvale in una sessione. Altrimenti, ad ogni richiesta di una pagina devi fare una query, e se ci sono tanti utenti collegati, se il server su cui gira il db è lento (magari per elaborazioni batch), rischi di rallentare l'applicativo.


[OT mode]
sicuro di usare php e mysql?
[/OT mode]
Avatar utente
lablinux
Packager
Packager
 
Messaggi: 641
Iscritto il: gio nov 27, 2008 13:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 18:12

Si, devo usare php.. per adesso...

Sto includendo in ogni pagina, una pagina che ne include molte altre.. tra qui quella che verifica e mantiene aperta la sessione...
Ho fatto questa piccola procedura per vedere se si è loggati..altrimenti si viene reindirizzati alla pagina di login
Codice: Seleziona tutto
session_start();
session_regenerate_id(TRUE);

//Controlla se non è loggato
if(!isset($_SESSION['nome']))
 {
    //se non e' nella pag di login ti ci porta
    if(! preg_match("*INDEX/LOGIN*",$pwd))
    {
     print ' <script language="JavaScript" type="text/javascript">
        window.setTimeout ("location.href=(\''.$tmp.'INDEX/LOGIN/login.php\')", 0);
        </script>';
    }   
  }
else //SE E' LOGGATO
{
/*#####################scrivi chi e loggato###############*/
$logout=$tmp."INDEX/LOGIN/logout.php";
print "Sei loggato come \t".$_SESSION['nome']."<a href=\"$logout\"><input type=\"submit\" value=\"logout\"></a>";


Sono alle prime armi, e non sò quanto possa essere affidabile questo.. comunque ho fatto anche un'altra pagina che fà più o meno quello che fà lo script quì sopra.. solo che questo permette l'accesso a determinate pagine in base a chi è loggato
Codice: Seleziona tutto
/*ESEMPIO PROTEGGE PAGINA 
if( (preg_match("*INDEX/cartella_proteggere*",$pwd) ) &&  ($_SESSION['admin'] != $utentente_autorizzato) )
    {
     print '<h3>Non sei autorizzato a vedere questa pagina<h3>';
     print "
      <script language=\"JavaScript\" type=\"text/javascript\">
        window.setTimeout ("location.href=(\''.$tmp.'INDEX/index.php\')", 1500);
      </script>';
    }
*/

Se avete consigli sono ben accetti..
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti