Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データベース・リファクタリングを読む / hello-database-refactoring

データベース・リファクタリングを読む / hello-database-refactoring

社内勉強会での発表ネタです

hideki kinjyo
PRO

September 27, 2021
Tweet

More Decks by hideki kinjyo

Other Decks in Programming

Transcript

  1. ໊ஶɿ

    ʮσʔλϕʔεɾϦϑΝΫλϦϯάʯ

    ΛಡΉ
    σϒϥΠϒʂ`21 / 2021.09.27
    BY Hideki Kinjyo

    View Slide

  2. ͳΜͰ΋ϦϑΝΫλϦϯά͠Α͏ʂ
    • ΞϓϦέʔγϣϯ΋ʂ
    • ςετ΋ʂ
    • σʔλϕʔε΋ʂ
    • ૊৫΋ʂ
    • αʔόʔ΋ʂ

    View Slide

  3. ͳΜͰ΋ϦϑΝΫλϦϯά͠Α͏ʂ
    • ΞϓϦέʔγϣϯ΋ʂ
    • ςετ΋ʂ
    • σʔλϕʔε΋ʂ
    • ૊৫΋ʂ
    • αʔόʔ΋ʂ
    ←ࠓ೔͸ίί

    View Slide

  4. ͍ͭ΋ͷ
    • ۚ৓लथ / ͖Μ͡ΐ͏ͻͰ͖
    • GitHub: @o0h / Twitter: @o0h_
    • ޷͖ͳFW͸CakePHP
    • ΞΠίϯ͸

    ඒຯ͍͠ࡪ਌ࢠကͷࣸਅͰ͢

    View Slide

  5. ࠓ೔ͷ࿩
    • ʮϦϑΝΫλϦϯάʯ͕ςʔϚͩΑʙͱ͍
    ͏͜ͱͰ
    • ຊͷ঺հͰ͢

    View Slide

  6. (ޙ͔Β)ؾ͍ͮͨ͜ͱ
    • طʹઌਓ͕΍ͬͯΜͳ͊ʙʂ
    • ࢿྉ࡞Γ࢝Ί͔ͯΒࢥ͍ग़ͨ͠
    • Ͱ΋ؾʹ͠ͳ͍Ͱߦ͖·͢
    • ྑ͍࿩͔ͩΒݟͯ

    https://speakerdeck.com/soudai/database-refactoring

    View Slide

  7. ͓͠ͳ͕͖
    1. ͸͡ΊʹɿʮϦϑΝΫλϦϯάʯͬͯԿ͚ͩͬ(͓͞Β͍)
    2. ʮσʔλϕʔεɾϦϑΝΫλϦϯάʯͬͯͲΜͳຊʁ
    3. औΓ্͛ΒΕ͍ͯΔύλʔϯΛ͍͔ͭ͘঺հ͢ΔΑʂ

    View Slide

  8. $1

    ʮϦϑΝΫλϦϯάʯͬͯԿ͚ͩͬ

    (͓͞Β͍)

    View Slide

  9. ༗໊ͳຊ
    • (ୈ1൛ͷ)೔ຊޠ൛෭୊ɿʮϓϩάϥϜͷମ࣭վળςΫχοΫʯ
    • ϦϑΝΫλʹ͍ͭͯͷʮݪଇʯʮख๏ʯ΍ɺʮෆ٢ͳष͍ʯʹ͍ͭͯ
    ·ͱΊͨຊ
    • ݸਓతʹ͸ʮϓϩάϥϚͷΩϟϦΞͷૣ͍ஈ֊Ͱग़ձ͓ͬͯ͘΂͖
    ຊʯͷ1ͭͩͱࢥ͏
    • “GoFͷσβΠϯύλʔϯ͸෼ੳ͔ΒઃܭʹҠΔࡍͷ೰Έʹ͍ͭͯɺ໰
    ୊ʹର͢Δղܾࡦͱͯ͠ಓےΛࣔ͠·͢ɻҰํϦϑΝΫλϦϯά͸ɺ
    ࣮૷ʹஔ͍ͯઃܭΛ;Γ͔͑ΓɺطଘͷػೳΛอͪͭͭίʔυΛΑΓ
    Α͍ઃܭ΁ͱਐԽ͍ͤͯ͘͞खॱΛड़΂ͨ΋ͷͰ͢”(ϦϑΝΫλϦϯ
    ά ୈ2൛ ༁ऀ͋ͱ͕͖)

    View Slide

  10. ϦϑΝΫλϦϯά Կ
    ᴷ֎෦͔Βݟͨͱ͖ͷৼΔ෣͍Λอͪͭͭɺཧղ΍मਖ਼͕؆୯
    ʹͳΔΑ͏ʹɺιϑτ΢ΣΞͷ಺෦ߏ଄ΛมԽͤ͞Δ͜ͱ
    ϦϑΝΫλϦϯάୈ൛ୈষ

    View Slide

  11. ϦϑΝΫλϦϯά Կ
    ϦϑΝΫλϦϯάΛߦ͏ཧ༝(ಉ ୈ2ষΑΓ)
    • ϦϑΝΫλϦϯά͸ιϑτ΢ΣΞઃܭΛվળ͢Δ
    • ϦϑΝΫλϦϯά͸ιϑτ΢ΣΞΛཧղ͠΍͘͢͢Δ
    • ϦϑΝΫλϦϯά͸όάͷൃݟΛॿ͚Δ
    • ϦϑΝΫλϦϯά͸ϓϩάϥϛϯάΛ଎ΊΔ

    View Slide

  12. ෆ٢ͳष͍ Կ
    ᴷࢲͨͪ͸ࠓ·Ͱඇৗʹଟ͘ͷίʔυΛݟ͖ͯ·ͨ͠ɻ͏·͘
    ͍ͬͨϓϩδΣΫτͷίʔυ΋͋Ε͹ɺେࣦഊΛট͍ͨ΋ͷ΋͋
    Γ·͢ɻͦ͜ʹ͸ϦϑΝΫλϦϯάΛ༠͏ ͱ͖ʹ͸ʮඞཁͩʯͱ
    ڣͿ
    ͋Δछͷงғؾ͕͋ΓɺͦΕΛᄿ͗෼͚ΔೳྗΛࢲͨͪ͸
    ཆ͖ͬͯͨͷͰ͢
    ϦϑΝΫλϦϯάୈ൛ୈষ

    View Slide

  13. ෆ٢ͳष͍ Կ
    • “ϦϑΝΫλϦϯάͷඞཁੑΛࣔ͢ෆ٢ͳஹީ”
    • ཁ͢ΔʹʮͳΜ͔Ϛζ͍ίʔυʯ
    • ͜Ε͸ϓϩάϥϚ͕(ܦݧ͔Β͘Δ)ඒҙࣝʹΑͬͯײ஌Ͱ͖Δ΋ͷ͕ͩɺΑΓ
    ʮ۩ମతʹૌ͑ͯ͘Δ΋ͷͰ͸ͳ͍͔ʯͱͯ͠ʮ਎ମײ֮ʯͷൺᄻ(=ष͍)͕ར
    ༻͞Ε͍ͯΔ
    • ॻ੶ʮϦϑΝΫλϦϯάʯͰ͸ɺ৭ʑͳʮष͍ʯʹ͍ͭͯྨܕԽͱ໊෇͚Λߦͬ
    ͍ͯΔ
    • ৄ͘͠͸ʮϦϑΝΫλϦϯά ୈ3ষ ίʔυͷෆ٢ͳष͍ʯʹ

    View Slide

  14. ϦϑΝΫλϦϯάͱύϑΥʔϚϯενϡʔχϯά
    • ϦϑΝΫλϦϯά͸ʮઃܭΛ੔͑ΔʯʮՄಡੑΛ޲্ͤ͞ΔʯͨΊͷΞΫςΟϏςΟ
    • ಉ༷ʹʮϓϩάϥϜͷશମతͳػೳΛมߋ͠ͳ͍मਖ਼ʯͱͯ͠ɺύϑΥʔϚϯεɾνϡʔ
    χϯά͕ڍ͛ΒΕΔ
    • ྆ऀͷҧ͍͸ɺͦͷ໨తʹ͋Δ
    • ՄಡੑͱύϑΥʔϚϯε͸ɺ࣌ʹτϨʔυΦϑʹͳΔՄೳੑ΋͋Δ
    • ଎౓޲্ʹॏ͖Λ͓͍͍ͯΔͳΒɺͦΕ͸(ϦϑΝΫλͱ͍͏ΑΓ)ύϑΥʔϚϯεɾ
    νϡʔχϯάͱݺ͹ΕΔ
    • (ݸਓతʹ͸ɺ͜ͷลΓ΋ؚΊͯਖ਼͍͠ޠኮΛ࢖ͬͨํ͕ଞਓͱͷίϛϡχέʔγϣ
    ϯ͕εϜʔζʹͳͬͯྑ͍ͷͰͳ͍ʁͱ͍͏ؾ࣋ͪ͸͋Δ

    View Slide

  15. ϦϑΝΫλϦϯάͱΞδϟΠϧ(తͳ΋ͷ)
    ᴷ΋͠ɺʮϏδωεՁ஋ʯΛૣ͘ఏڙ͢Δͷ͕͍ͪ͹Μେࣄͩ
    ͱࢥ͍ͬͯΔͷͳΒɺ͋ͳͨͷγεςϜʹ͸ɺมԽʹԠͯ͡ਐԽ
    ͍ͯ͘͜͠ͱ͕ͳ͓͞ΒॏཁʹͳΔ͸ͣͩɻϦϑΝΫλϦϯάͱ
    ͸ɺࣗ෼ͷमਖ਼Ͱ਎ಈ͖͕औΕͳ͘ͳΔͷΛ๷͙ํ๏ͩɻ
    ΤΫετϦʔϜɾϓϩάϥϛϯάಋೖฤୈষ

    View Slide

  16. ϦϑΝΫλϦϯάͱΞδϟΠϧ(తͳ΋ͷ)
    • ϦϑΝΫλϦϯά͸(ಛʹXPͰ)஫໨͞Ε͍ͯΔ׆ಈ
    • ʮࣄલʹઃܭΛ͢Δʯ΋ͷΛʮ࣮૷ͨ͋͠ͱͰɺઃܭΛվળ
    ͢Δʯͱ͍͏ࢥߟͷస׵ʹݟΔʮΤΫετϦʔϜʯ͞
    • ඞཁʹͳͬͨ࣌ʹඞཁͳίʔυ(ػೳ)Λ࣮૷Ͱ͖ΔΑ͏ʹɺϦ
    ϑΝΫλϦϯάʹΑͬͯίʔυͷʮػහੑʯΛҡ͍࣋ͯ͘͠
    • ։ൃΛਐΊΔ্ͰಘֶͨͼΛɺίʔυ΁ઈ͑ؒͳ͘൓өͤ͞
    Δ

    View Slide

  17. ϦϑΝΫλϦϯάͷਐΊํ
    • ʮ(طଘͷ)ৼΔ෣͍Λอͭʯ͜ͱ͕େલఏ
    • ͭ·Γʮ࡞ۀͷલޙͰػೳ͕ఀࢭ͠ͳ͍ʯ͜ͱ͕ඞਢ
    • ʮ։ൃࡁΈʯͷ΋ͷΛʮ։ൃ్தʯʹ͢Δࣄ͸ڐ͞Εͳ͍
    • খ͞ͳεςοϓΛੵΈॏͶ͍ͯ͘ͷ͕๬·͍͠
    • ςετͷमਖ਼ΛߦΘͳ͍(SUTͷվमͷΈ)Λߦ͏
    • ςετ͕มԽ͢Δ = ৼΔ෣͍͕มߋ͞Ε͍ͯΔ͜ͱΛ൱ఆͰ͖ͳ͍
    • ͨͩ͠ɺʮςετ࿙ΕʯΛิॆ͢Δ৔߹͸ྫ֎

    View Slide

  18. $2

    σʔλϕʔεɾϦϑΝΫλϦϯάͬͯ
    ͲΜͳຊʁ

    View Slide

  19. ༗໊ͳຊ
    • ೔ຊޠ൛෭୊ɿʮσʔλϕʔεͷମ࣭վળςΫχοΫʯ
    • σʔλϕʔε(RDB)ΛϦϑΝΫλϦϯά͍ͯ͘͠ʹ͸ʁ
    Λ·ͱΊͨຊ
    • ϦϑΝΫλϦϯάͷςΫχοΫɺྨܕ
    • σʔλϕʔεͷෆ٢ͳष͍
    • ϦϑΝΫλΛਐΊ͍ͯͨ͘Ίͷํ๏

    View Slide

  20. SQLΞϯνύλʔϯͬͯຊ΋͋ͬͨ͡ΌΖ
    • ʮΞϯνύλʔϯʯͱ͍͏ʮෆ٢ͳष͍ʯΛ঺հͨ͠ຊ
    • ࣅ͍ͯΔͬͪΌࣅ͍ͯΔ
    • ʮඃΔʯͱ͍͏ΑΓɺগཱͪ͠Ґஔ͕ҧ͏ײ͡
    • SQLΞϯνύλʔϯ: ʮ໰୊ʯͱʮղܾͨ࢟͠ʯͷ঺հ
    • DBϦϑΝΫλϦϯά: ʮ໰୊ʯͱʮղܾͷਐΊํʯͷ঺
    հ

    View Slide

  21. ຊจͷߏ଄ͰΈΔ྆ऀͷҧ͍
    ͲͪΒ΋ʮయܕతͳ঱ঢ়ʯΛऔΓ্͛ɺղઆ͍ͯ͘͠ελΠϧ(ύλʔϯຊ)ɻ
    ଟ༷ͳύλʔϯΛൺֱɾ݁߹Ͱ͖ΔΑ͏ʹɺղઆͷ಺༰͸ߏ଄Խ(ϑΥʔϚοτԽ)͞Ε͍ͯΔ
    => ͦͷߏ଄Λൺֱ͢Δ͜ͱͰɺ྆ऀͷΩϟϥΫλʔ΍ॏ͖Λ͓͍͍ͯΔՕॴͷҧ͍͕෼͔Δ
    42-Ξϯνύλʔϯ
    ໨త
    Ξϯνύλʔϯ
    ݟ͚ͭํ
    ༻͍ͯ΋ྑ͍৔߹
    ղܾࡦ
    σʔλϕʔεɾϦϑΝΫλϦϯά
    ಈػ ໨త

    τϨʔυΦϑ
    εΩʔϚߋ৽खॱ
    σʔλҠߦखॱ
    ϓϩάϥϜߋ৽खॱ

    View Slide

  22. ྫ͑͹ɺͱ͋ΔΞϯνύλʔϯ͕͋Γ
    SQLΞϯνύλʔϯ: ʮIDϦΫϫΠΞυ(ͱΓ͋͑ͣID)ʯ
    • ʮԿͰ΋͔ΜͰ΋ʮidʯͱ͍͏ओΩʔΛஔ͚͹ྑ͍༁͡Όͳ͍ͧʂʯ
    ͱ͍͏”ष͍”
    • ղܾࡦ
    • Θ͔Γ΍͍͢ྻ໊ʹ͠Α͏
    • ن໿ʹറΒΕͳ͍
    • ࣗવΩʔͱෳ߹Ωʔͷ׆༻
    • ʮ໰୊(Why)ʯʹରͯ͠ɺʮ͜͏͍͏෩ʹ͠Α͏(What)ʯ͸ѻΘΕ͍ͯ
    Δ͕ʮͲ͏΍ͬͯ҆શʹมߋΛ࣮ࢪ͢Δʁ(How)ʯ·Ͱ͸ѻ͍ͬͯͳ͍

    View Slide

  23. ྫ͑͹ɺͱ͋ΔΞϯνύλʔϯ͕͋Γ
    ϦϑΝΫλϦϯά: ʮࣗવΩʔʹΑΔ୅ཧΩʔͷஔ͖׵͑ʯ
    εΩʔϚߋ৽खॱ
    1. ৽͍͠ओΩʔͱͳΔΧϥϜ
    Λಛఆ͢Δ
    2. ৽͍͠ΠϯσοΫεΛ௥
    Ճ͢Δ
    3. ݩͷΧϥϜΛഇࢭ༧ఆʹ͢
    Δ
    4. ؔ࿈͢ΔςʔϒϧΛߋ৽͢
    Δ
    5. ࢀর੔߹ੑτϦΨʔΛߋ
    ৽΋͘͠͸௥Ճ͢Δ
    ϓϩάϥϜߋ৽खॱ
    1. ୅ཧΩʔΛ࢖͍ͬͯΔ
    ίʔυΛ࡟আ͢Δ
    2. ৽͍͠ΩʔΛݩʹ݁߹
    Λߦ͏
    3. ৽͍͠ΩʔΛݩʹσʔ
    λऔಘΛߦ͏

    View Slide

  24. ԿΛ໨ࢦͨ͠ຊͳͷ͔
    • ʮ(ΞϓϦͱಉ͡Α͏ʹ)σʔλϕʔε΋ϦϑΝΫλϦϯάͯ͠
    ͍͜͏ʯͱ͍͏ओு
    • ͔͠΋XPతͳχϡΞϯεͷʮϦϑΝΫλϦϯάʯͰ͋Γɺ
    • ʮΤΠϠʔͬʂʂυʔϯʂʯͱؾ߹ΛೖΕͯ΍ΔͷͰ͸ͳ͘
    • ʮখ͞ͳมߋΛʯʮյͣ͞ʹʯʮԿ౓΋ʯ΍Δ΋ͷ

    View Slide

  25. Ώʔͯ(DB͸ΞϓϦΑΓ)೉͍͠͡ΌΖʁ
    • ”σʔλϕʔεʹؔͯ͠͸݁߹౓͕ඇৗʹߴ͘ͳΓಘΔͨ
    ΊɺσʔλϕʔεϦϑΝΫλϦϯά͸͜ΜͳΜͩͱड़΂ɺͦ
    ͷຊ(஫:ϦϑΝΫλϦϯά)Ͱ͸ѻ͍ͬͯͳ͍(ংจ)”
    • ͨͩ͠ɺϑΝ΢ϥʔ΋ୈ2൛Ͱ͸ʮσʔλϕʔεͷϦϑΝΫ
    λϦϯά͸໰୊ͷଟ͍෼໺ʯʹʮ΋͸΍౰ͯ͸·Βͳ͍ʯͱ
    ड़΂͍ͯΔ
    • πʔϧͷਐԽɺϓϥΫςΟεͷൃల

    View Slide

  26. ৽૷൛ɹϦϑΝΫλϦϯάɹطଘͷίʔυΛ҆શʹվળ͢Δ P63
    ϦϑΝΫλϦϯά طଘͷίʔυΛ҆શʹվળ͢Δʢୈ2൛ʣ P62

    View Slide

  27. ൃలܕσʔλϕʔε։ൃ
    • ʮࣄલʹઃܭΛ΍Γ͖Ζ͏ͱࢥΘͳ͍ͰɺཁٻͷมԽʹԠͯ͡PJ
    ظؒதʹεΩʔϚΛ࡞Γ্͍͛ͯ͜͏Ͷʂʯͱ͍͏ίϯηϓτ
    • ͍ΘΏΔʮΞδϟΠϧ։ൃʯతͳײ͡ʹDB΋ѻ͏
    • ʮΉͩΛ࠷খʹ͢Δʯʮେ͖ͳख໭ΓΛݮΒͤΔʯʮ։ൃऀͱ૬
    ੑͷΑ͍ਐΊํ͕ग़དྷΔʯͳͲͷར఺͕͋ΔΑ
    => ͜ΕΛ΍Γ͖ΔͨΊͷத৺తͳϓϥΫςΟε͕ϦϑΝΫλʂ

    View Slide

  28. ϦϑΝΫλΛDBʹ΋࣋ͪࠐΉʹ͸ʁ
    • جຊతʹ͸ΞϓϦͷϦϑΝΫλͱಉ
    ͡Α͏ʹʂ
    • ໰୊ͷಛఆˠςετͷ֬ೝˠվमˠ
    ςετʂ
    • ʮ໨తʯͱʮ҆શ૷ஔʯΛ༻ҙͯ͠
    ͍͜͏ʙ

    View Slide

  29. $3

    ຊͷத਎Λνϥݟͯ͠ΈΔ

    View Slide

  30. ࠓ೔͸͜Μͳॴʹ৮ΕͯΈΔΑ
    • σʔλϕʔεͷෆ٢ͳष͍
    • σʔλϕʔεɾϦϑΝΫλϦϯάઓུ
    • σʔλϕʔεͷϦϑΝΫλϦϯάͷ෼ྨ

    View Slide

  31. σʔλϕʔεͷෆ٢ͳष͍
    “σʔλϕʔεʹ΋ɺϦϑΝΫλϦϯάͷඞཁੑΛײͤ͡͞Δෆ٢ͳष͍͕͋Δ”
    㱻 σʔλϕʔε΋ʮ࢖͍΍͍͢ʯʮಡΈ΍͍͢ʯඞཁ͕͋ΔΑʂ
    1. ෳ਺ͷ໨తʹ࢖ΘΕΔΧϥϜ
    2. ෳ਺ͷ໨తʹ࢖ΘΕΔςʔϒϧ
    3. ৑௕ͳσʔλ
    4. ΧϥϜͷଟ͗͢Δςʔϒϧ
    5. ߦͷଟ͗͢Δςʔϒϧ
    6. ʮεϚʔτʯΧϥϜ
    7. มߋͷڪා
    ڽूੑ੹຿
    Մಡੑ
    ύϑΥʔϚϯε
    Өڹൣғґଘ
    ࢀߟ: DataBase Refactoring(soudai sone)

    https://speakerdeck.com/soudai/database-refactoring?slide=19

    View Slide

  32. σʔλϕʔεɾϦϑΝΫλϦϯάઓུ
    • ʮ͋Δ΂͖࢟΁ʯͱʮ҆શʹʯҠߦ͍ͨ͠ɺͱ͍͏ͷΛ
    ͍͔ʹ࣮ͯ͠ݱ͢Δ͔ʁͱ͍͏ͷ͕ϦϑΝΫλϦϯάઓུ
    • ຊॻʹ͓͍ͯ͸ʮڭ܇ʯͱදݱ͞Ε͍ͯΔ

    View Slide

  33. σʔλϕʔεɾϦϑΝΫλϦϯάઓུ
    • খ͍͞มߋͷ΄͏͕ߦ͍΍͍͢
    • ݸʑͷϦϑΝΫλϦϯάΛҰҙʹ
    ࣝผ͢Δ
    • େ͖ͳมߋΛଟ͘ͷখ͞ͳมߋʹ
    ෼͚࣮ͯࢪ͢Δ
    • σʔλϕʔεߏ੒ςʔϒϧΛ࡞੒͢
    Δ
    • Ϗϡʔ΍όονಉظΑΓ΋τϦ
    ΨʔΛ࢖͏
    • े෼ͳҠߦظؒΛઃఆ͢Δ
    • σʔλϕʔεΞΫηεΛΧϓηϧԽ
    ͢Δ
    • SQLΛॏෳͤ͞ͳ͍
    • (શ෦Ͱ13ݸͷڭ܇͕ࡌ͍ͬͯΔΑ)

    View Slide

  34. খ͞ͳมߋ / มߋͷ෼ׂ
    • มߋΛখ͘͢͞Δ͜ͱͰࣦഊϦεΫΛ௿ݮͤ͞Δ
    • ʮςʔϒϧΛ෼ׂ͢Δʯͱ͍ͬͨେ͖ͳมߋ͸ɺʮ৽ͨͳ
    ςʔϒϧͷಋೖʯʮΧϥϜͷҠಈʯʮΠϯσοΫεͷಋೖʯ
    ͷΑ͏ʹࡉ͔͍खॱʹ෼ׂ͠ಘΔ

    View Slide

  35. Ϗϡʔ΍όονಉظΑΓ΋τϦΨʔΛ࢖͏
    • Ҡߦظؒʹ͸ɺ৽چͷσʔλมߋ΍ಉظΛ༻ҙ͢Δඞཁ͕͋
    Δ
    • τϦΨʔʹΑΔಉظɺϏϡʔͷར༻ɺόονߋ৽ͱ͍͏ख๏
    ͕ߟ͑ΒΕΔ
    • τϦΨʔͷϦΞϧλΠϜੑ͕ڧ͍ϝϦοτʹͳΔ
    Ϗϡʔ͸ɺDBʹΑͬͯػೳ͕ࠩ͋ΔͷͰߟྀ͢Δඞཁ͕͋Δ

    View Slide

  36. σʔλϕʔεΞΫηεΛΧϓηϧԽ͢Δ
    • ΞϓϦέʔγϣϯ͔ΒͷDBΞΫηεΛʮந৅Խʯ͢Δ
    • ୺తʹݴ͏ͱʮSQLϕλॻ͖Λ΍ΊΔ(ہॴԽ͢Δ)ʯ
    • ex: Repositoryύλʔϯͷద༻ͳͲɻ
    ʮSELECTจΛॻ͘ʯͷͰ͸ͳ͘ʮfindΠϯλʔϑΣΠεΛ༻ҙ͢
    Δʯͱ͔ɺʮ࣮ςʔϒϧͱϞσϧΛ۠ผ͢Δʯͱ͔ɻ
    • ͦΕʹΑͬͯɺʮDBͷมߋʯʹରͯ͠ʮΞϓϦέʔγϣϯͷม
    ߋʯ΁ͷӨڹΛ෧͡ࠐΊΔ

    View Slide

  37. جຊతͳखॱ(Έ͍ͨͳ΋ͷ)
    • σʔλϕʔεʹґଘ͍ͯ͠ΔαʔϏε(≒ΞϓϦ)͕1ݸ͚ͩ
    ͔ʁෳ਺͔ʁʹΑͬͯ೉қ౓͸มΘΔ
    • ଟ͘ͷґଘऀ͕͍Δ৔߹ɺ͔ͬ͠ΓͱʮҠߦظؒʯΛઃ͚
    Δ͜ͱ͕େࣄʂʂʂ

    View Slide

  38. ϦϑΝΫλ࣌ͷҠߦରԠ
    • ॏཁͳͷ͸ʮޓ׵ੑͷҡ࣋ʯͱʮҠߦظؒͷӡ༻ʯ
    • ൚༻తͳޓ׵ੑҡ࣋ͷͨΊͷख๏
    • ΧϥϜ໊ͷมߋ΍ܭࢉϑΟʔϧυͷ௥Ճʹରͯ͠τϦΨʔͷ࡞੒
    • ςʔϒϧͷมߋʹରͯ͠Ϗϡʔͷ࡞੒
    • ੍໿ɾσϑΥ஋ͷஈ֊తಋೖ
    • Ҡߦظؒͷӡ༻
    • ຊॻͰ͸ʮdeprecatedΛΧϥϜͷίϝϯτʹ࢒͢ʯʮτϦΨʔΛ༻͍ͨޓ׵
    ੑͷҡ࣋ʯͳͲͷख๏Λపఈతʹར༻͍ͯ͠Δ

    View Slide

  39. σʔλϕʔεͷϦϑΝΫλϦϯάͷ෼ྨ
    ʮ໨తɾख๏ʹ͍ͭͯɺDBͷϦϑΝΫλ͸Ͳ͏͍͏΋ͷ͕͋Δ(͋Γ
    ಘΔ)ͷ͔ʁʯͱ͍͏ΨΠυ
    ߏ଄ ςʔϒϧ΍Ϗϡʔͷఆٛͷมߋ
    σʔλ඼࣭ ৘ใͷ඼࣭ΛߴΊΔͨΊͷมߋ
    ࢀর੔߹ੑ ෳ਺ςʔϒϧؒͷ੔߹ੑΛอূ͢ΔͨΊͷมߋ
    ΞʔΩςΫνϟ ΫϥΠΞϯτ͕%#ͱ΍ΓऔΓ͢Δํ๏Λվળ͢ΔͨΊͷมߋ
    ϝιου τϦΨʔɺετΞυɾϓϩγʔδϟͳͲͷมߋ
    ม׵ ηϚϯςΟΫεͷมߋ

    View Slide

  40. ߏ଄ϦϑΝΫλϦϯά(ୈ6ষ)
    • ΧϥϜͷ࡟আ
    • ςʔϒϧͷ࡟আ
    • ΧϥϜͷ౷߹
    • ςʔϒϧͷ౷߹
    • ΧϥϜ໊ͷมߋ
    • ςʔϒϧ໊ͷมߋ
    • ςʔϒϧͷ෼ׂ
    • ΧϥϜͷ෼ׂ
    • ࣗવΩʔ / ୅ཧΩʔͷಋೖ
    • ؔ࿈ςʔϒϧʹΑΔ1ରଟ
    ؔ܎ͷஔ͖׵͑
    • શ෦Ͱ17ݸ

    View Slide

  41. σʔλ඼࣭ϦϑΝΫλϦϯά(ୈ7ষ)
    • ࢀর༻ςʔϒϧͷ௥Ճ
    • ඪ४తͳίʔυͷద༻
    • ඪ४తͳܕͷద༻
    • Ωʔઓུͷ੔ཧ
    • ΧϥϜ੍໿ͷ࡟আ
    • σϑΥϧτ஋ͷ࡟আ
    • ψϧෆՄ੍໿ͷ࡟আ
    • σʔλͷҠಈ
    • શ෦Ͱ13ݸ

    View Slide

  42. ࢀর੔߹ੑϦϑΝΫλϦϯά
    • ֎෦Ωʔ੍໿ͷ௥Ճ
    • ܭࢉΧϥϜ΁ͷτϦΨʔͷ
    ௥Ճ
    • ֎෦Ωʔ੍໿ͷ࡟আ
    • Χεέʔυ࡟আͷಋೖ
    • ϋʔυσϦʔτಋೖ
    • ιϑτσϦʔτͷಋೖ
    • ཤྺͷͨΊͷτϦΨʔͷಋ

    View Slide

  43. ΞʔΩςΫνϟɾϦϑΝΫλϦϯά(ୈ9ষ)
    • CRUDϝιουͷ௥Ճ
    • ϛϥʔϦϯάςʔϒϧͷ௥
    Ճ
    • Ϧʔυϝιουͷ௥Ճ
    • ϏϡʔʹΑΔςʔϒϧͷΧ
    ϓηϧԽ
    • ܭࢉϝιουͷಋೖ
    • ΠϯσοΫεͷಋೖ
    • ಡΈࠐΈઐ༻ςʔϒϧͷಋ

    • ਖ਼ࣜͳσʔλιʔεͷ࢖༻
    • શ෦Ͱ12ݸ

    View Slide

  44. ϝιουɾϦϑΝΫλϦϯά(ୈ10ষ)
    • ※ࠓճ͸ׂѪ

    View Slide

  45. ม׵(ୈ11ষ)
    • σʔλͷૠೖ
    • ৽ͨͳΧϥϜͷಋೖ
    • ৽ͨͳςʔϒϧͷಋೖ
    • Ϗϡʔͷಋೖ
    • σʔλͷߋ৽

    View Slide

  46. $X

    ·ͱΊͱΦϚέ

    View Slide

  47. ·ͱΊ
    • ʮΞϓϦέʔγϣϯίʔυΛॻ͖׵͑ΔΑ͏ͳײ֮ͰɺDB΋࿔Ε
    Δʯͱͨ͠ΒɾɾɾҰମͲΜͳੈքͳΜͩʂʁ
    • ͨͩɺʮ௅·ͳ͚Ε͹ಘΒΕͳ͍ʯͱ͍͏ݴ༿͕͋Γ·͢Ͷʂ
    • ʮςετʹΑΔอূʯʮࣄނʹඋ͑Δʯʮܧଓతʹ౷߹ɾվળͯ͠
    ͍͘ʯͱ͍͏جຊ͸Ͳ͜Ͱ΋ಉ͡ʙ
    • ·ͣ͸ɺSQLΞϯνύλʔϯ΍σʔλϕʔεɾϦϑΝΫλϦϯάΛಡ
    Ήʮෆ٢ͳष͍ʯΛײ͡औΓ΍͘͢ͳΔͱ͜Ζ͔Β࢝Ίͯɺະདྷʹ
    ͍ۙͮͯ͜ʂ

    View Slide

  48. ͋ΘͤͯಡΉͱ໘നͦ͏ͳຊ
    ࠓճͷຊʂ
    ΑΓʮ࿦ཧʯํ໘ͷ

    SQL(RDB)ͳຊ
    ʮϦϑΝΫλͱ͸Կ͔ʯͷຊ
    ʮϦϑΝΫλͷେࣄ͞ʯ

    Έ͍ͨͳͷ͸ίϨ

    View Slide

  49. ΋ͬͱࢹ໺Λ޿͛Δɾ౿ΈࠐΉ
    ୯ମςετ͕೉͔ͬͨ͠Β

    ʮେ͖ͳϧʔϓʯͷςετͪ͠Ό͏ͱ͔
    Ͳ͏΍ͬͯ

    ʮม͍͑ͯ͘ʯͱ͔

    ʮյΕʹ͘͘࡞Δʯ͔ʁͱ͍ͬͨ
    σʔλϕʔεΛ

    ʮ҆શʯʹ΍͍ͬͯ͘ʂ

    View Slide