Nome semantico standard per 3a tabella in 3NF

2

Per 3 tabelle che sono in 3NF, una relazione molti-a-molti, c'è un nome o un termine standard per descrivere la terza tabella, quella che associa le altre tabelle? Fondamentalmente, sto cercando un modo semantico per nominare il terzo tavolo.

Esempio

Hai due tabelle: utenti e widget . Un utente può avere più widget e un widget può essere di proprietà di più utenti. Qual è il nome più semantico per la 3a tabella?

In passato, ho usato quanto segue in una volta o l'altra:

  • userWidgets
  • userWidgetAssn (associazione)
  • userWidgetXref (riferimento incrociato)

Nel mio esempio, userWidgets è probabilmente la mia prima scelta, ma non sempre funziona in modo pulito a seconda dei nomi delle tabelle. C'è uno standard del settore?

    
posta VirtuosiMedia 05.02.2012 - 00:37
fonte

3 risposte

3

Spero che tu possa sopportare me nelle prossime righe. Non sono d'accordo con le convenzioni sui nomi che hai fornito. Data Modeling ha lo scopo di farci riflettere in modo più dettagliato sul business e non solo generare DDL. Se usiamo lo sforzo e il tempo speso per costruire il modello per saperne di più sul business, potremmo guadagnare molto. Adesso dici:

A user can (have) multiple widgets and a widget can be owned by multiple users.

Per me, usare la parola have non è completamente sincronizzato. con la parola proprietà .

Se insisti sulla parte "un oggetto può essere posseduto da ...", devi dire "un utente può possedere 0,1 o più widget". Questo per chiarire che abbiamo a che fare con 1 associazione (o relazione) in entrambe le direzioni.

Analizzando ulteriormente, cosa vuol dire "un utente possiede un widget"? Non è molto chiaro a tutti. La proprietà è avvenuta a seguito di un processo di acquisto? (come in: utente acquista un widget) o un processo di concessione? (come in concessione di privilegi)? Se la proprietà si è verificata a causa di un processo di acquisto, la tabella di intersezione tra il widget e l'utente è la tabella che acquisisce la cronologia degli acquisti (o i dettagli di acquisto) dell'utente.

Ora puoi decidere se vuoi usare un nome descrittivo come "UserPurchaseDetail" (un nome migliore è suggerito di seguito da @Joel Brown) o usare solo un nome come UserWidget.

Ancora una volta, qualunque sia la tua scelta del nome, il mio punto è che si dovrebbe sempre cercare di fare più analisi e usare un nome che rifletta il più possibile la tabella utilizzata in termini di business.

Modifica: nome aggiunto suggerito dalla nota sotto come nome alternativo.

    
risposta data 05.02.2012 - 01:04
fonte
1

Ho visto solo usare i due. Mantieni lo stesso standard che usi per tutto il resto.

Se le tue tabelle sono utenti e widget e usi CamelCase, userWidgets va bene. (Preferisco quello agli utentiWidgets perché ogni utenteWidget è un singolo oggetto) La chiave è essere coerenti ogni volta che lo fai. Questo è più importante di quale standard.

L'ho visto altrove con clienti e prodotti ed è essenzialmente la stessa cosa che hai descritto.

    
risposta data 05.02.2012 - 02:32
fonte
0

userWidget Singolare. (Ho lasciato cadere s ). Questo è il più vicino ad uno standard che troverai.

L'aggiunta di Xrif o Assn non fornisce ulteriori informazioni.

Can you expand on why you went singular rather than plural?

Perché quando si utilizza un ORM, mi riferirò a userWidget e a un oggetto singolo (record) dalla tabella userWidget e userWidgets per fare riferimento a una raccolta di tali oggetti. È più pulito.

    
risposta data 05.02.2012 - 00:45
fonte

Leggi altre domande sui tag