Contents

1 譬螻 蟆一
2 BCNF?
3 BCNF 襯 所 豢 覦覯
4 BCNF 蟆磯
5 覲企[1]
6 蠏 XML
7 XML

襷 一危磯伎れ 蠏 C語伎 誤(*) 螳 覯 蟆企. 襷 れ C語企ゼ 螻給り 誤一 譬 手, 一危磯伎れ 蠏 譬 蟆企. 蠏朱 襷 豌企 企れ碁 蠏襯 る 襷 襷れ 企れ 蟆 れ企. る伎 蠍磯 襷襷豺 . 襷 蠏 る 覲伎伎-貊 蠏[2]朱 襦 螻 伎 . 覃 覿覿 蟆曙 BCNF襷 企 95 螻, 螳豌企 襷れ 所鍵 覓語企. 谿蠏狩 危エ覲伎.

1 譬螻 蟆一 #

y = f(x)
f(x) = x2
y = 4 朱, x = 2 or -2

伎 螻 り 螳螻, y螳 手企朱, y螳 譬願 x 蟆一企. 覃 f(x) x螳 2 -2襦 y螳 4 x螳 蟆一讌 覈詩蠍 覓語企. 讀, y=4 蟆曙 x 螳 2 -2 襦 牛 . 企 x 螳 2語 -2語 蟆一 襷. 襷 x=3企朱 y螳 9螳. 讀, y螳 x螳 蟆一. 譬 [3]

x -> y


螻 螳 螻, "y x 朱 譬. 蟆一 x願, 譬 y企." 手 伎手鍵 覃 . y 螳 4螳 蟆 x=2,-2 f() 伎 蟆一 る 蟆襷 覃 BCNF 95% 襭.

る れ. 襯 れ, 企 蟆 譯朱朱語 企 螳 螻螳朱覿 ルり 螳. 覩手記 蟲 螳讌 企. 企螻 譯朱朱 伎 蟯螻 '企' 螳 企 譟伎 朱襦 '企' 螳讌螻 譯朱朱碁ゼ 谿場 (覲 ) . 讌襷 譯朱朱碁 企 . 蠍一 譯朱朱碁 蟆一企, 企 譯朱朱語 朱 譬.

2 BCNF? #

BCNF "覈 蟆一[4]螳 覲危れ企 BCNF企"螳 企. 覲危る 譯狩り 覲願 れ企. 覲危れ語 讌襯 一碁慨る 讌 一危磯ゼ 覲願碓 覓 蠏豺 殊[5]襷 覲伎ル 貉殊企 貉殊 譟壱企 . 願 BNCF 覿. , 蠍磯蓋 貉[6] 3螳 伎 蟆曙磯 BCNF .

3 BCNF 襯 所 豢 覦覯 #

れ朱 f(x)螳 企至 蟆襾轟讌 谿場企 蟆 殊 讌襷 れ螻 螳 襦 蠏狩覃 所 BCNF襯 豢 .

  1. 蟆 貉朱れ 覯譯狩 . (壱一 螳 る 企 BCNF 企.)
  2. 譴覲旧 る.(覦覲糾係襭轟 蟆 谿場 る) , 譴覲 蟇 螻殊 譴 一危一 れ 覦伎 .

讌 襯 れ伎 BCNF襯 豢 覲企襦 . れ螻 螳 企[7] .

螳り骸覈覈螳覈螳ろ螻
100 蟾譴3 DB 3
200 碁危3 蠍壱 3 螳螳谿
200 碁危3 襦企 2 螳螳谿
300 2 螻襴讀 3 譟一襭
400 伎豪3 螻襴讀 3 譟一襭
400 伎豪3 DB 3

(1) 覯譯狩
  • (覯, 覈, , 螻)
  • 螳り骸覈(螳り骸覈覈, , 螳覈, 螳ろ螻)

(2) 覲危 讌
  • 覲危: (覯)
  • 螳り骸覈 覲危: (螳り骸覈覈, 螳覈, 螳ろ螻)?, (螳り骸覈覈, 螳覈)?, (螳り骸覈覈, 螳ろ螻)?, (螳覈, 螳ろ螻)?

覿覿 螳り骸覈 り襴蠍 . 螳 蟆豌 企 蟆 覲危れ語 覈蟆 讌 . 企 蟆曙一 螳螳 蟆曙一 伎 譴覲給 螳 覦讌襯 危エ覲企 . 螳り骸覈 蟆一 蟆 ろ覩襦 蟆郁骸襷 覦襦 蟆.

螳り骸覈覈螳覈螳ろ螻
DB
蠍壱 螳螳谿
襦企 螳螳谿
螻襴讀 譟一襭
螻襴讀 譟一襭 <-- Row 觜朱 一危一 れ .
DB <-- Row 觜朱 一危一 れ .

朱 螳り骸覈 狩蟆 襷れ企慨覃 螳覈螻 螳ろ螻殊 覦覲糾係襭轟 譟伎 蟆 . 襷 螳覈 狩蟆 襷る '螳螳谿' 螳螳 螳襯伎 螻朱 '襦企' '蠍壱'譴 螳 伎蟆 . 螳り骸覈 豌願 伎 蟆朱 一危一 [8] 殊企蟆. 螳ろ螻殊 狩蟆 襷れ企 襷谿螳讌螳 . 蠏碁 螳り骸覈 狩蟆 襷れ企 螳覈螻 螳ろ螻殊 覲企 殊讌 る 蟆 .

螳り骸覈覈螳覈螳ろ螻
DB
蠍壱 螳螳谿
襦企 螳螳谿
螻襴讀 譟一襭

伎 ろ. 朱 螳り骸覈覈 狩伎朱 襾語 螳覈螻 螳ろ螻殊 狩蟆 襷れ伎 螳覈 覦 螳ろ螻殊 一危郁 る讌 蟆 覃 . 豌朱 螳 れ螻 螳 覃 .

螳覈螳ろ螻
螳螳谿
螳螳谿<-- Row 觜朱 一危一 れ .
譟一襭
譟一襭 <-- Row 觜朱 一危一 れ .
<-- Row 觜朱 一危一 れ .

伎 螳 企 襷れ伎. 螳覈 狩蟆 襷る 螳ろ螻殊 一危磯 殊讌 . 讌襷 螳ろ螻朱ゼ 狩蟆 襷る 螳 一危郁 殊蟆 . 覦蠑語 襷覃 '螳螳谿' 螳螳 伎覃 螳ろ螻殊 一危一 '蠍' 殊 覩誤. 讀, 螳ろ螻殊 一危磯ゼ 企Μ螻 譯曙企 蟆[9] 螳覈 蟆企.

螳覈螳ろ螻
螳螳谿
譟一襭

蠏碁覩襦 覲伎 (螳り骸覈覈, 螳覈, 螳ろ螻) 螳ろ螻朱 觜碁 螳覈 牛伎 螳ろ螻朱ゼ 蟆 . 蟆磯朱 螳 覿企 BCNF螳 .

100 蟾譴3
200 碁危3
300 2
400 伎豪3

螳り骸覈覈螳覈
DB 3
蠍壱 3 螳螳谿
襦企 2 螳螳谿
螻襴讀 3 譟一襭

螳覈螳ろ螻
螳螳谿
譟一襭

4 BCNF 蟆磯 #

蠏 蟠蠏轟朱 一危磯伎れ '一危 譴覲旧 豕' 豺 磯ジ. 一危一 譴覲旧 一朱 覿 豌襴觜 螻, 螳讌 伎 れ 蟇壱 一危一 覿殊 覓願屋煙 蟲滑唄 讌る 豕螻 蟲. 螻豺 企 譟郁 る讌襷 蟆磯朱 覲企 覯譯狩襯 螻, 譴覲旧 企 覦覯願唄 螳 覃 . 覈 谿 蠏螳 譴 蟆 一危一 譴覲糾骸 伎 蟇壱 蟆 譴 蟆企.

5 覲企[10] #

譟郁 願碓讌螳 . 螻朱企 螻, 螳ろ螻手 . 願 れ襦 碁(蟯螻 朱Μ ) 襷谿螳讌企. 螳り骸覈 碁れ願, 企 企 螳覈 碁れ伎 譯狩れ 朱螳 . 覈碁 る 螳豌, 蟯螻, 煙 螳襷 覈る 蠏 譯 襾濠鍵. れ 一危 覈碁 覲碁る れ 蠏碁手骸 螳 覈 蟆企. (煙 豢 蟆襷 l.)

bcnf_erd.jpg

6 蠏 XML #

XML 蠍 讌 蟒 る. XML企 企ゼ 1999 豌 朱, 讌蠍蟾讌 螳 . XML 覦蟲譟一企. 覦襷 蟲譟一企朱 詞企. 襯 れ れ螻 螳 企 蟲譟磯ゼ 覲伎.

企蟲譟1
ル1ル2ル3ル4
1蟲伎蠍讌蟆谿覩語
.
.
.
.
.
.
.
.
.
.

企 蟲譟一 レ 襦磯ゼ 蠏狩讌 一危一 豌襴螳 螳ロ 蟆 覦 . 襷 轟 危襴貅伎 譬朱 り 蟆企. 企 蟲譟磯 覈蟆 1谿 蠏 覦磯 讌襷 る伎朱 覺れ 蟇願 企 . 'ル'朱 れ螳 朱 シ豎 訖企. 蠏碁覩襦 蟲螻殊 る 觜蠏 企螻 螳 蟲譟一 螳り .

企蟲譟2
ル1
ル2
ル3
ル4

蠏碁 覃語 企 企蟲譟1 1谿 蠏 覦一企. 伎 覓語 煙 螳 譟伎 れ螳 煙 覓語企. '企蟲譟1'螻 螳 り襯 蟆曙 轟 焔レ 譬讌 覈襯願朱 覿覿 覲 豬渚. 一危磯伎る 蟯 覈 レ 谿場 蠍 覓語 譬讌 . 襷 ル5 れ伎る 伎 蟆瑚? 覓願 覲り 企 蟲譟郁 覲 蟆 豌願 覓語 蟆企. 覃 企 譬 危襴貅れ 覈 覲蟆暑 螳レ煙 蠍 覓語企. 一危磯伎 蟯 覲企 貉 1螳襯 豢螳 殊伎襷 ろ 豌企ゼ 螻 覺れ 觜るゼ 譴伎 螻 蟯企´ 蠍 覓語企. 企 讌覲伎 觜 讀螳.

蠏碁り 覓伎^蟇 '企蟲譟1' る 蟆 . 襷 磯殊 豕 襭 . 伎 碁企 ろ螳 譟伎蟆 . 蠏碁 企 蟆曙 覦蟲譟一 覦覯[11] 螳 覲 . れ XML 伎 蟆企. 蠏碁覃 覲 焔レ 覈 襷譟燕 蟆企. 襯 る れ螻 螳 蟆曙磯.

use tempdb
go

create table test(貊 int, ル xml);
insert test values(1, '<ル>蟲伎蠍</ル><ル>讌蟆谿</ル><ル>覩語</ル><ル></ル>');

select
	貊
,	ル.value('/ル[1]', 'varchar(10)') ル1
,	ル.value('/ル[2]', 'varchar(10)') ル2
,	ル.value('/ル[3]', 'varchar(10)') ル3
,	ル.value('/ル[4]', 'varchar(10)') ル4
from test;

/*
貊      ル1   ル2   ル3   ル4
----------- ---------- ---------- ---------- ----------
1           蟲伎蠍       讌蟆谿      覩語                

(1螳  )
*/

譬讌 螳?

7 XML #


declare @x xml
set @x='<ManuInstructions ProductModelID="1" ProductModelName="SomeBike" >
<Location LocationID="L1" >
  <Step>1</Step>
  <Step>2</Step>
  <Step>3</Step>
</Location>
<Location LocationID="L2" >
  <Step>4</Step>
  <Step>5</Step>
  <Step>6</Step>
</Location>
</ManuInstructions>'
SELECT @x.query('
   for $step in /ManuInstructions/Location[1]/Step
   return $step
')


--/ManuInstructions/Location[1] "[1]"螳  譯朱
declare @x xml
set @x='<ManuInstructions ProductModelID="1" ProductModelName="SomeBike" >
<Location LocationID="L1" >
  <Step>1</Step>
  <Step>2</Step>
  <Step>3</Step>
</Location>
<Location LocationID="L2" >
  <Step>4</Step>
  <Step>5</Step>
  <Step>6</Step>
</Location>
</ManuInstructions>'
SELECT @x.query('
   for $step in /ManuInstructions/Location/Step
   return $step
')