Domanda

Mi rendo conto, quando si parla di strutture, ovviamente, se si dice "commenti postale hasMany" ci sono molti record su Commenti relative ad ogni Post .

Quello che non capisco è che contesto questo genere di termini sono utilizzati in. Sto pensando principalmente solo in DBAL o parlare di design. In ogni caso, quando una cosa " hasMany " di un altro come e dove non si vede?

È stato utile?

Soluzione

In ogni caso, quando una cosa hasMany di un altro come / dove ci si rivela nella logica dell'applicazione e del database?

L'unico modo che posso pensare di rispondere a questa domanda è un altro esempio di hasMany che possono o non possono rispondere alla tua domanda.

un esempio di un hasMany con post e commenti

err, tranne che avrei dovuto chiamare la tabella "comment", ma penso che il punto si trova.

Non so che questo davvero ti aiuta a capire più di quello che già aveva.

Così io anche condividere una query che potrebbe dimostrare come funziona:

declare @var char(5)
set @var = 'query'

select
   c.id
  ,c.text
  ,c.author
from comment c
inner join post p
   on p.id = c.parentid

, che ci aspettiamo di tornare molte righe, perché un post ha generalmente molti commenti (in teoria, ovviamente non tutti i messaggi avranno commenti)


Aggiornamento:

Quindi, ecco la cosa di rapporti: Sono facili da modello tramite diagramma (vedi il primo strumento che ho tirato fuori per rispondere a questa domanda), ma sono difficili da schema tramite testo. Così, invece di cercare di definire se si intende 1: M o 0: N, abbiamo appena scrivere in "nei pressi di inglese" e dire ciò che intendiamo. Ecco alcune alternative:

one to one           hasOne               post hasOne author (not true for CW ;])
one to many          hasMany              The one in question
many to one          belongsTo            parent child, comments belongTo post
many to many         hasAndBelongsToMany  This describes a complex relationship
many to many to many hasManyAndBelongsToMany

Come si vede si può diventare piuttosto complicato. Questo sarebbe ... ancora una volta! ... indicare la necessità di refactoring la logica di business in blocchi più semplici e più piccoli.

Questi possono anche essere chiamati "tipi di associazione" e possono essere indicati da verbage come "WrittenBy" (una relazione molti a uno) o "IsOwnedBy" (12:59 -? Contesto è la chiave)

Prima mi allontano dal concetto "hasMany" per l'ultima volta (bene questa è un aggiornamento, più probabilmente sarà scritto) Voglio dire che mentre è utile per "descrizioni Plain English ", è utilizzato anche in ActiveRecord in stile installazioni. Prendiamo, per esempio, Ruby. http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods. html Il resto di questo post (finora) è preso da quella pagina:

class Project < ActiveRecord::Base
  belongs_to              :portfolio
  has_one                 :project_manager
  has_many                :milestones
  has_and_belongs_to_many :categories
end

In questo modo l'ActiveRecord ORM per creare il modello di dati e di mantenere le relazioni, come specificato dalla logica di business all'interno del programma. Ma io non scrivo Ruby o Rails in modo che è quanto posso dire, so solo che esiste lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top