$30 off During Our Annual Pro Sale. View Details »

ERD_on_Rails.pdf

ogom
August 08, 2015
200

 ERD_on_Rails.pdf

ogom

August 08, 2015
Tweet

Transcript

  1. ERD on Rails
    68th RubyKansai
    Takashi Ogomori

    View Slide

  2. ERD on Rails
    Rails͸Active RecordͰϞσϧΛૢ࡞Λ͢Δɻ
    Ϟσϧʹ͸ΞιγΤʔγϣϯΛઃఆͰ͖Δɻ
    2/10

    View Slide

  3. Example Domain
    ֓ཁʢՁ஋ʣ
    Ϣʔεέʔε
    ΦϒδΣΫτ
    ߦࣄ؅ཧγεςϜʢΠϕϯτΛ։࠵ͯ͠ɺίϛϡχςΟΛߏஙʣ
    ·
    ར༻ऀ͸ίϛϡχςΟΛ૑ઃͰ͖Δɻ
    ར༻ऀ͸ίϛϡχςΟʹೖձͰ͖Δɻ
    ίϛϡχςΟʹೖձ͢ΔͱϝϯόʔʹͳΔɻ
    ίϛϡχςΟ͸ΠϕϯτΛ։࠵Ͱ͖Δɻ
    Πϕϯτ͸νέοτΛൃߦͰ͖Δɻ
    ϝϯόʔ͸νέοτೖखͰ͖Δɻ
    ·
    ·
    ·
    ·
    ·
    ·
    ར༻ऀ, ίϛϡχςΟ, ϝϯόʔ, Πϕϯτ, νέοτ
    ·
    3/10

    View Slide

  4. Associations
    One-to-manyʢ1ରଟʣ
    Many-to-manyʢଟରଟʣ
    One-to-Oneʢ1ର1ʣ
    ̍ͭͷίϛϡχςΟ͸ଟ਺ͷΠϕϯτΛ։࠵Ͱ͖Δɻ
    ̍ͭͷΠϕϯτ͸ଟ਺ͷνέοτΛൃߦ͢Δ͜ͱ͕Ͱ͖Δɻ
    ·
    ·
    ར༻ऀ͸ଟ਺ͷίϛϡχςΟʹՃೖ͢Δ͜ͱ͕Ͱ͖Δɻ
    ϝϯόʔ͸ෳ਺ͷΠϕϯτʹࢀՃͰ͖Δɻ
    ·
    ίϛϡχςΟ͸ଟ਺ͷར༻ऀΛՃೖͤ͞Δ͜ͱ͕Ͱ͖Δɻ
    -
    ·
    Πϕϯτ͸ෳ਺ͷϝϯόʔΛࢀՃͤ͞Δ͜ͱ͕Ͱ͖Δɻ
    -
    ̍ͭͷίϛϡχςΟ̍ͭͷϙϦγʔΛ࣋ͭ͜ͱ͕Ͱ͖Δɻ
    ·
    4/10

    View Slide

  5. Domain Specific Language (DSL)
    Types આ໌
    belongs_to ࢀর
    has_one ͻͱ͚ͭͩ࣋ͭ
    has_many ෳ਺࣋ͭ
    has_many through ... Λ௨ͯ͡ෳ਺࣋ͭ
    has_one through ... Λ௨ͯ͡ͻͱ͚ͭͩ࣋ͭ
    has_and_belongs_to_many ࢀরͱෳ਺࣋ͭ
    5/10

    View Slide

  6. Generate 1
    One-to-manyʢ1ରଟʣ
    One-to-Oneʢ1ର1ʣ
    $ rails generate scaffold group name
    $ rails generate scaffold event group:references
    has_many :events
    belongs_to :group
    $ rails generate scaffold policy group:references
    has_one :policy
    6/10

    View Slide

  7. Generate 2
    Many-to-manyʢଟରଟʣ
    Many-to-manyʢଟରଟʣ
    $ rails generate scaffold user name
    $ rails generate scaffold member user:references group:references
    has_many :members
    has_many :groups, through: :members
    has_many :users, through: :members
    $ rails generate scaffold ticket event:references member:references
    has_many :tickets
    has_many :events, through: :tickets
    has_many :members, through: :tickets
    7/10

    View Slide

  8. Generate 3
    PolymorphicʢϙϦϞʔϑΟοΫʣ
    $ rails generate scaffold image imageable:references{polymorphic} name
    has_many :images, as: :imageable
    8/10

    View Slide

  9. ERD
    9/10

    View Slide

  10. 10/10

    View Slide