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

設計をする上で役にたった制約について

 設計をする上で役にたった制約について

@ikkitang (https://twitter.com/ikkitang) です。

第20回中国地方DB勉強会 in 岡山 での登壇スライドです。

設計をする上で役立った制約についてまとめました。
1. 制約とは?
2. 制約ってどんなのがあるの?
3. 制約のメリット
について考えました。

#中国地方DB勉強会
#PostgreSQL #MySQL #SQLServer
#制約 #Constraint
#CHECK #NOTNULL #PRIMARY_KEY #外部キー制約
#FOREIGN #EXCLUDE

Takahashi Ikki

April 08, 2017
Tweet

More Decks by Takahashi Ikki

Other Decks in Technology

Transcript

  1. 3%#ʹ͓͚Δ੍໿ͷର৅ ੍໿͸ ςʔϒϧ 5BCMF ·ͨ͸ྻ $PMVNO ୯ҐͰ෇͚Δɻ  $3&"5&5"#-&DVTUPNFST 

    JEJOUFHFS  OBNFWBSDIBS  /05/6--  HFOEFSJOUFHFS$)&$, HFOEFS*/     13*."3:,&: JE  
  2. 3%#ʹ͓͚Δ੍໿ͷର৅ ੍໿͸ ςʔϒϧ 5BCMF ·ͨ͸ྻ $PMVNO ୯ҐͰ෇͚Δɻ  $3&"5&5"#-&DVTUPNFST 

    JEJOUFHFS  OBNFWBSDIBS  /05/6--  HFOEFSJOUFHFS$)&$, HFOEFS*/     13*."3:,&: JE  
  3. ੍໿ҧ൓࣌ͷΤϥʔྫ 1PTUHSF42- DVTUPNFST  JE 13*."3: OBNF /05/6-- HFOEFS $)&$,HFOEFS*/

       ߴڮɹ1045   ߴڮɹ(3&   ߴڮɹ42-  */4&35*/50DVTUPNFST JE OBNF HFOEFS 7"-6&4  bߴڮɹ.Z42-`  
  4. ੍໿ҧ൓࣌ͷΤϥʔྫ 1PTUHSF42- DVTUPNFST  JE 13*."3: OBNF /05/6-- HFOEFS $)&$,HFOEFS*/

       ߴڮɹ1045   ߴڮɹ(3&   ߴڮɹ42-  */4&35*/50DVTUPNFST JE OBNF HFOEFS 7"-6&4  bߴڮɹ.Z42-`   &3303EVQMJDBUFLFZWBMVFWJPMBUFTVOJRVFDPOTUSBJOUDVTUPNFST@QLFZ %&5"*-,FZ JE   BMSFBEZFYJTUT
  5. ੍໿ҧ൓࣌ͷΤϥʔྫ 1PTUHSF42- DVTUPNFST  JE 13*."3: OBNF /05/6-- HFOEFS $)&$,HFOEFS*/

       ߴڮɹ1045   ߴڮɹ(3&   ߴڮɹ42-  JOTFSUJOUPDVTUPNFST JE OBNF HFOEFS WBMVFT  /6--  
  6. ੍໿ҧ൓࣌ͷΤϥʔྫ 1PTUHSF42- DVTUPNFST  JE 13*."3: OBNF /05/6-- HFOEFS $)&$,HFOEFS*/

       ߴڮɹ1045   ߴڮɹ(3&   ߴڮɹ42-  JOTFSUJOUPDVTUPNFST JE OBNF HFOEFS WBMVFT  /6--   &3303OVMMWBMVFJODPMVNOOBNFWJPMBUFTOPUOVMMDPOTUSBJOU %&5"*-'BJMJOHSPXDPOUBJOT  OVMM  
  7. $)&$,੍໿  ର৅ ྻ΋͘͠͸ςʔϒϧʹରͯ͠ఆٛ ॻࣜ ྻ੍໿ɿ<DPMVNO><ܕ>$)&$, ৚݅  ςʔϒϧ੍໿ɿ$)&$, ৚݅

    ྫ HFOEFSJOUFHFS$)&$, HFOEFS*/   ಺༰ ৚݅Λຬͨ͢σʔλͷΈࢦఆྻʹొ࿥ग़དྷΔΑ͏ʹ͢Δɻ αϙʔτ .Z42- 1PTUHSF42- 42-4FSWFS
  8. 6/*26&੍໿  ର৅ ྻ΋͘͠͸ςʔϒϧʹରͯ͠ఆٛ ॻࣜ ྻ੍໿ɿ<DPMVNO><ܕ>6/*26& ςʔϒϧ੍໿ɿ6/*26& 6/*26&ʹͳΔྻ ྫ JEJOUFHFS6/*26&

    ಺༰ ࢦఆྻʹରͯ͠ಉ͡஋Λ࣋ͭߦ͕ ߦΑΓଟ͍৔߹͸ొ࿥ग़དྷͳ͍Α͏ʹ͢Δɻ αϙʔτ .Z42- 1PTUHSF42- 42-4FSWFS
  9. 13*."3:,&:੍໿  ର৅ ςʔϒϧʹରͯ͠ఆٛ ॻࣜ ςʔϒϧ੍໿ɿ13*."3:,&: ҰҙੑΛอূ͢Δྻ ྫ 13*."3:,&: JE

    ಺༰ ࢦఆྻ·ͨ͸ࢦఆྻͷάϧʔϓΛςʔϒϧ಺ͷҰߦΛಛఆ͢ΔͨΊͷ ஋ͱͯ͠࢖༻ग़དྷΔࣄΛอূ͢Δɻ /05/6-- 6/*26&੍໿ αϙʔτ .Z42- 1PTUHSF42- 42-4FSWFS
  10. ֎෦Ωʔ੍໿  ର৅ ྻɺςʔϒϧʹରͯ͠ఆٛ ॻࣜ ྻ੍໿ɿ<DPMVNO><ܕ>3&'&3&/$&4ࢀরςʔϒϧ ࢀরςʔϒϧͷྻ  ςʔϒϧ੍໿ɿ'03&*(/,&: ର৅ྻ

    3&'&3&/$&4ࢀরςʔϒϧ ࢀরςʔϒϧͷྻ ྫ TVCKFDU@HSPVQ@JE3&'&3&/$&4TVCKFDU@HSPVQT JE  ΋͘͠͸ɺ'03&*(/,&: TVCKFDU@HSPVQ@JE 3&'&3&/$&4TVCKFDUT@HSPVQT JE  ಺༰ ࢦఆྻ·ͨ͸ࢦఆྻͷάϧʔϓΛଞͷςʔϒϧͷࢦఆྻ·ͨ͸ άϧʔϓͷ஋ͱҰக͠ͳ͍ͱొ࿥Ͱ͖ͳ͍Α͏ʹ͢Δ੍໿ɻ αϙʔτ .Z42- 1PTUHSF42- 42-4FSWFS
  11. ֎෦Ωʔ੍໿ͷ஫ҙࣄ߲ d0/61%"5& 0/%&-&5&Φϓγϣϯd  /0"$5*0/ ඃࢀরྻͷߋ৽࡟আΛߦͬͨ৔߹ɺΤϥʔͱ͢Δɻ %FGBVMU͸͜Ε 3&453*$5 A/0"$5*0/Aͱಉ͡ಈ࡞Λ͢Δɻ.Z42-ͱ42-4FSWFSͰ͸ಉ͡ҙຯɻ 1PTUHSF42-Ͱͷେ͖ͳҧ͍͸஗ԆධՁ͕ग़དྷͳ͍͜ͱɻ

    τϥϯβΫγϣϯ಺ͰએݴΛ௥Ճ͢Δͱɺ$PNNJU࣌ʹධՁग़དྷΔΑ͏ʹͳΔɻ $"4$"%& ߋ৽ɿඃࢀরྻͷߋ৽ʹ߹Θͤͯɺࢀরྻ΋ߋ৽͢Δɻ ࡟আɿඃࢀরྻ͕࡟আ͞ΕΔͱɺࢀরྻ΋࡟আ͢Δɻ 4&5/6-- ඃࢀরྻ͕ߋ৽࡟আ͞Εͨ࣌ɺࢀরྻΛ/6--ʹ͢Δɻ 4&5%&'"6-5 ඃࢀরྻ͕ߋ৽࡟আ͞Εͨ࣌ɺࢀরྻΛ%FGBVMU஋ʹ͢Δɻ
  12. ഉଞ੍໿  1PTUHSF42-ϚχϡΞϧΑΓ IUUQTXXXQPTUHSFTRMKQEPDVNFOUIUNMEEMDPOTUSBJOUTIUNM  $3&"5&5"#-&DJSDMFT  DDJSDMF  &9$-6%&64*/(HJTU

    D8*5)   DͬͯΧϥϜͷશͯͷ஋ʹରͯ͠ ͬͯԋࢉࢠͰൺֱͨ࣌͠ɺ શͯGBMTF͔OVMM͕ฦΒͳ͍ͱ͍͚ͳ͍ɻ ·ͨɺൺֱ͸ߴ଎Խͷҝʹ HJTUJOEFYͰߦ͏ɾɾతͳҙຯ
  13. ഉଞ੍໿  HJTUJOEFYΛݕࡧͷҝͷߴ଎ͳΠϯσοΫεͩͱ͢Δͱ $3&"5&5"#-&DVTUPNFST  JEJOUFHFS/05/6--  &9$-6%&64*/(HJTU JE8*5) 

     JEྻʹରͯ͠ԋࢉࢠAAͰൺֱͨ࣌͠ɺ Ͳͷ஋΋GBMTF͔OVMMΛฦ͢ ٖࣅతʹҰҙ੍໿Λ࡞Δࣄ͕ग़དྷΔɻ
  14. ୈೋষ·ͱΊ  $)&$,੍໿ ධՁࣜΛຬͨ͞ͳ͍஋Λొ࿥͢ΔࣄΛ੍ݶ͢Δɻ /05/6--੍໿ OVMM஋Λొ࿥͢ΔࣄΛ੍ݶ͢Δɻ 6/*26&੍໿ ॏෳͨ͠σʔλΛొ࿥͢ΔࣄΛ੍ݶ͢Δɻ 13*."3:,&:੍໿ /05/6--

    6/*26&੍໿ ςʔϒϧʹ࠷େͰҰͭઃఆ͢Δࣄ͕ग़དྷΔɻ ֎෦Ωʔ੍໿ ؔ࿈෇͚͕ग़དྷͳ͍ߦΛొ࿥͢ΔࣄΛ੍ݶ͢Δɻ ഉଞ੍໿ ࢦఆͷԋࢉࢠͰൺֱͨ࣌͠ɺಉ஋ͱຬͨ͢ࣄ͕ग़དྷΔ஋Λ ొ࿥͢ΔࣄΛ੍ݶ͢Δɻ
  15. ੍໿Λ࢖͏ϝϦοτ DVTUPNFST  JE OBNF HFOEFS  ߴڮɹ1045  

    ߴڮɹ(3&   ߴڮɹ42-  ɾҎ֎ͷ࣌Ͳ͏͢Δʁ /6--ͷ࣌Ͳ͏͢Δʁ /6--ͷ࣌Ͳ͏͢Δʁ ॏෳͨ࣌͠Ͳ͏͢Δʁ ϨίʔυͷҰҙੑ͸Ͳ͏΍ͬͯอূ͢Δʁ
  16. ੍໿Λ࢖͏ϝϦοτ DVTUPNFST  JE 13*."3: OBNF /05/6-- HFOEFS $)&$,HFOEFS*/ 

      ߴڮɹ1045   ߴڮɹ(3&   ߴڮɹ42-  /6--ͷ࣌Ͳ͏͢Δʁ ॏෳͨ࣌͠Ͳ͏͢Δʁ /6--ͷ࣌Ͳ͏͢Δʁ /05/6-- /05/6-- ɾҎ֎ͷ࣌Ͳ͏͢Δʁ ϨίʔυͷҰҙੑ͸Ͳ͏΍ͬͯอো͢Δʁ 13*."3: 6/*26& $)&$,
  17. ੍໿Λ࢖͏ϝϦοτ DVTUPNFST  JE 13*."3: OBNF /05/6-- HFOEFS $)&$,HFOEFS*/ 

      ߴڮɹ1045   ߴڮɹ(3&   ߴڮɹ42-  /6--ͷ࣌Ͳ͏͢Δʁ ॏෳͨ࣌͠Ͳ͏͢Δʁ /6--ͷ࣌Ͳ͏͢Δʁ ϨίʔυͷҰҙੑ͸Ͳ͏΍ͬͯอো͢Δʁ ɾҎ֎ͷ࣌Ͳ͏͢Δʁ