data and database

13
Data and Database A Quick Approach to Rails Data Core Mohammad Saleh Mahdizadeh Designed by Mohammad Saleh Mahdizadeh

Upload: mohammad-saleh-mahdizadeh

Post on 22-Jan-2018

134 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data and Database

Data and Database

A Quick Approach to Rails Data Core

Mohammad Saleh Mahdizadeh

Designed by Mohammad Saleh Mahdizadeh

Page 2: Data and Database

What to do with DATA?

▪ Paper-base:

– Forms (Files) => One page for every RECORD

▪ Folders => Collection of FORMS

– Lists => ROW and COLUMNS

Every one of ANYTHING

Designed by Mohammad Saleh Mahdizadeh

Page 3: Data and Database

Digital-base: Tables!

▪ Columns

▪ Rows

▪ id (Identification)– Uniqueness

▪ Data Types– integer, float, string, date,

datetime, boolean, text, …

– Multimedia?!

▪ null Values

id name birthday sex icdl

1 Jack 1758/3/10 m

2 Jill 1758/3/10 f

3 Cinderella 1890/2/18 f false

4 Robin 1992/11/13 f true

7 Walter 1976/5/5 m false

11 Elsa f false

13 Anna f true

14 Walter (Jr.) 1994/7/29 m true

Designed by Mohammad Saleh Mahdizadeh

Page 4: Data and Database

… Relational Database

id name birthday sex icdl

1 Jack 1758/3/10 m

2 Jill 1758/3/10 f

3 Cinderella 1890/2/18 f false

4 Robin 1992/11/13 f true

7 Walter 1976/5/5 m false

11 Elsa f false

13 Anna f true

14 Walter (Jr.) 1994/7/29 m true

id name start_time duration points

1 Database 8:00 90 2

2 MVC 10:30 60 4

3 Conventions 17:00 75 1

4 UI 14:00 120 3

5 Architecture 12:00 60 6

6 Deploy 45 1.5

id name degree age

1 Rachel BSC 24

2 Ross PHD 27

3 Phoebe BSC 29

4 Joey 25

23 Chandler MSC 23

24 Monica BSC 28

students

courses

teachers

Database

Designed by Mohammad Saleh Mahdizadeh

Page 5: Data and Database

Find Needle in Haystack!

▪ all

▪ find( ID )

▪ where( HASH )

▪ find_by( COLUMN: VALUE )

▪ order( COLUMN: :desc )

▪ order( COLUMN: :asc )

▪ first

{ :name1 => value1, :name2 => value2, :name3 => value3, … }

{ name1: value1, name2: value2, name3: value3, … }

1

2

Designed by Mohammad Saleh Mahdizadeh

Page 6: Data and Database

Let’s think about it …

Fact1: How to save which teacher offers which course?

Designed by Mohammad Saleh Mahdizadeh

Page 7: Data and Database

And then there was Relations …

id name start_time duration points teacher_id

1 Database 8:00 90 2 23

2 MVC 10:30 60 4 2

3 Conventions 17:00 75 1

4 UI 14:00 120 3 1

5 Architecture 12:00 60 6 3

6 Deploy 45 1.5 3

id name degree age

1 Rachel BCS 24

2 Ross PHD 27

3 Phoebe BCS 29

4 Joey 25

23 Chandler MCS 23

24 Monica BCS 28

courses teachers

Foreign Key

One to many relation

1∞

Designed by Mohammad Saleh Mahdizadeh

Page 8: Data and Database

Again, let’s think about it …

Fact2: How to save which student takes which course?

Designed by Mohammad Saleh Mahdizadeh

Page 9: Data and Database

Does foreign key can be helpful?

id name start_time duration points teacher_id

1 Database 8:00 90 2 23

2 MVC 10:30 60 4 2

3 Conventions 17:00 75 1

4 UI 14:00 120 3 1

5 Architecture 12:00 60 6 3

6 Deploy 45 1.5 3

coursesstudents

Many to many relation

id name birthday sex icdl

1 Jack 1758/3/10 m

2 Jill 1758/3/10 f

3 Cinderella 1890/2/18 f false

4 Robin 1992/11/13 f true

7 Walter 1976/5/5 m false

11 Elsa f false

13 Anna f true

14 Walter (Jr.) 1994/7/29 m true

Designed by Mohammad Saleh Mahdizadeh

Page 10: Data and Database

Break into one to many relations

id name start_time duration points teacher_id

1 Database 8:00 90 2 23

2 MVC 10:30 60 4 2

3 Conventions 17:00 75 1

4 UI 14:00 120 3 1

5 Architecture 12:00 60 6 3

6 Deploy 45 1.5 3

coursesstudents

Many to many relation

id name birthday sex icdl

1 Jack 1758/3/10 m

2 Jill 1758/3/10 f

3 Cinderella 1890/2/18 f false

4 Robin 1992/11/13 f true

7 Walter 1976/5/5 m false

11 Elsa f false

13 Anna f true

14 Walter (Jr.) 1994/7/29 m true

id student_id course_id

1 3 2

2 3 6

3 13 1

4 7 1

5 3 4

courses_students

∞∞ 11

Designed by Mohammad Saleh Mahdizadeh

Page 11: Data and Database

Final Data Model

id name start_timeduratio

npoints

teacher_id

1 Database 8:00 90 2 23

2 MVC 10:30 60 4 2

3Conventions

17:00 75 1

4 UI 14:00 120 3 1

5Architecture

12:00 60 6 3

6 Deploy 45 1.5 3

coursesstudents

id name birthday sex icdl

1 Jack 1758/3/10 m

2 Jill 1758/3/10 f

3 Cinderella 1890/2/18 f false

4 Robin 1992/11/13 f true

7 Walter 1976/5/5 m false

11 Elsa f false

13 Anna f true

14 Walter (Jr.) 1994/7/29 m true

id student_id course_id

1 3 2

2 3 6

3 13 1

4 7 1

5 3 4

courses_students

id name degree age

1 Rachel BCS 24

2 Ross PHD 27

3 Phoebe BCS 29

4 Joey 25

23 Chandler MCS 23

24 Monica BCS 28

teachers

Designed by Mohammad Saleh Mahdizadeh

1

11

∞ ∞

has_many courses_students

belongs_to student

has_many courses_students

belongs_to course

has_many courses

belongs_to teacher

has_many courses through courses_students

has_many students through courses_students

Page 12: Data and Database

… Somehow a class diagram!

courses

- id (integer)

- name (string)

- start_time (datetime)

- duration (integer)

- points (float)

- teacher_id (integer)

students

- id (integer)

- name (string)

- birthday (date)

- sex (string)

- icdl (boolean)

courses_students

- student_id (integer)

- course_id (integer)

teachers

- id (integer)

- name (string)

- degree (string)

- age (integer)Designed by Mohammad Saleh Mahdizadeh

1

11

∞ ∞

∞∞

Page 13: Data and Database

Remember,Just take it easy and simple as you can!

Thanks for your attention :)

Designed by Mohammad Saleh Mahdizadeh