30
Lab 09 Data Model Web Dev DataLab, CS, NTHU 2019 Spring

Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Lab 09 Data Model

Web DevDataLab, CS,

NTHU

2019 Spring

Page 2: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Data model

• Definition : A data model is a framework for describing the structure of databases.

Hierarchical data model Network data model Relational data model

Page 3: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Outline

• Hierarchical data model• Relational data model• ER model

Page 4: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Outline

• Hierarchical data model• Relational data model• ER model

Page 5: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the
Page 6: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

c-Id c-name

Course

Hierarchical data model

t-Id t-name

Teacher

s-Id s-name

Student

• Tree structure• Suit for 1-many relation

Page 7: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

105062570105062570

Example

CS241 SS

Course

xxx Brandon

Teacher

105062570 紫魚

Student

Page 8: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

More complex?

d-Id d-name

Department

Course

c-Id c-name s-Id s-name

Student

s-Id s-name

Student

t-Id t-name

Teacher

c-Id c-name

Course

Page 9: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

05062570 紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

10506257

1 0 紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 10: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Some constraint

• Not suitable for many-many relation• Cause data redundant

Page 11: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

Redundant data

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 12: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

Redundant data If we want modify Course Info

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 13: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

Redundant data If we want modify Course Info

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 14: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Some constraint

• Not suitable for many-many relation• Cause data redundant

• SELECT cost• Must through parent to child

Page 15: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

If we want SELECT

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 16: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

105062571 0

0

紫魚105062570 紫魚0506257

紫魚

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 17: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Page 18: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

105062571 0

0

紫魚105062570 紫魚05062571 10506257

0

紫魚

紫魚10506257 紫魚10 506257

0 紫魚

Page 19: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

105062570 紫魚10506257

0 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

0506257

Student

xxx Brandon

Teacher

CS241 SS

Course

1 10506257

0

紫魚

紫魚10506257 紫魚10506257

0 紫魚

Department

Page 20: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

CS241 SS

105062570 紫魚

CS241 SSCS241 SS

10506257 紫魚10506257 紫魚

62 CS

CS241 SS

Course

105062570 紫魚

Student

105062570 紫魚

Student

xxx Brandon

Teacher

CS241 SS

Course

Department

GET!

Page 21: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Outline

• Hierarchical data model• Relational data model• ER model• Today’s mission

Page 22: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Relational data model

c-id c-name d-name s-Id s-name

CS 241 SS CS 105062570 紫魚

CS 241 SS CS 105062558 朕鮪

CS 321 Computer Networks CS 105062570 紫魚

CS 321 Computer Networks CS 105062521 計網概助教

• Table structure

Page 23: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Relational data model

c-id c-name d-name s-Id s-name

CS 241 SS CS 105062570 紫魚

CS 241 SS CS 105062558 朕鮪

CS 321 Computer Networks CS 105062570 紫魚

CS 321 Computer Networks CS 105062521 計網概助教

• Table structure

Record

Field

Page 24: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Outline

• Hierarchical data model• Relational data model• ER model• Today’s mission

Page 25: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

ER model

• Allows thinking how to structure your data in a proper way.• Entity

• A record• With fields

• Entity group• A table• Define unique ID field for each entity

• Relationship between entities• 1-1, 1-many, many-many

Page 26: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Departments

d-idd-name

Students

s-ids-namemajor-id

Courses

c-id title dept-id

1

*

1

*

* *

How?

Page 27: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Departments

d-idd-name

Students

s-ids-namemajor-id

Courses

c-id title dept-id

Enroll

student-id course-id grade

1 1

1

*

1

*

* *

Page 28: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Departments

d-idd-name

Students

s-ids-namemajor-id

Courses

c-id title dept-id

Enroll

student-id course-id grade

1 1

1

*

1

*

• Table• Realization of entity group / relational ship

* *

Page 29: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Departments

d-idd-name

Students

s-ids-namemajor-id

Courses

c-id title dept-id

Enroll

student-id course-id grade

1 1

1

*

1

*

• Primary key• Unique ID field for each table

* *

Page 30: Lab 09 DataModel - GitHub Pages · 2020. 3. 2. · Lab 09 DataModel Web Dev DataLab, CS, NTHU 2019Spring. Datamodel •Definition : A data model is a framework for describing the

Departments

d-idd-name

Students

s-ids-namemajor-id

Courses

c-id title dept-id

Enroll

student-id course-id grade

1 1

1

*

1

*

* *

• Foreign key• Implement the relationship• Point to the primary key of other record• Only 1-1 1-many