160
Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul [email protected]

Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul [email protected]

Embed Size (px)

Citation preview

Page 1: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Advance Database S2-2011Week-5

Dr.Kwanchai [email protected]

Page 2: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-5

• XML Basics 5: 7 ธค.– DOM– XML DTD– XML Schema

• XML Query– Xpath 6: 14 ธค– Xquery7: 21 ธค– XSL 8: 24 ธค

• WebService 9: 4 มค– TH-E-GIF

• DataIntegration 10: 11 มค– Schema matching and

mapping

• Parallel Database 11:18 มค

• GIS 12:

Page 3: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-5

• XML Basics 5: 7 ธค.– DOM– XML DTD – XML Schema : 14 ธค

• XML Query– Xpath 6: 21 ธค– Xquery7: 24 ธค– XSL 8: 24 ธค

• WebService 9: 4 มค– TH-E-GIF

• DataIntegration 10: 11 มค– Schema matching and

mapping

• Parallel Database 11:18 มค

• GIS 12:

Page 4: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML Basics: Content of Week 5

• DOM (Reviews)• XML DTD• XML Schema• Lab: DTD and Schema construction

Page 5: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Week5-Lab

• Construct and Validate your XML document using DTD and php.

Page 6: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML Basics: Content of Week 5

• DOM (Reviews)• XML DTD• XML Schema• Lab: DTD and Schema construction

Page 7: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML Document example

Page 8: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

8

From Stanford:Well-Formed and Valid XML

• Well-Formed XML allows you to invent your own tags.

• Valid XML conforms to a certain DTD.

•What is “Well-Formed XML ”?

Page 9: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

9

From Stanford:Well-Formed and Valid XML

• Well-Formed XML allows you to invent your own tags.

• Valid XML conforms to a certain DTD.

• What is “Well-Formed XML ”?

Page 10: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

10

What are XML syntax rules?

• Well-Formed XML allows you to invent your own tags.

• Valid XML conforms to a certain DTD.• What is “Well-Formed XML ”?

Page 11: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

11

What are XML syntax rules?1.?

2.?3.?

4.?5.?

Page 12: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

12

What are XML syntax rules?

Page 13: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

13

From Stanford: Well-Formed XML

• Start the document with a declaration, surrounded by <?xml … ?> .

• Normal declaration is:<?xml version = ”1.0” standalone = ”yes” ?>– “standalone” = “no DTD provided.”

• Balance of document is a root tag surrounding nested tags.

Page 14: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML DTD

Page 15: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML DTD

Page 16: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML DTD

Page 17: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD Declaration

Page 18: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD Declaration

GUESS??? Internal or External???

Page 19: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD Declaration

GUEST??? Internal or External???

Page 20: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD Declaration

GUEST??? Internal or External???

Page 21: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD Declaration

External Declaration

note.dtd

Page 22: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Internal DTD Declaration

Page 23: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

24

RefreshFrom Stanford: Well-Formed XML

• Start the document with a declaration, surrounded by <?xml … ?> .

• Normal declaration is:<?xml version = ”1.0” standalone = ”yes” ?>– “standalone” = “no DTD provided.”

• Balance of document is a root tag surrounding nested tags.

Page 24: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

25

From Stanford: Example: (a)<?xml version = “1.0” standalone = “no” ?><!DOCTYPE BARS [

<!ELEMENT BARS (BAR*)><!ELEMENT BAR (NAME, BEER+)><!ELEMENT NAME (#PCDATA)><!ELEMENT BEER (NAME, PRICE)><!ELEMENT PRICE (#PCDATA)>

]><BARS>

<BAR><NAME>Joe’s Bar</NAME><BEER><NAME>Bud</NAME> <PRICE>2.50</PRICE></BEER><BEER><NAME>Miller</NAME> <PRICE>3.00</PRICE></BEER>

</BAR> <BAR> …

</BARS>

The DTD

The document

1.?

2.?

Page 25: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

26

From Stanford: Example: (a)<?xml version = “1.0” standalone = “no” ?><!DOCTYPE BARS [

<!ELEMENT BARS (BAR*)><!ELEMENT BAR (NAME, BEER+)><!ELEMENT NAME (#PCDATA)><!ELEMENT BEER (NAME, PRICE)><!ELEMENT PRICE (#PCDATA)>

]><BARS>

<BAR><NAME>Joe’s Bar</NAME><BEER><NAME>Bud</NAME> <PRICE>2.50</PRICE></BEER><BEER><NAME>Miller</NAME> <PRICE>3.00</PRICE></BEER>

</BAR> <BAR> …

</BARS>

The DTD

The document

2.?

Page 26: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

27

From Wiki: Example1.? 2.?

3.?

4.?

Page 27: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

28

From Wiki: Example2.?

3.?

4.?

Page 28: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

29

From Wiki: Example

3.?

4.?

Page 29: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

30

From Wiki: Example

4.?

Page 30: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

31

From Wiki: Example

Page 31: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD Declaration Exercise

External Declaration

note.dtd

Page 32: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

33

From Stanford: Example: (b)

• Assume the BARS DTD is in file bar.dtd.<?xml version = “1.0” standalone = “no” ?><!DOCTYPE BARS SYSTEM ”bar.dtd”><BARS>

<BAR><NAME>Joe’s Bar</NAME><BEER><NAME>Bud</NAME>

<PRICE>2.50</PRICE></BEER><BEER><NAME>Miller</NAME>

<PRICE>3.00</PRICE></BEER></BAR><BAR> …

</BARS>

Get the DTDfrom the filebar.dtd

1.?

External Declaration

Page 33: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

34

From Stanford: Example: (b)

• Assume the BARS DTD is in file bar.dtd.<?xml version = “1.0” standalone = “no” ?><!DOCTYPE BARS SYSTEM ”bar.dtd”><BARS>

<BAR><NAME>Joe’s Bar</NAME><BEER><NAME>Bud</NAME>

<PRICE>2.50</PRICE></BEER><BEER><NAME>Miller</NAME>

<PRICE>3.00</PRICE></BEER></BAR><BAR> …

</BARS>

Get the DTDfrom the filebar.dtd

External Declaration

Page 34: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

35

From Wiki: Example1.?

2.? 3.?

External Declaration

Page 35: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

36

From Wiki: Example

2.? 3.?

External Declaration

Page 36: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

37

From Wiki: Example

3.?

External Declaration

Page 37: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

38

From Wiki: Example

Page 38: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Why using DTD

Page 39: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Why using DTD

Page 40: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - XML Building Blocks

Page 41: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - Elements

Page 42: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - Attributes

Page 43: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - Entities

Page 44: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - PCDATA

Page 45: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - CDATA

Page 46: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - XML Building Blocks

Page 47: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - Elements

Webpage for more details

Page 48: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - Elements

Page 49: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

50

From Stanford: Element Descriptions

• Subtags must appear in order shown.• A tag may be followed by a symbol to

indicate its multiplicity.– * = zero or more.– + = one or more.– ? = zero or one.

• Symbol | can connect alternative sequences of tags.

Page 50: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

Page 51: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????

Page 52: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document???? => YES

Page 53: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????

Page 54: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document???? => NO

Page 55: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document???? => NO

Page 56: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????

Page 57: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document???? => YES

Page 58: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????

Page 59: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document???? => No

Page 60: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document???? => No

Page 61: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????

Page 62: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????=>NO

Page 63: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD – Elements-Quiz

http://zvon.org/comp/r/tut-DTD.html#Pages~Elements_in_given_order_%28_%2C_%29

tutorial.dtd

Valid XML document????=>NO

Page 64: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

65

From Stanford: Example: (a)<?xml version = “1.0” standalone = “no” ?><!DOCTYPE BARS [

<!ELEMENT BARS (BAR*)><!ELEMENT BAR (NAME, BEER+)><!ELEMENT NAME (#PCDATA)><!ELEMENT BEER (NAME, PRICE)><!ELEMENT PRICE (#PCDATA)>

]><BARS>

<BAR><NAME>Joe’s Bar</NAME><BEER><NAME>Bud</NAME> <PRICE>2.50</PRICE></BEER><BEER><NAME>Miller</NAME> <PRICE>3.00</PRICE></BEER>

</BAR> <BAR> …

</BARS>

The DTD

The document

1.?

2.?

Page 65: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

66

From Stanford: Example: (a)<?xml version = “1.0” standalone = “no” ?><!DOCTYPE BARS [

<!ELEMENT BARS (BAR*)><!ELEMENT BAR (NAME, BEER+)><!ELEMENT NAME (#PCDATA)><!ELEMENT BEER (NAME, PRICE)><!ELEMENT PRICE (#PCDATA)>

]><BARS>

<BAR><NAME>Joe’s Bar</NAME><BEER><NAME>Bud</NAME> <PRICE>2.50</PRICE></BEER><BEER><NAME>Miller</NAME> <PRICE>3.00</PRICE></BEER>

</BAR> <BAR> …

</BARS>

The DTD

The document

1.?

Page 66: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DTD - XML Building Blocks

Page 67: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

68

From Standford:DTD Structure

<!DOCTYPE <root tag> [<!ELEMENT <name>(<components>)>. . . more elements . . .

]>

Page 68: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML Basics: Content of Week 5

• DOM (Reviews)• XML DTD• XML Schema• Lab: DTD and Schema construction

Page 69: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Advance Database S2-2011Week-5

Dr.Kwanchai [email protected]

Page 70: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Week-1-Homework

• Marking criteria.1. You have successfully created your database. (2.5

marks)2. You have successfully populated your data into

your big table. (2.5 marks)3. You have successfully populated your data into

your normalized tables (2.5 marks)4. Your have demonstrated the enforcement of

foreign key constraints for your database. (2.5 marks)

Page 71: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Homework-Week-2

1. Data Population (Normalization from last week) 1

2. HTML processing 43. Venn Diagram Creation 4

Page 72: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Lab for Week-31. Marking Week-2 Lab2. Hand-Draw an XML tree structure for the given

example in the class. (2.5)3. Program-Draw an XML tree structure for an html

data (from line 393 - 557)1. http://

elearning.rmutl.ac.th/main/file.php/542/week-2/thailand.htm (2.5)

4. Change the Xpath expression of your previous code to … and observe what is different (5)

Page 73: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-4

• Create table using MySQL Workbench– Collation => Sorting => UTF-8_general/unicode– Storage Engine => MyISAM, InnoDB

• Populate Data: Select Data into table• Join Optimization• XML Basics– DOM

Page 74: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Lab for Week-41. Write “SQL statements” to populate data into the

following schema

2. Create indexes to speed up the join of these tables.3. Create a program to retrieve data from the web and

populated into your tables– Province coords– Amphur coords

Page 75: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Lab for Week-4-Cont.

Page 76: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Week-4 Homework Explain

Page 77: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

ID Structure

• province-district_name-sub_district_name-moo

• 50-02-09-13• จั�งหวั�ด-อำ��เภอำ-ตำ��บล- หม�� => รห�สหม��บ��น• เชี�ยงใหม�-จัอำมทอำง-แม�สอำย-หม��13 => หม��บ��นห�วัยพั�ฒน�

• 50-03-01-02• เชี�ยงใหม�-แม�แจั�ม-ชี��งเค !ง-หม��2 => หม��บ��นตำ�อำเร"อำ

Page 78: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How about ID like ‘000001’? In INT format? => ‘1’ => We will loose

‘00000’ So char(6) will be a solution.

From: refman-5.5-en.html-chapter/data-types.html#numeric-types

MySQL supports the SQL standard integer types INTEGER (or INT) and SMALLINT. As an extension to the standard, MySQL also supports the integer types TINYINT, MEDIUMINT, and BIGINT.

Page 79: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Let’s analyze the possible ID for regions

SQL Here to get =>

Villagedata

Page 80: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Let’s analyze the possible ID for regions

Villagedata

Page 81: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How about?

select DISTINCT left(village_id,1), DISTINCT region_namefrom villagedata;

Page 82: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How about?

• select DISTINCT left(village_id,1), DISTINCT region_name

• from villagedata;

• Error

Page 83: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-4

• Create table – Collation => Sorting => UTF-8_general/unicode– Storage Engine => MyISAM, InnoDB

• Populate Data: Select Data into table• Join Optimization• XML Basics– DOM

Page 84: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

Select name, collation, engine

Page 85: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

Select name, collation, engine

• What is collation???

Page 86: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

What is collation?

Page 87: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

What is collation?

Page 88: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

Select name, collation, engine

Page 89: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region tableSelect name, collation, engine

Page 90: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Collation

http://dev.mysql.com/doc/refman/5.6/en/charset-unicode-sets.html

utf8, a UTF-8 encoding of the Unicode character set using one to three bytes per character

http://dictionary.cambridge.org/dictionary/american-english/collate?q=collate

=>to collect and arrange in correct order the sheets of a document

Page 91: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

9.1.1. Character Sets and Collations in General

Page 92: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Let’s have a look• http://www.collation-charts.org/mysql60/mysql604.utf8_unicode_ci.south_east_asian.html

What are these?

Page 93: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Let’s have a look• http://www.collation-charts.org/mysql60/mysql604.utf8_unicode_ci.south_east_asian.html

Page 94: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th
Page 95: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Let’s have a look• http://www.collation-charts.org/mysql60/mysql604.utf8_unicode_ci.south_east_asian.html

Page 96: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Collationhttp://dev.mysql.com/doc/refman/5.6/en/charset-unicode-sets.html

What collation should we use?

Page 97: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Collationhttp://dev.mysql.com/doc/refman/5.6/en/charset-unicode-sets.html

Page 98: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Collation => ก�รเร�ยงล��ด�บตำ�วัอำ�กษรhttp://dev.mysql.com/doc/refman/5.6/en/charset-unicode-sets.html

We use utf8_unicode_ci because it provides more correctComparison for foreign characters, e.g. B => ‘ss’ in stead of ‘s’.Note it will be slower than utf8_general_ci for comparison.

Page 99: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

What is collation?

Page 100: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Now we need to construct region table

Select name, collation, engine

Page 101: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Database Engine Selection

EB = 10E+18http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html

Page 102: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Database Engine Selection

So we will use InnoDB because we want Transaction and Foreign key support.

EB = 10E+18http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html

Page 103: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Create table region

Page 104: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Create table region

Page 105: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Synchronize with DB

• CREATE TABLE IF NOT EXISTS `sml_test`.`region` (

• `idregion` CHAR(1) NOT NULL ,

• `nameregion` VARCHAR(45) NULL DEFAULT NULL ,

• PRIMARY KEY (`idregion`) )

• ENGINE = InnoDB

• DEFAULT CHARACTER SET = utf8

• COLLATE = utf8_unicode_ci;

Page 106: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Synchronize with DB1. CREATE TABLE IF NOT EXISTS `sml_test`.`region` (

2. `idregion` CHAR(1) NOT NULL ,

3. `nameregion` VARCHAR(45) NOT NULL ,

4. PRIMARY KEY (`idregion`) )

5. ENGINE = InnoDB

6. DEFAULT CHARACTER SET = utf8

7. COLLATE = utf8_unicode_ci;

8. DROP TABLE IF EXISTS `sml_test`.`tb_region` ;9. DROP TABLE IF EXISTS `sml_test`.`tb_province` ;

Page 107: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Synchronize with DB1. CREATE TABLE IF NOT EXISTS `sml_test`.`region` (

2. `idregion` CHAR(1) NOT NULL ,

3. `nameregion` VARCHAR(45) NOT NULL ,

4. PRIMARY KEY (`idregion`) )

5. ENGINE = InnoDB

6. DEFAULT CHARACTER SET = utf8

7. COLLATE = utf8_unicode_ci;

8. DROP TABLE IF EXISTS `sml_test`.`tb_region` ;9. DROP TABLE IF EXISTS `sml_test`.`tb_province` ;

Page 108: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-3

• Constraints• Create table using MySQL Workbench– Collation => Sorting => UTF-8_general/unicode– Storage Engine => MyISAM, InnoDB

• Select Data into table• XML Basics– XML Quizs– http://www.w3schools.com/xml/

Page 109: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Let’s analyze the possible ID for regions

Page 110: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What is wrong?

Page 111: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Drop primary key of region

• Now please write down an SQL statement to insert into the region table.

Page 112: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Insert into region

• insert into • select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

Page 113: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Insert into region• insert into • select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

Page 114: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Insert into region• insert into region• select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

Page 115: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Insert into region• insert into region• select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

Page 116: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What should be primary key?• insert into region• select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

Single column is duplicated

Page 117: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What should be primary key?• insert into region• select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

How about two columns for PK.

Page 118: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What should be primary key?• insert into region• select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

How about two columns for PK.

Page 119: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What should be primary key?• insert into region• select distinct left(village_id,1) as idregion,• region_name as nameregion• from villagedata;

How about two columns for PK.

Page 120: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What should be primary key?

How about two columns for PK.

Page 121: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Synchronize database

• Alter table sml_test.region• Add primary key(idregion, nameregion);

Data still exists

Page 122: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-4

• Create table using MySQL Workbench– Collation => Sorting => UTF-8_general/unicode– Storage Engine => MyISAM, InnoDB

• Populate Data: Select Data into table• Join Optimization• XML Basics– DOM

Page 123: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Join Optimization

80,000 8,000 800 80 8

Page 124: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Join Optimization

80,000 8,000 800 80 8

How about join them back together?

Page 125: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Join Optimization

80,000 8,000 800 80 8

How about join them back together?

Page 126: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Response Time-1

-- Second queryselect region_name, prov_name ,amp_namefrom region r, province p, amphur awhere r.region_id = p.region_id andp.prov_id = a.prov_id;

Page 127: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Response Time-2

select region_name, prov_name ,amp_name, tam_namefrom region r, province p, amphur a, tambon twhere r.region_id = p.region_id andp.prov_id = a.prov_id anda.amp_id = t.amp_id;

Page 128: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Response Time-3select region_name, prov_name ,amp_name, tam_name, vill_namefrom region r, province p, amphur a, tambon t, village vwhere r.region_id = p.region_id andp.prov_id = a.prov_id anda.amp_id = t.amp_id andt.tam_id = v.tam_id;

Page 129: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Join OptimizationHow about join them back together?

80,000 8,000 800 80 8

Page 130: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

phpMyAdmin

Page 131: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How to speed up a join?

Page 132: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How to speed up a join?

• Create Index

http://dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html

Page 133: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How to speed up a join?

• Create Index

http://dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html

Page 134: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How to speed up a join?

• Create Index

http://dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html

Page 135: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

How to speed up a join?

• Create Index• Which table should be considered?• Which column should be considered?

http://dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html

80,000 8,000 800 80 8

Page 136: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Create Index

Village Table

Page 137: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Response Time-3select region_name, prov_name ,amp_name, tam_name, vill_namefrom region r, province p, amphur a, tambon t, village vwhere r.region_id = p.region_id andp.prov_id = a.prov_id anda.amp_id = t.amp_id andt.tam_id = v.tam_id;

Page 138: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What if We remove an index on village.tam_id?

select region_name, prov_name ,amp_name, tam_name, vill_namefrom region r, province p, amphur a, tambon t, village vwhere r.region_id = p.region_id andp.prov_id = a.prov_id anda.amp_id = t.amp_id andt.tam_id = v.tam_id;

Page 139: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

What if We remove an index on village.tam_id?

select region_name, prov_name ,amp_name, tam_name, vill_namefrom region r, province p, amphur a, tambon t, village vwhere r.region_id = p.region_id andp.prov_id = a.prov_id anda.amp_id = t.amp_id andt.tam_id = v.tam_id;

remove an index

Has an index

Page 140: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Where else that we can add indexes?

Page 141: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Where else that we can add indexes?

• Can we create index on every column?

Page 142: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Where else that we can add indexes?

• Can we create index on every column?

http://en.wikipedia.org/wiki/B-tree

Page 143: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Contents Week-3

• Create table using MySQL Workbench– Collation => Sorting => UTF-8_general/unicode– Storage Engine => MyISAM, InnoDB

• Populate Data: Select Data into table• Join Optimization• XML Basics– DOM

Page 144: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM

Page 145: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML => Book

Page 146: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

XML => Book

Page 147: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM Nodes

Page 148: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Node Tree

Page 149: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Node Type Property

Page 150: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Node Type Property

Page 151: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Node List

Page 152: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Node List

Page 153: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Node List

Page 154: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM

• XPath::query• Returns a DOMNodeList containing all nodes

matching the given XPath expression• http://th.php.net/manual/en/domxpath.query.php

Page 155: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM

$my_xpath_query = "/";

Page 156: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM

$my_xpath_query = "//area/@coords";

Page 157: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM

$my_xpath_query = "//area[(./@coords != 0) and (./@href != '#')]";

Page 158: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

DOM$my_xpath_query = "//area[(./@coords != 0) and (./@href != '#')]";

Page 159: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

Week-4-Home-Work

Page 160: Advance Database S2-2011 Week-5 Dr.Kwanchai Eurviriyanukul Kwanchai@rmutl.ac.th

End of Week-4 Lecture