練習題參考解答

 

[ Ch 01 ]

[練習1-1]

這些有關員工的資料確實是相關的。然而,除非這些資料為資料庫應用系統所需,否則沒有存的必要。因為存入的資料愈多,可以想像其維護成本就愈高(包括收集資料和鍵入資料的人力,開發和維護程式的金錢)。

 

[練習1-2]

假設交易t0001的顧客編號(cNo)是c0001,交易t0002和t0003的顧客編號是c0003。

商品

pNo

pName

unitPrice

p0001

p0002

p0003

p0004

p0005

文具1

1

2

3

文具2

50

300

500

100

100

 

交易

 tNo

date

cNo

pNo

t0001

t0001

t0002

t0002

t0003

t0003

2003-10-02

2003-10-02

2003-10-02

2003-10-02

2003-10-03

2003-10-03

c0001

c0001

c0003

c0003

c0003

c0003

p0002

p0003

p0002

p0004

p0001

p0005

 

客戶

cNo

cName

c0001

c0002

c0003

c0004

c0005

張三

李四

王五

趙六

林二

 

 

[練習1-3 ]

該筆資料不完全符合綱目的規定。

pNo定義中為5個字元 但插入資料中有9個字元; 且unitPrice定義為整數型態,但插入資料是一個實數。

 

[練習1-4]

會的,因為外部綱目裡也有pName。有些讀者可能會因此認為資料獨立性不存在,不過資料獨立性並不適用這種狀況,資料獨立性指的是,下層所修改的資料只要不影響上層資料的存在,上層綱目就不受影響。

 

[ CH 02 ]

 

[練習2-1]

 

 

[練習2-2]

若將會員與交易間的關係型態的基數(1和N)位置對調,其意義為:

一位會員可能有也僅能有一筆交易, 而一筆交易必須包含一個或以上個會員。

 


[練習2-3]

 

交易與購物車間的關係型態:因為一筆交易可能不是由線上訂購而來(所以沒有購物車),而一台購物車也沒有拿去結帳(所以不形成交易),因此兩邊都是部分參與。

 

交易與商品間的關係型態:因為一筆交易至少需包含一個商品(否則就不叫交易了!),但一個商品可能沒有包含在任何交易裡(因沒人買),所以加上參與度後的關係型態如下

 

[練習2-4]

如果將關係型態”Introduces”上的兩個角色名稱(介紹人和被介紹人)互換,則代表的意義為:

一位會員可被多位會員介紹,而每位會員最多只能介紹一位會員。

 

[ CH 03 ]

[練習3-1]

1.        應該用兩個二元關係即可表達。

2.        應該用一個三元關係來表達。

 

[練習3-2]

A. 不合法,因為 M3 沒有參與任何關係。
B. 不合法,因為 (M1, P1, S1) 出現兩次。
C. 不合法,因為第三筆關係的 Supplier 為空值,使的該關係變成不合法的三元關係。
D. 合法。
E. 不合法,因為( M1, P1 )有兩個供應商: S1, S2 。

 

[練習3-3]

一筆交易至少包括一項商品,至多可有多項商品。一項商品可以不存在任何交易裡,至多可以存在多筆交易。


[練習3-4]

一筆交易至少包括一項商品,至多可有多項商品。一項商品可以不存在任何交易裡,至多可以存在多筆交易。

 

[ Ch 04 ]

 

[練習4-1]

因為集合裡的元素是沒有次序且兩兩都不同,因此這兩個性質都可從集合的定義推導而來。

 

[練習4-2]

 

實體型態

外部鍵

對應之主鍵

Member

Introducer

Member的mId

Author

pNo

Procudtor的pNo

Transaction

transMid

Member的mId

Cart

mId

tNo

Member的mId

Transaction的tNo

Browse

mId

pNo

Member的mId

Procudtor的pNo

Order

mId+cartTime

Cart的mId+cartTime

Record

tNo

pNo

Transaction的tNo

Procudtor的pNo

 

[練習4-3]

1.        違反實體完整限制,因為主鍵為空值。

2.        違反關聯鍵限制,因為已存在一個編號‘c0927777’的會員。

3.        違反關聯鍵限制,因為已存在一個pId為‘A220123456’的會員。並違反參考完整限制,因為介紹人‘b0905588’的會員編號不存在。

4.        Ok

5.        Ok

 

[練習4-4]

1.        b0905555存在於會員、交易、瀏覽和購物車的外部鍵,所以會違反參考完整限制。

2.        c0927777存在於交易、瀏覽和購物車的外部鍵,所以會違反參考完整限制。

 

[練習 4-5]

我們可以看出:

4-7的計畫及弱實體預算的關聯模式中,預算關聯綱目的主鍵為pNo+year, 而圖4-8的計畫及多值且複合屬性預算的關聯模式中,預算關聯綱目的主鍵為pNo+year+amount 。在這種情況下,圖4-7的ERD表示法較好,如果pNo+year即可唯一表示出某一計畫在某一年度的預算記錄(假設每一計畫在一個年度只有一個預算金額), 我們就不需將amount屬性列入預算主鍵中。此時應以弱實體型態的方式來表示為宜。若產生後的主鍵需要以對應主鍵加上所有複合屬性的屬性值才能表示唯一,則ERD裡用多值複合屬性的方式來表示比較簡潔。

 

例如習題2-2中, 假設學生的聯絡人不只一位,且聯絡人屬性為多個,一般的作法可將聯絡人視為學生的多值複合屬性。不過如果聯絡人屬性中有一個身份識別屬性,比如身分證字號, 則宜用弱實體型態來表示學生的聯絡人。

 

 

[ Ch 05 ]

[練習5-1]

 

商品編號
pNo

商品名稱
pName

定價
unitPrice

種類
catalog

d20777

蔡依林專輯二

350

CD

d03333

5566專輯

450

CD


[練習5-2]

pName

unitPrice

蔡依林專輯二

350

5566 專輯

450

 

 

[練習5-3]

Result

商品編號

Product.pNo

商品名稱

pName

定價

unitPrice

稱類

catalog

創作者名稱

Author.pNo

b30999

資料庫理論與實務

500

Book

Hwung

b30999

d11222

任賢齊專輯三

300

CD

William

d11222

b20666

SQL_OLAP

500

Book

Sandra

b20666

b10234

MIS

600

Book

Lin

b51111

b40555

系統分析理論與實務

550

Book

Wu

b40555

d20777

蔡依林專輯二

350

CD

Jolin

d20777

v01888

哈利波特---混血王子的背叛

450

VCD

J.K.

v01888

d03333

d03333

d03333

5566專輯

5566專輯

5566專輯

450

450

450

CD

CD

CD

Jackey

David
Tom

d03333

d03333

d03333

b51111

b51111

b51111

電子商務理論與實務

電子商務理論與實務

電子商務理論與實務

700

700

700

Book

Book

Book

Lai

Hwung

Lin

b51111

b30999

b51111

 

 

 

 

 

 

 

 

 

 

 

 

 

[練習5-4]

  Result

交易編號

tNo

會員編號

transMid

商品名稱

pName

91100

a0911234

資料庫理論與實務

92666

92666

92666

c0927777

c0927777

c0927777

任賢齊專輯三

蔡依林專輯二

英雄

91888

91888

a0910001

a0910001

系統分析理論與實務

5566專輯

92333

c0927777

電子商務理論與實務

90111

b0905555

哈利波特---混血王子的背叛

92555

92555

b0922468

b0922468

管理資訊系統概論

系統分析理論與實務

          

 

 

 

 

 

 

 

 

 

[練習5-5]

  Result

pName

aName

資料庫理論與實務

Huang

任賢齊專輯三

William

OLAP進階

Sandra

管理資訊系統概論

Lin

系統分析理論與實務

Wu

蔡依林專輯二

Jolin

哈利波特:混血王子的背叛

J.K.

5566專輯

5566專輯

5566專輯

Jackey

David

Tom

電子商務理論與實務

電子商務理論與實務

電子商務理論與實務

Lai

Huang

Lin

英雄

null

 

 

 

 

 

 

 

 

 

 

 

 

 

[練習5-6]

    Result

tNo

totalProductNum

91100

1

90111

1

92555

2

91888

2

92666

3

92333

1

 

 

 

 

 

 

 

[ Ch 06 ]

[ 練習6-1 ]

1.       可為空值的欄位有: birthday, phone, address, email, introducer

2.       主鍵: mId

次要鍵: pId

3.       受影響的會員有2筆記錄:

mId為a0910001, name為Jenny

mId為c0927777, name為Su

Jennifer的會員記錄被刪除, 則她所介紹的會員記錄中的’介紹人’欄位會被設定為空值。

 

[練習6-2]

CREATE TABLE Transaction

                (tNo        VARCHAR(10)    NOT NULL,

transMId     CHAR(10)       NOT NULL,

                transTime    TIMESTAMP      NOT NULL,

                method      VARCHAR(5)     NOT NULL,

bankId      VARCHAR(14)     NOT NULL,

                bankName    VARCHAR(20),

                cardType    VARCHAR(10),

                cartId       VARCHAR(10),

                dueDate     DATE,

                PRIMARY KEY (tNo),

          FOREIGN KEY (transMId) REFERENCE Member(mId)

ON DELETE CASCADE  ON UPDATE CASCADE) ;

 

[練習6-3]

1.      資料表Transaction定義刪除時, 同時其他資料表定義裡參考到資料表Transaction的部分(包括Cart的tNo外部鍵定義和Record的tNo外部鍵定義)也一併被刪除。

2.      當其他資料表定義裡都沒有參考到Cart時, 才可刪除Cart資料表定義。以圖6-1的資料庫綱目來說,這個刪除不會成功,因為資料表Order有一個外部鍵(mId, cartTime)是參考到Cart。

 

[練習6-4]

資料表Browse的外部鍵 mId參考到Member的mId, 當Member的某一筆會員記錄被刪除時,則參考到該會員的Browse記錄也一併被刪除。 若Member的某一筆會員記錄的會員編號修改時,則一併修改參考到該會員的Browse記錄的mId欄位值。

 

[練習6-5]

CREATE TABLE Order

(pNo        CHAR(10)     NOT NULL,

mId         CHAR(10)     NOT NULL,

                cartTime     TIMESTAMP   NOT NULL,

                amount      INT          DEFAULT  0,

                PRIMARY KEY (pNo ,mId, cartTime ),

                CONSTRAINT pNoFk

                  FOREIGN KEY (pNo) REFERENCES Product (pNo),

                CONSTRAINT mIdFk

                  FOREIGN KEY (mId, cartTime) REFERENCES Cart (mId, cartTime));

 

[練習6-6]

SELECT pNo, pName

FROM  Product , Author

WHERE name=’陳水扁’ AND Author.pNo=Product.pNo AND catalog = ’Book’ ;

 

[練習6-7]

SELECT M.name, I.mId, I.name

FROM  MEMBER AS M , MEMBER AS I

WHERE M.mId = ‘b0905555’ AND  M.introducer = I.mId ;

 

[練習6-8]

SELECT  *

FROM  MEMBER

WHERE pId  LIKE ‘A%’ ;

 

[練習6-9]

在新增這筆記錄之前,必須先訂出這本書的商品編號。假設其商品編號為’b11111’,則可用以下語法新增這些資訊。

INSERT INTO Product

VALUES (‘b11111’,‘總統大選分析’, 200,’Book’);

 

INSERT INTO Author

VALUES (‘b11111’,’張大炮’);

 

[ Ch 07 ]

[練習7-1]

  假設創作者的姓名為唯一:

(SELECT DISTINCT Author.name

FROM Product AS P, Author AS A

WHERE catalog= ‘Book’ AND P.pNo = A.pNo)

INTERSECT

(SELECT DISTINCT Author.name

FROM Product AS P, Author AS A

WHERE catalog= ‘CD’ AND P.pNo = A.pNo);

 

[練習7-2]

SELECT mId, name

FROM Member

WHERE (mId IN (SELECT B.mId

             FROM Browse AS B, Product AS P

WHERE pName = ‘系統分析理論與實務AND  P.pNo = B.pNo))

AND

(mId NOT IN (SELECT transMId

       FROM Product AS P, Record AS R, Transaction AS T

WHERE pName = ‘系統分析理論與實務AND P.pNo = R.pNo

AND R.tNo = T.tNo));

 

[練習7-3]

1.      巢狀查詢: (找出所有有瀏覽過或購買過”系統分析理論與實務” 的會員之會員編號和會員姓名。)

 

SELECT mId, name

FROM Member

WHERE (mId IN  (SELECT B.mId

FROM  Browse AS B, Product AS P

WHERE pName = ‘系統分析理論與實務AND  P.pNo = B.pNo))

OR 

(mId  IN  (SELECT transMId

                  FROM  Product AS P, Record AS R, Transaction AS T

WHERE pName = ‘系統分析理論與實務AND P.pNo = R.pNo AND R.tNo = T.tNo));

 

2. 一般查詢: 找出’黃三益’所瀏覽過的商品裡,哪些有真正被他購買。

SELECT pNo

FROM  Browse AS B, Member AS M, Record AS R, Transaction AS T

WHERE M.name = ‘黃三益’ AND M.mId = B.mId AND

               B.pNo=R.pNo AND R.tNo=T.tNo AND transMId = M.mId ;

 

[練習7-4]

SELECT P.pNo, pName, name

FROM  Product AS P  LEFT OUTERJOIN  Author AS A ON P.pNo=A.pNo;

 

[練習7-5]

SELECT M.mId, M.name , cartTime

FROM  Member AS M , Order AS O

WHERE O.mId=M.mId

GROUP BY M.mId, M.name, cartTime

HAVING COUNT(pNo) > 3;

 

[練習7-6]

UPDATE Record

SET salePrice = salePrice*0.9

WHERE tNo IN

(SELECT tNo

         FROM  Transaction , Member

         WHERE address LIKE ‘%台北市%’ AND mId=transMid );

[練習7-7]

1.  CREATE VIEW Product_amount (catalog, catalogAmount)

AS  (SELECT catalog, COUNT(pNo)

FROM  Product

   GROUP BY catalog);

2.  因為此view包含彙總函數(COUNT) ,所以會造成修改的不明確, 故此view不能被修改.

3.  DROP VIEW Product_amount

 

 

[ Ch 08 ]

[練習8-1]

除了第3筆和第8筆序列值外,刪除其他序列值都會使得該商品資訊消失,造成刪除異常。

[練習8-2]

{pNo}+ = {pNo, pName, unitPrice, catalog}

{mId, pNo}+ = {mId, pNo, pName, unitPrice, catalog}

 

[練習8-3]

Transaction

tNo

transMid

method

transTime

 

91100

a0911234

cart

2002-02-02  :18:30:00

 

92222

a0911234

cart

2003-01-01:  11:30:00

 

92666

c0927777

cart

2003-10-10:  22:10:30

 

92333

c0927777

email

2003-10-15:  09:00:00

 

91888

a0910001

fax

2002-09-10:  10:10:00

 

90111

b0905555

cart

2002-05-05:  12:30:30

 

92555

b0922468

cart

2003-11-11:  09:10:00

 

Transaction_Product

tNo

product

 

91100

b30999

 

92666

d11222

 

92666

d20777

 

92666

v00111

 

92333

b51111

 

91888

b40555

 

91888

d03333

 

90111

v10888

 

92555

b10234

 

92555

d40555

 

[練習8-4]

Transaction_Products和其函數相依如下

Transaction_Products

tNo

product

transMid

method

transTime

 

 
 

 


因為{tNo,pNo} à { transMid, method, transTime} ,

但存在{tNo} à { transMid, method, transTime}

因此, {tNo,product}à{ transMid, method, transTime}是一個部份相依, 所以Transaction_Products並不符合第二正規化.

 

[練習8-5]

如圖8-6的Member函數相依所示, 雖然存在{mId}®{pId}和{pId}®{name},但是考慮遞移相依的定義:若存在X®Z和Z®Y,且Z不為超級鍵,則稱X®Y為遞移相依。然而在本例中因為pId是Member的身分證字號,其值在該關聯裡為唯一,所以是超級鍵。因此{mId}®{name}並不是遞移相依,也就是說圖8-6的Member關聯綱目其實是滿足3NF的。

 

[練習8-6]

Transaction

交易編號

tNo

產品編號

pNo

數量

amount

單價

unitPrice

報價單編號

invNo

c01

bk001

3

500

A

c01

bk200

2

400

A

c01

cd100

5

350

A

c01

vcd888

3

450

A

c01

bk005

1

250

A

BCNF:

Transaction1

報價單編號

invNo

商品編號

pNo

數量

amount

單價

unitPrice

A

bk001

3

500

A

bk200

2

400

A

cd100

5

350

A

vcd888

3

450

A

bk005

1

250

 

Transaction2

報價單編號

invNo

交易編號

tNo

A

c01

 

[ Ch09 ]

[練習9-1]

(1)和(3)都是主記憶體與硬碟交換資料,速度較慢。(2)則是CPU處理主記憶體裡的資料,速度最快。

 

[練習9-2]

檢查資料字典後, 發現 Product 資料表的第一個資料頁在 P3 ,於是先載入 P3 資料頁,該頁裡並不含 v01888 的產品資料,但存有第二個資料頁的頁數( P15 ),於是接下來載入 P15 資料 頁,此資料頁裡即有所要的資料,因此結束搜尋。所以共需載入二個資料頁。

 

[練習9-3]

每一個中間節點平均有147×0.69 101個節點指標

每一個葉節點平均有136×0.69 93 個記錄指標。

對於三層的B+-tree,我們可以計算如下:

 

 

總節點數

總指標數

第一層中間節點

1

101

第二層中間節點

101

101×101=10201

第三層葉節點

10201

10201×93=948,693

 

[練習9-4]

索引頁的造訪: n1 à n3 à n9 ,由 n9 可找出所要的記錄指標,並根據該記錄指標找出資料頁 p9 ,其中內含符合條件( unitPrice = 700 )的記錄 。所以共造訪了四個硬碟頁。

 

[練習9-5]

索引頁有n1, n2, n5, n6, n7, n8共6個,資料頁則有p9, p15, 和p3共3個。所以共需抓取9個硬碟頁。

 

[練習9-6]

要搜尋( ‘book', 250 ),先找 n1, 由於該索引裡 unitPrice 是由大排到小,而 250 < 500 ,所以接下來找 n3 ,由於 pName 是由小排到大且 'book' < ‘CD' ,所以接下來找 n7 。至此,可以發現沒有( ‘book', 250 )這筆記錄。所以共造訪三個節點。

 

[練習9-7]

我們先找’台北市’,會找到(Pr1, 1)和(Pr3, 1),再找’中華’,會找到(Pr1, 4), (Pr2, 4), (Pr4, 4),由於本題不要求 兩字串的確切距離,因此可找到 Pr1 合乎條件 。

 

 

[ Ch10 ]

[練習10-1]

此時該SQL指令便不會執行,也因此rs裡不會有值。

 

[練習10-2]

 

[一. 初始查詢樹]

[二. 將SELECT的動作往下移,盡量接近葉節點]

[三. 將條件較嚴格的SELECT中間節點盡量往左邊移]

[ . 將相鄰的×中間節點 和 σ中間節點合併成一個中間節點 ]

 

 

[五. 將PROJECT的動作往下移,盡量接近葉節點(或SELECT的中間節點)]

 

 

[練習10-3]

索引頁:n1, n3, n8, n9

資料頁:p15, p3, p9

 

[練習10-4]

索引頁:n1, n3, n8

資料頁:p2, p3

 

[練習10-5]

n1, n2, n6

 

[練習10-6]

利用選擇幅度小的屬性之索引其成本較低。以本例來說, catalog='Book' 的選擇幅度為 1000 ,而 unitPrice>500 的選擇幅度則為 50,000 。

 

 

[ Ch11 ]

[練習11-1]

內部迴圈。

 

[練習11-2]

n1 , n2 , n4 , n5 , n6 , n7 , n8 , n9。

 

[練習11-3]

K> 571時。

 

[練習11-4]

  PR1 , PS1 , PR2 , PS2 , PR3 , PS3 , PR4

 

[練習11-5]

  PS1 , PR1 , PR2 , PS2 , PR3 , PS3

 

[練習11-6]

  bProduct2+2rProduct2+bProduct1+rProduct1 =2,000+80,000+3,000+60,000=145,000

所以成本較低。

 

[練習11-7]

  ( AL ) : P3 , P15 , P9

( AI ) : n1 , n2 , n4 , n5 , n6 , n7 , n8 , n9


[練習11-8]

  此時只要沿著 B + -tree 右邊節點指標可 找到最右邊的葉節點,裡頭即包含 Max ( unitPrice ),故造訪的索引頁有 n1 , n3 , n9 。


[練習11-9]

  catalog 上,因分群屬性是 catalog 。此時只要將 Product 的資料頁造訪一遍,即可計算出個類商品的平均定價,因此成本為 bProduct =5,000 。

 

[ Ch12]

 

[練習12-1]

若是 ( 第 11 行 )T2 最後 commit ,則造成更新遺失的問題和無法重複讀取的問題,原因如下:
假設 X 和 Y 的初始值均為 100 ,則最後執行的結果為 X=110 ,故有更新遺失的問題。且第 5 行 T1 所讀取到 Y 的值為 100 ,但第 9 行 T1 再次讀取到 Y 的值卻變為 110 ,故有無法重複讀取的問題。
若是 ( 第 11 行 )T2 最後 abort ,則造成污染讀取的問題,因為第 9 行 T1 讀取到 Y 的值為 110 。

 

[練習12-2]

若要將這個交易所修改過的資料寫回硬碟,需寫入 3 個硬碟頁。而由於一個交易的系統追蹤記錄所佔的空間通常極小(大部分情況下可完全放在一個硬碟頁裡),將該交易的系統追蹤記錄寫入硬碟的成本通常遠較將該交易所修改過的資料寫回硬碟的成本來的低。

 

[練習12-3]

嚴格的排程一定是無連鎖駁回的排程,而無連鎖駁回的排程也一定是可復原的排程。

 

[練習12-4]

共有 n ! 個。

 

[練習12-5]

其可順序圖如下,由於存在著迴圈,因此是不可順序的排程。

 

[練習12-6]

假設一個資料頁 p1 裡有 4 筆記錄: r1, r2, r3, 和 r4 。若一個交易 T1 需抓取 r1, r2, 和 r3 ,則直接鎖定 p1 可減少取得鎖定的運算。但若有另外一個交易 T2 要寫入 r4 ,則因 p1 的鎖定狀態已經被 T1 設成 SHARED_LOCKED , T2 便需等待 直到 p1 的 鎖 定狀態被改成 UNLOCKED 為止 。因此如果一個交易鎖定的資料項是大單位,好處是減少取得鎖定的運算,缺點則是可能造成的其他交易的不必要等待。

 

 

[ Ch13]

[練習13-1]

Teacher 屬性: pId , name , sex , level , tId , dept
Student 屬性: pId , name , sex , sId , major , degree

 

[練習13-2]

 

[練習13-3]

表示一位創作者可同時是藝術家( artist ) , 作家( author ) ,和演員( actor ) 。

 

[練習13-4]

表示一位客戶可同時從事存款和貸款業務,存款戶可同時有定存,支票,和儲蓄帳戶。一位貸款戶可同時有動產和不動產貸款。一位不動產貸款戶則可同時有土地和建物貸款。


[練習13-5]

VIPAccount , cdDate , cdAmount , cdRate , history , eYear , eDate , eRate , eHist , guarantor , loanHist , loanNo , cId , name , account , startDate 。

 

[練習13-6]

代表所謂的理財戶必須同時具備銀行股東和貴賓專戶兩種身分。

 

[練習13-7]

UML:

M:N:

(min,max):

 

 

 

 

[ Ch14]

[練習14-1]

圖書館有一本書,書名是 ” 如何當個稱職的職場新鮮人 ” ,索書號是 423.21 8744 ,作者是張大頭和李大炮,由想像出版社於民國 93 年在台北發行,定價為 400 。

 

[練習14-2]

<?xml version = "1.0"?>
<!—A DTD example -->
<!DOCTYPE library_books [
 <!ELEMENT library_books (book+)>
 <!ELEMENT book (call_number, title, author+, publish)>
 <!ELEMENT call_number (#PCDATA)>
 <!ELEMENT title (#PCDATA)>
 <!ELEMENT author (#PCDATA)>
 <!ELEMENT publish EMPTY>
 <!ATTLIST publish company CDATA>
 <!ATTLIST publish year CDATA>
 <!ATTLIST publish place CDATA>
]>

 

[練習14-3]

1. 總圖書館沒有 branchID ,而 branchID 是必須的( REQUIRED )。且總圖書館欠缺 address 元素。
2.“ 如何管理資料庫 ” 這本書的所在圖書分館的 branchID 是 b3 ,但該分館並不存在。

 

[練習14-4]

<?xml version =“ 1.0” ?>
<schema targetNamespace="http://www.mis.nsysu.edu.tw/db-book/lib-books/"
Xmlns:lib-books="http://www.mis.nsysu.edu.tw/db-book/lib-books/"
xmlns="http://www.w3.org/2001/XMLSchema">
 
<element name =“library_books” type=”lib-books:bookType” />
<complexType name=“bookType”>
<sequence>
<element name = “call_number” type = “string”/>
<element name = “title” type = “string”/>
<element name = “author” type = “string” maxOccurs=“unbounded”/>
<element name = “publish” type = “lib-books:publishType”> <element name = “price” type = “positiveInteger”/>
</sequence>
</complexType>
<complexType name=“publishType”/>
<sequence>
<attribute name = “company” type = “string”/>
<attribute name = “year” type = “string”/>
<attribute name = “place” type = “string”/>
</sequence>
</complexType>
</schema>