Repository 32bit  Forum
Repository 64bit  Wiki

Aiuto relazione database

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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 della regola 5 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 15: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???
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda 414N » mar ott 16, 2012 15: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: 2884
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Aiuto relazione database

Messaggioda darkstaring » mar ott 16, 2012 15: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
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 8: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?
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 11: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
Linux 2.6
Linux 2.6
 
Messaggi: 779
Iscritto il: gio nov 27, 2008 12:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 12: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....
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 13: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
Linux 2.6
Linux 2.6
 
Messaggi: 779
Iscritto il: gio nov 27, 2008 12:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 14: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?...
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 14:47

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

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 14: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?
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda 414N » mer ott 17, 2012 15: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: 2884
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 16: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
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 16: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
Linux 2.6
Linux 2.6
 
Messaggi: 779
Iscritto il: gio nov 27, 2008 12:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda lablinux » mer ott 17, 2012 16: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
Linux 2.6
Linux 2.6
 
Messaggi: 779
Iscritto il: gio nov 27, 2008 12:23
Località: Rho
Slackware: 14 64bit
Desktop: kde4

Re: Aiuto relazione database

Messaggioda darkstaring » mer ott 17, 2012 17: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..
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 408
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite