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

Pokedex - Database Normalization

Pokedex - Database Normalization

Explains basics of database normalization process

Mateusz Wozniczka

December 23, 2022
Tweet

More Decks by Mateusz Wozniczka

Other Decks in Programming

Transcript

  1. View Slide

  2. https://www.pngwing.com/en/free-png-yrzeu
    THE PROTAGONIST

    View Slide

  3. THE PROTAGONIST
    https://i0.wp.com/sourcegaming.info/wp-content/uploads/
    2019/02/Pok%C3%A9mon-Red-Title-Screen.png?ssl=1

    View Slide

  4. THE PRODUCT OWNER

    View Slide

  5. THE PRODUCT OWNER
    www.reddit.com%2Fr%2FPrequelMemes%2Fcomments%2F95xlr6%2Fprof_oak_w
    as_prequel_meming_from_the_start%2F&psig=AOvVaw2fgcyXA9F0ZACYt_DRGF9-
    &ust=1667994961610000&source=images&cd=vfe&ved=0CA0QjRxqFwoTCPjQ78_D
    nvsCFQAAAAAdAAAAABAI

    View Slide

  6. THE GOAL

    View Slide

  7. THE GOAL
    https://res.cloudinary.com/practicaldev/image/fetch/
    s--nLj6mJg7--/
    c_limit%2Cf_auto%2C
    fl
    _progressive%2Cq_auto%2C
    w_880/https://dev-to-uploads.s3.amazonaws.com/i/
    14najv2lahpooiy0eiev.png

    View Slide

  8. View Slide

  9. POKéDEX
    Database Normalisation in Practice
    Mateusz ciejj Wozniczka

    8.12.22 @ VISUALITY

    View Slide

  10. DOMAIN EXPERT :)

    View Slide

  11. DOMAIN EXPERT :)

    View Slide

  12. 1st ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE

    View Slide

  13. 1st ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember

    View Slide

  14. FIRST FIGHT

    View Slide

  15. FIRST FIGHT
    http://www.elder-geek.com/reviews/Classic/_images/hqdefault.jpg

    View Slide

  16. 2nd ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember

    View Slide

  17. 2nd ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble

    View Slide

  18. 3rd ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble

    View Slide

  19. 3rd ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip

    View Slide

  20. 4th ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip

    View Slide

  21. 4th ENTRY
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip
    Charmeleon
    att: 62,
    def: 58
    Fire Grass Water Ember

    View Slide

  22. View Slide

  23. NEW BUSINESS REQUIREMENT!!!
    Pokémons can evolve
    https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  24. NEW BUSINESS REQUIREMENT
    NAME
    Charmander
    Squirtle
    Bulbasaur
    Charmeleon
    STATS
    attack: 52,
    defense: 43
    attack: 44,
    defense: 48
    attack: 49,
    defense: 49
    att: 62, def:
    58
    TYPE
    Fire
    Water
    Grass
    Fire
    STRONG


    VS
    Grass
    Fire
    Water
    Grass
    WEAK
    VS
    Water
    Grass
    Fire
    Water
    MOVE
    Ember
    Bubble
    Whip
    Ember
    Pokémons can evolve

    View Slide

  25. NEW BUSINESS REQUIREMENT
    NAME
    Charmander
    Squirtle
    Bulbasaur
    Charmeleon
    STATS
    attack: 52,
    defense: 43
    attack: 44,
    defense: 48
    attack: 49,
    defense: 49
    att: 62, def:
    58
    TYPE
    Fire
    Water
    Grass
    Fire
    STRONG


    VS
    Grass
    Fire
    Water
    Grass
    WEAK
    VS
    Water
    Grass
    Fire
    Water
    MOVE
    Ember
    Bubble
    Whip
    Ember
    NEXT
    FORM
    Charmeleon
    Wartortle
    Ivysaur
    Charizard
    Pokémons can evolve

    View Slide

  26. NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip Ivysaur
    Charmeleon
    att: 62, def:
    58
    Fire Grass Water Ember Charizard
    NEXT ENTRY

    View Slide

  27. NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip Ivysaur
    Charmeleon
    att: 62, def:
    58
    Fire Grass Water Ember Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire Bite
    NEXT ENTRY

    View Slide

  28. https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  29. NEW BUSINESS REQUIREMENT!!!
    Pokémons can have multiple moves
    https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  30. NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip Ivysaur
    Charmeleon att: 62, def: 58 Fire Grass Water Ember Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire Bite
    NEW BUSINESS REQUIREMENT
    Pokémons can have multiple moves

    View Slide

  31. NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water Ember Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass Bubble Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire Whip Ivysaur
    Charmeleon att: 62, def: 58 Fire Grass Water Ember Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire Bite
    NEW BUSINESS REQUIREMENT
    Pokémons can have multiple moves

    View Slide

  32. NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon att: 62, def: 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire
    Bite
    Tackle


    Gust
    NEW BUSINESS REQUIREMENT
    Pokémons can have multiple moves

    View Slide

  33. NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon att: 62, def: 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire
    Bite
    Tackle


    Gust
    NEW BUSINESS REQUIREMENT
    Pokémons can have multiple moves

    View Slide

  34. PROBLEM 1
    Stats are not uniform
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon att: 62, def: 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire
    Bite
    Tackle


    Gust

    View Slide

  35. PROBLEMS

    View Slide

  36. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES

    View Slide

  37. PROBLEM 1
    Stats are not uniform
    NAME STATS TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander
    attack: 52,
    defense: 43
    Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle
    attack: 44,
    defense: 48
    Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur
    attack: 49,
    defense: 49
    Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon att: 62, def: 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree
    Att: 45,


    DEF: 50
    Bug Grass Fire
    Bite
    Tackle


    Gust

    View Slide

  38. PROBLEM 1 - FIXED
    Stats are uniform
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust

    View Slide

  39. PROBLEM 1 - FIXED
    Stats are uniform
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust

    View Slide

  40. PROBLEM 2
    Editing is not easy
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust

    View Slide

  41. NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    PROBLEM 2
    Editing is not easy

    View Slide

  42. NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Bug Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    PROBLEM 2
    Editing is not easy

    View Slide

  43. NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Bug Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    PROBLEM 2
    Editing is not easy

    View Slide

  44. NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    PROBLEM 2
    Editing is not easy

    View Slide

  45. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES

    View Slide

  46. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES

    View Slide

  47. NEW ENTRY
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust

    View Slide

  48. NEW ENTRY
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    Rock 0 100 Rock Fire Grass

    View Slide

  49. PROBLEM 3
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    Rock 0 100 Rock Fire Grass
    Empty cells

    View Slide

  50. PROBLEM 3
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    Rock 0 100 Rock Fire Grass
    Empty cells

    View Slide

  51. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES

    View Slide

  52. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    3. EMPTY CELLS

    View Slide

  53. PROBLEM 4
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    Rock 0 100 Rock Fire Grass
    Deleting can be problematic

    View Slide

  54. PROBLEM 4
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    Rock 0 100 Rock Fire Grass
    Deleting can be problematic

    View Slide

  55. PROBLEM 5
    NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    Rock Fire Grass
    Can’t keep info about type only

    View Slide

  56. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    3. A LOT OF EMPTY CELLS

    View Slide

  57. PROBLEMS
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS

    View Slide

  58. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS

    View Slide

  59. https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  60. NEW BUSINESS REQUIREMENT!!!
    Pokemons have ids
    https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  61. NEW BUSINESS REQUIREMENT!!!
    Pokemons have ids
    https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  62. NEXT
    FORM
    Charmeleon
    Wartortle
    Ivysaur
    Charizard
    MOVES
    Ember


    Inferno
    Bubble


    Waterjet
    Whip


    Leech Seed
    Ember


    Inferno
    Bite


    Tuckle


    Gust
    WEAK
    VS
    Water
    Grass
    Fire
    Water
    Fire
    Grass
    STRONG


    VS
    Grass
    Fire
    Water
    Grass
    Grass
    Fire
    TYPE
    Fire
    Water
    Grass
    Fire
    Bug
    Rock
    DEFENSE
    43
    48
    49
    58
    50
    100
    ATTACK
    52
    44
    49
    62
    45
    0
    NAME
    Charmander
    Squirtle
    Bulbasaur
    Charmeleon
    Butterfree
    Rock
    NEW BUSINESS REQUIREMENT!!!
    Pokemons have ids

    View Slide

  63. NEXT
    FORM
    Charmeleon
    Wartortle
    Ivysaur
    Charizard
    MOVES
    Ember


    Inferno
    Bubble


    Waterjet
    Whip


    Leech Seed
    Ember


    Inferno
    Bite


    Tuckle


    Gust
    WEAK
    VS
    Water
    Grass
    Fire
    Water
    Fire
    Grass
    STRONG


    VS
    Grass
    Fire
    Water
    Grass
    Grass
    Fire
    TYPE
    Fire
    Water
    Grass
    Fire
    Bug
    Rock
    DEFENSE
    43
    48
    49
    58
    50
    100
    ATTACK
    52
    44
    49
    62
    45
    0
    NAME
    Charmander
    Squirtle
    Bulbasaur
    Charmeleon
    Butterfree
    Rock
    ID
    1
    2
    3
    4
    5
    6
    NEW BUSINESS REQUIREMENT!!!
    Pokemons have ids

    View Slide

  64. ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT
    FORM
    1 Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    2 Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    3 Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    4 Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    5 Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    6 Rock 0 100 Rock Fire Grass
    IMPROVEMENT IDEA
    Use ID instead of NAME

    View Slide

  65. ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    Charmeleon
    2 Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    Wartortle
    3 Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    Ivysaur
    4 Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    Charizard
    5 Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    6 Rock 0 100 Rock Fire Grass
    IMPROVEMENT IDEA
    Use ID instead of NAME

    View Slide

  66. ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    4
    2 Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    7
    3 Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    10
    4 Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    12
    5 Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    6 Rock 0 100 Rock Fire Grass
    IMPROVEMENT IDEA
    Use ID instead of NAME

    View Slide

  67. ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    4
    2 Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    7
    3 Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    10
    4 Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    12
    5 Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    6 Rock 0 100 Rock Fire Grass
    IMPROVEMENT IDEA
    Use ID instead of NAME

    View Slide

  68. https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  69. NEW BUSINESS REQUIREMENT!!!
    Moves also have types
    https://bulbapedia.bulbagarden.net/wiki/
    File:PkmnProfWantsToFight.png

    View Slide

  70. NEW BUSINESS REQUIREMENT
    Moves also have types
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    4
    2 Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    7
    3 Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    10
    4 Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    12
    5 Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    6 Rock 0 100 Rock Fire Grass

    View Slide

  71. View Slide

  72. WHAT?
    TABLE IS EVOLVING!!!

    View Slide

  73. TABLE EVOLUTION
    EVOLUTIONARY STAGE 1
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVES
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water
    Ember


    Inferno
    4
    2 Squirtle 44 48 Water Fire Grass
    Bubble


    Waterjet
    7
    3 Bulbasaur 49 49 Grass Water Fire
    Whip


    Leech Seed
    10
    4 Charmeleon 62 58 Fire Grass Water
    Ember


    Inferno
    12
    5 Butterfree 45 50 Bug Grass Fire
    Bite


    Tuckle


    Gust
    6 Rock 0 100 Rock Fire Grass

    View Slide

  74. TABLE EVOLUTION
    EVOLUTIONARY STAGE 1
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember 4
    1 Charmander 52 43 Fire Grass Water Inferno 4
    2 Squirtle 44 48 Water Fire Grass Bubble 7
    2 Squirtle 44 48 Water Fire Grass Waterjet 7
    3 Bulbasaur 49 49 Grass Water Fire Whip 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed 10
    4 Charmeleon 62 58 Fire Grass Water Ember 12
    4 Charmeleon 62 58 Fire Grass Water Inferno 12
    5 Butterfree 45 50 Bug Grass Fire Bite
    5 Butterfree 45 50 Bug Grass Fire Tuckle
    5 Butterfree 45 50 Bug Grass Fire Gust
    6 Rock 0 100 Rock Fire Grass

    View Slide

  75. TABLE EVOLUTION
    EVOLUTIONARY STAGE 1
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember 4
    1 Charmander 52 43 Fire Grass Water Inferno 4
    2 Squirtle 44 48 Water Fire Grass Bubble 7
    2 Squirtle 44 48 Water Fire Grass Waterjet 7
    3 Bulbasaur 49 49 Grass Water Fire Whip 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed 10
    4 Charmeleon 62 58 Fire Grass Water Ember 12
    4 Charmeleon 62 58 Fire Grass Water Inferno 12
    5 Butterfree 45 50 Bug Grass Fire Bite
    5 Butterfree 45 50 Bug Grass Fire Tuckle
    5 Butterfree 45 50 Bug Grass Fire Gust
    6 Rock 0 100 Rock Fire Grass

    View Slide

  76. TABLE EVOLUTION
    EVOLUTIONARY STAGE 1
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember 4
    1 Charmander 52 43 Fire Grass Water Inferno 4
    2 Squirtle 44 48 Water Fire Grass Bubble 7
    2 Squirtle 44 48 Water Fire Grass Waterjet 7
    3 Bulbasaur 49 49 Grass Water Fire Whip 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed 10
    4 Charmeleon 62 58 Fire Grass Water Ember 12
    4 Charmeleon 62 58 Fire Grass Water Inferno 12
    5 Butterfree 45 50 Bug Grass Fire Bite
    5 Butterfree 45 50 Bug Grass Fire Tuckle
    5 Butterfree 45 50 Bug Grass Fire Gust
    6 Rock 0 100 Rock Fire Grass

    View Slide

  77. TABLE EVOLUTION
    EVOLUTIONARY STAGE 1
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  78. TABLE EVOLUTION
    EVOLUTIONARY STAGE 1
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  79. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS

    View Slide

  80. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS

    View Slide

  81. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  82. View Slide

  83. WHAT?
    TABLE IS EVOLVING!!!

    View Slide

  84. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  85. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  86. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    MOVE
    MOVE
    TYPE
    Ember Fire
    Inferno Fire
    Bubble Water
    Waterjet Water
    Whip Normal
    Leech Seed Grass
    Ember Fire
    Inferno Fire
    Bite Normal
    Tuckle Normal
    Gust Normal

    View Slide

  87. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    MOVE
    MOVE
    TYPE
    Ember Fire
    Inferno Fire
    Bubble Water
    Waterjet Water
    Whip Normal
    Leech Seed Grass
    Ember Fire
    Inferno Fire
    Bite Normal
    Tuckle Normal
    Gust Normal

    View Slide

  88. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    MOVE
    MOVE
    TYPE
    Ember Fire
    Inferno Fire
    Bubble Water
    Waterjet Water
    Whip Normal
    Leech Seed Grass
    Bite Normal
    Tuckle Normal
    Gust Normal

    View Slide

  89. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    MOVES
    ID NAME TYPE
    1 Ember Fire
    2 Inferno Fire
    3 Bubble Water
    4 Waterjet Water
    5 Whip Normal
    6 Leech Seed Grass
    7 Bite Normal
    8 Tuckle Normal
    9 Gust Normal

    View Slide

  90. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  91. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  92. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  93. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass

    View Slide

  94. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    MOVE
    MOVE
    TYPE
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water Ember Fire 4
    1 Charmander 52 43 Fire Grass Water Inferno Fire 4
    2 Squirtle 44 48 Water Fire Grass Bubble Water 7
    2 Squirtle 44 48 Water Fire Grass Waterjet Water 7
    3 Bulbasaur 49 49 Grass Water Fire Whip Normal 10
    3 Bulbasaur 49 49 Grass Water Fire Leech Seed Grass 10
    4 Charmeleon 62 58 Fire Grass Water Ember Fire 12
    4 Charmeleon 62 58 Fire Grass Water Inferno Fire 12
    5 Butterfree 45 50 Bug Grass Fire Bite Normal
    5 Butterfree 45 50 Bug Grass Fire Tuckle Normal
    5 Butterfree 45 50 Bug Grass Fire Gust Normal
    6 Rock 0 100 Rock Fire Grass

    View Slide

  95. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID MOVE
    1 Ember
    1 Inferno
    2 Bubble
    2 Waterjet
    3 Whip
    3 Leech Seed
    4 Ember
    4 Inferno
    5 Bite
    5 Tuckle
    5 Gust
    6

    View Slide

  96. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    ID MOVE
    1 Ember
    1 Inferno
    2 Bubble
    2 Waterjet
    3 Whip
    3 Leech Seed
    4 Ember
    4 Inferno
    5 Bite
    5 Tuckle
    5 Gust
    6

    View Slide

  97. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6

    View Slide

  98. TABLE EVOLUTION
    EVOLUTIONARY STAGE 2
    POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6

    View Slide

  99. View Slide

  100. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass
    MOVES
    ID NAME TYPE
    1 Ember Fire
    2 Inferno Fire
    3 Bubble Water
    4 Waterjet Water
    5 Whip Normal
    6 Leech Seed Grass
    7 Bite Normal
    8 Tuckle Normal
    9 Gust Normal

    View Slide

  101. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  102. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  103. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  104. View Slide

  105. WHAT?
    TABLE IS EVOLVING!!!

    View Slide

  106. POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  107. POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  108. POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  109. POKEMONS
    TYPE
    STRONG


    VS
    WEAK
    VS
    Fire Grass Water
    Water Fire Grass
    Grass Water Fire
    Fire Grass Water
    Bug Grass Fire
    Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  110. TYPE
    STRONG


    VS
    WEAK
    VS
    Fire Grass Water
    Water Fire Grass
    Grass Water Fire
    Bug Grass Fire
    Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  111. TABLE EVOLUTION
    EVOLUTIONARY STAGE 3
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  112. POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  113. POKEMONS
    ID NAME ATTACK DEFENSE TYPE
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 Fire Grass Water 4
    2 Squirtle 44 48 Water Fire Grass 7
    3 Bulbasaur 49 49 Grass Water Fire 10
    4 Charmeleon 62 58 Fire Grass Water 12
    5 Butterfree 45 50 Bug Grass Fire
    6 Rock 0 100 Rock Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  114. POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    STRONG


    VS
    WEAK
    VS
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 Grass Water 4
    2 Squirtle 44 48 2 Fire Grass 7
    3 Bulbasaur 49 49 3 Water Fire 10
    4 Charmeleon 62 58 1 Grass Water 12
    5 Butterfree 45 50 4 Grass Fire
    6 Rock 0 100 5 Fire Grass
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  115. POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TABLE EVOLUTION
    EVOLUTIONARY STAGE 3

    View Slide

  116. View Slide

  117. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  118. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  119. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  120. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  121. PROBLEMS
    5. CAN’T STORE DATA ABOUT THE TYPES ONLY
    1. NON-ATOMIC VALUES CAN LEAD TO
    INCONSISTENCIES
    2. SOME VALUES HAVE TO BE EDITED IN
    MULTIPLE PLACES
    4. ROWS DELETION CAN LEAD TO UNWANTED
    DATA LOSS
    3. A LOT OF EMPTY CELLS
    6. A LOT OF DUPLICATE DATA

    View Slide

  122. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  123. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  124. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  125. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  126. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  127. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  128. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  129. POKEMON MOVES
    POKEMON ID MOVE ID
    1 1
    1 2
    2 3
    2 4
    3 5
    3 6
    4 1
    4 2
    5 7
    5 8
    5 9
    6
    MOVES
    ID NAME
    TYPE
    ID
    1 Ember 1
    2 Inferno 1
    3 Bubble 2
    4 Waterjet 2
    5 Whip 6
    6 Leech Seed 3
    7 Bite 6
    8 Tuckle 6
    9 Gust 6
    POKEMONS
    ID NAME ATTACK DEFENSE
    TYPE


    ID
    NEXT


    FORM


    ID
    1 Charmander 52 43 1 4
    2 Squirtle 44 48 2 7
    3 Bulbasaur 49 49 3 10
    4 Charmeleon 62 58 1 12
    5 Butterfree 45 50 4
    6 Rock 0 100 5
    TYPES
    ID NAME
    STRONG


    VS
    WEAK
    VS
    1 Fire 3 2
    2 Water 1 2
    3 Grass 2 1
    4 Bug 3 1
    5 Rock 1 3

    View Slide

  130. PROBLEMS

    View Slide

  131. PROBLEMS
    1. READING IS COMPLEX

    View Slide

  132. SUMMARY


    View Slide

  133. SUMMARY


    PROBLEMS -> ANOMALIES

    View Slide

  134. SUMMARY


    EVOLUTION TIERS -> NORMAL FORMS
    PROBLEMS -> ANOMALIES

    View Slide

  135. SUMMARY


    EVOLUTION TIERS -> NORMAL FORMS
    PROBLEMS -> ANOMALIES
    HIGHER FORM -> LOWER REDUNDANCY

    View Slide

  136. SUMMARY


    EVOLUTION TIERS -> NORMAL FORMS
    PROBLEMS -> ANOMALIES
    HIGHER FORM -> LOWER REDUNDANCY
    HIGHER FORM -> HIGHER DATA INTEGRITY

    View Slide

  137. SUMMARY


    EVOLUTION TIERS -> NORMAL FORMS
    PROBLEMS -> ANOMALIES
    HIGHER FORM -> LOWER REDUNDANCY
    HIGHER FORM -> LONGER READ
    HIGHER FORM -> HIGHER DATA INTEGRITY

    View Slide

  138. View Slide

  139. QUESTIONS?


    View Slide