Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di dvd86
    Registrato dal
    Oct 2006
    Messaggi
    166

    database con campi di dettaglio utente dinamici

    salve...
    devo predisporre una gestione di utenti...e fin qua tutto ok!

    il problema è che i campi di dettaglio dell'utente dovranno essere gestibili in modo da aggiungere n campi attraverso un'interfaccia web! se ad esempio inizialmente la tabella utente avrà 4 campi (id, username, pw, email), il cliente deve avere la possibilità di aggiungere ad esempio nome, cognome ecc...senza avere una limitazione dei campi da aggiungere!

    questo posso gestirlo con una relazione molti a molti tra la tabella utente e dettaglio...giusto?
    quindi in finale avrò 3 tabelle (utente, dettaglio, utente_dettaglio)!

    volevo solo sapere se questa è la soluzione migliore...

  2. #2
    un po' di confusione tra campi e record e tabelle.

    leggo e interpreto:

    l'utente potra' aggiungere tutti i record che gli pare in una tabella di unione utenti-dettaglio per impedire la relazione diretta molti a molti (ingestibile) tra utenti e dettagli.

    Quanto interpretato e' corretto? Se si ok, va bene.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di dvd86
    Registrato dal
    Oct 2006
    Messaggi
    166
    grazie mille x l'ettenzione!

    cerco di fare un po di chiarezza...

    tabella utente che conterrà solo questi 4 campi
    codice:
    CREATE TABLE `utente` (
      `utente_id` int(10) auto_increment,
      `utente_username` varchar(25),
      `utente_pw` varchar(40),
      `utente_email` varchar(250),
      PRIMARY KEY  (`utente_id`),
    )
    tabella dettaglio (ogni suo record funge da campo di dettaglio dell'utente)
    codice:
    CREATE TABLE `dettaglio` (
      `dettaglio_id` smallint(5),
      `dettaglio_descr` varchar(50),
      PRIMARY KEY  (`dettaglio_id`)
    )
    tabella utente_dettaglio che mi serve per gestire la relazione molti a molti tra la tabellla utente e dettaglio
    codice:
    CREATE TABLE 'utente_dettaglio` (
      `utente_id` int(10),
      `dettaglio_id` smallint(5),
      PRIMARY KEY  (`utente_id`,`dettaglio_id`)
    )
    è corretta una struttura come questa?

  4. #4
    in linea di massima direi di si. Dovrebbe pero' evitare tutti i record duplicati nella tabella di unione. Cosa che fai unendo in chiave primaria utente_id-dettaglio_id.... che sarebbe pero' da evitare e dare invece al record un suo id indipendente dal contenuto. quindi un id anche per la tabella utente_dettaglio che non sia dipendente da altre tabelle e verificare magari anche con un indice UNIQUE che non ci siano inutili doppioni di accoppiamento tabelle nei record.

    comunque per un tuning piu' fine del database bisognerebbe conoscere bene il progetto. cosa che non conosco.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di dvd86
    Registrato dal
    Oct 2006
    Messaggi
    166
    già hai ragione...quindi inserisco anche un id numerico nella tabella utente_dettaglio!
    poi xò devo anke memorizzare nel DB il valore del nome, cognome ecc...quindi la tabella diventerà

    codice:
    CREATE TABLE 'utente_dettaglio` (
      'utente_dettaglio' bigint(20)
      `utente_id` int(10),
      `dettaglio_id` smallint(5),
      `utente_dettaglio_valore` varchar(250),
      PRIMARY KEY  (`utente_dettaglio_id`)
    )
    e se io volessi gestire anche il tipo di dettaglio? decidere ad esempio se è testo, check, radio button?

    dovrei utilizzare un'altra tabella...perche ho provato a fare una ricerca per trovare una guida a tal scopo ma nada!!

  6. #6
    non si puo' sparare nel mucchio senza sapere a cosa.

    Ad ogni tabella devi associare i suoi attributi esclusivi, nella tabella di unione gestisci le associazioni. Se una specifica associazione necessita di un particolare dettaglio_valore non comune ad altri accoppiamenti utenti-dettagli allora e' un attributo dell'unione, altrimenti se comune ad un utente o ad un dettaglio sara' un attributo dell'utente o del dettaglio.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di dvd86
    Registrato dal
    Oct 2006
    Messaggi
    166
    no infatti il tipo di dettaglio sarà un campo della tabella 'dettaglio'!

    codice:
    CREATE TABLE `dettaglio` (
      `dettaglio_id` smallint(5),
      `dettaglio_tipo_id` smallint(5),
      `dettaglio_descr` varchar(50),
      PRIMARY KEY  (`dettaglio_id`),
      KEY `dettaglio_tipo_id` (`dettaglio_tipo_id`)
    )
    e poi ci sara la tabella 'dettaglio_tipo' che ha una relazione uno a molti con la tabella dettaglio

    codice:
    CREATE TABLE `dettaglio_tipo` (
      `dettaglio_tipo_id` smallint(5),
      `dettaglio_tipo_descr` varchar(50),
      PRIMARY KEY  (`dettaglio_tipo_id`)
    )
    il problema però ora sta nel permettere all'utente di inserire un nuovo record nella tabella 'dettaglio', selezionando da un menu a tendina il tipo (text, textarea, checkbox, radio buttons)....è un casino gestire il tutto!! VVoVe:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.