2013-04-09 11 views
14

sto cercando di mostrare quanto segue nella diagramma ER:Uno-a molti rapporti in diagramma ER

There are instructors and courses, a course is taught by only one instructor 
whereas an instructor can give many courses. 

enter image description here

enter image description here

La mia domanda è, c'è qualche differenza tra i due diagrammi, in altre parole, importa quale linea trasformiamo in una freccia, o ciò che importa è solo la direzione della freccia?

Inoltre, se pensiamo alle cardinalità di mappatura; è 1 per molti o molti per 1? Se pensiamo in termini di corsi, allora è di molti a uno, ma se pensiamo in termini di istruttori, allora è uno per molti. Come lo decidiamo? Grazie.

risposta

30

Nei diagrammi ER quando la relazione viene indicata, le frecce non vengono utilizzate. Alcuni istruttori usano questa freccia quando vogliono decidere le cardinalità ma questo è solo per ottenere la cardinalità (1: 1, 1: M e N: M)

Ho allegato il diagramma ER per questo nella notazione Chen e anche usando Crow Notation puoi usare entrambi.

ER Digram

Decidere la cardinalità di una relazione è uno scenario di pratica non v'è duro e passa regola per ottenerlo. Quello che devi fare è iniziare da un lato della relazione e prendere una tupla (istanza) e vedere quante tuple dall'altra entità partecipano per la relazione. Quindi fai il vice versa. Quindi conosci il numero di partecipazione di tuple) da ciascuna entità alla relazione. Pensa alla teoria e alle funzioni degli insiemi in matematica quando decidi la cardinalità (es. Set di insegnamenti, Set di corsi e set di tipi di relazione Insegnante), allora è così facile, ma se non fai parte di uno sfondo matematico, pensa a uno scenario pratico.

Per esempio

a) per 1 istruttore lui o lei può insegnare Molti M) Corsi (

b) per 1 Corso c'è solo 1 istruttore

così nel lato istruttore lì è sempre 1 in a) eb) ma in Corsi c'è M e 1 in a) eb) lì per Istruttore: cardinalità corso è 1: M

+0

Ma è corretto se ho un attributo per il diamante tra le due entità? – hyperfkcb

+0

@DeniseTan Sì, è davvero possibile. Una relazione molti-a-molti potrebbe essere normalizzata a due relazioni uno-a-molti, con una tabella di giunzione. Ciò sarebbe rappresentato da un modello astratto, che può contenere anche attributi (ad esempio timestamp). Ad esempio, domande e tag in SO sono una relazione molti-a-molti. I tag delle domande potrebbero essere rappresentati dalla relazione 'question_tags'. Questa relazione potrebbe avere un campo 'inserted_at', che indica il timestamp dell'assegnazione del tag. – Leviathlon

0

Non penso che l'altra risposta sia completamente corretta.

direi che uno voglia uso frecce, e si dovrebbe usare una notazione che dà un nome significativo ciascuna direzione della relazione. In questo caso sarà "insegna" in una direzione e "nell'insegnamento" nell'altra. Utilizzare le frecce accanto ai nomi o posizionare il nome vicino all'entità a cui si riferisce. È possibile utilizzare una linea (con due punte di freccia) o due linee (con una freccia ciascuna).

Vorrei anche suggerire che la cardinalità è solo un tipo di vincolo e la notazione dovrebbe rispecchiare questo. Ad esempio, i due nomi per la relazione potrebbero essere "insegna (molti)" e "è insegnato da (esattamente uno)". Il punto è che potresti avere "insegna (uno o due)" o "è insegnato da (esattamente due)" e così via.

È meglio essere espliciti e chiari su quali sono esattamente i propri vincoli.

0

Entrambi stanno avendo cardinalità esattamente opposta

semplice linea pulita significa molte.

Freccia significa uno.

Se consideriamo entrambi con la stessa cardinalità.

poi, molti a molti siano rappresentati seguendo la seconda convenzione come (si prega di assumere diamante relazione impostare e rettangolo per set di entità)

INSTRUCTOR <---- TEACHES -----> COURSE 

che in realtà è di alcun significato.

Se consideriamo entrambi con cardinalità opposta.

poi, molti a molti dovrebbero essere rappresentati seguendo la seconda convenzione come (si prega di assumere diamante per rapporto impostato e rettangolo per insieme di entità)

INSTRUCTOR ----- TEACHES ------ COURSE 

No freccia esplicito è sempre considerato da molti a molti. Quindi, è corretto (solo se consideriamo entrambi i contrari)

+0

qualsiasi fonte per supportare la tua risposta? – momo

0

Si consideri un insieme di entità "dipendente" e un insieme di entità "dipartimento", con una relazione impostata come "gestita". Impiegato ------------- Gestisci -------------------- Reparto (set di entità) (set di relazioni) (set di entità) Una relazione uno a molti significa che un'entità di serie di dipendenti può essere associata a più di un'entità di set di entità di dipartimento ma un'entità di serie di reparti può essere associata a tutt'al più un'entità di serie di entità dipendenti. Ciò significa che se esiste una relazione uno a molti tra i set di entità dipendente e reparto, ciascun dipendente può gestire più di un reparto e allo stesso tempo ogni reparto è gestito dalla maggior parte dei datori di lavoro.