Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
データベースを使おう   飯塚修平             1
データベースって? データを貯めておくところユーザ       プログラム    データベースex. ユーザ情報、マスター情報、ログ etc.                            2
RDB (リレーショナルDB)                   NoSQL (Not Only SQL)- SQL という言語を使って                  - RDB 以外の DB の総称やりとりする             ...
ファイルじゃダメなの? これとか       こんなかんじもちろんファイルでもOKです。ただ・・・                       4
1.かんたん(統一性)アプリケーションごとにファイル入出力の機能をつくるのは面倒臭い。DBならSQLで統一できる! SELECT, INSERT, DELETE                          5
2.はやい(インデックス)          たとえば id が 1 ∼ 31 のデータがあったとき、          ある id のデータを探すには?           1                                 ...
3.あんしん(アトミック性)    たとえば INSERT 処理中にエラーが発生したら                            会員情報for i = 0 to 100:   1        aaa     xxx       ...
sqlite3 test.db #test.db を作成CREATE TABLE users (id INTEGER, name TEXT);INSERT INTO users VALUES (1, “tushuhei”);INSERT INT...
データベース設計ユーザマスタテーブルをつくろう!    {id: 1,    name: “tushuhei”,    items: [“もろはのつるぎ”,          “やくそう”,          “まじっくすてっき”]    } ...
例1id      name              items                    “もろはのやいば”,1     “tushuhei”        “やくそう”,                    “まじっくすてっ...
こんなときどうする?「アイテムの名前が変更になった!」 「やくそう」->「べほまぐさ」ユーザのデータすべてに適用するの・・・?                       11
例2           users                    itemsid     name        items     id      name1    “tushuhei”    1, 2, 3   1    “もろは...
こんなときどうする?アイテム “もろはのやいば” を持っている人の一覧を出したい!このままだと、ユーザがアイテム追加時に面倒 SELECT item FROM users WHERE id = xxx; $items = $items . “,...
例3      users       user_item            itemid     name       user   item   id      name1    “tushuhei”    1      1     1...
正規化正規化とは,データの冗長性を少なくして,関連性の強いデータ項目(属性)郡をまとめて,一事実一箇所(1 fact in 1 place)になるようにすることです。     斎藤末広のページ http://www.mirai.ne.jp/~s...
sqlite3 test.db #test.db を作成CREATE TABLE items (id INTEGER, name TEXT);INSERT INTO items VALUES ( ...CREATE TABLE user_ite...
1.@oshiba_botCREATE TABLE tweets (     id INTEGER PRIMARY KEY,     tweet_id INTEGER,);同じつぶやきを変換しないようにする。                  ...
2.お花サプライズ!             18
3.ウェルカムページメーカー no database.                 19
今後の予定2/18(Sat) 11:00-14:00 Amazon EC2勉強会2/18(Sat) 18:00-「ゲームのちからで世界を変えよう会議」参加のためお休み2/25(Sat) 18:00- 飯塚が用事あり(要相談)2/26(Sun) ...
参考: お花サプライズ!               ビジネスプラン           生花店との提携      決済代行会社との提携ビジネス設計/開発  解決する   解決法             合宿  問題・痛み アイデアプロダクト設...
参考: 国会.in7/1 アイデア出し7月下旬 プロトタイプ完成8月 開発合宿 -> 基本的な機能が   う9月半ば リリース                         22
東京大学検見川運動場             23
東京大学検見川運動場             24
開発合宿3月頃の学生が春休みときに。3泊4日各プロジェクトに必ず学生が一人はいる。途中参加・途中退出あり準備が命「現地では絶対に勉強しない!」                      25
Upcoming SlideShare
Loading in …5
×

【第3回初心者勉強会】データベースを使おう

1,204 views

Published on

  • Be the first to comment

  • Be the first to like this

【第3回初心者勉強会】データベースを使おう

  1. 1. データベースを使おう 飯塚修平 1
  2. 2. データベースって? データを貯めておくところユーザ プログラム データベースex. ユーザ情報、マスター情報、ログ etc. 2
  3. 3. RDB (リレーショナルDB) NoSQL (Not Only SQL)- SQL という言語を使って - RDB 以外の DB の総称やりとりする - データ構造はそれぞれ異- テーブル型のデータ構造 なる。 [{handle: “tushuhei”,id handle name name: “Shuhei Iitsuka”, 1 tushuhei Shuhei Iitsuka friends: [“amachang”, “masall2”, 2 amachang Hitoshi Amano “naofumiwa”, “phatsu”]}] 3 masall2 Masahiro Saito 3
  4. 4. ファイルじゃダメなの? これとか こんなかんじもちろんファイルでもOKです。ただ・・・ 4
  5. 5. 1.かんたん(統一性)アプリケーションごとにファイル入出力の機能をつくるのは面倒臭い。DBならSQLで統一できる! SELECT, INSERT, DELETE 5
  6. 6. 2.はやい(インデックス) たとえば id が 1 ∼ 31 のデータがあったとき、 ある id のデータを探すには? 1 16 2min: 1 min: 1 8 24 3max: 31 max: 5 ... 4 12 20 28 30 2 6 10 14 18 22 26 30 1 3 5 7 9 11 1315 1719 21 2325272931 31 <2分木探索> インデックスなし インデックスあり 6
  7. 7. 3.あんしん(アトミック性) たとえば INSERT 処理中にエラーが発生したら  会員情報for i = 0 to 100: 1 aaa xxx 2 bbb yyy hoge() ... ... ... INSERT DATA ... ... ... piyo() 37 LLL ZZZendfor i=37のときにhoge() 中途半端な状態の でエラー発生、終了!! データができてしまう。 7
  8. 8. sqlite3 test.db #test.db を作成CREATE TABLE users (id INTEGER, name TEXT);INSERT INTO users VALUES (1, “tushuhei”);INSERT INTO users VALUES (2, “amachang”);SELECT * FROM users;DELETE FROM users WHERE id = 1;SELECT COUNT(*) FROM users;INSERT INTO users VALUES (3, “masall2”);SELECT AVG(id) FROM users;.q #終了 8
  9. 9. データベース設計ユーザマスタテーブルをつくろう! {id: 1, name: “tushuhei”, items: [“もろはのつるぎ”, “やくそう”, “まじっくすてっき”] } 9
  10. 10. 例1id name items “もろはのやいば”,1 “tushuhei” “やくそう”, “まじっくすてっき” “まじっくすてっき”,2 “amachang” “ぽーしょん”... ... ... 10
  11. 11. こんなときどうする?「アイテムの名前が変更になった!」 「やくそう」->「べほまぐさ」ユーザのデータすべてに適用するの・・・? 11
  12. 12. 例2 users itemsid name items id name1 “tushuhei” 1, 2, 3 1 “もろはのやいば”2 “amachang” 3, 4 2 “やくそう” 3 “まじっくすてっき” ここを変更すればOK 4 “ぽーしょん” 12
  13. 13. こんなときどうする?アイテム “もろはのやいば” を持っている人の一覧を出したい!このままだと、ユーザがアイテム追加時に面倒 SELECT item FROM users WHERE id = xxx; $items = $items . “, yyy”; UPDATE users SET item = $items WHERE id = xxx; 13
  14. 14. 例3 users user_item itemid name user item id name1 “tushuhei” 1 1 1 “もろはのやいば”2 “amachang” 1 2 2 “やくそう” 1 3 3 “まじっくすてっき” 2 3 4 “ぽーしょん” 2 4 14
  15. 15. 正規化正規化とは,データの冗長性を少なくして,関連性の強いデータ項目(属性)郡をまとめて,一事実一箇所(1 fact in 1 place)になるようにすることです。 斎藤末広のページ http://www.mirai.ne.jp/~suehiro/am/kihonyougo/normal.htm 15
  16. 16. sqlite3 test.db #test.db を作成CREATE TABLE items (id INTEGER, name TEXT);INSERT INTO items VALUES ( ...CREATE TABLE user_item (user INTEGER, item INTEGER);INSERT INTO user_item VALUES ( ...SELECT * FROM users LEFT JOIN user_item ON users.id= user_item.user;# LEFT JOIN: テーブルをくっつけるのに使う。ONは結合条件。SELECT * FROM users LEFT JOIN user_item ON users.id= user_item.user LEFT JOIN items ON user_item.item =items.id; 16
  17. 17. 1.@oshiba_botCREATE TABLE tweets ( id INTEGER PRIMARY KEY, tweet_id INTEGER,);同じつぶやきを変換しないようにする。 17
  18. 18. 2.お花サプライズ! 18
  19. 19. 3.ウェルカムページメーカー no database. 19
  20. 20. 今後の予定2/18(Sat) 11:00-14:00 Amazon EC2勉強会2/18(Sat) 18:00-「ゲームのちからで世界を変えよう会議」参加のためお休み2/25(Sat) 18:00- 飯塚が用事あり(要相談)2/26(Sun) か 3/3(Sat) プロジェクト割振り会3月中旬 開発合宿@東京大学検見川運動場5月 リリース会 20
  21. 21. 参考: お花サプライズ! ビジネスプラン 生花店との提携 決済代行会社との提携ビジネス設計/開発 解決する 解決法 合宿 問題・痛み アイデアプロダクト設計/開発 プロダクト プロトタイプ v0 プロトタイプ v1 プロトタイプ v2 リリース デザイン 8月 9月 10 月 11 月 21
  22. 22. 参考: 国会.in7/1 アイデア出し7月下旬 プロトタイプ完成8月 開発合宿 -> 基本的な機能が う9月半ば リリース 22
  23. 23. 東京大学検見川運動場 23
  24. 24. 東京大学検見川運動場 24
  25. 25. 開発合宿3月頃の学生が春休みときに。3泊4日各プロジェクトに必ず学生が一人はいる。途中参加・途中退出あり準備が命「現地では絶対に勉強しない!」 25

×