Yii Framework Forum: Richiesta Consglio Nomenclatura Tabelle - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Richiesta Consglio Nomenclatura Tabelle Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 13 February 2013 - 10:15 AM

Vi chiedo solo un consiglio "personale", quindi in parte soggettivo, sulla nomenclature tabelle mysql, basandovi sulla vostra esperienza.

Ho Contact che è in N<-->N con ContactGroup

le tabelle sono

contact e contact_group

come chiamereste la tabella che collega contact a contact_group ?

-contact_contact_group è poco chiarissimo :)
-contact_to_contact_group è più chiaro ma lunghissimo (ci sono 4 lettere di prefisso anche...)
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 13 February 2013 - 10:21 AM

1) Perché usi un prefisso nel nome delle tabelle? Usi lo stesso database su più applicazioni?
2) Che cosa contiene ContactGroup?
3) Come mai vuoi passare da nomi di tabella UpperCamelCase a nomi di tabelle nel formato underscore-separated compounds?
4) Io farei ContactContactGroup, che poi è la somma dei due nomi.
0

#3 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 13 February 2013 - 10:32 AM

1) scelta del capo...

2 e 3)

mi sono spiegato malissimo, perdonatemi...

Contact e ContactGroup sono due nomi di classi, a cui corrispondono rispettivamente le tabelle ..._contact e ..._contact_group

4) applicando appunto la nomenclatura attuale (prefix_underscore_separated_compounds) viene un obrobrio tipo '..._contact_contact_group' .. ma è proprio un obrobrio ..
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#4 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 325
  • Joined: 10-April 12

Posted 13 February 2013 - 10:54 AM

Secondo me è la scelta iniziale di chiamare una contact e una contact_group a mettere confusione.
di solito io cerco di non confondere le entità.

Una tabella che si chiama contact_group per come imposto io i nomi sarebbe ad occhio già una tabella di collegamento tra tabella contact e tabella group :)

ora è troppo tardi, dovevi pensarci prima.. il pastrocchio è combinato! eheeh

fai così: contant - contantgroup - contant_contantgroup
0

#5 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 13 February 2013 - 12:42 PM

beh.. se ho una tabella che definisce i gruppi di contatti ... group non mi basta come nome...

nello stesso db ho <qualcosa>_group di altre 10/12 entità ... dovevo per forza tenerle divise. In quei casi però ogni entità appartiene ad un unico gruppo...

Diciamo che io odio le molti a molti, piuttosto avrei modificato la progetttazione del db, ma anche quella non dipende da me...

.. e allora perchè il nome si ? perchè oggi avevo voglia di scambiare due chiacchere con voi e sono solo in ufficio :)
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#6 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 14 February 2013 - 03:03 PM

contact, group, contact_group.

PS. Non è mai troppo tardi per correggere il codice, anzi, ... se testate il vostro codice, potete rifattorizzarlo come e quando volete.
0

#7 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 14 February 2013 - 04:01 PM

View Postsensorario, on 14 February 2013 - 03:03 PM, said:

contact, group, contact_group.

PS. Non è mai troppo tardi per correggere il codice, anzi, ... se testate il vostro codice, potete rifattorizzarlo come e quando volete.


sarei daccordo su tutta la linea, e poi con yii... rinominare una tabella vuol dire fare pochissimi interventi :)

però il fatto è che group in un db dove TANTE entità formano relativi <entita>_group ... beh .. non rende l'idea del gruppo di cosa ci sia dentro quella tabella...
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#8 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 15 February 2013 - 12:02 AM

E', in effetti, un problema che è sempre stato una croce. Tempo fa ho provato ad adottare questo pattern:
tabella_a, tabella_b, join_a_b


Nel tuo caso abbiamo contatti, gruppi di contatti, ed abbiamo bisogno del join:
contact, group_contact, join_contact_group


Come soluzione non è troppo verbosa, di facile lettura. In oltre percepisci da subito che "join_" è una tabella creata per uno scopo ben preciso. Non conosco Best Practice in questo campo, ma questa mi sembra una buona soluzione. In alternativa, per essere ancora più sintetico potresti fare questo:
contact, group_contact, _contact_group


oppure:
contact, group_contact, _contact__group_contact


Anche in quest'ultimo caso sei sintetico, riesci a leggere immediatamente il nome delle due tabelle. Io, personalmente, non sono per la sintesi. Mi focalizzo sul codice PHP piuttosto che sul nome della tabella. Questo perché cerco di avere un approccio completamente staccato dal database: le modifiche tendo a farle con le migrations. Quindi, secondo questa logica avremmo le classi:
Contact
ContactGroup


Il resto, per me, è poco importante: io ho gli occhi sempre puntati sul codice, e non sul database. Gestire il database con le migrations ed usare le fixtures ti può aiutare a rimodellare il database ogni volta che vuoi. A condizione che tu stia testando il tuo codice perché in caso contrario questa operazione diventa più complessa.
1

#9 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 15 February 2013 - 04:48 AM

si, efettivamente anche io sto al 99% sul codice... era giusto una conversazione informale sull'argomento.

mi è piaciuta moltissimo questa

Quote

contact, group_contact, join_contact_group


la proporrò... grazie. ;D
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#10 User is offline   Nicola 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 179
  • Joined: 13-March 11
  • Location:Italy

Posted 18 February 2013 - 05:16 AM

Anche io uso una soluzione simile:
<prefisso>_<prefisso_join>_<nome_tabella1>_<nome_tabella2>

viene fuori una cosa tipo:
myapp_mm_user_group

in questo caso mm sta per Many to Many, i nomi delle tabelle in relazione le scrivo per esteso anche se può creare nomi tabella lunghi non me ne preoccupo, una volta usavo abbreviazioni sulle tabelle relazionate e ho visto che questo crea confusione quindi ora sono prolisso :)
My company: DigiSin
1

#11 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 19 February 2013 - 10:03 AM

Visto che ci siamo, vi racconto un vecchissimo standard adottato da una azienda per la quale programmavo con le vecchissime ASP. Quello standard prevedeva questa forma:

XXXxXXXX

I primi tre caratteri indicavano le prime tre consonanti della tabella. Il quarto carattere il tipo di dato. I restanti il nome del campo. Un questo modo il campo username della tabella utenti poteva essere UTNsUten, la sua data di nascita UTNdNasc, e così via. Per fortuna la guerra è finita e nel 2012 a me piace leggere cose come "nome_della_tabella".

Io sono per i nomi "schifosamente prolissi". Mi piace leggere il codice senza dovermi ricordare nemmeno una sigla. Ora vi mostro un esercizio di behavioral coding (il termine mi è stato detto ieri parlando con un amico):

class NicknameLinkable extends NicknameLinkableBase
{
    public function __construct($content)
    {
        parent::__contruct($content);
        $this->cercaTuttiINicknameCheTroviNelMessaggio();
        if($this->seNeTroviQualcuno()) {
            do {
                if($this->eSeEsisteUnAccountAssociato()) {
                    $this->rendiLinkabileIlNickname();
                }
            } while ($this->eProseguiFinoAQuandoCiSonoDeiNickname());
        }
    }
}


Può essere "strano" leggere codice simile, ma il disagio più grosso che "provo" quando vedo codice di altri è che non capisco mai che cosa voglia significare una abbreviazione. Detto questo, basta che un team definisca un proprio standard e qualsiasi regola è buona e valida dal momento che è condivisa.
1

#12 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 20 February 2013 - 03:45 AM

concordo in pieno
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users