2011-01-05 32 views

risposta

78

Sì, un viceversa. Dipende da quale parte della relazione è presente l'entità.

Ad esempio, se un reparto può impiegare diversi dipendenti, il reparto impiegato è una relazione uno a molti (1 reparto impiega molti dipendenti), mentre il rapporto dipendente/reparto è di molti a uno (molti dipendenti lavorano in un reparto).

Maggiori informazioni sui tipi di rapporto:

Database Relationships - IBM DB2 documentation

+0

Questo è quello che sto cercando! Molte grazie! – Zhaf

+1

Ho paura che non faccia scene! (** NOT SURE MA **) penso che l'ordine rappresenti la dipendenza! Non è vero ?? E.G, Un utente di ruolo può essere da 1 a molti, ma non molti a uno perché non si possono ottenere riferimenti dell'utente che utilizza il ruolo! Ha senso? –

+2

collegamento non funziona più –

25

da http://www.sum-it.nl/cursus/dbdesign/english/intro030.php3

La maggior parte delle relazioni tra le tabelle sono uno -a molti.

Esempio:

* One area can be the habitat of many readers. 
* One reader can have many subscriptions. 
* One newspaper can have many subscriptions. 

A molti a uno rapporto è uguale a uno-a-molti, ma da un diverso punto di vista .

* Many readers live in one area. 
* Many subscriptions can be of one and the same reader. 
* Many subscriptions are for one and the same newspaper. 
+0

Grazie per l'aiuto :) – Zhaf

3

Non v'è alcuna differenza. È solo una questione di linguaggio e di preferenza su quale strada si circonda per stabilire la relazione.

+0

Esiste sicuramente una differenza, sia concettualmente che con lo schema generato. Vedere la mia risposta: http://stackoverflow.com/a/37954280/179850 – Gray

5

risposta alla tua prima domanda è: entrambi sono simili,

risposta alla tua seconda domanda è: uno-a-molti -> un uomo (tavolo MAN) può avere più di una moglie (tabella DONNA) molti-a-uno -> più di una donna ha sposato un uomo.

Ora se si desidera correlare questa relazione con due tabelle MAN e WOMEN, una riga della tabella MAN può avere molte relazioni con le righe nella tabella WOMEN. spero che sia chiaro.

+0

Mi piacciono i sottotitoli di poligamia lol –

-7

one-to-many ha una classe genitore contiene n numero di childs quindi è un mapping di raccolta. mant-to-one ha n numero di child contiene un genitore quindi è un oggetto mapping

-1

Non c'è alcuna differenza pratica. Usa la relazione che ha più senso dal modo in cui vedi il tuo problema come illustrato da Devendra.

+0

Certamente c'è una differenza, sia concettualmente che lo schema generato. Vedere la mia risposta: http://stackoverflow.com/a/37954280/179850 – Gray

8

Qual è la vera differenza tra uno a molti e molti a uno?

Ci sono differenze concettuali tra questi termini che dovrebbero aiutare a visualizzare i dati e anche le differenze nello schema generato che dovrebbero essere pienamente comprese. Soprattutto la differenza è di prospettiva.

In una relazione uno-a-molti, la tabella locale ha una riga che può essere associata a più righe in un'altra tabella. Nell'esempio da SQL for beginners, uno Customer può essere associato a molti Order s.

Nella relazione molti-a-uno, la tabella locale può avere molte righe associate a una riga in un'altra tabella. Nel nostro esempio, molti Order s possono essere associati a uno Customer. Questa differenza concettuale è importante per la rappresentazione mentale.

Inoltre, lo schema che supporta la relazione viene rappresentato in modo diverso nelle tabelle e Order. Se il cliente ha colonne id e name:

id,name 
1,Bill Smith 
2,Jim Kenshaw 

Poi per un Customer per essere associate a Order s, molte implementazioni di SQL aggiungere alla tabella Order una colonna che memorizza la id del associata Customer (in questo schema customer_id :

id,date,amount,customer_id 
10,20160620,12.34,1 
11,20160620,7.58,1 
12,20160621,158.01,2 

Nelle righe di dati di cui sopra, se guardiamo la colonna customer_id id, vediamo che Bill Smith (cliente-id # 1) ha 2 ord associati con lui: uno per $ 12,34 e uno per $ 7,58. Jim Kenshaw (customer-id # 2) ha solo 1 ordine per $ 158,01.

Ciò che è importante capire è che in genere la relazione uno-a-molti in realtà non aggiunge alcuna colonna alla tabella che è "uno". Lo Customer non ha colonne aggiuntive che descrivono la relazione con Order. Infatti, lo Customer potrebbe anche avere una relazione uno-a-molti con le tabelle ShippingAddress e SalesCall e tuttavia non sono state aggiunte colonne aggiuntive alla tabella Customer.

Tuttavia, per una relazione molti-a-uno da descrivere, spesso una colonna id viene aggiunto ai tanti tavolo che è una chiave esterna a una tabella - in questo caso una colonna customer_id viene aggiunto Order. All'ordine associato N. 10 per $ 12,34 a Bill Smith, assegniamo la colonna customer_id all'id Bill Smith 1.

Spero che questo aiuti.

+2

Il caso generale è chiamato dipendenza inclusione. Un vincolo di chiave esterna è il tipo più comune di dipendenza di inclusione, ma non tutte le dipendenze di inclusione coinvolgono una chiave esterna. L'attributo comune o gli attributi (il "riferimento") esistono sempre in * entrambe * le tabelle. Sul lato "uno" questi attributi sono chiamati chiavi candidate. Sul lato "molti" potrebbero * essere una chiave straniera. I termini "uno-a-molti" o "molti-a-uno" potrebbero essere applicati a qualsiasi dipendenza di inclusione che coinvolge almeno una chiave candidata senza necessariamente indicare quale lato potrebbe essere facoltativo. – sqlvogel

+0

Interessante @sqlvogel. In Java 'javax.persistence.OneToMany' differentemente da' ManyToOne'. Stai dicendo che sono sinonimi o semplicemente dipende dall'implementazione? La mia risposta è errata? – Gray

+0

La domanda riguarda database relazionali e SQL, non Java. Forse hai ragione su Java. – sqlvogel

1

Uno a molti e molti a uno sono simili in Multiplicity ma non in Aspect (cioè direzionalità).

La mappatura delle Associazioni tra le classi di entità e le relazioni tra tabelle.Ci sono due categorie di relazioni:

  1. Multiplicity (termine ER: cardinalità)
    • One-to-one rapporti: Esempio Marito e moglie
    • Uno-a-molti: Esempio di madre e figli
    • Relazioni molti-a-molti: Esempio studente e soggetto
  2. Directionality: non influisce sulla mappatura ma fa la differenza su come possiamo accedere ai dati.
    • Relazioni unidirezionali: un campo di relazione o una proprietà che fa riferimento all'altra entità.
    • Relazioni bidirezionali: Ogni entità ha un campo di relazione o una proprietà che fa riferimento all'altra entità.
0
  • --- Uno a Molti --- Un genitori possono ha due o più figli.
  • --- Molti a uno --- Quei 3 bambini possono avere un solo genitore.

    Entrambi sono simili. Questo può essere usato appartiene alla necessità. Se vuoi trovare figli per genitori particolari, allora puoi andare con One-To-Many. oppure, se vuoi trovare i genitori per un gemello, puoi andare con il Many-To-One. Allo stesso modo ....,