Assignment1 Group4

38
Database Systems นนน นนนนนนน นนนนนนนนนน 56-010126- 2011-1 นนน นนนนนนนน นนนนนนนน 56-010126- 3015-9 นนนนนน นนนนนนนนน นนนนนนนน 56-010126- 3016-7

Transcript of Assignment1 Group4

Page 1: Assignment1 Group4

Database Systems นาย ภวูพงศ์ ศรวีจิารณ์ 56-010126-2011-1 นาย ธรีวฒัน์ ผ่องสกลุ 56-010126-3015-9 นางสาว ธรีะนันท์ เยน็ไธสง 56-010126-3016-7

Page 2: Assignment1 Group4

TextbookDatabase Systems: Concepts,Design

and Applications, 2nd Edition

by Shio Kumar SinghISBN: 9788131760925

Page 3: Assignment1 Group4

Requirements of Railway Reservation System› เก็บขอ้มูลสถานีรถไฟ โดยท่ีสถานีรถไฟสามารถมรีถไฟได้หลายๆชนิด และ รถไฟแต่ละชนิดสามารถจอดได้หลายๆสถานี

› เก็บเสน้ทางรถไฟ จะขึ้นอยูกั่บเสน้ทางปลายทางของรถไฟ เชน่ เก็บหมายเลขของเสน้ทาง

› เก็บชนิดของรถไฟ สามารถเก็บขอ้มูลของรถไฟได้หลายชนิด› เก็บขอ้มูลเสน้ทางปลายทาง เชน่เก็บหมายเลขของรถไฟ เก็บวนัท่ีรถไฟมาถึง› เก็บขอ้มูลของท่ีนัง่บนรถไฟ เชน่เก็บหมายเลขของท่ีนัง่› เก็บขอ้มูลค่าโดยสาร โดยค่าโดยสารจะมรีาคาไมเ่ท่ากันขึ้นอยูกั่บเสน้ทางปลายทาง

Page 4: Assignment1 Group4

ER Diagrams of Railway Reservation System

Page 5: Assignment1 Group4

Notation for ER Diagrams

Page 6: Assignment1 Group4

ER Diagrams of Railway Reservation System› Entity

1. TRAIN2. TRAIN TYPE3. RLY STATION4. DEST_ROUTE5. TRAIN ROUTE (Weak Entity) 6. FARE (Weak Entity) 7. SEAT (Weak Entity)

Page 7: Assignment1 Group4

ER Diagrams of Railway Reservation System› Entity : TRAIN

Attribute - TRAIN_NO - TOTAL_NO_OF_SEAT

› Entity : RLY STATION Attribute

- STATION_ID - NAME- CITY- STATE

Page 8: Assignment1 Group4

ER Diagrams of Railway Reservation System› Entity : TRAIN TYPE

Attribute- TRAIN_NAME- MAX_SEATS

› Entity : SEAT (Weak Entity) Attribute

- SEAT_NO

Page 9: Assignment1 Group4

ER Diagrams of Railway Reservation System› Entity : DEST_ROUTE

Attribute- TRAIN_NO- WEEK_DAYS

› Entity : FARE (Weak Entity) Attribute

- FARE_CODE- AMOUNT- RESTRICTIONS

Page 10: Assignment1 Group4

ER Diagrams of Railway Reservation System› Entity : TRAIN ROUTE (Weak Entity)

Attribute- ROUTE_NO

› Entity : ROUTE INSTANCE Attribute

- DATE- NO_OF_AVAL_SEATS

Page 11: Assignment1 Group4

ER To Relational Mapping

Page 12: Assignment1 Group4

ER To Relational Mapping› Step 1 Mapping of Regular Entity type

- สรา้งตารางสำาหรบัแต่ละ Entity- แปลงแต่ละ tuple เป็น instance

Entity : RLY STATION

Page 13: Assignment1 Group4

› Entity : TRAIN TYPE

› Entity : TRAIN

Page 14: Assignment1 Group4

› Entity : DEST_ROUTE

› Entity : ROUTE INSTANCE

Page 15: Assignment1 Group4

ER to Relational Mapping› Step 2: Mapping of Weak Entity Types-สรา้งตารางขึ้นมาใหม่- ใส่ partial key ของ weak entity- นำา primary key ของ owner มาใสเ่ป็น foreign key

Entity : TRAIN ROUTETRAIN_NO เป็น Primary Key ของ owner(DEST_ROUTE)

ใสเ่ป็น foreign key

Page 16: Assignment1 Group4

› Entity : FARE TRAIN_NO เป็น Primary Key ของ owner(DEST_ROUTE)

ใสเ่ป็น foreign key

› Entity : SEAT DATE เป็น Primary Key ของ owner(ROUTE INSTANCE) ใสเ่ป็น foreign key

Page 17: Assignment1 Group4

› Step 3: Mapping of Binary 1:1 Relationship Types

› SKIP To Step 4

Page 18: Assignment1 Group4

› Step 4: Mapping of Binary 1:N Relationship Types› - เลือกด้านท่ีเป็น N เอา Primary Key ของด้านท่ีเป็น 1 มาใสเ่ป็น

foreign key- แล้วเอา Attribute ของ Entity มาใส่- หากมี Attribute ของ Relation ก็ใสล่งไปด้วย

› ENTITY : RLY STATION 1:N TRAIN ROUTE

RLY STATION

TRAIN ROUTE

Page 19: Assignment1 Group4

› ENTITY : TRAIN TYPE 1:N TRAIN

TRAIN TYPE

TRAIN

Page 20: Assignment1 Group4

› Step 5: Mapping of Binary M:N Relationship Types- สรา้งตารางขึ้นมาใหม่- เอา Primary key ของทัง้สอง Entity มาเป็น foreign key- นำา Attribute ของ Relation มาใส่

ENTITY : RLY STATION M:N TRAIN TYPERLY STATION

CAN_STOP

TRAIN TYPE

Page 21: Assignment1 Group4

› Step 5: Mapping of Multivalued attribute

› SKIP

Page 22: Assignment1 Group4

Railway Reservation System

Page 23: Assignment1 Group4

การทดลองและผลการทดลอง

Page 24: Assignment1 Group4

Data type ของขอ้มูลแต่ละ Column ใน TableRLY STATION

- STATION_ID integer- NAME char(14)- CITY char(5)- STATE char(7)

CAN_STOP

- STATION_ID integer- TRAIN_NAME char(6)

TRAIN_TYPE

-TRAIN_NAME char(6)- MAX_SEATS integer

TRAIN

- TRAIN_NAME char(6)- TRAIN_NO integer- TOTAL_NO_OF_SEAT int(0-50)

TRAIN_ROUTE

- ROUTE_NO integer- TRAIN_NO integer- STATION_ID integer

DEST_ROUTE

- TRAIN_NO integer- WEEK_DAYS date

FARE

- FARE_CODE integer- TRAIN_NO integer- AMOUNTint(50,500000)- RESTRICTIONS char(30)

SEAT

-SEAT_NO integer -DATE date-CUST_NAME char(15)-CUST_PHONE int(10)

ROUTE INSTANCE

-DATE date-NO_OF_AVAL_SEATS int(0-50)-TRAIN_NO integer-ROUTE_NO integer-STATION_ID integer-ARR_TIME timestamp-DEP_TIME timestamp

Page 25: Assignment1 Group4

SQL Statement ท่ีใชส้รา้งตาราง› sqlite>create table RLY_STATON(

Station_ID int ,City varchar(100),Name varchar(100),State varchar(100),primary key(Station_ID) );

› sqlite>create table TRAIN_TYPE ( Train_name varchar(100),

Max_seate int,primary key(Train_name) );

› sqlite>create table TRAIN(Train_NO int ,Total_no_of_seats int,Train_name varchar(100),primary key(Train_NO),foreign key(Train_name)references

TRAIN_TYPE(Train_name) );

› sqlite>create table CAN_STOP(Station_ID int,Train_name varchar(100), primary key(Station_ID, Train_name),foreign key(Station_ID)references RLY_STATON(Station_ID),foreign key(Train_name)references TRAIN_TYPE(Train_name) );

› sqlite>create table TRAIN_ROUTE(

Route_NO int,Station_ID int,Scheduleder_time varchar(100),Schedularr_time varchar(100),Train_NO int,primary key(Route_NO, Train_NO),foreign key(Train_NO),references TRAIN(Train_name),foreign key(Station_ID),references RLY_STATON(Station_ID) );

Page 26: Assignment1 Group4

› sqlite>create table DEST_ROUTE(Train_NO int,Week_day varchar(100),primary key(Train_NO),foreign key(Train_NO)references TRAIN key(Train_NO) );

› sqlite>create table FARE(Train_NO int,Fare_code int,Restrictions varchar(100),Amount int,primary key(Train_NO, Fare_code),foreign key(Train_NO),references TRAIN(Train_NO) );

› sqlite>create table SEAT(Seat_NO int,Date varchar(100),Cust_phone int,Cust_name varchar(100),primary key(Seat_NO, Date),foreign key(Date),references ROUTE_INSTANCE(Date) );

› sqlite>create table ROUTE_INSTANCE (Date varchar(100),No_of_aval_seate int,Train_NO int,Route_NO int,Station_ID int,Arr_time varchar(100),Dep_time varchar(100),primary key(Date),foreign key(Train_NO),references TRAIN(Train_NO) ,foreign key(Route_NO),references

TRAIN_ROUTE(Route_NO),foreign key(Station_ID),references RLY_STATON(Station_ID)

);

Page 27: Assignment1 Group4

Code ท่ีใช้ Insert ขอ้มูลลงใน Databaseimport random, string, sqlite3.connector,timefrom string import ascii_lowercaserfrom random import randint

start_time = time.time()conn = mysql.connector.connect(user='root', password='123456', host='127.0.0.1', database='train')c = conn.cursor()size=[100,150,200,250,300,350,400,450,500]mm=["01","02","03","04","05","06","07","08","09","10","11","12"]re1=["Yes","No"]re2=["Unlimit","15kg","30kg","45kg"]i=1day=1month=1year=0

def twochar(num): if num<10: cha="0"+str(num) else: cha=str(num) return chadef fourchar(no): if(no<10): out="000"+str(no) elif(no<100): out="00"+str(no) elif(no<1000): out='0'+str(no) else: out=str(no) return out

Page 28: Assignment1 Group4

def twochar(num): if num<10: cha="0"+str(num) else: cha=str(num) return chadef fourchar(no): if(no<10): out="000"+str(no) elif(no<100): out="00"+str(no) elif(no<1000): out='0'+str(no) else: out=str(no) return out

while i<=1000000: amount = randint(50,50000) city = ''.join(random.choice(ascii_lowercase) for i in range(10)) tname = ''.join(random.choice(ascii_lowercase) for i in range(15)) rands = randint(0,8) y = randint(0,9999) ye = fourchar(y) ran1 = randint(0,1) ran2 = randint(0,3) res = "Smoke:"+re1[ran1]+"|WeightLimit:"+re2[ran2] m = randint(0,11) d = randint(1,30) y1 = randint(0,9999) m1 = randint(0,11) d1 = randint(1,30) h1 = randint(0,23) i1 = randint(0,59) s1 = randint(0,59)

Page 29: Assignment1 Group4

y2 = randint(0,9999) m2 = randint(0,11) d2 = randint(1,30) h2 = randint(0,23) i2 = randint(0,59) s2 = randint(0,59) if m==1 and d >= 29 : d = 28 if m1==1 and d1 >= 29 : d1 = 28 if m2==1 and d2 >= 29 : d2 = 28 if day>=29 and month==2: day=1 month+=1 elif day>30: day=1 month+=1 if month>12: month=1 year+=1

arr = fourchar(y1)+"-"+mm[m1]+"-"+twochar(d1)+" "+twochar(h1)+":"+twochar(i1)+":"+twochar(s1) dep = fourchar(y2)+"-"+mm[m2]+"-"+twochar(d2)+" "+twochar(h2)+":"+twochar(i2)+":"+twochar(s2) weekday = ye+"-"+mm[m]+"-"+twochar(d) date = fourchar(year)+"-"+twochar(month)+"-"+twochar(day) fname = ''.join(random.choice(ascii_lowercase) for i in range(8)) lname = ''.join(random.choice(ascii_lowercase) for i in range(8)) aname = fname+" "+lname oname = ''.join(random.choice(ascii_lowercase) for i in range(8)) pname = ''.join(random.choice(ascii_lowercase) for i in range(8)) state = ''.join(random.choice(ascii_lowercase) for i in range(7)) rand_name = oname + ' ' + pname phone = ''.join(str(randint(0,9)) for i in range(10)) noaval = randint(0,50) total = size[rands]-noaval

Page 30: Assignment1 Group4

exec_str1 = 'insert into RLY_STATION values ('+str(i)+',"'+city+'","'+rand_name+'","'+state+'")'exec_str2 = 'insert into TRAIN_TYPE values ("'+tname+'",'+str(size[rands])+')'exec_str3 = 'insert into CAN_STOP values ('+str(i)+',"'+tname+'")'exec_str4 = 'insert into TRAIN values ('+str(i)+','+str(total)+',"'+tname+'")'exec_str5 = 'insert into TRAIN_ROUTE values ('+str(i)+','+str(i)+',"'+arr+'","'+dep+'",'+str(i)+')'exec_str6 = 'insert into DEST_ROUTE values ('+str(i)+',"'+weekday+'")'exec_str7 = 'insert into FARE values ('+str(i)+','+str(i)+',"'+res+'",'+str(amount)+')'exec_str8 = 'insert into SEAT values ('+str(i)+',"'+date+'","'+phone+'","'+aname+'")'exec_str9 = 'insert into ROUTE_INSTANCE values ("'+date+'",'+str(noaval)+','+str(i)+','+str(i)+','+str(i)+',"'+arr+'","'+dep+'")'

c.execute(exec_str1) c.execute(exec_str2) c.execute(exec_str3) c.execute(exec_str4) c.execute(exec_str5) c.execute(exec_str6) c.execute(exec_str7) c.execute(exec_str8) c.execute(exec_str9) conn.commit() i+=1 day+=1conn.close()print('---%s seconds---'%(time.time()-start_time))

Page 31: Assignment1 Group4

File Size

Page 32: Assignment1 Group4

การเปรยีบเทียบประสทิธภิาพ

Processor : I3-4030U CPU 1.90 GHz RAM 4 GB

Processor : I7-4710HQ CPU 2.5 GHz RAM 8 GB

MySQL

select * from farewhere Amount = 2000;

125.019 sec 51.118 sec 2.906 sec

select * from TRAIN_TYPEwhere Max_seat = 200;

738.846 sec 540.465 sec 12.688 sec

Page 33: Assignment1 Group4

› Processor: i3-4030U CPU 1.90 GHz RAM : 4.00 GB

Query : select * from fare where Amount = 2000; ครัง้ท่ี 1

ครัง้ท่ี 2

Page 34: Assignment1 Group4

› Processor: i7-4710HQ CPU 2.5 GHz RAM : 8.00 GB

Query : select * from fare where Amount = 2000;

Page 35: Assignment1 Group4

MySQL› Query : select * from fare where Amount = 2000;

Page 36: Assignment1 Group4

› select * from TRAIN_TYPE where Max_seat = 200;

Page 37: Assignment1 Group4

สรุป

› Database หรอืระบบฐานขอ้มูลเป็นระบบสำาหรบั จดัเก็บขอ้มูล กลุ่มของข้อมูลท่ีมคีวามสมัพนัธกั์น

โดยอาศัยการบรหิารจดัการฐานข้อมูลด้วยระบบDBMS

› เราใชร้ะบบฐานขอ้มูลเพื่อแทนระบบเก่าท่ีใชกั้นอยู่ ในยุคก่อน เชน่ ระบบแฟม้ขอ้มูล ซึ่งการจดัเก็บ

ข้อมูลในลักษณะแฟม้ข้อมูลนัน่อาจ จะทำาใหข้้อมูล ชนิดเดียวกัน หรอืเรื่องเดียวกันถกูเก็บไวห้ลาย ๆ

ทำาใหเ้กิดปัญหาต่าง ๆมากมาย› ข้อดีของฐานข้อมูล

- ลดความซำ้าซอ้นของข้อมูล- ไม่เกิดความความขัดแยง้กันของขอ้มูล- สามารถใชข้้อมูลรว่มกันอยา่งมปีระสทิธภิาพ- ใชร้ะบบรกัษาความปลอดภัยเพื่อเพิม่ความปลอดภัยใหกั้บฐานข้อมูล- ควบคุมความเป็นมาตรฐานเดียวกันได้- ข้อมูลเป็นอันหน่ึงอันเดียวกัน ขอ้มูลเรื่องเดียวกันต้องมค่ีาเดียวกัน- ข้อมูลมีความเป็นอิสระ ไม่ขึ้นอยูกั่บโปรแกรมท่ีพฒันาขึ้น

› ขอ้เสยีของฐานขอ้มูล-   ระบบฐานขอ้มูลก่อใหเ้กิดต้นทนุสงู เชน่  ซอฟท์แวรท่ี์ใชใ้นการจดัการระบบฐานขอ้มูล      บุคลากร ต้นทนุในการปฏิบติังาน และ   ฮารด์แวร์ เป็นต้น-  การเริม่ใชร้ะบบฐานขอ้มูล อาจก่อใหเ้กิด

     ความซบัซอ้นได้ เชน่ การจดัเก็บขอ้มูล การ  ออกแบบ การเขยีนโปรแกรม เป็นต้น

-  เสีย่งต่อการหยุดชะงักของระบบ เน่ืองจาก ขอ้มูลถกูจดัเก็บไวใ้นลักษณะเป็นศูนยร์วม

ความล้มเหลวของการทำางานบางสว่นในระบบอาจทำาใหร้ะบบฐานขอ้มูลทัง้ระบบหยุดชะงักได้

Page 38: Assignment1 Group4

THANKS YOU !