University Database
Group 9
010123121 Database Systems Assignment 1
หนังสืออ้างอิง
Developing Web-Enabled Decision
Support Systems
Using VB.NET and ASP.NET
 by Abhijit A. Pol and Ravindra K. Ahuja
University ER Diagram
ER Diagram
to
Relation Mapping
Step 1 : Mapping of Regular Entity Types
สร้าง Relation Mapping จาก Entity และ Attribute
PERSON
Name Email Address SSN Phone Nationality Sex
FACULTY
Rank Jointdate
STUDENT
Type Class
DEPARTMENT
Name Address Phone DeptID
COLLEGE
Name Address Phone CollegeID
SECTION
SectionID Year Capacity Semester
COURSE
CourseID Name CreditHours TextBook
Step 2 : Mapping of Weak Entity Types
- skip เนื่องจากไม่มี Weak Entity
Step 3 : Mapping of Binary 1:1 Relationship Types
- skip เนื่องจากไม่มี Binary 1:1 Relationship
Step 4 : Mapping of Binary 1:N Relationship Types
สร้าง foreign key จาก relation
FACULTY
Rank Jointdate
Rank Jointdate StartDate F_SSN F_DeptID
STUDENT
Type Class
Type Class Grade S_SSN S_DeptID
DEPARTMENT
Name Address Phone DeptID
Name Address Phone DeptID Dept_CollegeID
SECTION
SectionID Year Capacity Semester
SectionID Year Capacity Semester Fac_ID Cou_ID
COURSE
CourseID Name CreditHours TextBook
CourseID Name CreditHours TextBook Cou_DeptID
Step 6 : Mapping of Multiple Attribute
- skip เนื่องจากไม่มี Multiple Attribute
Data and Code…
PERSON : ชื่อ อีเมล์ที่อยู่รหัสบัตรประชาชน เบอร์โทรศัพท์มือถือ
สัญชาติ และ เพศ
FACULTY : ระดับ วันที่เข้าร่วม
STUDENT : type class
DEPARTMENT : ชื่อ ที่อยู่เบอร์โทรศัพท์มือถือ department ID
COLLEGE : ชื่อ ที่อยู่เบอร์โทรศัพท์มือถือ college ID
SECTION : section ID ปีที่เรียน ความจุของนักเรียน เทอม
COURSE : course ID ชื่อ course หน่วยกิต หนังสือเรียน
การเก็บข้อมูล
Example Generate Code Sqlite3
###Person Generate###
import random, string, sqlite3
from string import ascii_lowercase
from random import randint
conn = sqlite3.connect('university.db')
c = conn.cursor()
i = 1
key = 1
city = ['A','B','C','D','E','F']
nationalities = ['Thai','Chinese','American']
sexs = ['Male' , 'Female']
while i <= 100000000:
fname = ''.join(random.choice(ascii_lowercase) for i in range(5))
lname = ''.join(random.choice(ascii_lowercase) for i in range(5))
person_name = fname + ' ' + lname
email = ''.join(random.choice(ascii_lowercase) for i in range(5)) +
'@mail.com'
address = str(randint(0,300))+' '+city[randint(0,5)]
ssn = key
phone = random.randint(0000000000,9999999999)
nationality = nationalities[randint(0,2)]
sex = sexs[randint(0,1)]
exec_str = 'insert into PERSON values
("'+person_name+'","'+email+'","'+address+'",'+str(ssn)+','+str(phone)+',"'+nati
onality+'","'+sex+'")'
c.execute(exec_str)
if((i%10000)==0):
conn.commit()
print(i)
key = key+1
i = i+1
conn.commit()
conn.close()
สรุปข้อมูลภายใน University Database
บน Sqlite3
ประกอบด้วย tables ทั้งหมด 7 tables
PERSON มีข้อมูล 101,000,000 คน
STUDENT มีข้อมูล 80,000,000 คน
FACULTY มีข้อมูล 20,000,000 คน
DEPARTMENT มีข้อมูล 12 สาขา
COURSE มีข้อมูล 100,000 course
COLLEGE มีข้อมูล 11 มหาวิทยาลัย
SECTION มีข้อมูล 200,000 section
ขนาดไฟล์ของ Database 18.4 GB
Example Generate Code MySQL
import random, string, mysql.connector, time
from string import ascii_lowercase
from random import randint
start_time = time.time()
conn = mysql.connector.connect(user='root', password='1234',
host='127.0.0.1',
database='university')
c = conn.cursor()
i = 1
key = 1
city = ['A','B','C','D','E','F']
nationalities = ['Thai','Chinese','American']
sexs = ['Male' , 'Female']
while i <= 101000000:
fname = ''.join(random.choice(ascii_lowercase) for i in
range(5))
lname = ''.join(random.choice(ascii_lowercase) for i in
range(5))
person_name = fname + ' ' + lname
email = ''.join(random.choice(ascii_lowercase) for i in
range(5)) + '@mail.com'
address = str(randint(0,300))+' '+city[randint(0,5)]
ssn = key
phone = random.randint(0000000000,9999999999)
nationality = nationalities[randint(0,2)]
sex = sexs[randint(0,1)]
exec_str = 'insert into PERSON values
("'+person_name+'","'+email+'","'+address+'",'+str(ssn)+','+str(
phone)+',"'+nationality+'","'+sex+'")'
c.execute(exec_str)
if((i%10000)==0):
conn.commit()
print(i)
key = key+1
i = i+1
conn.close()
print ('--- %s seconds ---' %(time.time()-start_time))
สรุปข้อมูลภายใน University Database
บน MySQL
ประกอบด้วย tables ทั้งหมด 7 tables
PERSON มีข้อมูล 101,000,000 คน
STUDENT มีข้อมูล 40,060,000 คน
FACULTY มีข้อมูล 20,000,000 คน
DEPARTMENT มีข้อมูล 12 สาขา
COURSE มีข้อมูล 100,000 course
COLLEGE มีข้อมูล 11 มหาวิทยาลัย
SECTION มีข้อมูล 200,000 section
ผลการทดลอง
สเปคที่ใช้ในการทดสอบ
รุ่น MSI GP62 6QF-602TH
Leopard Pro
Lenovo Yoga 500
OS Windows 10 Pro Windows 10 Pro
CPU Intel Core i7-6700HQ (2.60 GHz,
6 MB L3 Cache, up to 3.50 GHz)
Intel Core i5-5200U (2.20
GHz, 3 MB L3 Cache, up to
2.70 GHz)
Ram 8 GB DDR4 8 GB DDR3L
Hard Disk SSD 550/450 mb/s
HDD 1 TB 7200 RPM
1 TB 5400 RPM
Graphic
System
NVIDIA GeForce GTX 960M
(4GB GDDR5)
NVIDIA GeForce GT 940M
(2GB GDDR3)
ขั้นตอนการเข้าถึงข้อมูลเพื่อหา นักศึกษาที่เรียนอยู่ใน KMUTNB
ขั้นตอนการเข้าถึงข้อมูลเพื่อหา นักศึกษาที่เรียนอยู่ใน KMUTNB
ทดลอง query บน Sqite3 เพื่อหา นักศึกษาที่เรียนอยู่ใน KMUTNB
ทดลอง query บน Sqite3 เพื่อหา นักศึกษาที่เรียนชายอยู่ใน KMUTNB
ครั้งที่ 1
ครั้งที่ 3
ครั้งที่ 2
เปรียบเทียบ Query 3 ครั้ง บนเครื่องเดียวกัน โดยใช้ HDD เพื่อหา นักศึกษาที่เรียนชายอยู่ใน
KMUTNB
เปรียบเทียบระหว่าง HDD กับ SSD
HDD
SSD
เปรียบเทียบระหว่าง HDD กับ SSD
HDD
SSD
ทดลอง query บน MySQL
จัดทาโดย
1.นายธนพล เพ็ชรชูชาติ 5601012620021
2.นายธนดล เตชะวัชรีกุล 5601012630094
3.นายสันต์ชัย ยอดพรหม 5601012630256

University er-diagram

  • 1.
    University Database Group 9 010123121Database Systems Assignment 1
  • 2.
    หนังสืออ้างอิง Developing Web-Enabled Decision SupportSystems Using VB.NET and ASP.NET  by Abhijit A. Pol and Ravindra K. Ahuja
  • 3.
  • 4.
  • 5.
    Step 1 :Mapping of Regular Entity Types สร้าง Relation Mapping จาก Entity และ Attribute PERSON Name Email Address SSN Phone Nationality Sex FACULTY Rank Jointdate STUDENT Type Class DEPARTMENT Name Address Phone DeptID
  • 6.
    COLLEGE Name Address PhoneCollegeID SECTION SectionID Year Capacity Semester COURSE CourseID Name CreditHours TextBook
  • 7.
    Step 2 :Mapping of Weak Entity Types - skip เนื่องจากไม่มี Weak Entity Step 3 : Mapping of Binary 1:1 Relationship Types - skip เนื่องจากไม่มี Binary 1:1 Relationship
  • 8.
    Step 4 :Mapping of Binary 1:N Relationship Types สร้าง foreign key จาก relation FACULTY Rank Jointdate Rank Jointdate StartDate F_SSN F_DeptID STUDENT Type Class Type Class Grade S_SSN S_DeptID
  • 9.
    DEPARTMENT Name Address PhoneDeptID Name Address Phone DeptID Dept_CollegeID SECTION SectionID Year Capacity Semester SectionID Year Capacity Semester Fac_ID Cou_ID COURSE CourseID Name CreditHours TextBook CourseID Name CreditHours TextBook Cou_DeptID
  • 10.
    Step 6 :Mapping of Multiple Attribute - skip เนื่องจากไม่มี Multiple Attribute
  • 12.
  • 13.
    PERSON : ชื่ออีเมล์ที่อยู่รหัสบัตรประชาชน เบอร์โทรศัพท์มือถือ สัญชาติ และ เพศ FACULTY : ระดับ วันที่เข้าร่วม STUDENT : type class DEPARTMENT : ชื่อ ที่อยู่เบอร์โทรศัพท์มือถือ department ID COLLEGE : ชื่อ ที่อยู่เบอร์โทรศัพท์มือถือ college ID SECTION : section ID ปีที่เรียน ความจุของนักเรียน เทอม COURSE : course ID ชื่อ course หน่วยกิต หนังสือเรียน การเก็บข้อมูล
  • 14.
    Example Generate CodeSqlite3 ###Person Generate### import random, string, sqlite3 from string import ascii_lowercase from random import randint conn = sqlite3.connect('university.db') c = conn.cursor() i = 1 key = 1 city = ['A','B','C','D','E','F'] nationalities = ['Thai','Chinese','American'] sexs = ['Male' , 'Female']
  • 15.
    while i <=100000000: fname = ''.join(random.choice(ascii_lowercase) for i in range(5)) lname = ''.join(random.choice(ascii_lowercase) for i in range(5)) person_name = fname + ' ' + lname email = ''.join(random.choice(ascii_lowercase) for i in range(5)) + '@mail.com' address = str(randint(0,300))+' '+city[randint(0,5)] ssn = key phone = random.randint(0000000000,9999999999) nationality = nationalities[randint(0,2)] sex = sexs[randint(0,1)]
  • 16.
    exec_str = 'insertinto PERSON values ("'+person_name+'","'+email+'","'+address+'",'+str(ssn)+','+str(phone)+',"'+nati onality+'","'+sex+'")' c.execute(exec_str) if((i%10000)==0): conn.commit() print(i) key = key+1 i = i+1 conn.commit() conn.close()
  • 17.
    สรุปข้อมูลภายใน University Database บนSqlite3 ประกอบด้วย tables ทั้งหมด 7 tables PERSON มีข้อมูล 101,000,000 คน STUDENT มีข้อมูล 80,000,000 คน FACULTY มีข้อมูล 20,000,000 คน DEPARTMENT มีข้อมูล 12 สาขา COURSE มีข้อมูล 100,000 course COLLEGE มีข้อมูล 11 มหาวิทยาลัย SECTION มีข้อมูล 200,000 section ขนาดไฟล์ของ Database 18.4 GB
  • 18.
    Example Generate CodeMySQL import random, string, mysql.connector, time from string import ascii_lowercase from random import randint start_time = time.time() conn = mysql.connector.connect(user='root', password='1234', host='127.0.0.1', database='university') c = conn.cursor() i = 1 key = 1 city = ['A','B','C','D','E','F'] nationalities = ['Thai','Chinese','American'] sexs = ['Male' , 'Female']
  • 19.
    while i <=101000000: fname = ''.join(random.choice(ascii_lowercase) for i in range(5)) lname = ''.join(random.choice(ascii_lowercase) for i in range(5)) person_name = fname + ' ' + lname email = ''.join(random.choice(ascii_lowercase) for i in range(5)) + '@mail.com' address = str(randint(0,300))+' '+city[randint(0,5)] ssn = key phone = random.randint(0000000000,9999999999) nationality = nationalities[randint(0,2)] sex = sexs[randint(0,1)]
  • 20.
    exec_str = 'insertinto PERSON values ("'+person_name+'","'+email+'","'+address+'",'+str(ssn)+','+str( phone)+',"'+nationality+'","'+sex+'")' c.execute(exec_str) if((i%10000)==0): conn.commit() print(i) key = key+1 i = i+1 conn.close() print ('--- %s seconds ---' %(time.time()-start_time))
  • 21.
    สรุปข้อมูลภายใน University Database บนMySQL ประกอบด้วย tables ทั้งหมด 7 tables PERSON มีข้อมูล 101,000,000 คน STUDENT มีข้อมูล 40,060,000 คน FACULTY มีข้อมูล 20,000,000 คน DEPARTMENT มีข้อมูล 12 สาขา COURSE มีข้อมูล 100,000 course COLLEGE มีข้อมูล 11 มหาวิทยาลัย SECTION มีข้อมูล 200,000 section
  • 22.
  • 23.
    สเปคที่ใช้ในการทดสอบ รุ่น MSI GP626QF-602TH Leopard Pro Lenovo Yoga 500 OS Windows 10 Pro Windows 10 Pro CPU Intel Core i7-6700HQ (2.60 GHz, 6 MB L3 Cache, up to 3.50 GHz) Intel Core i5-5200U (2.20 GHz, 3 MB L3 Cache, up to 2.70 GHz) Ram 8 GB DDR4 8 GB DDR3L Hard Disk SSD 550/450 mb/s HDD 1 TB 7200 RPM 1 TB 5400 RPM Graphic System NVIDIA GeForce GTX 960M (4GB GDDR5) NVIDIA GeForce GT 940M (2GB GDDR3)
  • 24.
  • 25.
  • 26.
    ทดลอง query บนSqite3 เพื่อหา นักศึกษาที่เรียนอยู่ใน KMUTNB
  • 27.
    ทดลอง query บนSqite3 เพื่อหา นักศึกษาที่เรียนชายอยู่ใน KMUTNB
  • 28.
    ครั้งที่ 1 ครั้งที่ 3 ครั้งที่2 เปรียบเทียบ Query 3 ครั้ง บนเครื่องเดียวกัน โดยใช้ HDD เพื่อหา นักศึกษาที่เรียนชายอยู่ใน KMUTNB
  • 29.
  • 30.
  • 31.
  • 32.
    จัดทาโดย 1.นายธนพล เพ็ชรชูชาติ 5601012620021 2.นายธนดลเตชะวัชรีกุล 5601012630094 3.นายสันต์ชัย ยอดพรหม 5601012630256