You are on page 1of 556

ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí

Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ


ÉùÜííçò Ìáíùëüðïõëïò Áðüóôïëïò Í. Ðáðáäüðïõëïò

ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí


Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ

ÁÈÇÍÁ
Óôïõò ãïíåßò ìáò:

Åõáããåëßá Ìáíùëïðïýëïõ
Íéêüëáï Ðáðáäüðïõëï
Óôáõñïýëá Ðáðáäïðïýëïõ

5
Óôç ìíÞìç ôïõ Ðáíáãéþôç Ìáíùëüðïõëïõ

Ç íåêñþóéìç ðïìðÞ ïäåýåé ðñïò ôïí ôÜöï. ÁíÜìåóá óôá ãíùóôÜ êáé áãá-
ðçìÝíá ðñüóùðá, ï ¢ããåëïò îå÷ùñßæåé êÜðïéïõò ìáêñéíïýò óõããåíåßò ðïõ ïýôå
êáí èõìÜôáé ôá ïíüìáôÜ ôïõò. Ìßá èåßá, êÜôé äåýôåñá îáäÝëöéá. Ìßá ãõíáßêá
ôõëéãìÝíç ó’ Ýíá ìáíôÞëé óáí íá õðïöÝñåé áðü ìáãïõëÜäåò, ðáëéÜ ðáñáäïõëåý-
ôñá óôï óðßôé ôùí Æáöåéñßäçäùí. Äåí èõìÜôáé ôï üíïìÜ ôçò ìá äéáôçñåß æùíôáíÞ
ôç ìõñùäéÜ ôçò ðáñêåôßíçò, ôçò áëéóßâáò êáé ôïõ ðñÜóéíïõ óáðïõíéïý. Ôé íá
ãõñåýåé óÞìåñá åäþ; Åßíáé ìåñéêïß Üíèñùðïé ðïõ üôáí Ý÷ïõí äïõëÝøåé óå óðß-
ôéá ðïõ ôïõò óåâÜóôçêáí, îáíáãõñßæïõí ó’ áõôÜ ìå ôç íïóôáëãßá ôçò íåüôçôáò,
ôçò áèùüôçôáò, ôçò áöïóßùóçò ðïõ ôåßíåé íá åßíáé Ýííïéá îåðåñáóìÝíç. Ôüôå ïé
Üíèñùðïé áõôïß ãßíïíôáé ðéï óõããåíéêïß êáé áðü ôïõò ßäéïõò ôïõò óõããåíåßò. Êé
áêüìá îå÷ùñßæåé êÜðïéïõò áíèñþðïõò, öéãïýñåò áìõäñÜ ãíùóôÝò áðü Ýíá ðá-
ñåëèüí áìõäñü êé áõôü. Ðñüóùðá ôçò ÁñéóôåñÜò, ðáëéïß óõíáãùíéóôÝò Þ áðëÜ
óõìðáèïýíôåò. ¢íèñùðïé ÷ùñßò ïößêéá, íáõáãéóìÝíïé. Êé áò Ý÷åé ðñï ðïëëïý
îåðåñÜóåé ôï óýíäñïìï ôïõ áñéóôåñïý äéáíïïýìåíïõ ðïõ êÜðïôå ôáëáéðþñçóå
áñêåôÜ ôç ëïãïôå÷íßá − üôáí äåí ôçí äüîáóå óå óôéãìÝò ìåãÜëçò Ýîáñóçò −, ï
¢ããåëïò íïéþèåé ìéá óõìðÜèåéá ãé’áõôÜ ôá ðñüóùðá êáé ìßá ëýðç. ¼ðùò ëõðÜ-
ôáé üëïõò áõôïýò ôïõò ðïëßôåò ôçò ÁíáôïëéêÞò Åõñþðçò ðïõ áðü ôçí ìéá ìÝñá
óôçí Üëëç Ýìåéíáí ü÷é ìüíï ÷ùñßò éäåïëïãéêÞ êÜëõøç êáé ðßóôç áëëÜ êáé ÷ùñßò
äïõëåéÜ. ËõðÜôáé ðïõ ï äõôéêüò êïìðáóìüò êáé ç ñçôïñåßá ôïõ ÷ñÞìáôïò Ýìåé-
íáí ÷ùñßò áíôßðáëï äÝïò. ËõðÜôáé ðïõ üëá ôåëåßùóáí ôüóï Üäïîá. ÅâäïìÞíôá
÷ñüíéá ëÜèïò æùÞ. Äåí åßíáé ëßãï. ÊáçìÝíç ÌÜ÷ç! Ãé’ áõôü êáé ï êüóìïò ðïõ
áêïëïõèåß ôïõ öáßíåôáé åëÜ÷éóôïò óõãêñéôéêÜ ì’ áõôü ðïõ áíôéðñïóùðåýåé ôïýôï
ôï îüäé. ÓÞìåñá äåí êçäåýåôáé ç ÌÜ÷ç Æáöåéñßäç. Åßíáé ìßá éäÝá êáé ìßá åðï÷Þ
ðïõ îåðñïâïäßæïõí óÞìåñá. ¸íá üñáìá ðïõ ìðïñåß íá åß÷å óôñáâÞ åöáñìïãÞ,
ðïõ ßóùò íá ðñïäüèçêå, áëëÜ ôï ïðïßï óôéãìÞ äåí Ýðáøå íá åßíáé ðÜèïò, Ýíá
ðÜèïò ðïõ ÷ñüíéá ôþñá óéãïêáßåé óôéò êáñäéÝò ôùí áíèñþðùí. Áõôü êçäåýïõí
óÞìåñá.

ÌÝíçò ÊïõìáíôáñÝáò
Äýï öïñÝò ¸ëëçíáò, 2001

7
Äõï ëüãéá ãéá ôïõò óõããñáöåßò...

ÉùÜííçò Ìáíùëüðïõëïò. Óôéò 2 Áðñéëßïõ 2007 èá ãéïñôÜóåé ôá ðåíôçêïóôÜ ãåíÝ-


èëéÜ ôïõ. Ïñêßóèçêå Äéðëùìáôïý÷ïò Çëåêôñïëüãïò Ìç÷áíéêüò ôïõ ÁÐÈ óôéò 4
Äåêåìâñßïõ 1981, ÄéäÜêôïñáò óôï ßäéï ôìÞìá óôéò 6 Íïåìâñßïõ 1986 êáé Êáèç-
ãçôÞò ôïõ ÔìÞìáôïò ÐëçñïöïñéêÞò ôïõ ÁÐÈ óôéò 25 Éïõëßïõ 2000. Íõìöåýèçêå
ôç Èåïðïýëá ÐåôêÜêç óôéò 19 Éáíïõáñßïõ 1991, åíþ ç Êáôåñßíá ãåííÞèçêå óôéò
13 Íïåìâñßïõ 1991 êáé ï Ðáíáãéþôçò óôéò 27 ÌáÀïõ 1997. Áðü ôéò 3 ÌáÀïõ 2000
Ý÷åé áðïêôÞóåé éäéáßôåñï íüçìá ôï ôñáãïýäé "The living years" ôùí Mike and the
mechanics, åíþ áîåðÝñáóôï ðáñáìÝíåé ôï ôñáãïýäé "I’d love to change the world"
ôùí Ten years after. Óôï ðáèçôéêü ôïõ Ý÷ïõí êáôáãñáöåß: 4 ìïíïãñáößåò óôá áã-
ãëéêÜ, 6 âéâëßá óôá åëëçíéêÜ, 170 ðåñßðïõ åñãáóßåò óå ðåñéïäéêÜ êáé óõíÝäñéá,
1100 ðåñßðïõ áíáöïñÝò óôï Ýñãï ôïõ áðü 200 ðåñßðïõ áêáäçìáúêÝò êáé åñåõ-
íçôéêÝò ïìÜäåò, ç óõìâïëÞ óôç äéïñãÜíùóç 11 äéåèíþí óõíåäñßùí/óõíåäñéþí, ç
óõììåôï÷Þ óå 60 ðåñßðïõ åðéôñïðÝò äéåèíþí êáé åèíéêþí óõíåäñßùí êáé 10 äéäÜ-
êôïñåò õðü ôçí åðßâëåøÞ ôïõ.

Áðüóôïëïò Í. Ðáðáäüðïõëïò. ÃåííÞèçêå óôçí Åëåõèåñïýðïëç ÊáâÜëáò óôéò


21 Óåðôåìâñßïõ 1971 (ðüôå ðÝñáóáí ôá ÷ñüíéá!). Åßíáé áðüöïéôïò ôïõ ÔìÞìáôïò
Ìç÷áíéêþí Ç.Õ. êáé ÐëçñïöïñéêÞò ôçò Ðïëõôå÷íéêÞò Ó÷ïëÞò ôïõ Ðáíåðéóôçìßïõ
Ðáôñþí (1994) êáé êÜôï÷ïò äéäáêôïñéêïý äéðëþìáôïò áðü ôï ÔìÞìá Ðëçñïöï-
ñéêÞò ôïõ Á.Ð.È. (2000). Áðü ôï ÍïÝìâñéï ôïõ 2003 åßíáé ËÝêôïñáò óôï ÔìÞìá
ÐëçñïöïñéêÞò ôïõ Á.Ð.È. êáé åõåëðéóôåß óýíôïìá íá ãßíåé Åðßêïõñïò. Ðñïò ôï
ðáñüí äåí õðÜñ÷åé ïýôå Êáôåñßíá ïýôå Ðáíáãéþôçò, áëëÜ åëðßæåé íá áó÷ïëçèåß
ìå áíôßóôïé÷á projects óôï Üìåóï ìÝëëïí. ÁãáðçìÝíá ôïõ ôñáãïýäéá ôï "Master
of puppets" ôùí Metallica, ôï "Hunting high and low" ôùí Stratovarius, ôï "Tears of
the dragon" ôïõ Bruce Dickinson êáé ôï "×ùñßò áíáðíïÞ" ôïõ ×áôæçãéÜííç. Óôï
ðáèçôéêü ôïõ Ý÷åé 2 îåíüãëùóóåò ìïíïãñáößåò, 2 Üñèñá óå âéâëßá êáé åãêõêëï-
ðáßäåéåò, 7 Üñèñá óå ðåñéïäéêÜ, 23 Üñèñá óå óõíÝäñéá êáé ðåñßðïõ 200 áíáöïñÝò
óôï åñåõíçôéêü Ýñãï ôïõ. Ôá åñåõíçôéêÜ ôïõ åíäéáöÝñïíôá åßíáé: ÷ùñéêÝò êáé
ðïëõìåóéêÝò âÜóåéò äåäïìÝíùí, âÜóåéò ñïþí äåäïìÝíùí, åîüñõîç äåäïìÝíùí êáé
áíÜêôçóç ðëçñïöïñßáò.

9
Ðñüëïãïò
Ç Ýñåõíá êáé áíÜðôõîç óôï ÷þñï ôùí ÂÜóåùí ÄåäïìÝíùí åßíáé åíåñãÞ åäþ
êáé áñêåôÝò äåêáåôßåò, áðü ôç óôéãìÞ ðïõ ç áõôïìáôïðïéçìÝíç áðïèÞêåõóç êáé
äéá÷åßñéóç ìåãÜëïõ üãêïõ ðëçñïöïñéþí Ýãéíå áíáãêáßá. Óôï âéâëßï áõôü ðåñé-
ãñÜöïíôáé êáé áíáëýïíôáé ôá óçìáíôéêüôåñá èÝìáôá ðïõ áöïñïýí óôéò ÂÜóåéò
ÄåäïìÝíùí. Åßíáé åõíüçôï, üôé ëüãù ôçò ôåñÜóôéáò Ýêôáóçò ôçò ðåñéï÷Þò äåí åßíáé
äõíáôüí íá êáëõöèïýí óå âÜèïò üëá ôá èÝìáôá. Ùóôüóï, Ýãéíå ðñïóðÜèåéá þóôå
íá êáëõöèåß ôï ìåãáëýôåñï ôìÞìá ôçò ðåñéï÷Þò áõôÞò, äßíïíôáò Ýìöáóç ôüóï óôç
èåùñßá üóï êáé óôçí ðñáêôéêÞ åöáñìïãÞ. Óôü÷ïò ìáò åßíáé ôï âéâëßï íá áðïôåëÝ-
óåé ðïëýôéìï âïÞèçìá óå öïéôçôÝò ÐëçñïöïñéêÞò, óå åñåõíçôÝò ìå åíäéáöÝñïí
ãéá ôï ÷þñï ôùí ÂÜóåùí ÄåäïìÝíùí êáé óå åðáããåëìáôßåò ðïõ åíäéáöÝñïíôáé
ãéá ôç èåùñßá êáé ôçí ðñáêôéêÞ åöáñìïãÞ ôùí ÂÜóåùí ÄåäïìÝíùí.
Ãéá ôçí åðßôåõîç ôïõ óôü÷ïõ êñßèçêå áðáñáßôçôç ç ÷ñÞóç åíüò óýã÷ñïíïõ
ÓõóôÞìáôïò Äéá÷åßñéóçò ÂÜóåùí ÄåäïìÝíùí Ýôóé þóôå íá ãßíåôáé êáôáíïçôüò ï
ôñüðïò ÷ñÞóçò ôùí åêÜóôïôå ìåèüäùí óå Ýíá ðñáãìáôéêü óýóôçìá. ÅðéëÝîáìå
ôç ÷ñÞóç ôïõ óõóôÞìáôïò Microsoft SQL Server 2000, ðïõ áðïôåëåß Ýíá ïëïêëç-
ñùìÝíï êáé äéáñêþò åîåëéóóüìåíï óýóôçìá äéá÷åßñéóçò ìå ðïëëÝò äõíáôüôçôåò.
Óå êÜèå ôìÞìá ôïõ âéâëßïõ êáé ìåôÜ ôçí áíÜëõóç ôçò áíôßóôïé÷çò èåùñßáò, ðå-
ñéãñÜöåôáé ï ôñüðïò åöáñìïãÞò ôçò óôï óýóôçìá Microsoft SQL Server 2000.
¸ôóé ðñïóöÝñåôáé Ýíá óçìáíôéêü âïÞèçìá ãéá ôçí êáôáíüçóç êáé åöáñìïãÞ ôùí
èåùñçôéêþí åííïéþí, êáé äßíåôáé ç äõíáôüôçôá óôïí áíáãíþóôç íá ãåöõñþóåé ôï
ìåãÜëï ÷Üóìá ðïõ óõíÞèùò õðÜñ÷åé ìåôáîý èåùñßáò êáé ðñáêôéêÞò åöáñìïãÞò.

Ç ÄïìÞ ôïõ Âéâëßïõ


Ôï âéâëßï áðïôåëåßôáé áðü ôÝóóåñá ìÝñç. ÊÜèå ìÝñïò äéá÷ùñßæåôáé óå êåöÜëáéá,
ôï êáèÝíá áðü ôá ïðïßá äéáðñáãìáôåýåôáé êáé Ýíá óõãêåêñéìÝíï èÝìá. Óôï ôÝëïò
êÜèå êåöáëáßïõ äßíïíôáé åðáíáëçðôéêÝò åñùôÞóåéò êáé áóêÞóåéò, ç åðßëõóç ôùí
ïðïßùí êñßíåôáé áðáñáßôçôç ãéá ôçí áöïìïßùóç ôçò èåùñßáò.
Óôç óõíÝ÷åéá ðáñïõóéÜæåôáé ç äéÜñèñùóç ôïõ âéâëßïõ. ¸ãéíå ðñïóðÜèåéá
þóôå ôï êÜèå ìÝñïò ôïõ âéâëßïõ íá åßíáé áõôüíïìï êáé íá ìðïñåß íá ìåëåôçèåß
îå÷ùñéóôÜ. Ùóôüóï, ðñïôåßíåôáé ç ìåëÝôç ôùí åííïéþí ìå ôç äåäïìÝíç óåéñÜ

11
12 Ðñüëïãïò

ðáñïõóßáóçò Ýôóé þóôå ç êáôáíüçóç íá åßíáé üóï ôï äõíáôüí ðëçñÝóôåñç.

• Óôï ÌÝñïò É ðáñïõóéÜæïíôáé ïé âáóéêÝò Ýííïéåò ôùí ÂÜóåùí ÄåäïìÝíùí.


Ôï ÊåöÜëáéï 1 áðïôåëåß ìßá åéóáãùãÞ óôçí ðåñéï÷Þ ôùí ÂÜóåùí ÄåäïìÝ-
íùí êáé ôùí ÓõóôçìÜôùí Äéá÷åßñéóçò ÂÜóåùí ÄåäïìÝíùí.
Ôá ìÝóá áðïèÞêåõóçò êáé ôá âáóéêüôåñá ÷áñáêôçñéóôéêÜ ôïõò ðåñéãñÜöï-
íôáé åêôåíþò óôï ÊåöÜëáéï 2.
Ôï ÊåöÜëáéï 3 ìåëåôÜ ôçí áñ÷éôåêôïíéêÞ åíüò óõóôÞìáôïò äéá÷åßñéóçò, åíþ
ôï ÊåöÜëáéï 4 áíáëýåé ôï äéáäåäïìÝíï ìïíôÝëï ïíôïôÞôùí-óõó÷åôßóåùí, ôï
êáô’ åîï÷Þí ÷ñçóéìïðïéïýìåíï ãéá ôç ìïíôåëïðïßçóç ìßáò ÂÜóçò ÄåäïìÝ-
íùí.
Ôï ÊåöÜëáéï 5 åéóÜãåé ôïí áíáãíþóôç óôï óýóôçìá Microsoft SQL Server
2000 êáé ðåñéãñÜöåé óõíïðôéêÜ ôá õðïóõóôÞìáôÜ ôïõ êáé ôéò äõíáôüôçôåò
ðïõ ðáñÝ÷åé ôï êáèÝíá.

• Ôï ÌÝñïò ÉÉ áöïñÜ óôéò ó÷åóéáêÝò ÂÜóåéò ÄåäïìÝíùí, ç ïñãÜíùóç ôùí


ïðïßùí óôçñßæåôáé óôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí, ôï ïðïßï ðáñïõóéÜ-
æåôáé óôï ÊåöÜëáéï 6.
¸íá áðü ôá âáóéêÜ ðëåïíåêôÞìáôá ôïõ ó÷åóéáêïý ìïíôÝëïõ äåäïìÝíùí
åßíáé ç ìáèçìáôéêÞ ðåñéãñáöÞ ôïõ ìÝóù ôçò ó÷åóéáêÞò Üëãåâñáò êáé ôïõ
ó÷åóéáêïý ëïãéóìïý. Ôá äýï áõôÜ ìáèçìáôéêÜ åñãáëåßá ðáñïõóéÜæïíôáé
óôï ÊåöÜëáéï 7.
¸íá âáóéêü âÞìá ôçò äéáäéêáóßáò ó÷åäéáóìïý ìßáò ÂÜóçò ÄåäïìÝíùí åß-
íáé ç êáíïíéêïðïßçóÞ ôçò, ðïõ óôï÷åýåé óôçí êáôÜñãçóç ôùí ðïëëáðëþí
åìöáíßóåùí ôùí äåäïìÝíùí. Ç êáíïíéêïðïßçóç, êáèþò êáé ç èåùñßá ôùí
óõíáñôçóéáêþí êáé Üëëùí åîáñôÞóåùí, óôéò ïðïßåò áõôÞ óôçñßæåôáé ìåëå-
ôþíôáé óôï ÊåöÜëáéï 8.
Ôï ÊåöÜëáéï 9 ìåëåôÜ ôç ãëþóóá åñùôçìÜôùí SQL ðïõ õðïóôçñßæåôáé áðü
üëá ôá åìðïñéêÜ ÓõóôÞìáôá Äéá÷åßñéóçò ÂÜóåùí ÄåäïìÝíùí.
ÔÝëïò, óôï ÊåöÜëáéï 10 ðåñéãñÜöåôáé ç äéá÷åßñéóç äåäïìÝíùí óôï óýóôçìá
Microsoft SQL Server 2000.

• Ôï ÌÝñïò ÉÉÉ äéáðñáãìáôåýåôáé èÝìáôá õëïðïßçóçò ôùí ÂÜóåùí ÄåäïìÝ-


íùí. Åäþ åóôéÜæïõìå óôéò ëåðôïìÝñåéåò ôïõ ôñüðïõ ïñãÜíùóçò êáé åðå-
îåñãáóßáò ôùí äåäïìÝíùí. Ôá âáóéêÜ èÝìáôá öõóéêÞò ïñãÜíùóçò ðáñïõ-
óéÜæïíôáé óôï ÊåöÜëáéï 11, åíþ óôá ÊåöÜëáéá 12 êáé 13 ìåëåôþíôáé ïé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 13

äåíäñéêÝò äïìÝò êáé ïé äïìÝò êáôáêåñìáôéóìïý áíôéóôïß÷ùò, ïé ïðïßåò ÷ñç-


óéìïðïéïýíôáé áðü ôá ðåñéóóüôåñá óõóôÞìáôá ãéá ôç ãñÞãïñç ðñïóðÝëáóç
ôùí äåäïìÝíùí.
Ï âáóéêüò óôü÷ïò åíüò ÓõóôÞìáôïò Äéá÷åßñéóçò ÂÜóåùí ÄåäïìÝíùí åßíáé
ç åðåîåñãáóßá åñùôçìÜôùí ðïõ äéáôõðþíïíôáé óõíÞèùò óôç ãëþóóá SQL.
ÅðåéäÞ ï ôñüðïò åýñåóçò ôçò áðÜíôçóçò óå Ýíá åñþôçìá äåí åßíáé ìïíá-
äéêüò, áðáéôåßôáé ôï óôÜäéï ôçò âåëôéóôïðïßçóçò Ýôóé þóôå ç áðÜíôçóç óôï
åñþôçìá íá ðñïóäéïñéóèåß áðïäïôéêüôåñá, ìåéþíïíôáò ôï ÷ñüíï åðåîåñ-
ãáóßáò. Ôá èÝìáôá âåëôéóôïðïßçóçò êáé åðåîåñãáóßáò åñùôçìÜôùí ðáñïõ-
óéÜæïíôáé óôï ÊåöÜëáéï 14.
Óå Ýíá óýóôçìá ðïõ õðïóôçñßæåé ôáõôü÷ñïíá ðïëëïýò ÷ñÞóôåò ðñÝðåé íá
õðÜñ÷åé Ýëåã÷ïò ôùí ôáõôü÷ñïíùí ðñïóðåëÜóåùí óôá äåäïìÝíá. Ï Ýëåã-
÷ïò ðñïóðÝëáóçò ðñáãìáôïðïéåßôáé ìå ôçí åöáñìïãÞ ìç÷áíéóìþí ðïõ åßôå
åðéôñÝðïõí åßôå áðïôñÝðïõí ôçí ðñüóâáóç óå Ýíá ôìÞìá äåäïìÝíùí. Ïé
ëåéôïõñãßåò ïìáäïðïéïýíôáé óå óõíáëëáãÝò êáé ôï óýóôçìá äéá÷åßñéóçò åß-
íáé õðåýèõíï ãéá ôï óõã÷ñïíéóìü ôïõò ìå óôü÷ï ôçí áðïöõãÞ êáôáóôñïöÞò
ôùí äåäïìÝíùí êáé ôç äéáôÞñçóç ôçò óõíÝðåéáò ôçò âÜóçò. Ôï óýóôçìá
ðñÝðåé åðßóçò íá åßíáé óå èÝóç íá åðáíáêôÞóåé ôá äåäïìÝíá óå ðåñßðôùóç
áðüôïìçò äéáêïðÞò ëåéôïõñãßáò (ð.÷., ëüãù âëÜâçò Þ ðôþóçò ôÜóçò). Ôá
èÝìáôá ôáõôü÷ñïíùí ðñïóðåëÜóåùí êáé åðáíÜêôçóçò äåäïìÝíùí êáëýðôï-
íôáé óôï ÊåöÜëáéï 15.
Ç áíÜãêç åöáñìïãÞò ìç÷áíéóìþí áóöáëåßáò, áí êáé ðïëëÝò öïñÝò óôï ðá-
ñåëèüí åß÷å õðïâáèìéóèåß Þ ðáñáâëåöèåß, óÞìåñá áíáãíùñßæåôáé üëï êáé
ðåñéóóüôåñï áðü åðé÷åéñÞóåéò êáé ïñãáíéóìïýò. Ç áëëáãÞ ðëåýóçò ïöåßëå-
ôáé óôéò áõîáíüìåíåò ðïóüôçôåò êñßóéìùí åôáéñéêþí äåäïìÝíùí ðïõ áðïèç-
êåýïíôáé óÞìåñá óôéò âÜóåéò äåäïìÝíùí êáé óôçí áðïäï÷Þ üôé ïðïéáäÞðïôå
áðþëåéá Þ ìç äéáèåóéìüôçôá ôùí äåäïìÝíùí áõôþí èá ìðïñïýóå íá Ý÷åé
ïëÝèñéá áðïôåëÝóìáôá. ÊáôÜ óõíÝðåéá, ôá óõóôÞìáôá ÂÜóåùí ÄåäïìÝ-
íùí ðñÝðåé íá áóöáëéóèïýí êáôÜëëçëá ãéá ôçí áíôéìåôþðéóç åíäå÷üìåíùí
ðñÜîåùí íïèåßáò Þ êëïðÞò, ïé ïðïßåò ìðïñåß íá ïäçãÞóïõí óå áðþëåéá
ôçò åìðéóôåõôéêüôçôáò, ôçò áêåñáéüôçôáò Þ ôçò äéáèåóéìüôçôáò ôùí áðï-
èçêåõìÝíùí äåäïìÝíùí. Ôï ÊåöÜëáéï 16 åßíáé áöéåñùìÝíï óôá èÝìáôá
áóöÜëåéáò ôùí ÂÜóåùí ÄåäïìÝíùí.
Ôï ÊåöÜëáéï 17 ðåñéãñÜöåé ôá èÝìáôá õëïðïßçóçò ôïõ SQL Server 2000
äßíïíôáò Ýìöáóç óôá èÝìáôá ðïõ áíáëýïíôáé óôá ÊåöÜëáéá 11 Ýùò 16.

• Óôï ÌÝñïò IV ôïõ âéâëßïõ ìåëåôþíôáé åéäéêÜ èÝìáôá ÂÜóåùí ÄåäïìÝíùí,


ôá ïðïßá Ý÷ïõí áðáó÷ïëÞóåé ôïõò åñåõíçôÝò ôá ôåëåõôáßá ÷ñüíéá. Ïé óýã-
14 Ðñüëïãïò

÷ñïíåò åöáñìïãÝò Ý÷ïõí ðïëý ðåñéóóüôåñåò áðáéôÞóåéò óå ó÷Ýóç ìå ôéò


ðáñáäïóéáêÝò, ìå áðïôÝëåóìá ïé ó÷åóéáêÝò ÂÜóåéò ÄåäïìÝíùí íá êñßíï-
íôáé áíåðáñêåßò ãéá ôçí õðïóôÞñéîÞ ôïõò.
Óôï ÊåöÜëáéï 18 ðåñéãñÜöåôáé ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí,
ôï ïðïßï ÷ñçóéìïðïéåßôáé ãéá ôç ìïíôåëïðïßçóç ðïëýðëïêùí áíôéêåéìÝíùí
ôïõ ðñáãìáôéêïý êüóìïõ. ÐáñïõóéÜæïíôáé ïé âáóéêÝò Ýííïéåò êáé ïñéóìïß,
êáèþò êáé ôá ðëåïíåêôÞìáôá/ìåéïíåêôÞìáôá ôùí óõóôçìÜôùí ðïõ óôçñßæï-
íôáé óôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí.
Ìßá Üëëç êáôåýèõíóç ìå óôü÷ï ôçí õðïóôÞñéîç ôùí óýã÷ñïíùí åöáñìï-
ãþí åßíáé ç åðÝêôáóç ôïõ ó÷åóéáêïý ìïíôÝëïõ äåäïìÝíùí Ýôóé þóôå íá
åìðëïõôéóèåß ìå åðéðëÝïí äõíáôüôçôåò. Ç ôÜóç áõôÞ ïäÞãçóå óôçí õëïðïß-
çóç áíôéêåéìåíï-ó÷åóéáêþí óõóôçìÜôùí ðïõ äéáôçñïýí ôéò éäéüôçôåò ôùí
ó÷åóéáêþí óõóôçìÜôùí, áëëÜ Ý÷ïõí åðéðëÝïí ôç äõíáôüôçôá äéá÷åßñéóçò
ðïëýðëïêùí áíôéêåéìÝíùí. Ôá áíôéêåéìåíï-ó÷åóéáêÜ óõóôÞìáôá ðáñïõ-
óéÜæïíôáé óôï ÊåöÜëáéï 19.
Óôï ÊåöÜëáéï 20 äßíïíôáé ìåñéêÜ ðáñáäåßãìáôá óýã÷ñïíùí åöáñìïãþí êáé
ïé ôñüðïé õðïóôÞñéîÞò ôïõò áðü ôá óýã÷ñïíá óõóôÞìáôá. Äßíåôáé Ýìöáóç
óôá óõóôÞìáôá ãåùãñáöéêþí ðëçñïöïñéþí, óôéò ðïëõìåóéêÝò åöáñìïãÝò,
óôéò áðïèÞêåò äåäïìÝíùí êáé óôçí åîüñõîç äåäïìÝíùí.
ÔÝëïò, óôï ÊåöÜëáéï 21 ðåñéãñÜöåôáé ï ôñüðïò äéá÷åßñéóçò ôùí óýã÷ñïíùí
åöáñìïãþí ìå ôï óýóôçìá Microsoft SQL Server 2000.

ÌåëÝôç ôïõ Âéâëßïõ


Ôï âéâëßï ìðïñåß íá ÷ñçóéìïðïéçèåß áðü öïéôçôÝò êáé êáèçãçôÝò ôìçìÜôùí Ðëç-
ñïöïñéêÞò (Þ Üëëùí óõããåíéêþí ôìçìÜôùí) ôùí Ðáíåðéóôçìßùí êáé ÔÅÉ ôçò ÷þ-
ñáò ãéá ôçí õðïóôÞñéîç äéáëÝîåùí äýï áêáäçìáúêþí åîáìÞíùí. Ðéï óõãêå-
êñéìÝíá, ðñïôåßíïõìå ôá äýï ðñþôá ìÝñç ôïõ âéâëßïõ íá ÷ñçóéìïðïéçèïýí ãéá
ôçí õðïóôÞñéîç ôïõ ìáèÞìáôïò ÂÜóåéò ÄåäïìÝíùí É, êáé ôá äýï ôåëåõôáßá ìÝñç
ãéá ôçí õðïóôÞñéîç ôïõ ìáèÞìáôïò ÂÜóåéò ÄåäïìÝíùí ÉÉ (Þ Ðñï÷ùñçìÝíá ÈÝ-
ìáôá ÂÜóåùí ÄåäïìÝíùí). Åðßóçò, ôá äýï ðñþôá ìÝñç ìðïñïýí íá áðïôåëÝóïõí
óçìáíôéêü âïÞèçìá êáé óå öïéôçôÝò ôìçìÜôùí åêôüò ÐëçñïöïñéêÞò. Ç ðñáêôéêÞ
åöáñìïãÞ ôçò èåùñßáò ìå ôç ÷ñÞóç ôïõ Microsoft SQL Server 2000, ìåôáôñÝðåé
ôï âéâëßï óå Ýíá óçìáíôéêü âïÞèçìá ãéá áíáãíþóôåò ðïõ åðéèõìïýí íá ãíùñß-
óïõí ôïí êüóìï ôùí ÂÜóåùí ÄåäïìÝíùí. Ç åéäéêÞ áíáöïñÜ óôïí Microsoft SQL
Server 2000 óôï ôÝëïò êÜèå ìÝñïõò ðñïóöÝñåé óôïí áíáãíþóôç ôçí åõêáéñßá íá
ðåéñáìáôéóèåß ìå ôéò âáóéêÝò áñ÷Ýò ôùí ÂÜóåùí ÄåäïìÝíùí êáé íá åöáñìüóåé ôéò
áñ÷Ýò áõôÝò óôç äçìéïõñãßá ôùí äéêþí ôïõ åöáñìïãþí. Ðñïöáíþò, ôá êåöÜëáéá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 15

áõôÜ äåí êáëýðôïõí üëåò ôéò äõíáôüôçôåò ôïõ åñãáëåßïõ, ùóôüóï ðñïóöÝñïõí Ýíá
óçìáíôéêü ðñáêôéêü âïÞèçìá.

Äéïñèþóåéò êáé Õðïäåßîåéò


ÊÜèå âéâëßï áíáðüöåõêôá èá ðåñéÝ÷åé êÜðïéá ëÜèç. Ðáñïôñýíïõìå ôïõò áíá-
ãíþóôåò íá åðéêïéíùíÞóïõí ìáæß ìáò ãéá ïðïéïäÞðïôå ëÜèïò ðïõ ôõ÷üí õðÜñ÷åé
óôï óýíïëï ôïõ êåéìÝíïõ, êáèþò èåùñïýìå üôé ïé õðïäåßîåéò ôùí áíáãíùóôþí
åßíáé ðïëý óçìáíôéêÝò ãéá ôç âåëôßùóç ôïõ âéâëßïõ óå åðüìåíåò åêäüóåéò. Óôçí
éóôoóåëßäá http://delab.csd.auth.gr/dbbook ï åíäéáöåñüìåíïò áíáãíþóôçò ìðï-
ñåß íá âñåé ÷ñÞóéìï õëéêü ðïõ ó÷åôßæåôáé ìå ôï âéâëßï, åíþ óôçí çëåêôñïíéêÞ
äéåýèõíóç dbbook@delab.csd.auth.gr ìðïñåß íá óôåßëåé ó÷üëéá êáé õðïäåßîåéò
ãéá ìåëëïíôéêÝò åêäüóåéò.

Åõ÷áñéóôßåò
Ôï âéâëßï áõôü äåí èá ãéíüôáí ðñáãìáôéêüôçôá ÷ùñßò ôç óõìðáñÜóôáóç ìåñéêþí
áíèñþðùí. ÂáóéêÜ ïé èåñìüôåñåò åõ÷áñéóôßåò ìáò áðåõèýíïíôáé óôï Öþôç Äñá-
ãáíßäç ôçò Microsoft Hellas ðïõ ìáò âïÞèçóå ðïëýðëåõñá ãéá ôï óêïðü áõôü.
Åõ÷áñéóôïýìå èåñìÜ ôï ößëï êáé óõíÜäåëöï Èåüäùñï ÔæïõñáìÜíç, ËÝêôïñá
óôï ÐáíåðéóôÞìéï Áéãáßïõ, ãéá ôçí êáßñéá óõìâïëÞ ôïõ óôá èÝìáôá áóöÜëåéáò
ÂÜóåùí ÄåäïìÝíùí. Åõ÷áñéóôïýìå èåñìÜ ôïõò: Óïößá Âáúïõ, Ôñýöùíá ÃåñãÞ,
Åõôõ÷ßá Éùáêåéìßäïõ êáé ¸öç ÔåñæÞ ãéá ôá ëÜèç ðïõ õðÝäåéîáí ýóôåñá áðü
ðñïóåêôéêÞ áíÜãíùóç ôïõ âéâëßïõ. Åðßóçò, åõ÷áñéóôïýìå êáé ôïí óõíÜäåëöï ê.
×ñÞóôï Êïßëéá ôùí Åêäüóåùí ÍÝùí Ôå÷íïëïãéþí ãéá ôçí áðïäï÷Þ ôçò Ýêäïóçò
áõôÞò. ÔÝëïò, åõ÷áñéóôßåò ðñÝðåé íá áðïäïèïýí êáé óôéò ïéêïãÝíåéÝò ìáò êáé
ôïõò ößëïõò ìáò, ðïõ ôïõò óôåñçèÞêáìå.

Èåóóáëïíßêç,
ÖåâñïõÜñéïò 2006

ÉùÜííçò Ìáíùëüðïõëïò
Áðüóôïëïò Í. Ðáðáäüðïõëïò
Ðåñéå÷üìåíá

Ðñüëïãïò 11

ÊáôÜëïãïò Ó÷çìÜôùí 26

ÊáôÜëïãïò ÐéíÜêùí 33

I ÂÁÓÉÊÅÓ ÅÍÍÏÉÅÓ 35
1 ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí 37
1.1 ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . 40
1.2 ÊëáóéêÝò êáé Óýã÷ñïíåò ÅöáñìïãÝò . . . . . . . . . . . . . . . . . . . 44
1.3 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 48

2 ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò 51


2.1 Ìáãíçôéêïß Äßóêïé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2 Óõóôïé÷ßåò Äßóêùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.3 Ïðôéêïß Äßóêïé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.4 ÌáãíçôéêÝò Ôáéíßåò . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.5 ¢ëëá ÌÝóá ÁðïèÞêåõóçò . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.6 Äéáóýíäåóç Óõóêåõþí ÁðïèÞêåõóçò . . . . . . . . . . . . . . . . . . 72
2.7 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 74

3 Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí 79
3.1 Ç Áñ÷éôåêôïíéêÞ ANSI-SPARC . . . . . . . . . . . . . . . . . . . . . 80
3.2 Ãëþóóåò ÂÜóåùí ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . 85
3.2.1 Ãëþóóá Ïñéóìïý ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . 86
3.2.2 Ãëþóóá ×åéñéóìïý ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . 87

17
18 Ðåñéå÷üìåíá

3.2.3 Ãëþóóåò ÔÝôáñôçò ÃåíéÜò . . . . . . . . . . . . . . . . . . . . . 88


3.3 ÌïíôÝëá ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.3.1 ÌïíôÝëá ÂáóéóìÝíá óå ÅããñáöÝò . . . . . . . . . . . . . . . . . 90
3.3.2 ÌïíôÝëá ÂáóéóìÝíá óå Áíôéêåßìåíá . . . . . . . . . . . . . . . 91
3.3.3 ÖõóéêÜ ÌïíôÝëá ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . 93
3.4 Ëåéôïõñãßåò ÓÄÂÄ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 97

4 ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí 99
4.1 ÄéáãñÜììá ÏíôïôÞôùí-Óõó÷åôßóåùí . . . . . . . . . . . . . . . . . . . 99
4.2 Óýíïëá ÏíôïôÞôùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.2.1 Ôýðïé ×áñáêôçñéóôéêþí . . . . . . . . . . . . . . . . . . . . . . 101
4.2.2 ÊëåéäéÜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.3 Óýíïëá Óõó÷åôßóåùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1 Ôýðïé Áðåéêüíéóçò . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.2 ×áñáêôçñéóôéêÜ Óõíüëïõ Óõó÷åôßóåùí . . . . . . . . . . . . . . 107
4.3.3 Ôýðïé Óõììåôï÷Þò Ïíôüôçôáò óå Óõó÷Ýôéóç . . . . . . . . . . . 108
4.3.4 ÅîáñôÞóåéò ¾ðáñîçò . . . . . . . . . . . . . . . . . . . . . . . . 109
4.3.5 Áäýíáìá Óýíïëá ÏíôïôÞôùí . . . . . . . . . . . . . . . . . . . . 110
4.4 ÅðåêôÜóåéò ôïõ Âáóéêïý ÌïíôÝëïõ ÏÓ . . . . . . . . . . . . . . . . . 111
4.4.1 Åîåéäßêåõóç êáé Ãåíßêåõóç . . . . . . . . . . . . . . . . . . . . . 111
4.4.2 Êëçñïíïìéêüôçôá ×áñáêôçñéóôéêþí . . . . . . . . . . . . . . . . 113
4.4.3 ÓõóóùìÜôùóç . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 115

5 ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000 119


5.1 Åêäüóåéò ôïõ MSSQLS-2000 . . . . . . . . . . . . . . . . . . . . . . . 120
5.2 ÓõóôáôéêÜ ôïõ MSSQLS-2000 . . . . . . . . . . . . . . . . . . . . . . . 121
5.2.1 SQL Server Database Engine . . . . . . . . . . . . . . . . . . . . 121
5.2.2 SQL Server Enterprise Manager . . . . . . . . . . . . . . . . . . 122
5.2.3 SQL Server Agent . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.2.4 SQL Query Analyzer . . . . . . . . . . . . . . . . . . . . . . . . 123
5.2.5 SQL Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.2.6 Data Transformation Services (DTS) . . . . . . . . . . . . . . . 124
5.2.7 SQL Server Analysis Services . . . . . . . . . . . . . . . . . . . . 125
5.2.8 Microsoft Full-Text Search Services . . . . . . . . . . . . . . . . 126
5.2.9 English Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Ðåñéå÷üìåíá 19

5.2.10 Distributed Transaction Coordinator . . . . . . . . . . . . . . . 126


5.2.11 SQL Server Service Manager . . . . . . . . . . . . . . . . . . . . 126
5.3 Ïé ÂÜóåéò ÄåäïìÝíùí ÓõóôÞìáôïò . . . . . . . . . . . . . . . . . . . . 127
5.4 Äçìéïõñãßá ÂÜóçò ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . 129
5.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 131

II Ó×ÅÓÉÁÊÅÓ ÂÁÓÅÉÓ ÄÅÄÏÌÅÍÙÍ 133


6 Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí 135
6.1 ÂáóéêÝò ¸ííïéåò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.2 ÊëåéäéÜ Ó÷Ýóåùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.3 Ðåñéïñéóìïß Áêåñáéüôçôáò Ó÷Ýóåùí . . . . . . . . . . . . . . . . . . . 141
6.3.1 ÊåíÝò ÔéìÝò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.3.2 Áêåñáéüôçôá ÏíôïôÞôùí . . . . . . . . . . . . . . . . . . . . . . 142
6.3.3 Áêåñáéüôçôá Áíáöïñþí . . . . . . . . . . . . . . . . . . . . . . 142
6.3.4 ¢ëëïé Ðåñéïñéóìïß . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.4 ÌåôáôñïðÞ ôïõ ÌïíôÝëïõ ÏÓ óå Ó÷åóéáêü . . . . . . . . . . . . . . . 143
6.4.1 ÌåôáôñïðÞ Óõíüëùí ÏíôïôÞôùí êáé Óõó÷åôßóåùí óå Ðßíáêåò . 143
6.4.2 ¢ëëåò Ðåñéðôþóåéò Ìåôáôñïðþí . . . . . . . . . . . . . . . . . 147
6.5 ¼øåéò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.6 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 153

7 Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò 157


7.1 Ó÷åóéáêÞ ¢ëãåâñá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.1.1 Èåìåëéþäåéò ÐñÜîåéò . . . . . . . . . . . . . . . . . . . . . . . . 158
7.1.2 ¢ëëåò ÐñÜîåéò . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
7.2 Ó÷åóéáêüò Ëïãéóìüò . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2.1 Ó÷åóéáêüò Ëïãéóìüò ÐëåéÜäùí . . . . . . . . . . . . . . . . . . 169
7.2.2 Ó÷åóéáêüò Ëïãéóìüò Ðåäßïõ . . . . . . . . . . . . . . . . . . . . 171
7.2.3 Áóöáëåßò ÅêöñÜóåéò . . . . . . . . . . . . . . . . . . . . . . . . 174
7.3 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 175

8 ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç 179


8.1 ÓõíáñôçóéáêÝò ÅîáñôÞóåéò . . . . . . . . . . . . . . . . . . . . . . . . 181
8.1.1 Êáíüíåò ÐáñáãùãÞò Óõíáñôçóéáêþí ÅîáñôÞóåùí . . . . . . . 182
8.1.2 Êëåéóôüôçôá Óõíüëïõ ×áñáêôçñéóôéêþí . . . . . . . . . . . . . 184
20 Ðåñéå÷üìåíá

8.1.3 ÅëÜ÷éóôá Óýíïëá Óõíáñôçóéáêþí ÅîáñôÞóåùí . . . . . . . . . 186


8.2 ÊáíïíéêÝò ÌïñöÝò . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
8.2.1 Ðñþôç ÊáíïíéêÞ ÌïñöÞ (1NF) . . . . . . . . . . . . . . . . . . 188
8.2.2 Äåýôåñç ÊáíïíéêÞ ÌïñöÞ (2NF) . . . . . . . . . . . . . . . . . 189
8.2.3 Ôñßôç ÊáíïíéêÞ ÌïñöÞ (3NF) . . . . . . . . . . . . . . . . . . . 190
8.2.4 ÊáíïíéêÞ ÌïñöÞ Boyce-Codd (BCNF) . . . . . . . . . . . . . . 191
8.2.5 Ó÷Þìáôá ×ùñßò Áðþëåéåò . . . . . . . . . . . . . . . . . . . . . 192
8.3 Áíþôåñåò ÊáíïíéêÝò ÌïñöÝò . . . . . . . . . . . . . . . . . . . . . . . 195
8.3.1 Ðëåéïíüôéìåò ÅîáñôÞóåéò . . . . . . . . . . . . . . . . . . . . . . 195
8.3.2 ÔÝôáñôç ÊáíïíéêÞ ÌïñöÞ (4NF) . . . . . . . . . . . . . . . . . 196
8.3.3 ÐÝìðôç ÊáíïíéêÞ ÌïñöÞ (5NF) . . . . . . . . . . . . . . . . . . 198
8.4 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 201

9 Ç Ãëþóóá SQL 205


9.1 Ôýðïé ÄåäïìÝíùí ôçò SQL . . . . . . . . . . . . . . . . . . . . . . . . 206
9.2 Ïñéóìüò ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
9.2.1 Ïñéóìüò Ó÷Þìáôïò ÂÜóçò . . . . . . . . . . . . . . . . . . . . . 210
9.2.2 Ïñéóìüò Ðßíáêá . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
9.2.3 Ïñéóìüò Ðåäßïõ Ïñéóìïý . . . . . . . . . . . . . . . . . . . . . 213
9.3 ×åéñéóìüò ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
9.3.1 Äéáôýðùóç ÅñùôçìÜôùí . . . . . . . . . . . . . . . . . . . . . . 215
9.3.2 ÅéóáãùãÞ ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . 229
9.3.3 ÅíçìÝñùóç ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . 230
9.3.4 ÄéáãñáöÞ ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . 231
9.4 Äéá÷åßñéóç ¼øåùí êáé Êáôáëüãùí . . . . . . . . . . . . . . . . . . . 232
9.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 233

10 Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000 237


10.1 Äçìéïõñãßá êáé Äéá÷åßñéóç ÐéíÜêùí . . . . . . . . . . . . . . . . . . . 238
10.2 Ðåñéïñéóìïß Áêåñáéüôçôáò . . . . . . . . . . . . . . . . . . . . . . . . 241
10.3 ÅéóáãùãÞ, ÄéáãñáöÞ êáé ÅíçìÝñùóç ÄåäïìÝíùí . . . . . . . . . . . 243
10.4 ÄéáãñÜììáôá ÏíôïôÞôùí-Óõó÷åôßóåùí . . . . . . . . . . . . . . . . . . 244
10.5 Äéáôýðùóç ÅñùôçìÜôùí . . . . . . . . . . . . . . . . . . . . . . . . . . 246
10.6 ¼øåéò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
10.7 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 254
Ðåñéå÷üìåíá 21

III ÈÅÌÁÔÁ ÕËÏÐÏÉÇÓÇÓ 257


11 ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí 259
11.1 Ôýðïé Åããñáöþí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
11.2 Ôýðïé Óåëßäùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
11.3 Ïìáäïðïßçóç Åããñáöþí . . . . . . . . . . . . . . . . . . . . . . . . . 267
11.4 Äéá÷åßñéóç ×þñïõ Äßóêïõ . . . . . . . . . . . . . . . . . . . . . . . . 270
11.5 Äéá÷åßñéóç ÁðïìïíùôéêÞò ÌíÞìçò . . . . . . . . . . . . . . . . . . . . 273
11.5.1 Áëãüñéèìïé ÁíôéêáôÜóôáóçò . . . . . . . . . . . . . . . . . . . . 278
11.5.2 ÅîõðçñÝôçóç ÁéôÞóåùí . . . . . . . . . . . . . . . . . . . . . . . 280
11.6 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 283

12 ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò 287


12.1 Â-äÝíäñá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
12.1.1 EéóáãùãÞ óå Â-äÝíäñï . . . . . . . . . . . . . . . . . . . . . . . 293
12.1.2 ÄéáãñáöÞ óå Â-äÝíäñï . . . . . . . . . . . . . . . . . . . . . . . 295
12.2 Â∗ -äÝíäñá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
12.3 Â+ -äÝíäñá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
12.3.1 ÐñïóðÝëáóç ÅããñáöÞò . . . . . . . . . . . . . . . . . . . . . . . 308
12.3.2 ÅîáíôëçôéêÞ ÁíÜãíùóç Áñ÷åßïõ . . . . . . . . . . . . . . . . . . 309
12.3.3 ÐñïóðÝëáóç Åðüìåíçò ÅããñáöÞò . . . . . . . . . . . . . . . . . 309
12.3.4 ÅéóáãùãÞ ÅããñáöÞò . . . . . . . . . . . . . . . . . . . . . . . . 310
12.3.5 ÄéáãñáöÞ EããñáöÞò . . . . . . . . . . . . . . . . . . . . . . . . 313
12.4 ¢ëëåò ÐáñáëëáãÝò ôùí Â-äÝíäñùí . . . . . . . . . . . . . . . . . . . . 316
12.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 319

13 Êáôáêåñìáôéóìüò 323
13.1 ÓõíáñôÞóåéò Êáôáêåñìáôéóìïý . . . . . . . . . . . . . . . . . . . . . . 325
13.2 Äõíáìéêüò Êáôáêåñìáôéóìüò . . . . . . . . . . . . . . . . . . . . . . . 330
13.3 Åðåêôáôüò Êáôáêåñìáôéóìüò . . . . . . . . . . . . . . . . . . . . . . . 333
13.4 Åêèåôéêüò Êáôáêåñìáôéóìüò ìå ÐåñéïñéóìÝíï ÊáôÜëïãï . . . . . . . 338
13.5 Ãñáììéêüò Êáôáêåñìáôéóìüò . . . . . . . . . . . . . . . . . . . . . . . 342
13.5.1 ÐñïóðÝëáóç ÅããñáöÞò . . . . . . . . . . . . . . . . . . . . . . . 343
13.5.2 ÅéóáãùãÞ ÅããñáöÞò . . . . . . . . . . . . . . . . . . . . . . . . 344
13.5.3 ÄéáãñáöÞ ÅããñáöÞò . . . . . . . . . . . . . . . . . . . . . . . . 346
13.5.4 ÅîáíôëçôéêÞ ÁíÜãíùóç Áñ÷åßïõ . . . . . . . . . . . . . . . . . . 348
13.5.5 Âåëôéþóåéò Ãñáììéêïý Êáôáêåñìáôéóìïý . . . . . . . . . . . . . 348
22 Ðåñéå÷üìåíá

13.6 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349


ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 349

14 Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí 353


14.1 Áëãåâñéêïß Ìåôáó÷çìáôéóìïß . . . . . . . . . . . . . . . . . . . . . . . 356
14.2 ÅõñéóôéêÞ Âåëôéóôïðïßçóç . . . . . . . . . . . . . . . . . . . . . . . . . 358
14.3 Õëïðïßçóç ÐñÜîåùí êáé Åêôßìçóç Êüóôïõò . . . . . . . . . . . . . . 362
14.3.1 ÅðéëïãÞ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
14.3.2 ÐñïâïëÞ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
14.3.3 Óýíäåóç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
14.3.4 ¸íùóç, ÔïìÞ êáé ÄéáöïñÜ . . . . . . . . . . . . . . . . . . . . 372
14.3.5 Ôáîéíüìçóç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
14.4 ÅîáãùãÞ ÁðïôåëÝóìáôïò . . . . . . . . . . . . . . . . . . . . . . . . . 375
14.4.1 Åðåîåñãáóßá ìå ÐñïóùñéíÞ ÁðïèÞêåõóç . . . . . . . . . . . . 375
14.4.2 Åðåîåñãáóßá ìå Äéï÷Ýôåõóç . . . . . . . . . . . . . . . . . . . . 376
14.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 377

15 Äéá÷åßñéóç Óõíáëëáãþí 379


15.1 ÓõíáëëáãÝò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
15.1.1 ÊáôáóôÜóåéò Óõíáëëáãþí . . . . . . . . . . . . . . . . . . . . . 380
15.1.2 Éäéüôçôåò Óõíáëëáãþí . . . . . . . . . . . . . . . . . . . . . . . 382
15.2 ¸ëåã÷ïò Ôáõôï÷ñïíéóìïý . . . . . . . . . . . . . . . . . . . . . . . . . 382
15.2.1 Óåéñéïðïßçóç Óõíáëëáãþí . . . . . . . . . . . . . . . . . . . . . 385
15.2.2 Ìç÷áíéóìïß Êëåéäþìáôïò . . . . . . . . . . . . . . . . . . . . . 388
15.2.3 Äéá÷åßñéóç Áäéåîüäïõ . . . . . . . . . . . . . . . . . . . . . . . 394
15.2.4 Ìç÷áíéóìüò ×ñïíéêþí Óöñáãßäùí . . . . . . . . . . . . . . . . 397
15.3 ÅðáíÜêôçóç ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . . . 400
15.3.1 ÁðáéôÞóåéò ÅðáíÜêôçóçò . . . . . . . . . . . . . . . . . . . . . . 400
15.3.2 ÌÝèïäïé ÅðáíÜêôçóçò . . . . . . . . . . . . . . . . . . . . . . . 402
15.4 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 408

16 ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí 411


16.1 Ó÷Ýóç ÁóöÜëåéáò ÂÜóåùí ÄåäïìÝíùí êáé ÁóöÜëåéáò Ëåéôïõñãéêþí
ÓõóôçìÜôùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
16.2 Ï Ñüëïò ôïõ Äéá÷åéñéóôÞ ÂÜóåùí ÄåäïìÝíùí óôçí Åîïõóéïäüôçóç
ôùí ×ñçóôþí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
16.3 ¸ëåã÷ïé ÐñïóðÝëáóçò . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Ðåñéå÷üìåíá 23

16.3.1 Äéáêñéôéêüò ¸ëåã÷ïò ÐñïóðÝëáóçò . . . . . . . . . . . . . . . . 414


16.3.2 Õðï÷ñåùôéêüò ¸ëåã÷ïò ÐñïóðÝëáóçò . . . . . . . . . . . . . . 419
16.3.3 Ðïëõåðßðåäåò Ó÷Ýóåéò êáé Ðïëõóôéãìéïôõðßá . . . . . . . . . . . 420
16.4 ÅðéâïëÞ ÁóöÜëåéáò ìÝóù ¼øåùí . . . . . . . . . . . . . . . . . . . . 422
16.5 ÊñõðôïãñÜöçóç Åõáßóèçôçò Ðëçñïöïñßáò . . . . . . . . . . . . . . . 423
16.6 ÁóöÜëåéá Óôáôéóôéêþí ÂÜóåùí ÄåäïìÝíùí . . . . . . . . . . . . . . . 425
16.7 ÁóöÜëåéá ¸íáíôé ÅðéèÝóåùí ¸ã÷õóçò SQL . . . . . . . . . . . . . . 429
16.8 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 434

17 ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000 437


17.1 ÖõóéêÞ ÏñãÜíùóç ÂÜóçò ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . 437
17.1.1 ÏñãÜíùóç Áñ÷åßùí . . . . . . . . . . . . . . . . . . . . . . . . . 438
17.1.2 ÖõóéêÞ ÏñãÜíùóç ÐéíÜêùí . . . . . . . . . . . . . . . . . . . . 440
17.2 ÊáôÜëïãïé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
17.2.1 ÏìáäïðïéçìÝíïò ÊáôÜëïãïò . . . . . . . . . . . . . . . . . . . . 442
17.2.2 Ìç-ÏìáäïðïéçìÝíïò ÊáôÜëïãïò . . . . . . . . . . . . . . . . . 443
17.2.3 Äçìéïõñãßá Êáôáëüãùí . . . . . . . . . . . . . . . . . . . . . . . 444
17.3 Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí . . . . . . . . . . . . . 446
17.4 Äéá÷åßñéóç Óõíáëëáãþí . . . . . . . . . . . . . . . . . . . . . . . . . . 448
17.4.1 Óõíôïíéóìüò Ôáõôü÷ñïíùí ÐñïóðåëÜóåùí . . . . . . . . . . . . 450
17.4.2 ÁäéÝîïäá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
17.4.3 ÅðáíÜêôçóç ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . 453
17.5 ÁóöÜëåéá ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
17.5.1 Äéáêñéôéêüò ¸ëåã÷ïò ÐñïóðÝëáóçò . . . . . . . . . . . . . . . . 455
17.5.2 ¸ëåã÷ïò ÐñïóðÝëáóçò ÌÝóù ¼øåùí . . . . . . . . . . . . . . 460
17.5.3 ÊñõðôïãñÜöçóç ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . 461
17.6 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 463

IV ÅÉÄÉÊÁ ÈÅÌÁÔÁ 465


18 ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ 467
18.1 ÂáóéêÝò ¸ííïéåò Áíôéêåéìåíïóôñåöïýò ÌïíôÝëïõ . . . . . . . . . . . 469
18.1.1 Áíôéêåßìåíá, ÌÝèïäïé êáé ÊëÜóåéò . . . . . . . . . . . . . . . . 469
18.1.2 Êëçñïíïìéêüôçôá . . . . . . . . . . . . . . . . . . . . . . . . . . 470
18.1.3 Óýíèåôá Áíôéêåßìåíá . . . . . . . . . . . . . . . . . . . . . . . . 472
18.2 Áíôéêåéìåíïóôñåöåßò ÂÜóåéò ÄåäïìÝíùí . . . . . . . . . . . . . . . . . 473
18.3 ÐëåïíåêôÞìáôá êáé ÌåéïíåêôÞìáôá . . . . . . . . . . . . . . . . . . . 480
24 Ðåñéå÷üìåíá

18.4 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481


ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 481

19 Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ 483


19.1 ÅìöùëéáóìÝíåò Ó÷Ýóåéò . . . . . . . . . . . . . . . . . . . . . . . . . . 484
19.2 Ôï Ðñüôõðï SQL:1999 (SQL3) . . . . . . . . . . . . . . . . . . . . . . 485
19.2.1 ÕðïóôÞñéîç Ôýðïõ ÃñáììÞò . . . . . . . . . . . . . . . . . . . . 486
19.2.2 Ôýðïé Ïñéæüìåíïé áðü ôï ×ñÞóôç . . . . . . . . . . . . . . . . . 487
19.2.3 Äéáäéêáóßåò êáé ÓõíáñôÞóåéò Ïñéæüìåíåò áðü ôï ×ñÞóôç . . . . 489
19.2.4 Ôýðïò ÁíáöïñÜò êáé Ôáõôüôçôá ÁíôéêåéìÝíïõ . . . . . . . . . . 490
19.2.5 ÌåãÜëá Áíôéêåßìåíá . . . . . . . . . . . . . . . . . . . . . . . . 491
19.2.6 ÄéáôÞñçóç ÔìçìÜôùí Êþäéêá . . . . . . . . . . . . . . . . . . . 492
19.2.7 Óêáíäáëéóìïß . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
19.2.8 Äéáôýðùóç ÅñùôçìÜôùí êáé Åðåîåñãáóßá . . . . . . . . . . . . 493
19.3 Óýãêñéóç ÓõóôçìÜôùí . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
19.4 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 496

20 ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí 499


20.1 ×ùñéêÝò êáé ×ùñï-×ñïíéêÝò ÅöáñìïãÝò . . . . . . . . . . . . . . . . 500
20.1.1 ÈåìáôéêÜ Åðßðåäá êáé ÃåùãñáöéêÜ Áíôéêåßìåíá . . . . . . . . 501
20.1.2 ÅñùôÞìáôá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
20.1.3 ÕðïóôÞñéîç áðü ÓÄÂÄ . . . . . . . . . . . . . . . . . . . . . . . 502
20.2 ÅöáñìïãÝò ÐïëõìÝóùí . . . . . . . . . . . . . . . . . . . . . . . . . . 506
20.3 ÁðïèÞêåò ÄåäïìÝíùí êáé ÁíáëõôéêÞ Åðåîåñãáóßá . . . . . . . . . . 508
20.3.1 Áñ÷éôåêôïíéêÞ ÁðïèÞêçò ÄåäïìÝíùí . . . . . . . . . . . . . . . 510
20.3.2 ÐïëõäéÜóôáôï ÌïíôÝëï ÄåäïìÝíùí . . . . . . . . . . . . . . . . 510
20.3.3 Ëåéôïõñãßåò OLAP . . . . . . . . . . . . . . . . . . . . . . . . . 512
20.4 Åîüñõîç ÄåäïìÝíùí . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
20.4.1 Ïìáäïðïßçóç . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
20.4.2 Êáíüíåò Óõó÷Ýôéóçò . . . . . . . . . . . . . . . . . . . . . . . . 519
20.5 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 522

21 ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000 525


21.1 ÁðïèçêåõìÝíåò Äéáäéêáóßåò . . . . . . . . . . . . . . . . . . . . . . . 525
21.2 ÓõíáñôÞóåéò Ïñéæüìåíåò áðü ôï ×ñÞóôç . . . . . . . . . . . . . . . . 529
21.3 Óêáíäáëéóìïß . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
21.4 ÌåãÜëá Áíôéêåßìåíá . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Ðåñéå÷üìåíá 25

21.5 ÁðïèÞêåò ÄåäïìÝíùí êáé Åîüñõîç . . . . . . . . . . . . . . . . . . . 532


21.5.1 Áñ÷éôåêôïíéêÞ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
21.5.2 Êáôçãïñßåò Êýâùí ôïõ MAS . . . . . . . . . . . . . . . . . . . . 534
21.5.3 Ëåéôïõñãßåò OLAP . . . . . . . . . . . . . . . . . . . . . . . . . 535
21.5.4 Ëåéôïõñãßåò Åîüñõîçò ÄåäïìÝíùí . . . . . . . . . . . . . . . . . 536
21.6 Óýíïøç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò . . . . . . . . . . . . . . . . . . . . 538

Âéâëéïãñáößá 541

ÅõñåôÞñéï 551
ÊáôÜëïãïò Ó÷çìÜôùí

1.1 ÂÜóç ÄåäïìÝíùí êáé Óýóôçìá Äéá÷åßñéóçò. . . . . . . . . . . . . . . 41

2.1 Ó÷åäéÜãñáììá ìáãíçôéêïý äßóêïõ. . . . . . . . . . . . . . . . . . . . 55


2.2 Åðßðåäá RAID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3 Ó÷åäéÜãñáììá ïðôéêïý äßóêïõ WORM. . . . . . . . . . . . . . . . . 63
2.4 Óýã÷ñïíïé ôýðïé ìáãíçôéêþí ôáéíéþí. . . . . . . . . . . . . . . . . . . 67
2.5 Ôå÷íïëïãßåò DAS, NAS êáé SAN. . . . . . . . . . . . . . . . . . . . 73

3.1 Áñ÷éôåêôïíéêÞ ôñéþí åðéðÝäùí ANSI-SPARC. . . . . . . . . . . . . . 81


3.2 Ó÷åóéáêü ìïíôÝëï. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.3 ÄéÜãñáììá ïíôïôÞôùí-óõó÷åôßóåùí. . . . . . . . . . . . . . . . . . . 92
3.4 ÄïìÞ åíüò ÓÄÂÄ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

4.1 ÄéÜãñáììá ÏÓ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100


4.2 ×áñáêôçñéóôéêÜ óýíèåôá, ðïëëáðëÞò ôéìÞò êáé ðáñáãüìåíá. . . . . 103
4.3 ÔñéáäéêÞ óõó÷Ýôéóç. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.4 ÁíáäñïìéêÞ óõó÷Ýôéóç. . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.5 Ôýðïé óõíüëùí óõó÷åôßóåùí. . . . . . . . . . . . . . . . . . . . . . . 106
4.6 Óýíïëï óõó÷åôßóåùí ÓõíäñïìÞ êáé ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ. . . 107
4.7 Óõììåôï÷Þ ïíôïôÞôùí óå óýíïëï óõó÷åôßóåùí. . . . . . . . . . . . . 108
4.8 Õðï÷ñåùôéêÞ óõììåôï÷Þ ïíôïôÞôùí óå óýíïëï óõó÷åôßóåùí. . . . . . 109
4.9 ÐñïáéñåôéêÞ óõììåôï÷Þ ïíôïôÞôùí óå óýíïëï óõó÷åôßóåùí. . . . . . 109
4.10 Áðåéêüíéóç áäýíáìïõ óõíüëïõ ïíôïôÞôùí. . . . . . . . . . . . . . . . 111
4.11 ÁíáðáñÜóôáóç åîåéäßêåõóçò êáé ãåíßêåõóçò óå äéÜãñáììá ÏÓ. . . . 112
4.12 ÍÝá ôñéáäéêÞ óõó÷Ýôéóç ÊáôáãñáöÞ êáé óýíïëï ïíôïôÞôùí ÕðÜëëçëïò.113
4.13 Áðåéêüíéóç óõóóùìÜôùóçò óôï äéÜãñáììá ÏÓ. . . . . . . . . . . . . 114

5.1 ÅìöÜíéóç ìåñéêþí äõíáôïôÞôùí ôïõ Enterprise Manager. . . . . . . 122


5.2 Ðñüóâáóç óôï åñãáëåßï DTS áðü ôïí Enterprise Manager. . . . . . 125

27
28 ÊáôÜëïãïò Ó÷çìÜôùí

5.3 ÂÜóåéò ÄåäïìÝíùí óõóôÞìáôïò üðùò åìöáíßæïíôáé óôïí Enterprise


Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.4 Äçìéïõñãßá íÝáò ÂÜóçò ÄåäïìÝíùí óôïí Enterprise Manager. . . . 129
5.5 ÄÞëùóç ïíüìáôïò íÝáò âÜóçò. . . . . . . . . . . . . . . . . . . . . . 130
5.6 ÅìöÜíéóç íÝáò ÂÜóçò ÄåäïìÝíùí óôïí Enterprise Manager. . . . . 131

6.1 Óôéãìéüôõðï ó÷Ýóçò ÓõíäñïìçôÞò. . . . . . . . . . . . . . . . . . . . . 137


6.2 Ðßíáêåò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé ÓõíäñïìÞ. . . . . . . . 140
6.3 Ðßíáêáò Åêäïôéêüò Ïßêïò êáé NULL ôéìÝò ãéá ìåñéêÜ ÷áñáêôçñé-
óôéêÜ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.4 Ðßíáêáò ¢ñèñï ìåôÜ ôï ìåôáó÷çìáôéóìü. . . . . . . . . . . . . . . . 145
6.5 Ó÷åóéáêü ó÷Þìá ôçò ÂÄ ôïõ Ó÷Þìáôïò 4.1 ìåôÜ ôç ìåôáôñïðÞ. . . . . 147
6.6 Óýíïëá óõó÷åôßóåùí ðïõ óõíäÝïõí ðåñéóóüôåñá áðü äýï óýíïëá
ïíôïôÞôùí. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.7 Ïñéóìüò üøçò áðü ó÷Ýóåéò âÜóçò. . . . . . . . . . . . . . . . . . . . 151
6.8 ÄéáöïñåôéêÝò üøåéò ÷ñçóôþí ôçò ó÷Ýóçò ’Áñèñï. . . . . . . . . . . . 152

7.1 Ðßíáêåò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé ÓõíäñïìÞ. . . . . . . . 158


7.2 ÁðïôÝëåóìá ôçò ðñÜîçò Ð üíïìá, ôçëÝöùíï (ó êùäéêüò>20 (ÓõíäñïìçôÞò)). 161
7.3 ÁðïôÝëåóìá ðñïâïëÞò óôï êáñôåóéáíü ãéíüìåíï ôùí ðéíÜêùí Óõí-
äñïìçôÞò êáé ÃíùóôéêÞ Ðåñéï÷Þ. . . . . . . . . . . . . . . . . . . . . 162
7.4 ÁðïôÝëåóìá öõóéêÞò óýíäåóçò. . . . . . . . . . . . . . . . . . . . . . 165
7.5 ÁðïôÝëåóìá óýíäåóçò-θ. . . . . . . . . . . . . . . . . . . . . . . . . . 166
7.6 ÁðïôÝëåóìá áñéóôåñÞò, äåîéÜò êáé ðëÞñïõò åîùôåñéêÞò óýíäåóçò. . 166
7.7 ÁðïôÝëåóìá áñéóôåñÞò êáé äåîéÜò çìéóýíäåóçò. . . . . . . . . . . . . 167
7.8 ÁðïôÝëåóìá äéáßñåóçò. . . . . . . . . . . . . . . . . . . . . . . . . . 168

8.1 Ôï óýíïëï ïíôïôÞôùí ÐåëÜôçò. . . . . . . . . . . . . . . . . . . . . . 180


8.2 Ðëåïíáóìüò äåäïìÝíùí óôïí ðßíáêá ÐåëÜôçò. . . . . . . . . . . . . 180
8.3 ÊáôáóêåõÞ äýï ðéíÜêùí ÐåëÜôçò êáé ÔçëÝöùíï ãéá áðïöõãÞ ðëåï-
íáóìïý. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
8.4 Áëãüñéèìïò õðïëïãéóìïý êëåéóôüôçôáò. . . . . . . . . . . . . . . . . 184
8.5 Áëãüñéèìïò åýñåóçò åëÜ÷éóôçò êÜëõøçò óõíüëïõ óõíáñôçóéáêþí
åîáñôÞóåùí. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.6 ÊáíïíéêÝò ìïñöÝò. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.7 Áñ÷éêÞ ó÷Ýóç êáé äýï ðáñáãüìåíåò. . . . . . . . . . . . . . . . . . . 193
8.8 ÁðïôÝëåóìá öõóéêÞò óýíäåóçò áðü ôéò äýï ðáñáãüìåíåò. . . . . . . 193
8.9 Äéáäéêáóßá ìåôáó÷çìáôéóìïý ôáìðëþ. . . . . . . . . . . . . . . . . . 194
8.10 Óôéãìéüôõðï ðßíáêá Ðñïóüíôá ìå ðëåéïíüôéìåò åîáñôÞóåéò. . . . . . 197
ÊáôÜëïãïò Ó÷çìÜôùí 29

8.11 Óôéãìéüôõðá ðéíÜêùí Ðñïóüíôá Ðñïãñáììáôéóìïý êáé Ðñïóüíôá ÎÝ-


íùí Ãëùóóþí óå ôÝôáñôç êáíïíéêÞ ìïñöÞ. . . . . . . . . . . . . . . . 198
8.12 Ó÷Ýóç óå ôÝôáñôç êáíïíéêÞ ìïñöÞ. . . . . . . . . . . . . . . . . . . . 199
8.13 Ó÷Ýóåéò óå ðÝìðôç êáíïíéêÞ ìïñöÞ. . . . . . . . . . . . . . . . . . . 199

9.1 Ó÷åóéáêü ó÷Þìá ôçò ÂÄ ôïõ Ó÷Þìáôïò 4.1 ìåôÜ ôç ìåôáôñïðÞ. . . . . 207
9.2 ÁðïôÝëåóìá åýñåóçò ôïõ ðëÞèïõò ôùí Üñèñùí áíÜ óõããñáöÝá. . . 223

10.1 ÄéÜãñáììá ÏÓ êáé óôéãìéüôõðï ôçò âÜóçò ðïõ èá ÷ñçóéìïðïéçèåß. . 238


10.2 ÊáôáóêåõÞ ðéíÜêùí ìÝóù ôïõ Enterprise Manager. . . . . . . . . . . 239
10.3 Äçìéïõñãßá ôïõ ðßíáêá Ôáéíßá ìÝóù T-SQL óôïí Query Analyzer. . 240
10.4 ÅìöÜíéóç äåäïìÝíùí ôïõ ðßíáêá Çèïðïéüò óôïí Enterprise Manager.243
10.5 ÄéÜãñáììá ÏÓ ãéá ôç ÂÜóç ÄåäïìÝíùí movies-db. . . . . . . . . . . 245
10.6 Éäéüôçôåò óõó÷åôßóåùí ôçò âÜóçò movies-db. . . . . . . . . . . . . . . 245
10.7 ÊáôáóêåõÞ íÝáò üøçò ìå ôïí Enterprise Manager. . . . . . . . . . . 252

11.1 ÔìÞìáôá ôïõ ÓÄÂÄ ðïõ ó÷åôßæïíôáé ìå ôç öõóéêÞ ïñãÜíùóç äåäïìÝ-


íùí. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
11.2 Áñ÷éôåêôïíéêÞ õðïëïãéóôéêïý óõóôÞìáôïò. . . . . . . . . . . . . . . . 262
11.3 ÅããñáöÞ ìå óôáèåñü ìÞêïò. . . . . . . . . . . . . . . . . . . . . . . . 262
11.4 ÅããñáöÝò ìåôáâëçôïý ìÞêïõò. . . . . . . . . . . . . . . . . . . . . . 263
11.5 ÅããñáöÞ ìå åðáíáëáìâáíüìåíåò ïìÜäåò. . . . . . . . . . . . . . . . 264
11.6 ×ñÞóç äéá÷ùñéóôþí óå óåëßäåò. . . . . . . . . . . . . . . . . . . . . . 264
11.7 ×ñÞóç êáôáëüãïõ óå óåëßäåò. . . . . . . . . . . . . . . . . . . . . . . 265
11.8 ÏñãÜíùóç óåëßäùí ìå åããñáöÝò óôáèåñïý ìÞêïõò. . . . . . . . . . . 266
11.9 Ôå÷íéêÞ ôçò ðáñåìâïëÞò. . . . . . . . . . . . . . . . . . . . . . . . . . 268
11.10 Áíôéóôïé÷ßá ìåãåèþí åããñáöÞò êáé ôïìÝá. . . . . . . . . . . . . . . . 271
11.11 ÑïÞ äåäïìÝíùí ìåôáîý êýñéáò êáé äåõôåñåýïõóáò ìíÞìçò. . . . . . . 274
11.12 ×ñïíéêÞ áëëçëïõ÷ßá åñãáóéþí ìå ÷ñÞóç äýï ðëáéóßùí. . . . . . . . 277
11.13 ×ñïíéêÞ áëëçëïõ÷ßá åñãáóéþí ìå ÷ñÞóç äýï ðëáéóßùí. O ÷ñüíïò
CPU åßíáé ôñéðëÜóéïò ôïõ ÷ñüíïõ É/Ï. . . . . . . . . . . . . . . . . . 278
11.14 Óýãêñéóç ìåèüäùí FIFO êáé LRU. . . . . . . . . . . . . . . . . . . . 281

12.1 Áñ÷åßï ìå äýï áíåîÜñôçôïõò êáôáëüãïõò. . . . . . . . . . . . . . . . 288


12.2 Êüìâïò ïìïãåíïýò äÝíäñïõ. . . . . . . . . . . . . . . . . . . . . . . . 288
12.3 ÏìïãåíÝò äÝíäñï. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
12.4 ÅôåñïãåíÝò äÝíäñï. . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
12.5 Â-äÝíäñï ôÜîçò 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
12.6 Â-äÝíäñï ìå äéáäï÷éêÝò åéóáãùãÝò. . . . . . . . . . . . . . . . . . . . 294
30 ÊáôÜëïãïò Ó÷çìÜôùí

12.7 Â-äÝíäñï ìå äéáäï÷éêÝò äéáãñáöÝò. . . . . . . . . . . . . . . . . . . 295


12.7 Â-äÝíäñï ìå äéáäï÷éêÝò äéáãñáöÝò (óõíÝ÷åéá). . . . . . . . . . . . . 296
12.8 ÏìÜäá ÂÔ(3,5). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
12.9 ÏìÜäá ÂÔ(3,15). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
12.10 Äéáäï÷éêÝò åéóáãùãÝò óå Â-äÝíäñï. . . . . . . . . . . . . . . . . . . 302
12.11 Äéáäï÷éêÝò åéóáãùãÝò óå Â∗ -äÝíäñï. . . . . . . . . . . . . . . . . . . 303
12.12 ÊáôÜëïãïò ìå äïìÞ Â+ -äÝíäñïõ. . . . . . . . . . . . . . . . . . . . . 305
12.13 Â+ -äÝíäñï ùò ðñùôåýùí êáé äåõôåñåýùí êáôÜëïãïò. . . . . . . . . . 307
12.14 ÅéóáãùãÞ óå Â+ -äÝíäñï ìå d=2 êáé Bkf r=4. . . . . . . . . . . . . 311
12.15 ÄéáãñáöÝò óå Â+ -äÝíäñï ìå d=2 êáé Bkf r=4. . . . . . . . . . . . . 314
12.16 ÄéáãñáöÝò óå Â+ -äÝíäñï ìå d=2 êáé Bkf r=4. . . . . . . . . . . . . 315
12.17 ÅëÜ÷éóôïò äéá÷ùñéóôÞò. . . . . . . . . . . . . . . . . . . . . . . . . . 318
12.18 Äéá÷ùñéóôÝò óå Ðñïèåìáôéêü Â+ -äÝíäñï. . . . . . . . . . . . . . . . 318

13.1 ÊáôáíïìÞ óõãêñïýóåùí êáé ðñïóðåëÜóåùí. . . . . . . . . . . . . . 326


13.2 Áñ÷åßï äõíáìéêïý êáôáêåñìáôéóìïý. . . . . . . . . . . . . . . . . . . 332
13.3 Ìåôáó÷çìáôéóìïß êëåéäéïý óôïí åðåêôáôü êáôáêåñìáôéóìü. . . . . . 333
13.4 ÊáôÜëïãïò åðéðÝäïõ 3 ìå ôÝóóåñéò êÜäïõò. . . . . . . . . . . . . . . 334
13.5 ÁíáäéáíïìÞ êëåéäéþí ëüãù äéÜóðáóçò êÜäïõ. . . . . . . . . . . . . . 335
13.6 Äéðëáóéáóìüò êáôáëüãïõ. . . . . . . . . . . . . . . . . . . . . . . . . 336
13.7 ÐáèïëïãéêÞ ðåñßðôùóç äéðëáóéáóìïý êáôáëüãùí. . . . . . . . . . . 336
13.8 Åêèåôéêüò êáôáêåñìáôéóìüò ìå ðåñéïñéóìÝíï êáôÜëïãï. . . . . . . . 340
13.9 Ãñáììéêüò êáôáêåñìáôéóìüò ìå ÷ñÞóç ôñéþí bits. . . . . . . . . . . . 342
13.10 Ãñáììéêüò êáôáêåñìáôéóìüò ìå ÷ñÞóç ôñéþí êáé ôåóóÜñùí bits. . . . 343
13.11 ÅðÝêôáóç áñ÷åßïõ ãñáììéêïý êáôáêåñìáôéóìïý. . . . . . . . . . . . 344
13.12 ÃñáììéêÞ äéÜóðáóç êÜäùí. . . . . . . . . . . . . . . . . . . . . . . . 345
13.13 Óõññßêíùóç áñ÷åßïõ ãñáììéêïý êáôáêåñìáôéóìïý. . . . . . . . . . . 347

14.1 ÐáñáãùãÞ ðëÜíïõ åêôÝëåóçò åñùôÞìáôïò. . . . . . . . . . . . . . . . 354


14.2 ÄÝíäñá Ýêöñáóçò êáé ìåôáó÷çìáôéóìïß. . . . . . . . . . . . . . . . . 358
14.3 ÅíáëëáêôéêÜ ðëÜíá åêôÝëåóçò ãéá åñþôçìá ðáñáäåßãìáôïò. . . . . . 359
14.4 ÅöáñìïãÞ åõñéóôéêïý êáíüíá 1 óôï åñþôçìá σθ (X 1 Y ). . . . . . . 361
14.5 Ôñåéò ìÝèïäïé åðåîåñãáóßáò óýíäåóçò ìå åìöùëéáóìÝíïõò âñü÷ïõò. 370
14.6 ÖõóéêÞ óýíäåóç ìå ôç ìÝèïäï ôáîéíüìçóçò-óõã÷þíåõóçò. . . . . . . 370
14.7 ÖõóéêÞ óýíäåóç ìå ôç ìÝèïäï ôïõ êáôáêåñìáôéóìïý. . . . . . . . . . 371
14.8 Áëãüñéèìïò åîùôåñéêÞò ôáîéíüìçóçò ìå óõã÷þíåõóç. . . . . . . . . . 374
14.9 Ôáîéíüìçóç ìå óõã÷þíåõóç äýï äñüìùí. . . . . . . . . . . . . . . . 374
14.10 ÐñïóùñéíÞ áðïèÞêåõóç åíäéÜìåóùí áðïôåëåóìÜôùí. . . . . . . . . 375
ÊáôÜëïãïò Ó÷çìÜôùí 31

15.1 ÊáôáóôÜóåéò óõíáëëáãÞò. . . . . . . . . . . . . . . . . . . . . . . . . 381


15.2 Ôñßá ðñïâëÞìáôá áðü ôçí ôáõôü÷ñïíç åêôÝëåóç óõíáëëáãþí. . . . . 384
15.3 Äýï óåéñéáêÜ ÷ñïíïäéáãñÜììáôá åêôÝëåóçò óõíáëëáãþí Ó1 êáé Ó2. 385
15.4 ÌåôáôñïðÞ ÷ñïíïäéáãñÜììáôïò ìå óåéñéïðïßçóç óýãêñïõóçò. . . . . 387
15.5 ×ñïíïäéÜãñáììá ðïõ äåí óåéñéïðïéåßôáé. . . . . . . . . . . . . . . . 388
15.6 ×ñïíïäéÜãñáììá óåéñéïðïéÞóéìï ùò ðñïò ôçí üøç. . . . . . . . . . . 389
15.7 ×ñÞóç ìç÷áíéóìïý êëåéäþìáôïò ìå ëáíèáóìÝíï áðïôÝëåóìá. . . . . 391
15.8 ÅöáñìïãÞ ðñùôïêüëëïõ êëåéäþìáôïò äýï öÜóåùí ãéá ÷ñïíïäéá-
ãñÜììáôá Ó÷Þìáôïò 15.2á êáé 15.2â. . . . . . . . . . . . . . . . . . . 392
15.9 ÅöáñìïãÞ äåíäñéêïý ðñùôïêüëëïõ êëåéäþìáôïò. . . . . . . . . . . . 393
15.10 ÃñÜöïò áíáìïíÞò ÷ùñßò êýêëï (á) êáé ìå êýêëï (â). . . . . . . . . . 396
15.11 ÅöáñìïãÞ êáíüíá Thomas. . . . . . . . . . . . . . . . . . . . . . . . 399
15.12 ÅöáñìïãÞ ìåèüäïõ êáèõóôåñçìÝíçò åíçìÝñùóçò. . . . . . . . . . . 404
15.13 Ðßíáêáò óåëßäùí ï ïðïßïò äåéêôïäïôåß 5 óåëßäåò óôï äßóêï. . . . . . 406
15.14 Óêéþäçò ðßíáêáò óåëßäùí (ç óõíáëëáãÞ åíçìåñþíåé äåäïìÝíá óôéò
óåëßäåò 4 êáé 5). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

16.1 ÈÝóç ôçò áóöÜëåéáò ÂÜóåùí ÄåäïìÝíùí óå õðïëïãéóôéêü óýóôçìá. 413


16.2 ÓõíÝðåéåò ÷ñÞóçò ôçò åíôïëÞò REVOKE. . . . . . . . . . . . . . . . . 418
16.3 Ó÷çìáôéêÞ áíáðáñÜóôáóç êñõðôïóõóôÞìáôïò. . . . . . . . . . . . . . 423
16.4 Ðñïóùðéêüò é÷íçëÜôçò A1 AND NOT A2 ôïõ Á, üðïõ Á = Á1 AND
A2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
16.5 Êþäéêáò óåëßäáò ASP ãéá ôç äéá÷åßñéóç áéôçìÜôùí åéóüäïõ ÷ñçóôþí
óå ÂÄ ìÝóù åöáñìïãÞò ðáãêüóìéïõ éóôïý. . . . . . . . . . . . . . . 430
16.6 Êþäéêáò ãéá ôï öéëôñÜñéóìá äåäïìÝíùí ðïõ åéóÞãáãå ï ÷ñÞóôçò ìå
óêïðü ôçí áðïìÜêñõíóç ôùí áðëþí åéóáãùãéêþí. . . . . . . . . . . 432

17.1 ÄïìÞ óåëßäáò óôïí MSSQLS-2000. . . . . . . . . . . . . . . . . . . . 438


17.2 Ðñùôåýïí êáé äåõôåñåýïí áñ÷åßï ÂÜóçò ÄåäïìÝíùí. . . . . . . . . . 440
17.3 ÖõóéêÞ ïñãÜíùóç ðßíáêá óùñïý. . . . . . . . . . . . . . . . . . . . . 441
17.4 ÖõóéêÞ ïñãÜíùóç ïìáäïðïéçìÝíïõ ðßíáêá ìå ïìáäïðïéçìÝíï êáôÜ-
ëïãï. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
17.5 Äçìéïõñãßá êáôáëüãïõ óôïí Enterprise Manager. . . . . . . . . . . . 444
17.6 ÐëÜíï åêôÝëåóçò åñùôÞìáôïò ÷ùñßò óýíäåóç. . . . . . . . . . . . . . 448
17.7 ÐëÜíï åêôÝëåóçò åñùôÞìáôïò ìå óýíäåóç. . . . . . . . . . . . . . . . 449
17.8 ÊáñôÝëá Permissions ðáñáèýñïõ äéáëüãïõ Properties ìéáò ÂÄ. . . . 456
17.9 ÐáñÜèõñï äéáëüãïõ Object Properties. . . . . . . . . . . . . . . . . . 459
17.10 ÐáñÜèõñï äéáëüãïõ Column Properties. . . . . . . . . . . . . . . . . 459
17.11 ÐáñÜèõñï äéáëüãïõ Database User Properties. . . . . . . . . . . . . 460
32 ÊáôÜëïãïò Ó÷çìÜôùí

18.1 ÊëÜóç ãéá ôçí áíáðáñÜóôáóç ïñèïãùíßùí. . . . . . . . . . . . . . . 470


18.2 Êëçñïíïìéêüôçôá. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
18.3 ÊëÜóåéò óå éåñáñ÷ßá åîåéäßêåõóçò. . . . . . . . . . . . . . . . . . . . 472
18.4 ÊëÜóåéò óå éåñáñ÷ßá óõìðåñßëçøçò. . . . . . . . . . . . . . . . . . . 473
18.5 Ïñéóìüò êëÜóåùí ìå ãëþóóá ODMG ODL. . . . . . . . . . . . . . . 475
18.6 ÐáñáãùãÞ åêôåëÝóéìïõ êþäéêá [Connolly 2002]. . . . . . . . . . . . 477
18.7 Ïñéóìüò êëÜóåùí ìå ãëþóóá ODMG C++ ODL. . . . . . . . . . . 478
18.8 ÔìÞìá êþäéêá ODMG C++ OML ãéá äçìéïõñãßá íÝïõ õðïêáôá-
óôÞìáôïò. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

19.1 ÅìöùëéáóìÝíåò ó÷Ýóåéò. . . . . . . . . . . . . . . . . . . . . . . . . . 485


19.2 Êáôçãïñéïðïßçóç åöáñìïãþí êáé ÓÄÂÄ. . . . . . . . . . . . . . . . 495

20.1 Ðáñáäåßãìáôá ãåùãñáöéêþí ðëçñïöïñéþí. . . . . . . . . . . . . . . 502


20.2 ÄéáöïñåôéêÝò ðñïóåããßóåéò ãéá õðïóôÞñéîç GIS áðü ÓÄÂÄ. . . . . . 503
20.3 Åñþôçìá ðåñéï÷Þò. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
20.4 R-äÝíäñï. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
20.5 ÔõðéêÞ áñ÷éôåêôïíéêÞ áðïèÞêçò äåäïìÝíùí. . . . . . . . . . . . . . . 510
20.6 ÐïëõäéÜóôáôïò êýâïò (äåí åìöáíßæïíôáé üëåò ïé ôéìÝò). . . . . . . . 511
20.7 Ôñåéò ìïñöÝò ðïëõäéÜóôáôïõ ìïíôÝëïõ äåäïìÝíùí. . . . . . . . . . . 511
20.8 Ðáñáäåßãìáôá åöáñìïãÞò ëåéôïõñãéþí OLAP. . . . . . . . . . . . . 514
20.9 Ëåéôïõñãßåò åîüñõîçò äåäïìÝíùí. . . . . . . . . . . . . . . . . . . . 515
20.10 Ïìáäïðïßçóç äåäïìÝíùí. . . . . . . . . . . . . . . . . . . . . . . . . 516
20.11 Ïìáäïðïßçóç ìåèüäùí ðõêíüôçôáò. . . . . . . . . . . . . . . . . . . 519

21.1 Áñ÷éôåêôïíéêÞ ðåëÜôç/åîõðçñÝôç ôïõ MAS. . . . . . . . . . . . . . . 533


21.2 ÐåñéãñáöÞ êýâïõ Budget ôçò áðïèÞêçò äåäïìÝíùí FoodMart2000. . 536
21.3 Åñþôçìá MDX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
ÊáôÜëïãïò ÐéíÜêùí

2.1 ÉóôïñéêÞ áíáäñïìÞ ìÝóùí áðïèÞêåõóçò. . . . . . . . . . . . . . . . . 54


2.2 ×áñáêôçñéóôéêÜ óýã÷ñïíùí ìáãíçôéêþí äßóêùí. . . . . . . . . . . . 57
2.3 ×áñáêôçñéóôéêÜ óýã÷ñïíùí ïäçãþí ïðôéêþí äßóêùí WORM. (ÐçãÝò:
www.asus.com, www.plextor.com, www.teac.com) . . . . . . . . . . . 65
2.4 ×áñáêôçñéóôéêÜ óýã÷ñïíùí ïäçãþí ìáãíçôéêþí ôáéíéþí. (ÐçãÝò:
www.hp.com, www.dell.com, www.ibm.com) . . . . . . . . . . . . . . 68
2.5 Óýãêñéóç óõóêåõþí ðïõ óôçñßæïíôáé óôçí ïðôéêÞ ôå÷íïëïãßá. . . . . 72

3.1 Ðëçñïöïñßåò êáôá÷ùñéóìÝíåò óôçí çëåêôñïíéêÞ âéâëéïèÞêç. . . . . 84

7.1 ÐñÜîåéò ó÷åóéáêÞò Üëãåâñáò. . . . . . . . . . . . . . . . . . . . . . . 159


7.2 Ëïãéêïß ôåëåóôÝò óýãêñéóçò. . . . . . . . . . . . . . . . . . . . . . . . 160

9.1 Ôýðïé äåäïìÝíùí ôçò SQL-92. . . . . . . . . . . . . . . . . . . . . . . 207


9.2 ×ñÞóç ôïõ êáôçãïñÞìáôïò LIKE. . . . . . . . . . . . . . . . . . . . . 225

10.1 Ôýðïé äåäïìÝíùí ðïõ õðïóôçñßæïíôáé áðü ôïí MSSQLS-2000. . . . 239


10.2 ÓõíáñôÞóåéò óõíÜèñïéóçò. . . . . . . . . . . . . . . . . . . . . . . . . 249
10.3 ÁñéèìçôéêÝò óõíáñôÞóåéò. . . . . . . . . . . . . . . . . . . . . . . . . 249
10.4 ÓõíáñôÞóåéò óõìâïëïóåéñþí. . . . . . . . . . . . . . . . . . . . . . . 250

11.1 ÔéìÝò ðáñáìÝôñùí ãéá ôç óõóêåõÞ ÉÂÌ 3380. . . . . . . . . . . . . . 269


11.2 Áíôéóôïé÷ßá ìåãåèþí åããñáöÞò êáé ôïìÝá. . . . . . . . . . . . . . . . 271

12.1 Óýãêñéóç äïìþí ôçò êëÜóçò ÂÔ(3,15). . . . . . . . . . . . . . . . . . 299


12.2 Ðëçèõóìüò êáé Ýêôáóç Âáëêáíéêþí êñáôþí. . . . . . . . . . . . . . 307

13.1 ÌÝóï ðïóïóôü õðåñ÷åßëéóçò áñ÷åßïõ. . . . . . . . . . . . . . . . . . 328


13.2 ÃåííÞôñéá øåõäïôõ÷áßùí äõáäéêþí áñéèìþí. . . . . . . . . . . . . . 331
13.3 ÅöáñìïãÞ åêèåôéêïý ìåôáó÷çìáôéóìïý. . . . . . . . . . . . . . . . . 339

33
34 ÊáôÜëïãïò ÐéíÜêùí

14.1 ÓôáôéóôéêÝò ðëçñïöïñßåò ðïõ áðïèçêåýïíôáé óôïí êáôÜëïãï óõóôÞ-


ìáôïò ôïõ ÓÄÂÄ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

16.1 Ó÷Ýóç Å÷èñéêÝò ÄõíÜìåéò ìå äéáâáèìéóìÝíç åõáßóèçôç óôñáôéùôéêÞ


ðëçñïöïñßá. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
16.2 ÅìöÜíéóç öáéíïìÝíïõ ðïëõóôéãìéïôõðßáò óå ðïëõåðßðåäï ðßíáêá. . 421
16.3 Óôéãìéüôõðï ôïõ ðßíáêá ÓôáôéóôéêÜ. . . . . . . . . . . . . . . . . . . 426

19.1 Óõãêñéôéêüò ðßíáêáò äõíáôïôÞôùí ÓÄÂÄ. . . . . . . . . . . . . . . . 496

20.1 Óõãêñéôéêüò ðßíáêáò OLTP êáé OLAP óõóôçìÜôùí. . . . . . . . . . 509


20.2 ÁãïñÝò êáé ðñïúüíôá. . . . . . . . . . . . . . . . . . . . . . . . . . . 520
20.3 Õðïóýíïëá ðñïúüíôùí êáé õðïóôÞñéîç. . . . . . . . . . . . . . . . . 520
20.4 Ðáñáäåßãìáôá êáíüíùí óõó÷Ýôéóçò. . . . . . . . . . . . . . . . . . . 521
ÌÝñïò I

ÂÁÓÉÊÅÓ ÅÍÍÏÉÅÓ

Ôï õëéêü ôïõ ðñþôïõ ìÝñïõò ôïõ âéâëßïõ Ý÷åé åéóáãùãéêü ÷áñáêôÞñá êáé óôï-
÷åýåé óôçí ïìáëÞ åéóáãùãÞ ôïõ áíáãíþóôç óôç ãíùóôéêÞ ðåñéï÷Þ ôùí ÂÜóåùí
ÄåäïìÝíùí. Åäþ äßíïíôáé ïé âáóéêÝò Ýííïéåò ôùí ÂÜóåùí ÄåäïìÝíùí, ç êáôá-
íüçóç ôùí ïðïßùí êñßíåôáé áðáñáßôçôç. Áñ÷éêÜ, óôï ÊåöÜëáéï 1, ðáñïõóéÜæåôáé
ìßá åéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí, ðáñáèÝôïíôáò üëá ôá óôïé÷åßá ðïõ óõíèÝ-
ôïõí ôç ãíùóôéêÞ ðåñéï÷Þ. ÐåñéãñÜöåôáé ç áíáãêáéüôçôá ôùí ÂÜóåùí ÄåäïìÝíùí
êáé ç óçìáíôéêÞ âïÞèåéá ðïõ ðñïóöÝñïõí óôéò óýã÷ñïíåò åöáñìïãÝò, ïé áðáéôÞ-
óåéò ôùí ïðïßùí áõîÜíïíôáé äéáñêþò. Ç ðåñéãñáöÞ ôùí åííïéþí åßíáé óõíïðôéêÞ,
äéüôé óôá åðüìåíá êåöÜëáéá áêïëïõèåß áíáëõôéêÞ ðåñéãñáöÞ. Óôï ÊåöÜëáéï 2
ðåñéãñÜöåôáé ç ãåíéêÞ áñ÷éôåêôïíéêÞ åíüò ôõðéêïý óõóôÞìáôïò, êáé áíáëýïíôáé
ôá ôìÞìáôá (õðïóõóôÞìáôá) áðü ôá ïðïßá áðïôåëåßôáé. Åðßóçò, ðñïóäéïñßæåôáé
ç ëåéôïõñãßá ôïõ êÜèå õðïóõóôÞìáôïò êáé ï ôñüðïò óõíåñãáóßáò ôùí õðïóõ-
óôçìÜôùí ìåôáîý ôïõò ãéá ôçí åðßôåõîç ôïõ óôü÷ïõ, ðïõ äåí åßíáé Üëëïò áðü ôçí
áðïôåëåóìáôéêÞ êáé áðïäïôéêÞ äéá÷åßñéóç ôùí äåäïìÝíùí. Óôï ÊåöÜëáéï 3 ðá-
ñïõóéÜæåôáé ôï ìïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí, ôï ïðïßï áðïôåëåß ìßá ðñþôç
ðñïóÝããéóç ãéá ôç ìïíôåëïðïßçóç åíüò óõíüëïõ äåäïìÝíùí. ÊáôÜ ôï ó÷åäéáóìü
ìßáò åöáñìïãÞò, áñ÷éêÜ êáôáóêåõÜæåôáé ôï ìïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí êáé
óôç óõíÝ÷åéá ðñáãìáôïðïéåßôáé ç ìåôáôñïðÞ óôï áíôßóôïé÷ï ìïíôÝëï ðïõ õðï-
óôçñßæåôáé áðü ôï åêÜóôïôå óýóôçìá äéá÷åßñéóçò. ÔÝëïò, óôï ÊåöÜëáéï 5 ãßíåôáé
ìßá åéóáãùãÞ óôï Óýóôçìá Äéïßêçóçò ÂÜóåùí ÄåäïìÝíùí Microsoft SQL Server
2000, ðáñïõóéÜæïíôáò ôá âáóéêüôåñá ÷áñáêôçñéóôéêÜ ôïõ óõóôÞìáôïò êáé ðåñé-
ãñÜöïíôáò óõíïðôéêÜ ôá õðïóõóôÞìáôÜ ôïõ êáé ôç ëåéôïõñãéêüôçôá ôïõ êáèåíüò.
ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí
1
Ôï âáóéêü ÷áñáêôçñéóôéêü ôùí óýã÷ñïíùí åöáñìïãþí åßíáé ç áðáßôçóç ãéá ôçí
áðïôåëåóìáôéêÞ êáé áðïäïôéêÞ äéá÷åßñéóç ôçò áðïèçêåõìÝíçò ðëçñïöïñßáò. Áñ-
÷éêÜ, ç äéá÷åßñéóç ôçò ðëçñïöïñßáò ãéíüôáí áðü ôéò ßäéåò ôéò åöáñìïãÝò, ÷ñçóé-
ìïðïéþíôáò ôï óýóôçìá áñ÷åßùí (file system) ôïõ ëåéôïõñãéêïý óõóôÞìáôïò, åíþ
ïé ìÝèïäïé åðåîåñãáóßáò êáé áíÜêôçóçò ôùí äåäïìÝíùí Þôáí åíóùìáôùìÝíåò
óôïí êþäéêá ôçò åêÜóôïôå åöáñìïãÞò. Ï ôñüðïò áõôüò äéá÷åßñéóçò, áí êáé äßíåé
óôïí ðñïãñáììáôéóôÞ ôçí åõåëéîßá íá õëïðïéÞóåé ôéò ìåèüäïõò åðåîåñãáóßáò ðïõ
áõôüò åðéèõìåß, ùóôüóï äçìéïõñãåß ðñïâëÞìáôá êáèþò áõîÜíåôáé ï üãêïò ôùí
äåäïìÝíùí êáé ç ðïëõðëïêüôçôá ôçò ðëçñïöïñßáò. Ãéá ðáñÜäåéãìá, áí óôü÷ïò
ôçò åöáñìïãÞò åßíáé ç äéá÷åßñéóç áñéèìçôéêþí äåäïìÝíùí êáé õðÜñ÷åé ç áíÜãêç
ãéá áðïèÞêåõóç êáé äéá÷åßñéóç ìåñéêþí åêáôïíôÜäùí áñéèìþí, ôüôå áõôü ìðïñåß
íá õëïðïéçèåß åýêïëá áðïèçêåýïíôáò ôïõò áñéèìïýò óå Ýíá áñ÷åßï ôïõ ëåéôïõñãé-
êïý óõóôÞìáôïò, êáé õëïðïéþíôáò ôéò áðáñáßôçôåò ëåéôïõñãßåò õðïëïãéóìþí (ð.÷.,
ìÝóïò üñïò, åëÜ÷éóôç ôéìÞ, ìÝãéóôç ôéìÞ) óôç ëïãéêÞ ôçò åöáñìïãÞò. Áò èåùñÞ-
óïõìå üìùò ìßá ðïëõðëïêüôåñç åöáñìïãÞ ðïõ óôü÷ï Ý÷åé ôçí ïñãÜíùóç ìßáò
çëåêôñïíéêÞò âéâëéïèÞêçò, üðïõ áðáéôåßôáé ç áíáæÞôçóç Üñèñùí Þ âéâëßùí ìå
âÜóç ôï óõããñáöÝá, ôïí ôßôëï, ôçí çìåñïìçíßá Ýêäïóçò, åíþ áêüìç áðáéôåßôáé ç
áíáæÞôçóç Üñèñùí ìå âÜóç ëÝîåéò-êëåéäéÜ (keywords) áðü üëï ôï êåßìåíï. Åßíáé

37
38 ÊåöÜëáéï 1. ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí

ðñïöáíÝò üôé èá áðáéôçèåß áñêåôÞ ðñïóðÜèåéá áðü ôïí ðñïãñáììáôéóôÞ ãéá ôçí
õëïðïßçóç ôçò åöáñìïãÞò ëáìâÜíïíôáò õð’ üøç üôé:

• ÁíáìÝíåôáé ôï ðëÞèïò ôùí Üñèñùí Þ ôùí âéâëßùí íá åßíáé ìåãÜëïò, ìå


áðïôÝëåóìá íá åðéâÜëëåôáé ç ÷ñÞóç áðïäïôéêþí ìåèüäùí áíáæÞôçóçò.

• Ç äïìÞ ôçò ðëçñïöïñßáò åßíáé ðåñßðëïêç, äéüôé Ýíáò óõããñáöÝáò ìðïñåß


íá Ý÷åé óõìâÜëëåé óôç óõããñáöÞ ðïëëþí Üñèñùí, åíþ óôç óõããñáöÞ åíüò
Üñèñïõ ìðïñåß íá Ý÷ïõí óõìâÜëëåé ðïëëïß óõããñáöåßò.

• ÐñÝðåé íá âñåèåß Ýíáò áðïôåëåóìáôéêüò êáé áðïäïôéêüò ôñüðïò áíáæÞôç-


óçò ôùí ëÝîåùí ìÝóá óôï êåßìåíï. Ðñïöáíþò, ç åîÝôáóç êÜèå êåéìÝíïõ
îå÷ùñéóôÜ Ý÷åé áðáãïñåõôéêü êüóôïò ëüãù ôïõ ìåãÜëïõ áñéèìïý ôùí êåéìÝ-
íùí ëáìâÜíïíôáò ìÜëéóôá õð’ üøç üôé Ýíá êåßìåíï ìðïñåß íá åßíáé áñêåôÜ
åêôåíÝò.

• ÕðÜñ÷åé ç áíÜãêç ãéá åéóáãùãÞ íÝùí óôïé÷åßùí, üðùò ãéá ðáñÜäåéãìá ç


åíçìÝñùóç ôùí äåäïìÝíùí üôáí õðÜñ÷åé Ýíá íÝï Üñèñï ðïõ ðñÝðåé íá
êáôá÷ùñéóèåß.

• ÁíáìÝíåôáé üôé ðïëëïß ÷ñÞóôåò èá ÷ñçóéìïðïéïýí ôçí åöáñìïãÞ ôáõôü-


÷ñïíá, ìå áðïôÝëåóìá íá áðáéôïýíôáé åéäéêïß ìç÷áíéóìïß ðñïóðÝëáóçò êáé
óõã÷ñïíéóìïý ôùí ðñïóðåëÜóåùí áðü äéáöïñåôéêïýò ÷ñÞóôåò.

Áò åîåôÜóïõìå ìå ðåñéóóüôåñç ëåðôïìÝñåéá ðïéÜ åßíáé ôá âáóéêÜ ìåéïíåêôÞ-


ìáôá ôçò áðïèÞêåõóçò êáé äéá÷åßñéóçò ôùí äåäïìÝíùí áð’ åõèåßáò óå áñ÷åßá ôïõ
ëåéôïõñãéêïý óõóôÞìáôïò. Óôç óõíÝ÷åéá èá åîåôÜóïõìå ôçí åíáëëáêôéêÞ ëýóç
ðïõ ðñïóöÝñåé ç ïñãáíùìÝíç äéá÷åßñéóç ôùí äåäïìÝíùí áðü åîåéäéêåõìÝíá óõ-
óôÞìáôá, äßíïíôáò ôïõò áðáñáßôçôïõò ïñéóìïýò.

• Ï ðñïãñáììáôéóôÞò ôçò åöáñìïãÞò åßíáé õðåýèõíïò ãéá ôç óùóôÞ åíçìÝ-


ñùóç ôùí áñ÷åßùí ôùí äåäïìÝíùí, áíáëüãùò ìå ôéò åéóáãùãÝò êáé äéá-
ãñáöÝò ðïõ ðñáãìáôïðïéïýíôáé. Ãéá ðáñÜäåéãìá, Ýóôù üôé óôï áñ÷åßï Á1
áðïèçêåýïíôáé ôá óôïé÷åßá åíüò Üñèñïõ (ð.÷., ôßôëïò, áñéèìüò óåëßäùí),
åíþ óôï áñ÷åßï Á2 áðïèçêåýïíôáé ôá ïíüìáôá ôùí óõããñáöÝùí êÜèå Üñ-
èñïõ. ÊáôÜ ôçí åéóáãùãÞ åíüò íÝïõ Üñèñïõ èá ðñÝðåé íá åíçìåñùèåß ôï
áñ÷åßï Á1 ìå ôá áðáñáßôçôá óôïé÷åßá, åíþ ôï áñ÷åßï Á2 èá ðñÝðåé íá åíç-
ìåñùèåß ìå ôá óôïé÷åßá ôùí óõããñáöÝùí ôïõ Üñèñïõ. Åðßóçò, êáôÜ ôçí
áíáæÞôçóç óôïé÷åßùí èá ðñÝðåé óå ðñþôï óôÜäéï íá ðñïóäéïñéóèïýí ôá
áðáéôïýìåíá áñ÷åßá, åíþ óå äåýôåñï óôÜäéï ðñÝðåé íá ãßíåé ðñïóåêôéêÞ
áíÜãíùóç ôùí äåäïìÝíùí, óõíäõÜæïíôáò êáôÜëëçëá ôéò ðëçñïöïñßåò ðïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 39

ðåñéÝ÷ïõí ôá äéáöïñåôéêÜ áñ÷åßá. Ç êáôÜóôáóç äõóêïëåýåé üóï áõîÜíåôáé


ï áñéèìüò ôùí áñ÷åßùí äåäïìÝíùí êáé üóï áõîÜíåôáé ç ðïëõðëïêüôçôá ôùí
åñùôçìÜôùí.

• Ç äïìÞ ôïõ êÜèå áñ÷åßïõ êáèïñßæåôáé áðü ôçí ßäéá ôçí åöáñìïãÞ. Áõôü Ý÷åé
ùò áðïôÝëåóìá íá åßíáé äýóêïëç ç áëëáãÞ ôçò äïìÞò åíüò áñ÷åßïõ. ÐïëëÝò
öïñÝò ðáñïõóéÜæåôáé ç áíÜãêç íá ðñïóôåèåß Ýíá íÝï ÷áñáêôçñéóôéêü óôá
äåäïìÝíá. Ãéá ðáñÜäåéãìá, ìðïñåß íá áðáéôçèåß ç ðñïóèÞêç óôï áñ÷åßï
Á1 åíüò áêüìç ðåäßïõ ðïõ íá ðåñéÝ÷åé ôï ðëÞèïò ôùí âéâëéïãñáöéêþí áíá-
öïñþí (citations) ðïõ ðåñéÝ÷ïíôáé óôï Üñèñï. Óå ìßá ôÝôïéá ðåñßðôùóç
ðñÝðåé áö’ åíüò íá ìåôáâëçèåß ç äïìÞ ôïõ áñ÷åßïõ Á1, Ýôóé þóôå íá äç-
ìéïõñãçèåß ÷þñïò ãéá ôï íÝï ðåäßï, êáé áö’ åôÝñïõ íá ìåôáâëçèåß ç ëïãéêÞ
ôçò åöáñìïãÞò þóôå íá ëçöèåß ôï íÝï ðåäßï õð’ üøç êáôÜ ôçí áíáæÞôçóç,
åéóáãùãÞ êáé äéáãñáöÞ äåäïìÝíùí. Ïé áëëáãÝò áõôÝò åßíáé ÷ñïíïâüñåò
êáé åðéêßíäõíåò ãéá ôçí áêåñáéüôçôá ôùí áðïèçêåõìÝíùí äåäïìÝíùí.

• Åö’ üóïí ï ôñüðïò äçìéïõñãßáò ôùí áñ÷åßùí êáèïñßæåôáé áðü ôçí åöáñ-
ìïãÞ, ç ìïñöïðïßçóç ôùí áñ÷åßùí åîáñôÜôáé áðü ôçí åêÜóôïôå ãëþóóá
ðñïãñáììáôéóìïý ðïõ ÷ñçóéìïðïéåß ï ðñïãñáììáôéóôÞò (üðùò C, C++,
Java, Visual Basic). Ôï ãåãïíüò áõôü äçìéïõñãåß äõóêïëßåò üôáí áðáéôåß-
ôáé ç ÷ñÞóç ôùí áñ÷åßùí áðü äéáöïñåôéêÝò åöáñìïãÝò Þ üôáí áðáéôåßôáé ç
êáôáóêåõÞ ôùí áñ÷åßùí áðü äéáöïñåôéêïýò ðñïãñáììáôéóôÝò ðïõ ÷ñçóéìï-
ðïéïýí äéáöïñåôéêÝò ãëþóóåò ðñïãñáììáôéóìïý óå äéáöïñåôéêÜ ëåéôïõñ-
ãéêÜ óõóôÞìáôá (üðùò Linux, Windows, MacOS). Ôï ðñüâëçìá åßíáé éäéáß-
ôåñá Ýíôïíï üôáí ôá äåäïìÝíá áðïèçêåýïíôáé óå äõáäéêÞ (binary) ìïñöÞ
êáé ü÷é óå áëöáñéèìçôéêÞ (alphanumeric, text) ìïñöÞ.

• Óå ðïëëÝò ðåñéðôþóåéò ç åöáñìïãÞ åîõðçñåôåß ðïëëïýò ÷ñÞóôåò ôáõôü-


÷ñïíá. Ç äéáóöÜëéóç ôçò ðñïóôáóßáò êáé ôçò áêåñáéüôçôáò ôùí äåäïìÝíùí
êáôÜ ôçí ôáõôü÷ñïíç áíáæÞôçóç, åéóáãùãÞ êáé äéáãñáöÞ óôïé÷åßùí åßíáé
áñêåôÜ ðåñßðëïêç. Åðßóçò, óå óõãêåêñéìÝíåò ëåéôïõñãßåò ðñÝðåé íá äéá-
óöáëßæåôáé ç áôïìéêüôçôá ôçò åêôÝëåóçò. Ìå ôïí üñï "áôïìéêüôçôá" åí-
íïïýìå üôé Ýíá óýíïëï ëåéôïõñãéþí åßôå èá åêôåëåóèåß óõíïëéêÜ, åßôå èá
áðïññéöèåß óõíïëéêÜ. ×áñáêôçñéóôéêü ðáñÜäåéãìá áðïôåëåß ç áíÜëçøç
÷ñçìÜôùí áðü ìßá ôñáðåæéêÞ áõôüìáôç ôáìåéáêÞ ìç÷áíÞ (ÁÔÌ). Åäþ äéá-
êñßíïõìå äýï îå÷ùñéóôÝò ëåéôïõñãßåò: á) áíÜëçøç åíüò ðïóïý êáé â) åíçìÝ-
ñùóç ôïõ ëïãáñéáóìïý ìå ôï íÝï õðüëïéðï. Áí áðïôý÷åé ìßá áðü ôéò äýï
ëåéôïõñãßåò, ôüôå èá áðïôý÷åé êáé ôï óýíïëü ôïõò. Óå äéáöïñåôéêÞ ðåñß-
ðôùóç èá äçìéïõñãçèåß óïâáñü ðñüâëçìá áêåñáéüôçôáò äåäïìÝíùí êáèþò
40 ÊåöÜëáéï 1. ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí

ôá äåäïìÝíá ôïõ óõóôÞìáôïò èá åßíáé ëáíèáóìÝíá (ð.÷., åíþ Ýãéíå ç áíÜ-


ëçøç äåí áöáéñÝèçêå ôï ðïóü áðü ôï õðüëïéðï ôïõ ëïãáñéáóìïý).
• Óôç ãåíéêÞ ðåñßðôùóç, êÜèå ÷ñÞóôçò ôçò åöáñìïãÞò Ý÷åé äéáöïñåôéêÜ äé-
êáéþìáôá ùò ðñïò ôçí ðñïóðÝëáóç ôùí äåäïìÝíùí. Ãéá ðáñÜäåéãìá, ìßá
ïìÜäá ÷ñçóôþí ìðïñåß íá Ý÷åé ìüíï äéêáéþìáôá áíÜãíùóçò ôùí äåäïìÝíùí,
åíþ ìßá Üëëç ïìÜäá ÷ñçóôþí ìðïñåß íá Ý÷åé äéêáéþìáôá áíÜãíùóçò êáé åé-
óáãùãÞò íÝùí äåäïìÝíùí áëëÜ ü÷é äéáãñáöÞò. Ç åöáñìïãÞ ôùí êáíüíùí
ðñïóôáóßáò ôùí äåäïìÝíùí þóôå íá áðïöåýãïíôáé äõóÜñåóôåò êáôáóôÜ-
óåéò áðþëåéáò äåäïìÝíùí (åßôå êáôÜ ëÜèïò, åßôå åóêåììÝíá), óôçñéæüìåíïé
óôá åñãáëåßá ôïõ ëåéôïõñãéêïý óõóôÞìáôïò, åðéôõã÷Üíåôáé äýóêïëá. Åðé-
ðëÝïí, åßíáé ðïëý äýóêïëï íá ïñßóïõìå äéáöïñåôéêÜ äéêáéþìáôá ìÝóá óôï
ßäéï áñ÷åßï.
• Åö’ üóïí ç ëïãéêÞ ôçò áíáæÞôçóçò óôïé÷åßùí áðü ôá áñ÷åßá äåäïìÝíùí
õëïðïéåßôáé óôïí êþäéêá ôçò åöáñìïãÞò, ïé äéáöïñåôéêïß ôýðïé åñùôçìÜ-
ôùí ðïõ ìðïñåß íá äå÷èåß ç åöáñìïãÞ åßíáé ðåñéïñéóìÝíïé êáé ðñÝðåé íá
õëïðïéçèïýí åê ôùí ðñïôÝñùí. Áõôü áðïôåëåß áñêåôÜ äåóìåõôéêü ðáñÜ-
ãïíôá ëáìâÜíïíôáò õð´üøç üôé åßíáé ó÷åäüí áäýíáôï íá ðñïâëÝøïõìå üëá
ôá äõíáôÜ åñùôÞìáôá ðïõ ìðïñåß íá åðéèõìåß íá èÝóåé Ýíáò ÷ñÞóôçò. Ç
õðïóôÞñéîç íÝùí åñùôçìÜôùí áðáéôåß áëëáãÞ óôïí êþäéêá ôçò åöáñìïãÞò,
êÜôé ðïõ ãåíéêÜ äåí åßíáé åðéèõìçôü äéüôé ïäçãåß óå íÝåò åêäüóåéò (versions)
ôïõ ëïãéóìéêïý.

1.1 ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí


Ïé ðåñéïñéóìïß ðïõ áíáöÝñèçêáí ïöåßëïíôáé êõñßùò óôï üôé ç äéá÷åßñéóç ôùí
äåäïìÝíùí åßíáé åíóùìáôùìÝíç óôïí êþäéêá ôçò åöáñìïãÞò, åéóÜãïíôáò óçìá-
íôéêÝò äõóêïëßåò óôçí åðåîåñãáóßá êáé óôçí áëëáãÞ ôçò äïìÞò ôùí äåäïìÝíùí. Ç
ðñïóÝããéóç áõôÞ äéá÷ùñßæåé ôá äåäïìÝíá áðü ôéò ìåèüäïõò åðåîåñãáóßáò, ðñï-
óöÝñåé åõåëéîßá êáé åðéðëÝïí áðïäåóìåýåé ôïí ðñïãñáììáôéóôÞ áðü ôçí áíÜ-
ãêç óõã÷ñïíéóìïý ôùí äåäïìÝíùí êáé ôçí õëïðïßçóç ôçò ëïãéêÞò ðñïóðÝëáóçò
ôùí äåäïìÝíùí. Ç ðñïóÝããéóç áõôÞ óôçñßæåôáé óå Ýíá Óýóôçìá ÂÜóçò ÄåäïìÝ-
íùí (database system) ôï ïðïßï áíáëáìâÜíåé áðïêëåéóôéêÜ ôçí áðïèÞêåõóç, ðñï-
óôáóßá êáé åðåîåñãáóßá ôùí äåäïìÝíùí, ðáñÝ÷ïíôáò åîåëéãìÝíïõò ìç÷áíéóìïýò
ðñüóâáóçò, äéêáéùìÜôùí êáé åíçìÝñùóçò ôùí äåäïìÝíùí. ¸íá Óýóôçìá ÂÜóçò
ÄåäïìÝíùí áðïôåëåßôáé áðü ôá åîÞò:
• Ôç ÂÜóç ÄåäïìÝíùí (database), ç ïðïßá áðïôåëåß ìßá óõëëïãÞ óôïé÷åßùí
ó÷åôéêþí ìåôáîý ôïõò, ðïõ åßíáé äïìçìÝíá êáé êáôá÷ùñéóìÝíá ìå êáôÜë-
ëçëï ôñüðï, êáé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 41

• Ôï Óýóôçìá Äéá÷åßñéóçò (Þ Äéïßêçóçò) ÂÜóçò ÄåäïìÝíùí (database man-


agement system), ôï ïðïßï åßíáé Ýíá ëïãéóìéêü óýóôçìá ðïõ õëïðïéåß üëåò
ôéò ëåéôïõñãßåò ðïõ ðñÝðåé íá õðïóôçñé÷èïýí, üðùò áíáæÞôçóç, åéóáãùãÞ,
äéáãñáöÞ, óõã÷ñïíéóìüò ðñïóðåëÜóåùí, ðñïóôáóßá êáé ðïëëÝò áêüìç ïé
ïðïßåò èá áíáëõèïýí óå åðüìåíá êåöÜëáéá. Óçìåéþíåôáé üôé ôï Óýóôçìá
Äéá÷åßñéóçò ÂÜóçò ÄåäïìÝíùí (ÓÄÂÄ) åßíáé óå èÝóç íá äéá÷åéñßæåôáé ðïë-
ëÝò ÂÜóåéò ÄåäïìÝíùí (ÂÄ) ôáõôü÷ñïíá, áíáëüãùò ìå ôéò áðáéôÞóåéò ôùí
÷ñçóôþí.

Χ ρ ή σ τ ε ς

Σ ύ σ τ η # α Β ά σ η ς ( ε δ ο # έ ν ω ν

Σ ύ σ τ η # α ( ι α χ ε ί ρ ι σ η ς Β ά σ η ς ( ε δ ο # έ ν ω ν

Ε ν η έ ρ ω σ η

α ξ ι ν ό η σ η
Τ

Α ν α ζ ή τ η σ η

… … . .

Ε π ε ξ ε ρ γ α σ ί α

Α σ φ ά λ ε ι α

… … . .

Β ά σ η  ε δ ο έ ν ω ν
Β ά σ η  ε δ ο έ ν ω ν
Β ά σ η  ε δ ο έ ν ω ν

I I Ι Ι Ι

Ó÷Þìá 1.1: ÂÜóç ÄåäïìÝíùí êáé Óýóôçìá Äéá÷åßñéóçò.

Óôï Ó÷Þìá 1.1 ðáñïõóéÜæåôáé ç ó÷Ýóç ìåôáîý ôçò ÂÄ êáé ôïõ ÓÄÂÄ. Ðáñáôç-
ñïýìå üôé ïé ÷ñÞóôåò äåí Ý÷ïõí Üìåóç ðñüóâáóç óôá äåäïìÝíá. Ç ðñïóðÝëáóç
ôùí äåäïìÝíùí åðéôõã÷Üíåôáé ìÝóù ôùí ìç÷áíéóìþí ðïõ Ý÷ïõí õëïðïéçèåß óôï
ÓÄÂÄ. Ìå ôïí ôñüðï áõôüí, ï Ýëåã÷ïò ôùí äåäïìÝíùí áíÞêåé óôï ÓÄÂÄ êáé ìüíï
áõôü åßíáé õðåýèõíï ãéá ôç äéá÷åßñéóç êáé ôçí ðñïóôáóßá ôïõò.
Áò ðñïóÝîïõìå áíáëõôéêÜ ôá ðëåïíåêôÞìáôá ðïõ ðñïóöÝñåé ç äïìÞ áõôÞ
óå ó÷Ýóç ôüóï ìå ôéò äõíáôüôçôåò äéá÷åßñéóçò ôùí äåäïìÝíùí üóï êáé ìå ôçí
õðïóôÞñéîç ôùí ôåëéêþí ÷ñçóôþí (end-users).
42 ÊåöÜëáéï 1. ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí

• ÐåñéãñáöÞ ÄåäïìÝíùí. Ôï ðñþôï âáóéêü ðëåïíÝêôçìá åßíáé üôé ôï Óýóôçìá


ôçò ÂÜóçò ÄåäïìÝíùí åêôüò áðü ôá äåäïìÝíá ðåñéÝ÷åé êáé âïçèçôéêÝò ðëç-
ñïöïñßåò ãéá ôçí ðåñéãñáöÞ ôïõò. Ôï ÷áñáêôçñéóôéêü áõôü åðéôñÝðåé ôç
ìåôáâïëÞ ôçò äïìÞò êáé ôçò ïñãÜíùóçò ôùí äåäïìÝíùí óýìöùíá ìå ôéò
áðáéôÞóåéò ôùí ÷ñçóôþí. Óçìåéþíåôáé üôé ï ðñïãñáììáôéóôÞò äåí ÷ñåéÜæå-
ôáé íá ðáñÝìâåé, äéüôé üëïé ïé ìç÷áíéóìïß äéá÷åßñéóçò ôùí äåäïìÝíùí åßíáé
õëïðïéçìÝíïé óôï ÓÄÂÄ, ðïõ åðåìâáßíåé áð’ åõèåßáò óôçí áðïèçêåõìÝíç
ðëçñïöïñßá. Óôçí õëïðïßçóç ìå áñ÷åßá, ïé ðëçñïöïñßåò ãéá ôç äïìÞ êáé
ôçí ïñãÜíùóç ôùí äåäïìÝíùí âñßóêïíôáé óôïí êþäéêá ôçò åöáñìïãÞò ìå
áðïôÝëåóìá ç áëëáãÞ ôïõò íá áðáéôåß óçìáíôéêÞ åñãáóßá áðü ôçí ðëåõñÜ
ôïõ ðñïãñáììáôéóôÞ.

• Áíåîáñôçóßá ÄåäïìÝíùí êáé Ëåéôïõñãéþí. Ôá äåäïìÝíá äéá÷ùñßæïíôáé áðü


ôéò ëåéôïõñãßåò ðïõ ìðïñïýí íá åöáñìïóèïýí óå áõôÜ, óå áíôßèåóç ìå ôçí
ðñïóÝããéóç ôçò õëïðïßçóçò ìå áñ÷åßá. ¸ôóé ðñïóöÝñåôáé åõåëéîßá, äéüôé
ç ìåôáâïëÞ ôçò äïìÞò ôùí äåäïìÝíùí äåí áðáéôåß ôç ìåôáâïëÞ ôùí ðñï-
ãñáììÜôùí åöáñìïãÞò. Åðßóçò, ç õðïóôÞñéîç íÝùí ëåéôïõñãéþí åðß ôùí
äåäïìÝíùí ðñáãìáôïðïéåßôáé åõêïëüôåñá, êáèþò åðéâÜëëïíôáé ìüíï ðñï-
óèÞêåò óôéò Þäç õðÜñ÷ïõóåò ëåéôïõñãßåò. Ï äéá÷ùñéóìüò ìåôáîý äåäïìÝ-
íùí êáé ëåéôïõñãéþí äéåõêïëýíåé, áêüìç, ôçí áðïèÞêåõóç ôùí äåäïìÝíùí
óå äéáöïñåôéêÝò äéáìïñöþóåéò (format) êáé äéáöïñåôéêÜ ìÝóá áðïèÞêåõ-
óçò, ÷ùñßò íá áðáéôåßôáé áëëáãÞ ôùí ðñïãñáììÜôùí åöáñìïãÞò. ÅðéðëÝïí,
äéåõêïëýíåôáé ç áíÜðôõîç åöáñìïãþí óå äéáöïñåôéêÝò ãëþóóåò ðñïãñáì-
ìáôéóìïý, êáèþò áõôü åðéôõã÷Üíåôáé ìÝóù ôïõ ÓÄÂÄ ðïõ äéá÷åéñßæåôáé
üëá ôá äåäïìÝíá. Áðåíáíôßáò, óôçí õëïðïßçóç ìå áñ÷åßá, ìåôáâïëÝò óôïí
ôñüðï áðïèÞêåõóçò ôùí äåäïìÝíùí óõíåðÜãïíôáé ôç ìåôáâïëÞ ôïõ êþäéêá
ôçò åöáñìïãÞò.

• Áðïäïôéêüôåñç Äéá÷åßñéóç ÄåäïìÝíùí. Ç õëïðïßçóç üëùí ôùí ëåéôïõñãéþí


åðß ôùí äåäïìÝíùí âñßóêåôáé ìÝóá óôï ÓÄÂÄ. Ïé êáôáóêåõáóôÝò ÓÄÂÄ
öñïíôßæïõí þóôå ï êþäéêáò íá åßíáé üóï ôï äõíáôüí áðïäïôéêüôåñïò êáé
ç åðåîåñãáóßá ôùí åñùôçìÜôùí íá ãßíåôáé ìå üóï ðñáãìáôïðïéåßôáé ìå
üóï äõíáôüí êáëýôåñï ôñüðï. ÅðïìÝíùò, ï ðñïãñáììáôéóôÞò åöáñìïãþí
áðïäåóìåýåôáé áðü ôç ìåëÝôç, õëïðïßçóç êáé åöáñìïãÞ áðïäïôéêþí áë-
ãïñßèìùí êáé ìåèüäùí ðñïóðÝëáóçò êáé åðéêåíôñþíåôáé óôçí õëïðïßçóç
ëåéôïõñãéþí ðïõ áöïñïýí ìüíï óôçí åêÜóôïôå åöáñìïãÞ êáé ü÷é óôá áðï-
èçêåõìÝíá äåäïìÝíá. Ç ðñïóðÝëáóç ôùí äåäïìÝíùí êáé ç ìåôáöïñÜ áõôþí
óôï ÷ñÞóôç Þ ôçí åöáñìïãÞ åßíáé áñìïäéüôçôá ôïõ ÓÄÂÄ.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 43

• Ðñïóôáóßá ÄåäïìÝíùí êáé Äéêáéþìáôá ×ñçóôþí. Ôï ÓÄÂÄ õëïðïéåß ìç÷á-


íéóìïýò ðñïóôáóßáò äåäïìÝíùí ìå óôü÷ï ôçí áðïöõãÞ äéáãñáöÞò Þ åíçìÝ-
ñùóçò ôùí äåäïìÝíùí ÷ùñßò ôçí áðáñáßôçôç äéêáéïäïóßá. Åêôüò áðü ôïí
ðáñáäïóéáêü ôñüðï êëåéäþìáôïò ìå ÷ñÞóç ïíüìáôïò ÷ñÞóôç (username)
êáé êùäéêïý ðñüóâáóçò (password), ôï ÓÄÂÄ åðéôñÝðåé ôçí áðüäïóç óõ-
ãêåêñéìÝíùí äéêáéùìÜôùí óå óõãêåêñéìÝíïõò ÷ñÞóôåò ôïõ óõóôÞìáôïò. Ãéá
ðáñÜäåéãìá, óå Ýíá ÷ñÞóôç ìðïñåß íá åðéôñáðåß ç áíÜãíùóç åíüò óõíüëïõ
äåäïìÝíùí áëëÜ íá áðïôñáðåß ç äéáãñáöÞ Þ ç åíçìÝñùóÞ ôïõò, ãéá ëü-
ãïõò áóöáëåßáò. Ðáñïìïßùò, ç åíçìÝñùóç êáé ç åéóáãùãÞ íÝùí óôïé÷åßùí
óôç ÂÄ ìðïñåß íá åðéôñáðåß ìüíï óå Ýíá ìéêñü óýíïëï åîïõóéïäïôçìÝíùí
÷ñçóôþí. ÅðåéäÞ ç áðüäïóç ôùí äéêáéùìÜôùí ãßíåôáé ìå äõíáìéêü êáé ü÷é
ìå óôáôéêü ôñüðï, ôá äéêáéþìáôá åíüò ÷ñÞóôç ìðïñïýí íá ìåôáâÜëëïíôáé
áíáëüãùò ìå ôéò áíÜãêåò áðü ôï äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò.

• Ìç÷áíéóìïß Ôáõôü÷ñïíçò ÐñïóðÝëáóçò. Ç äõíáôüôçôá ôáõôü÷ñïíçò õðï-


óôÞñéîçò ðïëëþí ÷ñçóôþí åßíáé ðïëý óçìáíôéêÞ óôéò óýã÷ñïíåò åöáñìïãÝò.
Áí ðïëëïß ÷ñÞóôåò Ý÷ïõí äéêáéþìáôá åíçìÝñùóçò ôïõ ßäéïõ ôìÞìáôïò ôùí
äåäïìÝíùí, ôüôå õðÜñ÷åé ìåãÜëç ðéèáíüôçôá äýï Þ ðåñéóóüôåñïé ÷ñÞóôåò
íá ðñïóðáèÞóïõí ôáõôü÷ñïíá íá ìåôáâÜëëïõí ôá äåäïìÝíá. Áíôéóôïß÷ùò,
õðÜñ÷åé ç ðåñßðôùóç Ýíáò ÷ñÞóôçò íá ðñïóðáèÞóåé íá ìåôáâÜëëåé êÜðïéá
äåäïìÝíá ðïõ ôç óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ ðñïóðåëáýíïíôáé ãéá áíÜ-
ãíùóç áðü Üëëïõò ÷ñÞóôåò. Óå ôÝôïéåò ðåñéðôþóåéò áðáéôåßôáé Ýíáò ìç-
÷áíéóìüò åëÝã÷ïõ êáé óõã÷ñïíéóìïý ôùí äéáöïñåôéêþí ëåéôïõñãéþí þóôå
íá áðïöåõ÷èåß êáôáóôñïöÞ ôùí äåäïìÝíùí. ÓõíÞèùò ÷ñçóéìïðïéïýíôáé
ìç÷áíéóìïß êëåéäþìáôïò (locking) Ýôóé þóôå äåäïìÝíá ðïõ åßíáé Þäç óå
÷ñÞóç (üðùò ãéá áíÜãíùóç Þ åíçìÝñùóç) íá ìçí åðéôñÝðåôáé íá ìåôáâëç-
èïýí. Ïé ìç÷áíéóìïß áõôïß ðñïóöÝñïíôáé áðü ôï ÓÄÂÄ áðïäåóìåýïíôáò
ôïõò ôåëéêïýò ÷ñÞóôåò êáé ôïõò ðñïãñáììáôéóôÝò áðü ôï äýóêïëï Ýñãï ôïõ
óõã÷ñïíéóìïý ëåéôïõñãéþí.

• Åðåêôáóéìüôçôá. Ôá óýã÷ñïíá ÓÄÂÄ åðéôñÝðïõí ôçí åíóùìÜôùóç íÝùí


ìåèüäùí åðåîåñãáóßáò, íÝùí ôýðùí äåäïìÝíùí êáé íÝùí äïìþí ïñãÜíùóçò
äåäïìÝíùí. Ç äõíáôüôçôá áõôÞ ðñïóöÝñåé ðïëëÜ ðëåïíåêôÞìáôá, äéüôé ôï
óýóôçìá ìðïñåß íá ðñïóáñìüæåôáé áíáëüãùò ìå ôéò áðáéôÞóåéò ôùí ÷ñç-
óôþí. Ôï âáóéêü ÷áñáêôçñéóôéêü ôçò äõíáôüôçôáò áõôÞò åßíáé üôé ïé íÝåò
ôå÷íéêÝò ðïõ õëïðïéïýíôáé ãßíïíôáé ìÝñïò ôïõ ÓÄÂÄ, êé Ýôóé äåí áðáéôåß-
ôáé ç õëïðïßçóç îå÷ùñéóôþí ðñïãñáììÜôùí åöáñìïãÞò ãéá ôçí õðïóôÞñéîÞ
ôïõò.
44 ÊåöÜëáéï 1. ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí

Áðü ôçí ðñïçãïýìåíç áíÜëõóç öáßíåôáé êáèáñÜ üôé ç ÷ñÞóç åíüò ÓÄÂÄ ðëå-
ïíåêôåß ùò ðñïò ôçí ðñïóÝããéóç ìå õëïðïßçóç ôùí áñ÷åßùí. Äéêáßùò ëïéðüí ôá
ÓÄÂÄ Ý÷ïõí õéïèåôçèåß áðü ìåãÜëåò åôáéñåßåò êáé ïñãáíéóìïýò ãéá ôçí áðïèÞ-
êåõóç ôùí äåäïìÝíùí ôïõò. Åðßóçò, óÞìåñá êÜèå ìåãÜëç åöáñìïãÞ óõíïäåýåôáé
áðü õðïóôÞñéîç ôçò ÂÜóçò ÄåäïìÝíùí ãéá ãñÞãïñç ðñïóðÝëáóç êáé ðñïóôáóßá
ôùí äåäïìÝíùí.

1.2 ÊëáóéêÝò êáé Óýã÷ñïíåò ÅöáñìïãÝò


Ôá ðñþôá ïëïêëçñùìÝíá ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí åìöáíßóèçêáí óôï ôÝ-
ëïò ôçò äåêáåôßáò ôïõ ’60 êáé õðïóôÞñéæáí åöáñìïãÝò ðïõ áðáéôïýóáí ôç äéá÷åß-
ñéóç ðïëëþí ìéêñþí ôìçìÜôùí ðëçñïöïñßáò êáé ôçí åðåîåñãáóßá ðïëëþí åñù-
ôçìÜôùí Þ åíçìåñþóåùí. Ôï âáóéêü ÷áñáêôçñéóôéêü ôïõò åßíáé ç Üìåóç ôáõ-
ôü÷ñïíç äéá÷åßñéóç ðïëëþí óõíáëëáãþí. Ãéá ôï ëüãï áõôü ïé åöáñìïãÝò áõôÝò
êáëïýíôáé åöáñìïãÝò ¢ìåóçò Åðåîåñãáóßáò Óõíáëëáãþí (On-Line Transaction
Processing, OLTP). ×áñáêôçñéóôéêÜ ðáñáäåßãìáôá ôÝôïéùí åöáñìïãþí åßíáé: á)
êñáôÞóåéò èÝóåùí óå áåñïðïñéêÝò åôáéñåßåò, â) åöáñìïãÝò ôñáðåæéêþí óõíáëëá-
ãþí êáé ã) äéá÷åßñéóç äåäïìÝíùí óå ìåãÜëåò åôáéñåßåò Þ ïñãáíéóìïýò. Áíáëõôé-
êüôåñá:
• ÊñáôÞóåéò ÈÝóåùí. Ïé åöáñìïãÝò áõôÝò õðïóôçñßæïõí ëåéôïõñãßåò, üðùò
êñÜôçóç èÝóçò ãéá ìßá óõãêåêñéìÝíç ðôÞóç, áíáæÞôçóç ðëçñïöïñéþí ãéá
äéáèÝóéìåò ðôÞóåéò ìå âÜóç ôçí áöåôçñßá êáé ôïí ðñïïñéóìü, áíáæÞôçóç
ðëçñïöïñéþí ó÷åôéêÜ ìå ôéò ôéìÝò êáé ôç äéáèåóéìüôçôá ôùí åéóéôçñßùí. Ç
ëåéôïõñãßá ôçò åöáñìïãÞò åðéôñÝðåé ôçí áðÜíôçóç åñùôçìÜôùí ðïõ áöï-
ñïýí óôçí þñá áíá÷þñçóçò êáé Üöéîçò óõãêåêñéìÝíùí ðôÞóåùí êáé ôçí
áðïäïôéêÞ êñÜôçóç èÝóåùí êáé Ýëåã÷ï ôçò äéáèåóéìüôçôáò. Áêüìç êáé óÞ-
ìåñá ïé åöáñìïãÝò áõôÝò åßíáé ðïëýôéìåò ãéá ôáîéäéùôéêïýò ðñÜêôïñåò êáé
áåñïðïñéêÝò åôáéñåßåò ëüãù ôùí ðïëëþí äéåõêïëýíóåùí ðïõ ðáñÝ÷ïõí.
• ÔñáðåæéêÝò ÓõíáëëáãÝò. Óôéò åöáñìïãÝò áõôÝò ç ðëçñïöïñßá áðïôåëåß-
ôáé áðü ïíüìáôá ðåëáôþí, äéåõèýíóåéò, áñéèìïýò ôñáðåæéêþí ëïãáñéáóìþí,
õðüëïéðï ëïãáñéáóìþí, äåäïìÝíá ðïõ áöïñïýí óå äÜíåéá, ðéóôùôéêÝò êÜñ-
ôåò êáé ãåíéêÜ áðü ï,ôéäÞðïôå ó÷åôßæåôáé ìå ôç ëåéôïõñãßá ìßáò ôñÜðåæáò.
Óôü÷ïò ôùí åöáñìïãþí áõôþí åßíáé ç ôá÷ýôåñç åîõðçñÝôçóç ôùí ðåëáôþí
êáé ç áðïäïôéêüôåñç ëåéôïõñãßá ôçò ôñÜðåæáò. Ç åöáñìïãÞ ðñÝðåé íá õðï-
óôçñßæåé ôáõôü÷ñïíåò ðñïóðåëÜóåéò óôá äåäïìÝíá áðü ðïëëïýò ÷ñÞóôåò.
• Äéá÷åßñéóç Åôáéñéêþí ÄåäïìÝíùí. Ç êáëÞ ïñãÜíùóç ôùí äåäïìÝíùí ìßáò
ìåãÜëçò åôáéñåßáò óõìâÜëåé áðïöáóéóôéêÜ óôçí áðïôåëåóìáôéêÞ êáé áðïäï-
ôéêÞ ëåéôïõñãßá ôçò, äéüôé äéåõêïëýíïíôáé êáé åðéôá÷ýíïíôáé ïé åóùôåñéêÝò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 45

äéåñãáóßåò ôçò åôáéñåßáò, ïé ïðïßåò ðïëëÝò öïñÝò åßíáé ðïëýðëïêåò êáé ÷ñï-
íïâüñåò. Ç ìåèïäéêÞ ïñãÜíùóç ôùí äåäïìÝíùí åðéäñÜ óå üëá ôá ôìÞìáôá
ôçò åôáéñåßáò (üðùò ôìÞìá ðùëÞóåùí, ôìÞìá áíÜðôõîçò, ôìÞìá áíèñþðéíïõ
äõíáìéêïý, ê.ë.ð.). Ôá äåäïìÝíá ó÷åôßæïíôáé ìå ôá ðñïóùðéêÜ óôïé÷åßá ôùí
õðáëëÞëùí, üðùò üíïìá, äéåýèõíóç, ìéóèüò, åðéäüìáôá áäåßáò. Ç äïìçìÝíç
ïñãÜíùóç ôçò ðëçñïöïñßáò åðéôñÝðåé ôç ãñÞãïñç áíáæÞôçóç óôïé÷åßùí ðïõ
ó÷åôßæïíôáé ìå Ýíáí õðÜëëçëï êáé ôçí åýêïëç åíçìÝñùóç ôùí óôïé÷åßùí óå
ðåñßðôùóç ìåôáâïëþí (ð.÷., áëëáãÞ èÝóçò åíüò õðáëëÞëïõ).

Ïé óýã÷ñïíåò åöáñìïãÝò áðáéôïýí ôçí õðïóôÞñéîç íÝùí ôýðùí äåäïìÝíùí êáé


íÝùí ìåèüäùí åðåîåñãáóßáò, åíþ ôáõôü÷ñïíá óå ðïëëÝò áðü áõôÝò ç ôá÷ýôçôá
åðåîåñãáóßáò åßíáé êñßóéìç. Óôü÷ïò ôùí óýã÷ñïíùí ÓÄÂÄ åßíáé ç áðïôåëåóìá-
ôéêÞ êáé áðïäïôéêÞ õðïóôÞñéîç ôùí åöáñìïãþí áõôþí. Ïé éäéáéôåñüôçôåò ðïõ åì-
öáíßæïõí ïé óýã÷ñïíåò åöáñìïãÝò óå ó÷Ýóç ìå ôéò ðáñáäïóéáêÝò åöáñìïãÝò ÂÜ-
óåùí ÄåäïìÝíùí áããßæïõí ó÷åäüí üëá ôá õðïóõóôÞìáôá åíüò ÓÄÂÄ. Ç áäõíáìßá
ôùí ðáñáäïóéáêþí ÓõóôçìÜôùí ÂÜóåùí ÄåäïìÝíùí íá êáëýøïõí ôéò óýã÷ñïíåò
áíÜãêåò ïäÞãçóå ôïõò åñåõíçôÝò óôçí áíáæÞôçóç íÝùí ìåèüäùí åðåîåñãáóßáò.
Óôç óõíÝ÷åéá ðáñáèÝôïõìå ìåñéêÜ ðáñáäåßãìáôá óýã÷ñïíùí åöáñìïãþí êáé ôïí
ôñüðï õðïóôÞñéîÞò ôïõò áðü ôá óýã÷ñïíá ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí.

• ÐïëõìåóéêÝò ÅöáñìïãÝò. Ôá ðáëáéüôåñá ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí


åß÷áí ôçí éêáíüôçôá íá ÷åéñßæïíôáé ìüíï áñéèìçôéêÜ êáé áëöáñéèìçôéêÜ
äåäïìÝíá (êåßìåíï). ÓÞìåñá ùóôüóï, Ýíá óçìáíôéêü ðïóïóôü ôçò ðëçñï-
öïñßáò âñßóêåôáé óå ìïñöÝò üðùò Þ÷ïò, åéêüíá êáé video. Ç õðïóôÞñéîç
ôùí ôýðùí áõôþí áðáéôåß ôá÷ýôçôá óôçí åðåîåñãáóßá êáé ðåñéóóüôåñï ÷þñï
áðïèÞêåõóçò ëüãù ôïõ ìåãÜëïõ üãêïõ ôùí äåäïìÝíùí. Ïé ÂÜóåéò ÄåäïìÝ-
íùí ðïëõìÝóùí (multimedia databases) Ý÷ïõí ôç äõíáôüôçôá ÷åéñéóìïý ôùí
óýíèåôùí áõôþí ôýðùí äåäïìÝíùí ÷ñçóéìïðïéþíôáò âåëôéóôïðïéçìÝíåò ôå-
÷íéêÝò áíáæÞôçóçò. ¸ôóé, óÞìåñá Ý÷ïõìå ôç äõíáôüôçôá íá èÝôïõìå åñùôÞ-
óåéò üðùò: "Íá âñåèïýí ïé åéêüíåò ðïõ ìïéÜæïõí ðåñéóóüôåñï ìå ôçí åéêüíá
×" Þ "Íá âñåèïýí ôá ìïõóéêÜ êïììÜôéá ðïõ ðåñéÝ÷ïõí ôï åîÞò ìïôßâï Þ
êÜðïéï ðáñüìïéï", êÜôé ðïõ èá öáéíüôáí åîáéñåôéêÜ ðïëýðëïêï óôï ðá-
ñåëèüí.

• Äéá÷åßñéóç Ãåùãñáöéêþí ÄåäïìÝíùí. Åêôüò áðü áñéèìçôéêÝò êáé áëöá-


ñéèìçôéêÝò óõíéóôþóåò, ôá ãåùãñáöéêÜ äåäïìÝíá áðïôåëïýíôáé áðü ãåù-
ìåôñéêÜ áíôéêåßìåíá (üðùò óçìåßá, åõèýãñáììá ôìÞìáôá, ðïëýãùíá, ðå-
ñéï÷Ýò ê.ë.ð.), ðïõ áðáéôïýí íÝïõò ôñüðïõò áðïèÞêåõóçò êáé åðåîåñãáóßáò
ëüãù ôçò ÷ùñéêÞò (spatial) öýóçò ôïõò. Ãéá ðáñÜäåéãìá, ãéá ôá äåäïìÝíá
áõôÜ ëüãù ôçò äéóäéÜóôáôçò (Þ ãåíéêüôåñá ðïëõäéÜóôáôçò) öýóçò ôïõò äåí
46 ÊåöÜëáéï 1. ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí

éó÷ýïõí ïé ó÷Ýóåéò äéÜôáîçò (ð.÷., óôïõò áêåñáßïõò êáé ôïõò ÷áñáêôÞñåò


õðÜñ÷åé ç Ýííïéá ôïõ ðñïçãïýìåíïõ-åðüìåíïõ, óôïõò ðñáãìáôéêïýò áñéè-
ìïýò ç Ýííïéá ôïõ ìéêñüôåñïõ-ìåãáëýôåñïõ ê.ë.ð.). Éó÷ýïõí üìùò ôïðïëï-
ãéêÝò ó÷Ýóåéò (üðùò áñéóôåñÜ-äåîéÜ, âüñåéá-íüôéá, åíôüò-åêôüò, ôïìÞ, áðü-
óôáóç ê.ë.ð.). ¸ôóé, ôï ÓÄÂÄ, ðéèáíþò óõíåñãáæüìåíï ìå Ýíá Óýóôçìá
Ãåùãñáöéêþí Ðëçñïöïñéþí (Geographical Inforation System, GIS), óôï-
÷åýïíôáò óôçí áðïäïôéêÞ åðåîåñãáóßá ôùí åñùôçìÜôùí åßíáé åîïðëéóìÝíï
ìå åîåéäéêåõìÝíåò ôå÷íéêÝò äéá÷åßñéóçò, ïé ïðïßåò âáóßæïíôáé óôçí ðåñéï÷Þ
ôçò ÕðïëïãéóôéêÞò Ãåùìåôñßáò (Computational Geometry).

• ÁðïèÞêåò ÄåäïìÝíùí êáé ÁíáëõôéêÞ Åðåîåñãáóßá. Ìßá Üëëç óýã÷ñïíç


åöáñìïãÞ ðïõ ðñïÝêõøå ùò áíÜãêç ëüãù ôçò ýðáñîçò ôåñÜóôéïõ üãêïõ
äåäïìÝíùí óå ìåãÜëåò åðé÷åéñÞóåéò êáé ïñãáíéóìïýò åßíáé ôá ÓõóôÞìáôá
ÓôÞñéîçò ÁðïöÜóåùí (decision support systems). Ãéá ôç ëÞøç áðïöÜóåùí
óå èÝìáôá áíÜëõóçò áãïñÜò, ïéêïíïìéêïý ó÷åäéáóìïý, marketing ê.ë.ð.,
Ýíáò áíáëõôÞò ìßáò åðé÷åßñçóçò åíäéáöÝñåôáé íá õðïâÜëëåé ðïëýðëïêá
åñùôÞìáôá ðåñéóóüôåñï óå óõãêåíôñùôéêÜ äåäïìÝíá ðáñÜ óå áôïìéêÝò óõ-
íáëëáãÝò. Ç õðïâïëÞ êáé ç åðåîåñãáóßá ôÝôïéïõ ôýðïõ åñùôçìÜôùí åßíáé
ìßá äéáäéêáóßá áðü äýóêïëç ìÝ÷ñé êáé áäýíáôç, êáèþò óõ÷íÜ ôá äåäïìÝíá
ôùí ìåãÜëùí öïñÝùí åßíáé äéáóêïñðéóìÝíá óå ðïëëÜ åôåñïãåíÞ óõóôÞ-
ìáôá, ðïõ ìðïñåß íá åßíáé êáé ãåùãñáöéêÜ êáôáíåìçìÝíá. Óôéò ðåñéðôþóåéò
áõôÝò, ôá ðñùôïãåíÞ äåäïìÝíá ìå åéäéêÝò äéáäéêáóßåò ïìïãåíïðïéïýíôáé êáé
áðïèçêåýïíôáé óå åéäéêÝò âÜóåéò ìå óõíïðôéêü ôñüðï ÷ñçóéìïðïéþíôáò äéá-
öïñåôéêÝò ïðôéêÝò ãùíßåò êáé äéáöïñåôéêÝò êëßìáêåò. ÁõôÝò ïé åéäéêÝò âÜ-
óåéò ëÝãïíôáé ÁðïèÞêåò ÄåäïìÝíùí (data warehouses), åíþ ç åðåîåñãáóßá
ôïõò Ý÷åé ôçí åéäéêÞ ïíïìáóßá ¢ìåóç ÁíáëõôéêÞ Åðåîåñãáóßá (On-Line
Analytical Processing, OLAP) óå áíôßèåóç ìå ôá ðáñáäïóéáêÜ ÓõóôÞìáôá
ÂÜóåùí ÄåäïìÝíùí, üðïõ ìéëïýìå ãéá ¢ìåóç Åðåîåñãáóßá Óõíáëëáãþí.

• Åîüñõîç ÄåäïìÝíùí. Ç Åîüñõîç ÄåäïìÝíùí (data mining) åßíáé ìßá Üëëç


óýã÷ñïíç ðåñéï÷Þ ôùí ÂÜóåùí ÄåäïìÝíùí, ðïõ ðñüêõøå ùò áíÜãêç ëüãù
ôïõ ôåñÜóôéïõ üãêïõ äåäïìÝíùí (óõ÷íÜ ðïëõìåóéêþí), ðïõ óõëëÝãïíôáé
áõôïìáôïðïéçìÝíá áðü äïñõöüñïõò, êÜìåñåò ðáñáêïëïýèçóçò, óõóêåõÝò
ìÝôñçóçò áëëÜ áêüìç ìðïñåß íá óõëëÝãïíôáé ìå ðáñáäïóéáêü ôñüðï áðü
Ýíá Óýóôçìá ÂÜóåùí ÄåäïìÝíùí. ÅðåéäÞ ôÝôïéïõò üãêïõò äåäïìÝíùí äåí
ìðïñïýìå íá ôïõò ÷åéñéóèïýìå áðïäïôéêÜ ìå âÜóç ôéò óõìâáôéêÝò ìåèü-
äïõò åðåîåñãáóßáò, óå ôÝôïéåò ðåñéðôþóåéò åöáñìüæïõìå åéäéêÝò áõôïìáôï-
ðïéçìÝíåò ìåèüäïõò åðåîåñãáóßáò, ïé ïðïßåò áíáëáìâÜíïõí íá "óêÜøïõí"
óôá äåäïìÝíá áíáæçôþíôáò ðëçñïöïñßá ÷ñÞóéìç, ðñïçãïõìÝíùò Üãíùóôç,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 47

åíäéáöÝñïõóá êáé ìå ôçí ïðïßá íá ìðïñïýí ëçöèïýí áðïöÜóåéò êáé íá ãß-


íïõí åíÝñãåéåò. ÔõðéêÝò ìÝèïäïé åðåîåñãáóßáò êáôÜ ôçí åîüñõîç äåäïìÝ-
íùí åßíáé ï ÷áñáêôçñéóìüò (characterization), ç áíôéäéáóôïëÞ (discrimina-
tion), ç êáôçãïñéïðïßçóç (classification), ç åîáãùãÞ êáíüíùí óõó÷Ýôéóçò
(association rules), ç ïìáäïðïßçóç (clustering) êáé Üëëåò ðïõ áðïôåëïýí
éäéáßôåñï áíôéêåßìåíï ìåëÝôçò ðÝñáí ôïõ ìáèÞìáôïò ôùí ÂÜóåùí ÄåäïìÝ-
íùí. Ç Åîüñõîç ÄåäïìÝíùí óõããåíåýåé ôüóï ìå ôç ÓôáôéóôéêÞ ÁíÜëõóç
ÄåäïìÝíùí üóï êáé ìå ôç Ìç÷áíéêÞ ÌÜèçóç (machine learning) ðïõ áðï-
ôåëåß ðåñéï÷Þ ôçò Ôå÷íçôÞò Íïçìïóýíçò. Ùóôüóï, ç äéáöïñïðïßçóç ôçò
áðü ôéò Üëëåò ðåñéï÷Ýò åßíáé ç óõíåéóöïñÜ ôçò óôçí áðïäïôéêÞ äéá÷åßñéóç
ôåñÜóôéùí üãêùí äåäïìÝíùí ìå ôç âïÞèåéá êëáóéêþí ôå÷íéêþí ôùí ÂÜóåùí
ÄåäïìÝíùí.

• ÁíÜêôçóç Ðëçñïöïñßáò óôï Äéáäßêôõï. Ôá ðáñáäïóéáêÜ óõóôÞìáôá ÁíÜ-


êôçóçò Ðëçñïöïñßáò (information retrieval) åðéôñÝðïõí ôçí áíáæÞôçóç êåé-
ìÝíùí ðïõ ðåñéÝ÷ïõí ëÝîåéò ðïõ ïñßæåé ï ÷ñÞóôçò. Ìå ôçí áëìáôþäç áíÜ-
ðôõîç ôïõ Ðáãêüóìéïõ Éóôïý êáé ôïõ Äéáäéêôýïõ, ç ðëçñïöïñßá åßíáé äéÜ-
óðáñôç óå üëá ôá ìÝñç ôïõ ðëáíÞôç, äõóêïëåýïíôáò óçìáíôéêÜ ôçí áíáæÞ-
ôçóç. ¸íá óçìáíôéêü ôìÞìá ôçò Ýñåõíáò åóôéÜæåôáé óôç ìåëÝôç áðïôåëå-
óìáôéêþí êáé áðïäïôéêþí ìåèüäùí áíáæÞôçóçò ðëçñïöïñßáò óýìöùíá ìå
ôéò áðáéôÞóåéò ôùí ÷ñçóôþí. Âáóéêü óôïé÷åßï óôç äéáäéêáóßá áõôÞ åßíáé ç
âáèìïëüãçóç ôùí áðáíôÞóåùí Ýôóé þóôå ôá äåäïìÝíá ðïõ ó÷åôßæïíôáé ðå-
ñéóóüôåñï ìå ôï åñþôçìá ôïõ ÷ñÞóôç íá ðÜñïõí õøçëü âáèìü. Ïé ìç÷áíÝò
áíáæÞôçóçò (search engines) üðùò Google, Altavista ê.ë.ð. ÷ñçóéìïðïéïýí
åîåëéãìÝíåò ôå÷íéêÝò áíáæÞôçóçò êáé äÝ÷ïíôáé êáèçìåñéíÜ ðïëëÝò ÷éëéÜ-
äåò åñùôÞìáôá ðïõ éêáíïðïéïýí ìå åðéôõ÷ßá. Áðáéôåßôáé ç ÷ñÞóç ÓÄÂÄ
ìå äõíáôüôçôåò áíáæÞôçóçò êåéìÝíùí óýìöùíá ìå ôéò ëÝîåéò-êëåéäéÜ ðïõ
äßíåé ï ÷ñÞóôçò. ÅðéðëÝïí, ðñÝðåé íá õðÜñ÷åé ç äõíáôüôçôá áíÜêôçóçò
ðëçñïöïñßáò ìåôáîý äåäïìÝíùí ìå äéáöïñåôéêÞ äéáìüñöùóç, ìå äéáöïñå-
ôéêÜ ÷áñáêôçñéóôéêÜ êáé ôá ïðïßá ìðïñåß íá âñßóêïíôáé êáôáíåìçìÝíá óå
ðïëëÜ óõóôÞìáôá.

• Äéá÷åßñéóç Êéíïýìåíùí ÁíôéêåéìÝíùí. ÅöáñìïãÝò üðùò ç êáôáãñáöÞ ôçò


êßíçóçò ï÷çìÜôùí, ç ðáñáêïëïýèçóç ìßáò ðåôñåëáéïêçëßäáò, ç ðáñáêï-
ëïýèçóç ìåôþðùí ðõñêáãéÜò, áðáéôïýí ôçí áðïèÞêåõóç ôçò èÝóçò ôùí
áíôéêåéìÝíùí óå ó÷Ýóç ìå ôï ÷ñüíï. Ç ìåëÝôç ôçò êßíçóçò åðéôñÝðåé íá
áðáíôïýìå åñùôÞìáôá ðïõ ó÷åôßæïíôáé ìå: á) ôçí åîÝëéîç ôçò êßíçóçò óôï
ðáñåëèüí êáé â) ôçí ðñüâëåøç ãéá ôç èÝóç ôùí áíôéêåéìÝíùí óôï êïíôéíü
ìÝëëïí. Ç åðåîåñãáóßá åñùôçìÜôùí ôÝôïéïõ ôýðïõ áðáéôåß ôçí êáôÜëëçëç
48 ÊåöÜëáéï 1. ÅéóáãùãÞ óôéò ÂÜóåéò ÄåäïìÝíùí

ïñãÜíùóç êáé äéá÷åßñéóç ôùí áíôéêåéìÝíùí ìå ìïíôÝñíåò ôå÷íéêÝò Ýôóé þóôå


íá ðñáãìáôïðïéåßôáé áðïôåëåóìáôéêÜ êáé áðïäïôéêÜ.

Óôç óõíÝ÷åéá ôïõ âéâëßïõ áíáëýïíôáé ôüóï ôá âáóéêÜ èÝìáôá ðïõ áöïñïýí óôá
êëáóéêÜ óõóôÞìáôá, üóï êáé ðñï÷ùñçìÝíá èÝìáôá ðïõ áöïñïýí óôá óýã÷ñïíá
óõóôÞìáôá, ðïõ Ý÷ïõí éäéáßôåñï åñåõíçôéêü åíäéáöÝñïí.

1.3 Óýíïøç
Ïé óýã÷ñïíåò áíÜãêåò ãéá áðïèÞêåõóç êáé äéá÷åßñéóç äåäïìÝíùí åßíáé ðïëëá-
ðëÝò óå ó÷Ýóç ìå ôï ðáñåëèüí, ëáìâÜíïíôáò õð’ üøç ôï óçìåñéíü ñõèìü ðáñá-
ãùãÞò äåäïìÝíùí. Ç áðïèÞêåõóç, ïñãÜíùóç êáé äéá÷åßñéóç ôïõ ìåãÜëïõ áõôïý
üãêïõ äåäïìÝíùí áðáéôåß ôç ÷ñÞóç áõôïìáôïðïéçìÝíùí ìåèüäùí åðéôñÝðïíôáò
óôïõò ÷ñÞóôåò åýêïëç ðñüóâáóç óôá äåäïìÝíá. Óôï ðáñåëèüí, ç äéá÷åßñéóç ôùí
äåäïìÝíùí ãéíüôáí áðü ôá ßäéá ôá ðñïãñÜììáôá åöáñìïãÞò ìÝóù ôïõ óõóôÞìáôïò
áñ÷åßùí ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. Ç ðñïóÝããéóç áõôÞ äçìéïõñãåß ðïëëá-
ðëÜ ðñïâëÞìáôá êáèþò ï ïñéóìüò ôùí äåäïìÝíùí Þôáí óôåíÜ óõíäåäåìÝíïò ìå
ôéò ëåéôïõñãßåò. ÏðïéáäÞðïôå áëëáãÞ óôïí ôñüðï áðïèÞêåõóçò ôùí äåäïìÝíùí
áðáéôïýóå áíôßóôïé÷åò áëëáãÝò óôá ðñïãñÜììáôá åöáñìïãÞò.
Ç ÷ñÞóç ôùí ÓÄÂÄ Ýëõóå ðïëëÜ áðü ôá ðñïâëÞìáôá ðïõ åß÷å ç ðñïçãïýìåíç
ðñïóÝããéóç. Ç áðïèÞêåõóç, ïñãÜíùóç êáé äéá÷åßñéóç ôùí äåäïìÝíùí ðñáã-
ìáôïðïéåßôáé áðïêëåéóôéêÜ áðü ôï ÓÄÂÄ. Ç ðñïóðÝëáóç óôá äåäïìÝíá ãßíåôáé
óôÝëíïíôáò ôéò êáôÜëëçëåò åíôïëÝò óôï ÓÄÂÄ ðïõ áíáëáìâÜíåé íá åîõðçñåôÞóåé
ôá åñùôÞìáôá ôùí ÷ñçóôþí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


1.1. ÐïéÜ åßíáé ôá âáóéêÜ ìåéïíåêôÞìáôá ôçò ðñïóÝããéóçò ãéá ôç äéá÷åßñéóç ôùí
äåäïìÝíùí áð’ åõèåßáò áðü ôéò åöáñìïãÝò; Íá áíáöåñèïýí ôïõëÜ÷éóôïí äýï óç-
ìåßá üðïõ ç ÷ñÞóç ÓÄÂÄ õðåñôåñåß ùò ðñïò ôçí ðñïóÝããéóç ìå ôçí õëïðïßçóç
áñ÷åßùí.

1.2. Íá áíáöåñèïýí ìåñéêÝò óýã÷ñïíåò åöáñìïãÝò ðïõ Ý÷ïõí õøçëÝò áðáéôÞóåéò


áðïèÞêåõóçò êáé äéá÷åßñéóçò äåäïìÝíùí.

1.3. Ïé ðáñáäïóéáêÝò åöáñìïãÝò äéá÷åéñßæïíôáé êõñßùò áñéèìïýò êáé óåéñÝò


÷áñáêôÞñùí. Íá áíáöåñèïýí ôýðïé äåäïìÝíùí ðïõ óõíáíôïýìå óôéò óýã÷ñïíåò
åöáñìïãÝò. ÊáôÜ ôç ãíþìç óáò ãéá ðïéïýò ëüãïõò ïé íÝïé ôýðïé äåäïìÝíùí ÷ñåéÜ-
æïíôáé åéäéêÞ äéá÷åßñéóç;
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 49

1.4. Íá ðåñéãñáöïýí ïé Ýííïéåò ÂÜóç ÄåäïìÝíùí, Óýóôçìá Äéá÷åßñéóçò ÂÜóåùí


ÄåäïìÝíùí êáé Óýóôçìá ÂÜóçò ÄåäïìÝíùí.

1.5. Íá áíáöåñèïýí äýï ðáñáäåßãìáôá ôáõôü÷ñïíçò ðñïóðÝëáóçò äåäïìÝíùí.


Ãéá ðïéïýò ëüãïõò ôÝôïéåò ðñïóðåëÜóåéò ìðïñåß íá äçìéïõñãÞóïõí ðñüâëçìá;

1.6. Óå ðïéÝò ðåñéðôþóåéò äåí åßíáé áðáñáßôçôç ç ÷ñÞóç åíüò ÓÄÂÄ;

1.7. Ìðïñåßôå íá åíôïðßóåôå ìåñéêÜ ìåéïíåêôÞìáôá ôùí ÓÄÂÄ;

1.8. Ç ëßóôá ôùí êëáóéêþí êáé óýã÷ñïíùí åöáñìïãþí äåí åßíáé åîáíôëçôéêÞ.
Ìðïñåßôå íá áíáöÝñåôå êáé íá ðåñéãñÜøåôå Üëëåò åöáñìïãÝò, ôüóï êëáóéêÝò
üóï êáé óýã÷ñïíåò;

1.9. ÐïéÝò êáôÜ ôç ãíþìç óáò åßíáé ïé áíÜãêåò ðñïóôáóßáò äåäïìÝíùí ðïõ èá
ðñÝðåé íá éêáíïðïéïýíôáé áðü Ýíá ÓÄÂÄ;

1.10. Ãéá ðïéïýò ëüãïõò ç åðåêôáóéìüôçôá èåùñåßôáé óçìáíôéêÞ éäéüôçôá ãéá Ýíá
ÓÄÂÄ;
ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò
2
Ôï âáóéêü ÷áñáêôçñéóôéêü åíüò ÓÄÂÄ åßíáé ç äõíáôüôçôá áðïèÞêåõóçò ìåãÜëïõ
üãêïõ äåäïìÝíùí. Ç áðïèÞêåõóç ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé óå öõóéêÜ
ìÝóá áðïèÞêåõóçò (physical storage media). Ôá ìÝóá áõôÜ åßíáé óõóêåõÝò ðïõ
ðáñÝ÷ïõí äõíáôüôçôåò áðïèÞêåõóçò êáé ðñïóðÝëáóçò ôùí äåäïìÝíùí. Ôá äýï
âáóéêÜ ÷áñáêôçñéóôéêÜ ôùí ìÝóùí áðïèÞêåõóçò åßíáé ç óõíïëéêÞ ÷ùñçôéêüôçôá
(capacity) ôïõ ìÝóïõ êáé ï ÷ñüíïò ðñïóðÝëáóçò (access time) ôùí äåäïìÝíùí.
ÂÝâáéá, üóï áõîÜíåôáé ç ôá÷ýôçôá ðñïóðÝëáóçò êáé ç ÷ùñçôéêüôçôá, ôüóï áõîÜ-
íåôáé êáé ôï áíôßóôïé÷ï êüóôïò. ¸íáò Üëëïò óçìáíôéêüò ðáñÜãïíôáò åßíáé ç
áîéïðéóôßá (reliability) ôïõ ìÝóïõ, ç ïðïßá ìåôñÜôáé ìå ôç óõ÷íüôçôá åìöÜíéóçò
âëáâþí óôï ìÝóï áðïèÞêåõóçò.
Óôç óõíÝ÷åéá äßíåôáé ìßá óõíïðôéêÞ ðåñéãñáöÞ ôùí óõíçèÝóôåñùí ìÝóùí
áðïèÞêåõóçò ðïõ ÷ñçóéìïðïéïýíôáé óôá óýã÷ñïíá õðïëïãéóôéêÜ óõóôÞìáôá êáé
ðïõ áðáñôßæïõí ôç ëåãüìåíç éåñáñ÷ßá ìíÞìçò (storage hierarchy). Ùóôüóï, ìå-
ñéêÜ ìüíï áðü áõôÜ ôá ìÝóá åßíáé åêìåôáëëåýóéìá áðü ôï ÓÄÂÄ êáé áõôÜ åßíáé
ðïõ èá áíáëõèïýí óôç ëåðôïìÝñåéÜ ôïõò óå åðüìåíåò ðáñáãñÜöïõò.

• Êáôá÷ùñçôÝò (registers). Áðïôåëïýí ôï ðñþôï åðßðåäï óôçí éåñáñ÷ßá êáé


âñßóêïíôáé ìÝóá óôçí êåíôñéêÞ ìïíÜäá åðåîåñãáóßáò (CPU) ôïõ õðïëï-

51
52 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

ãéóôéêïý óõóôÞìáôïò. Ðñüêåéôáé ãéá çëåêôñïíéêÝò äéáôÜîåéò ðïõ áðïèç-


êåýïõí ìéêñÜ ðïóÜ ðëçñïöïñßáò, üðùò ìåñéêïýò ÷áñáêôÞñåò (bytes), êáé
÷ñçóéìïðïéïýíôáé áðü ôç CPU ãéá ôçí åêôÝëåóç ôùí åíôïëþí êáé ïñéóìÜôùí.
Ç äéá÷åßñéóç ôùí êáôá÷ùñçôþí áíÞêåé áðïêëåéóôéêÜ óôç CPU. Ùóôüóï,
ôá ðñïãñÜììáôá åöáñìïãÞò ìðïñïýí íá Ý÷ïõí áð’ åõèåßáò ðñüóâáóç óå
áõôïýò ìÝóù êþäéêá ìç÷áíÞò (machine code) Þ óõìâïëéêÞò ãëþóóáò ðñï-
ãñáììáôéóìïý (assembly).

• ÊñõöÞ ÌíÞìç (cache memory). Áðïôåëåß ôï äåýôåñï åðßðåäï óôçí éå-


ñáñ÷ßá, áìÝóùò ìåôÜ ôïõò êáôá÷ùñçôÝò, êáé åßíáé ìßá óôáôéêÞ ìíÞìç ôõ-
÷áßáò ðñïóðÝëáóçò (Random Access Memory, RAM). Ðñüêåéôáé ãéá ôá-
÷ýôáôåò äéáôÜîåéò ìíÞìçò, ïé ïðïßåò ÷ñçóéìïðïéïýíôáé ãéá ôçí ðñïóùñéíÞ
áðïèÞêåõóç ôùí åíôïëþí êáé ôùí äåäïìÝíùí ðïõ åðåîåñãÜæåôáé ç CPU.
Ç äéá÷åßñéóç ôçò êñõöÞò ìíÞìçò áíÞêåé áðïêëåéóôéêÜ óôç äéêáéïäïóßá ôçò
CPU, ðïõ ÷ñçóéìïðïéåß åîåéäéêåõìÝíïõò áëãïñßèìïõò áíôéêáôÜóôáóçò ôùí
äåäïìÝíùí, Ýôóé þóôå äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé óõ÷íÜ áðü ôç CPU
íá Ý÷ïõí ìåãÜëç ðéèáíüôçôá íá âñßóêïíôáé óôçí êñõöÞ ìíÞìç.

• Êýñéá ÌíÞìç (main memory). Åßíáé ìßá äõíáìéêÞ ìíÞìç ôõ÷áßáò ðñïóðÝ-
ëáóçò (DRAM). Ðñüêåéôáé ãéá äéáôÜîåéò ðïõ åßíáé éêáíÝò íá áðïèçêåýïõí
áñêåôÝò äåêÜäåò GBytes, áíáëüãùò ìå ôï ðëÞèïò ôùí ïëïêëçñùìÝíùí êõ-
êëùìÜôùí ðïõ ÷ñçóéìïðïéïýíôáé. Ç ÷ùñçôéêüôçôá ôçò êýñéáò ìíÞìçò óôïõò
óýã÷ñïíïõò ðñïóùðéêïýò õðïëïãéóôÝò (PC) åßíáé óõíÞèùò áðü 512 MBytes
ìÝ÷ñé 2 GBytes, åíþ ãéá ôçí ðåñßðôùóç õðïëïãéóôéêþí óõóôçìÜôùí ðïõ ÷ñç-
óéìïðïéïýíôáé ùò åîõðçñÝôåò (servers) ôï ìÝãåèïò ìðïñåß íá åßíáé áñêåôÜ
ìåãáëýôåñï. Âáóéêü ìåéïíÝêôçìá ôçò êýñéáò ìíÞìçò åßíáé üôé óå ðåñßðôùóç
äéáêïðÞò ôçò ôñïöïäïóßáò ôá äåäïìÝíá äéáãñÜöïíôáé.

• ÌíÞìç Flash (flash memory). Óå áíôßèåóç ìå ôçí êýñéá ìíÞìç, ç ìíÞìç


flash Ý÷åé ôç äõíáôüôçôá íá áðïèçêåýåé ôá äåäïìÝíá ÷ùñßò íá áðáéôåßôáé
ôñïöïäïóßá. Ï ãíùóôüôåñïò ôýðïò ìíÞìçò flash åßíáé ç ìíÞìç EEPROM
(Electrically Erasable Programmable Read-Only Memory), ðïõ Ý÷åé ôç äõ-
íáôüôçôá íá ðñïãñáììáôßæåôáé êáé íá äéáãñÜöåôáé ðïëëÝò öïñÝò ÷ñçóé-
ìïðïéþíôáò çëåêôñéêïýò ðáëìïýò. Ëüãù ôçò äõíáôüôçôáò áõôÞò ç ìíÞìç
flash åßíáé áñêåôÜ áêñéâüôåñç áðü ôçí êýñéá ìíÞìç êáé ÷ñçóéìïðïéåßôáé
óå åéäéêÝò ðåñéðôþóåéò. Ôï BIOS (basic input-output system) ôùí PCs åß-
íáé áðïèçêåõìÝíï óå ìíÞìç EEPROM. Åðßóçò, óÞìåñá êõêëïöïñïýí óôï
åìðüñéï ìíÞìåò flash ðïõ óõíäÝïíôáé ìÝóù èýñáò USB (universal serial bus)
êáé ðáñÝ÷ïõí Ýíáí åýêïëï ôñüðï ìåôáöïñÜò äåäïìÝíùí áðü Ýíá õðïëïãé-
óôéêü óýóôçìá óå Üëëï.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 53

• Ìáãíçôéêüò Äßóêïò (magnetic disk). Óôï ìÝóï áõôü ç áðïèÞêåõóç ðñáã-


ìáôïðïéåßôáé åðß ôçò ìáãíçôéêÞò ôïõ åðéöÜíåéáò, üðïõ áíáëüãùò ìå ôçí
ðüëùóç áðïèçêåýåôáé ôï 0 Þ ôï 1. Óôá óýã÷ñïíá PC óõíáíôïýìå ÷ùñçôé-
êüôçôåò áðü 80 GBytes ìÝ÷ñé êáé ðåñéóóüôåñï áðü 200 GBytes. Ôï ìåãÜëï
ðëåïíÝêôçìá ôïõ äßóêïõ åßíáé ç äõíáôüôçôá áðïèÞêåõóçò ìåãÜëïõ üãêïõ
äåäïìÝíùí. Ùóôüóï, ï ÷ñüíïò ðñïóðÝëáóçò åßíáé áñêåôÝò ôÜîåéò ìåãÝèïõò
ìåãáëýôåñïò áðü ôï ÷ñüíï ðñïóðÝëáóçò óôçí êýñéá ìíÞìç. ÕðÜñ÷ïõí äýï
âáóéêÝò êáôçãïñßåò ìáãíçôéêþí äßóêùí: á) åýêáìðôïò ìáãíçôéêüò äßóêïò
(äéóêÝôá Þ floppy disk) êáé â) óêëçñüò ìáãíçôéêüò äßóêïò (hard disk). Ïé
åýêáìðôïé äßóêïé ÷ñçóéìïðïéïýíôáé ãéá ôçí áðïèÞêåõóç êáé ìåôáöïñÜ ìé-
êñïý üãêïõ äåäïìÝíùí. ¼ìùò ðëÝïí ìåéþíåôáé ôï åéäéêü ôïõò âÜñïò êáèþò
Ý÷ïõí åìöáíéóèåß åìðïñéêÜ Üëëåò ðñïóöïñüôåñåò óõóêåõÝò ãéá ôïí ßäéï
óêïðü.

• Ïðôéêüò Äßóêïò (optical disk). Ç áðïèÞêåõóç êáé ç ðñïóðÝëáóç ôùí äå-


äïìÝíùí ðñáãìáôïðïéåßôáé ìå ôç âïÞèåéá äÝóìçò laser. Ïé ïðôéêïß äßóêïé
åßíáé áñêåôÜ äéáäåäïìÝíïé ëüãù ôçò ìåãÜëçò åõ÷ñçóôßáò ôïõò êáé ôïõ ÷áìç-
ëïý êüóôïõò ôïõò. Äéáêñßíïõìå äýï âáóéêÝò êáôçãïñßåò ïðôéêþí äßóêùí:
á) ôïõò óõìðáãåßò äßóêïõò (Compact Disk - CD) êáé â) ôïõò øçöéáêïýò
äßóêïõò ðïëëáðëþí ÷ñÞóåùí (Digital Versatile/video Disk - DVD). Óôçí
ðñþôç êáôçãïñßá äéáêñßíïõìå äýï âáóéêïýò ôýðïõò: á) ôïí ïðôéêü äßóêï
CD-ROM (Þ CD-R), üðïõ åêôåëåßôáé ìüíï ìßá áðïèÞêåõóç áëëÜ ðñáêôéêÜ
ìðïñïýí íá åêôåëåóèïýí Üðåéñåò áíáãíþóåéò (ôýðïò Write-Once Read-
Many, WORM) êáé â) ôïí ïðôéêü äßóêï CD-RW, üðïõ ìðïñïýí íá åêôå-
ëåóèïýí ðïëëÝò áðïèçêåýóåéò (ôýðïò rewritable) êáé áðïôåëåß Ýíá ìÝóï
ðïõ áðáíôÜôáé óå êÜèå óýã÷ñïíï PC. Ç óõíçèéóìÝíç ÷ùñçôéêüôçôá åíüò
äßóêïõ CD-ROM åßíáé 650-700 MBytes. Áíôéóôïß÷ùò, ôåëåõôáßá åßíáé åìðï-
ñéêÜ äéáèÝóéìïé ïé äßóêïé DVD-ROM êáé DVD-R ìå ÷ùñçôéêüôçôåò ðïõ
êõìáßíåôáé áðü 4.7 GBytes ìÝ÷ñé êáé 27 GBytes. Ïé ïðôéêïß äßóêïé ÷ñçóé-
ìïðïéïýíôáé êõñßùò ãéá ôç ìüíéìç áðïèÞêåõóç äåäïìÝíùí, ðñïãñáììÜôùí,
ìïõóéêþí áñ÷åßùí êáé áñ÷åßùí ôáéíéþí. Ç óýã÷ñïíç ôå÷íïëïãßá ôùí ïäç-
ãþí ïðôéêþí äßóêùí äßíåé ôç äõíáôüôçôá íá åããñÜøïõìå Ýíá CD Þ Ýíá DVD
óå åëÜ÷éóôá ëåðôÜ, ðñïóöÝñïíôáò ìßá åíáëëáêôéêÞ ëýóç óôç äçìéïõñãßá
áíôéãñÜöùí áóöáëåßáò (backup).

• ÌáãíçôéêÞ Ôáéíßá (magnetic tapes). Áí êáé ç ôå÷íïëïãßá ôùí ìáãíçôéêþí


ôáéíéþí Ý÷åé Þäç ìßá ìáêñü÷ñïíç éóôïñßá, åíôïýôïéò ïé ôáéíßåò ÷ñçóéìï-
ðïéïýíôáé áêüìç êáé óÞìåñá óôçí ðñÜîç, êõñßùò ãéá áðïèÞêåõóç éóôïñé-
êþí êáé åöåäñéêþí áñ÷åßùí. ¼ðùò êáé óôïõò ìáãíçôéêïýò äßóêïõò, Ýôóé êáé
54 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

óôéò ìáãíçôéêÝò ôáéíßåò ç áðïèÞêåõóç ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé ìå


ôçí áíÜëïãç ðüëùóç ôïõ ìáãíçôéêïý õëéêïý. Ïé ôáéíßåò Ý÷ïõí ôåñÜóôéåò äõ-
íáôüôçôåò áðïèÞêåõóçò êáé ÷ñçóéìïðïéïýíôáé êõñßùò ãéá ôçí áðïèÞêåõóç
äåäïìÝíùí ðïõ äåí ðñïóðåëÜæïõìå óõ÷íÜ. Áõôü óõìâáßíåé åðåéäÞ ï ÷ñüíïò
ðñïóðÝëáóçò åßíáé êáôÜ ðïëý ìåãáëýôåñïò óå ó÷Ýóç ìå ôïõò ìáãíçôéêïýò
êáé ïðôéêïýò äßóêïõò. Åßíáé ôï êýñéï ìÝóï áðïèÞêåõóçò áíôéãñÜöùí áóöá-
ëåßáò.

ÁõôÜ ôá ìÝóá áðïèÞêåõóçò ïìáäïðïéïýíôáé óå ôñåéò êáôçãïñßåò, ôá ëåãüìåíá


ìÝóá êýñéáò (primary storage), äåõôåñåýïõóáò Þ on-line (secondary storage) êáé
ôñéôåýïõóáò Þ off-line áðïèÞêåõóçò (tertiary storage). Ôõðéêüò åêðñüóùðïò ôùí
ìÝóùí äåõôåñåýïõóáò áðïèÞêåõóçò åßíáé ï ìáãíçôéêüò äßóêïò, ðïõ åðéìåñßæåé ôá
õðüëïéðá ìÝóá óôéò Üëëåò äýï êáôçãïñßåò.
Ôá ìÝóá áðïèÞêåõóçò Ý÷ïõí åîåëé÷èåß ìå ãñÞãïñïõò ñõèìïýò ôá ôåëåõôáßá
÷ñüíéá, ìå óôü÷ï ôç ìåãáëýôåñç áîéïðéóôßá, ôç ìåãáëýôåñç áðïèçêåõôéêÞ éêáíü-
ôçôá êáé ìéêñüôåñïõò ÷ñüíïõò ðñïóðÝëáóçò. Óôïí Ðßíáêá 2.1 ðáñïõóéÜæïíôáé ôá
óçìáíôéêüôåñá åðéôåýãìáôá óôï ÷þñï ôçò áðïèÞêåõóçò äåäïìÝíùí áðü ôï 1956
Ýùò êáé ôï 2003.
1956 Ç IBM ðáñïõóéÜæåé ôïí ðñþôï ìáãíçôéêü óêëçñü äßóêï RAMAC
÷ùñçôéêüôçôáò 5 MBytes.
1971 Ç IBM ðáñïõóéÜæåé ôïí ðñþôï ïäçãü floppy.
1976 Ôá Wang Laboratories ðáñïõóéÜæïõí ôïí ðñþôï ïäçãü floppy 5 1/2 éíôóþí.
1980 Ç Philips êáôáóêåõÜæåé ôïí ðñþôï ïðôéêü äßóêï ÷ùñçôéêüôçôáò
60 äéóêåôþí 5 1/4.
1981 Ç Sony ðáñïõóéÜæåé ôïí ðñþôï ïäçãü floppy 3 1/2 éíôóþí.
1985 Ç Philips ðáñïõóéÜæåé ôïí ðñþôï ïäçãü CD-ROM.
1987 ÐáñïõóéÜæåôáé ç ôå÷íïëïãßá RAID óôï ÐáíåðéóôÞìéï ôïõ Berkeley.
1991 Ç Yamaha áíáêïéíþíåé ôïí ðñþôï ïäçãü CD-R.
1994 Ç SanDisk ðáñïõóéÜæåé êÜñôåò ìíÞìçò flash.
1997 Ç Philips ðáñïõóéÜæåé ôïí ðñþôï ïäçãü CD-RW êáé ç Hitatchi
ôïí ðñþôï ïäçãü DVD-ROM.
2003 Õéïèåôåßôáé ùò ðñüôõðï ç ðñïäéáãñáöÞ iSCSI.

Ðßíáêáò 2.1: ÉóôïñéêÞ áíáäñïìÞ ìÝóùí áðïèÞêåõóçò.

2.1 Ìáãíçôéêïß Äßóêïé


Ï ìáãíçôéêüò äßóêïò [Harker 1981, Ruemmler 1994] áðïôåëåß ôï âáóéêüôåñï ìÝóï
áðïèÞêåõóçò ôùí ÓÄÂÄ êáé ëüãù ôçò ìåãÜëçò óçìáóßáò åîåôÜæåôáé áíáëõôéêü-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 55

ôåñá. Óôï Ó÷Þìá 2.1 ðáñïõóéÜæåôáé Ýíá ó÷åäéÜãñáììá ðïõ ðåñéãñÜöåé ôá óç-
ìáíôéêüôåñá ôìÞìáôá åíüò óêëçñïý ìáãíçôéêïý äßóêïõ. ÕðÜñ÷ïõí åðéöÜíåéåò
äßóêùí (platters) ðïõ ðåñéóôñÝöïíôáé ìå óôáèåñÞ ãùíéáêÞ ôá÷ýôçôá (Constant
Angular Velocity, CLV) ãýñù áðü Ýíáí Üîïíá ðåñéóôñïöÞò (spindle). Ï êÜèå
äßóêïò Ý÷åé ìáãíçôéêÞ åðßóôñùóç êáé ç åðéöÜíåéÜ ôïõ ÷ùñßæåôáé óå êõêëéêÝò
áôñÜêôïõò Þ ôñï÷éÝò (tracks).
Κ τ έ ν ι

ρ α χ ί ο ν α ς

Π ρ ο σ π έ λ α σ η ς Β
Κ ε φ α λ ή Ά τ ρ α κ τ ο ς

 ί σ κ ο ς

Τ ο  έ α ς Ά τ ρ α κ τ ο ς

Κ ύ λ ι ν δ ρ ο ς

Ά ξ ο ν α ς

Π ε ρ ι σ τ ρ ο φ ή ς

Ó÷Þìá 2.1: Ó÷åäéÜãñáììá ìáãíçôéêïý äßóêïõ.

Ïé Üôñáêôïé üëùí ôùí äßóêùí ìå ßóç áêôßíá ó÷çìáôßæïõí Ýíá íïåñü êýëéí-
äñï (cylinder). ÊáôÜ ôç äéÜñêåéá ôçò ìïñöïðïßçóçò ôïõ äßóêïõ áðü ôïí êáôá-
óêåõáóôÞ, ïé Üôñáêôïé õðïäéáéñïýíôáé óå óôáèåñü áñéèìü ôïìÝùí (sectors)1 ìå ôç
âïÞèåéá ôùí êåíþí (interblock gap) ðïõ Ý÷ïõí óôáèåñü ìÝãåèïò. Ï ôïìÝáò áíôé-
óôïé÷åß óôç ìéêñüôåñç ìïíÜäá ðëçñïöïñßáò ðïõ ìðïñåß íá ðñïóðåëáóèåß ãéá áíÜ-
ãíùóç/áðïèÞêåõóç. Ôï ìÝãåèïò åíüò ôïìÝá óå óõóôÞìáôá PC (ð.÷., óå óõóôÞìáôá
MS-Windows êáé ðáëáéüôåñá óõóôÞìáôá MS-DOS) åßíáé 512 bytes, áëëÜ óå ìå-
ãáëýôåñá óõóôÞìáôá (ð.÷., ôýðïõ UNIX) åßíáé áñêåôÜ ìåãáëýôåñï êáé öèÜíåé ôá
4-8 kbytes. Ëüãù ôçò óôáèåñÞò ãùíéáêÞò ôá÷ýôçôáò êáé ôïõ äéáöïñåôéêïý ìÞêïõò
ôùí ôïìÝùí, ôá äåäïìÝíá áðïèçêåýïíôáé ìå äéáöïñåôéêÞ ðõêíüôçôá (recording
density) óôéò äéÜöïñåò èÝóåéò ôïõ äßóêïõ. Ðéï óõãêåêñéìÝíá, ç ðõêíüôçôá åß-
íáé ìåãáëýôåñç (áíôéóôïß÷ùò, ìéêñüôåñç) óôéò åóþôåñåò (áíôéóôïß÷ùò, åîþôåñåò)
áôñÜêôïõò. Óå êÜèå åðéöÜíåéá äßóêïõ ìå ìáãíçôéêÞ åðßóôñùóç áíôéóôïé÷åß ìßá
ìáãíçôéêÞ êåöáëÞ (head), ðïõ âñßóêåôáé ôïðïèåôçìÝíç óå Ýíá âñá÷ßïíá (arm).
Ïé êåöáëÝò ìåôáêéíïýíôáé üëåò ìáæß ðñïò ôá äåîéÜ Þ ôá áñéóôåñÜ, üðùò äåß÷íïõí
1
Éóïäýíáìá ÷ñçóéìïðïéåßôáé ï üñïò óåëßäá (page) Þ êáé block.
56 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

ôá âÝëç óôï ó÷Þìá, ìå ôç âïÞèåéá ôïõ êôåíéïý ðñïóðÝëáóçò (access comb).


Ç åðéêïéíùíßá ôïõ óêëçñïý äßóêïõ ìå ôç CPU ðñáãìáôïðïéåßôáé ìå ôç âïÞ-
èåéá çëåêôñïíéêÞò äéÜôáîçò ðïõ êáëåßôáé åëåãêôÞò óêëçñïý äßóêïõ (hard disk
controller). Ï åëåãêôÞò åßíáé õðåýèõíïò ãéá ôç ëÞøç äåäïìÝíùí áðü ôç CPU
êáé ôçí áðïèÞêåõóÞ ôïõò óôï äßóêï, êáèþò åðßóçò êáé ãéá ôçí áíÜãíùóç äå-
äïìÝíùí áðü ôï äßóêï êáé ôç ìåôáöïñÜ ôïõò óôç CPU. ¸íá Üëëï êáèÞêïí ôïõ
åëåãêôÞ êáôÜ ôçí áñ÷éêÞ äéáìüñöùóç Þ êáé áñãüôåñá êáôÜ ôç ëåéôïõñãßá ôïõ
äßóêïõ åßíáé ç äéá÷åßñéóç ôùí êáêþí ôïìÝùí (bad sector) ìÝóù ôçò áíôéóôïé÷ßáò
ôïõ ëïãéêïý ôïìÝá óå Üëëç öõóéêÞ èÝóç. ÕðÜñ÷ïõí äéÜöïñá ðñùôüêïëëá åðé-
êïéíùíßáò ìåôáîý åëåãêôÞ äßóêïõ êáé CPU, áíáëüãùò ìå ôç äéåðáöÞ (interface)
ðïõ ÷ñçóéìïðïéåßôáé (ð.÷., USB, IDE, SCSI). Ç ìåôáöïñÜ äåäïìÝíùí ãéá áíÜ-
ãíùóç áðü ôï äßóêï ðñïò ôç CPU (Þ ôï áíôßóôñïöï áí ðñüêåéôáé ãéá áðïèÞêåõóç)
ðñáãìáôïðïéåßôáé óå ôñåéò öÜóåéò ùò åîÞò:
• ÖÜóç ÁíáæÞôçóçò. Ï åëåãêôÞò äßóêïõ ðñïóäéïñßæåé ôçí áêñéâÞ èÝóç üðïõ
âñßóêïíôáé ôá ðñïò áíÜãíùóç (Þ ðñïò áðïèÞêåõóç) äåäïìÝíá. Óôç óõíÝ-
÷åéá ïé êåöáëÝò, ðïõ êéíïýíôáé ðáëéíäñïìéêÜ êáôÜ ìÞêïò ìßáò äéáìÝôñïõ
ôïõ äßóêïõ, ìåôáêéíïýíôáé ìÝ÷ñé íá åíôïðßóïõí ôçí êáôÜëëçëç Üôñáêôï. Ï
÷ñüíïò ðïõ áðáéôåßôáé ãéá ôçí ïëïêëÞñùóç ôçò öÜóçò áõôÞò êáëåßôáé ÷ñü-
íïò áíáæÞôçóçò (seek time, Tseek ).
• ÖÜóç ÐåñéóôñïöéêÞò ÊáèõóôÝñçóçò. Ï åëåãêôÞò åíåñãïðïéåß ôçí êåöáëÞ
ðïõ áíôéóôïé÷åß óôçí Üôñáêôï ðïõ åíôïðßóèçêå êáôÜ ôç öÜóç áíáæÞôçóçò.
Êáèþò ïé äßóêïé ðåñéóôñÝöïíôáé ìå óôáèåñÞ ãùíéáêÞ ôá÷ýôçôá ãýñù áðü
ôïí Üîïíá ðåñéóôñïöÞò, áðáéôåßôáé êÜðïéï ÷ñïíéêü äéÜóôçìá þóôå ç åíåñ-
ãïðïéçìÝíç êåöáëÞ íá åíôïðßóåé ôïí êáôÜëëçëï ôïìÝá óôç óõãêåêñéìÝíç
Üôñáêôï. Ï ÷ñüíïò áõôüò êáëåßôáé ëáíèÜíùí ÷ñüíïò (latency time) Þ êáé
÷ñüíïò ðåñéóôñïöéêÞò êáèõóôÝñçóçò (rotational delay, Trot ).
• ÖÜóç ÌåôáöïñÜò ÄåäïìÝíùí. Ìüëéò åíôïðéóèåß ï êáôÜëëçëïò ôïìÝáò áðü
ôçí êåöáëÞ, ôüôå áñ÷ßæåé ç ìåôáöïñÜ ôùí äåäïìÝíùí ìÝóù ôïõ åëåãêôÞ óôç
CPU óå ðåñßðôùóç áíÜãíùóçò, Þ ôï áíôßóôñïöï óå ðåñßðôùóç áðïèÞêåõ-
óçò. Ï ÷ñüíïò ãéá ôçí ïëïêëÞñùóç ôçò ìåôáöïñÜò ôùí äåäïìÝíùí êáëåßôáé
÷ñüíïò ìåôáöïñÜò (transfer time, Ttrans ), åíþ ï áñéèìüò ôùí bytes ðïõ ìå-
ôáöÝñïíôáé óôç ìïíÜäá ôïõ ÷ñüíïõ êáëåßôáé ñõèìüò ìåôáöïñÜò äåäïìÝíùí
(data transfer rate).
Ï ÷ñüíïò ïëïêëÞñùóçò ìßáò ðñïóðÝëáóçò óôï äßóêï (Taccess ) ðñïêýðôåé áðü ôï
Üèñïéóìá ôùí ÷ñüíùí ãéá ôéò ôñåéò öÜóåéò:

Taccess = Tseek + Trot + Ttrans


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 57

Ç öÜóç áíáæÞôçóçò åßíáé ç ðéï ÷ñïíïâüñá áðü ôéò ôñåéò êáé áðïôåëåß óõíÞèùò
ôï áäýíáôï óçìåßï ôùí äßóêùí. Ï Ðßíáêáò 2.2 ðáñïõóéÜæåé ôá âáóéêÜ ôå÷íéêÜ
÷áñáêôçñéóôéêÜ ìåñéêþí óýã÷ñïíùí ìáãíçôéêþí äßóêùí.

Seagate Western Digital Maxtor


Barracuda 7200.8 Caviar RE2 DiamondMax 16
×ùñçôéêüôçôá 400 GBytes 400 GBytes 300 GBytes
ÐåñéóôñïöÞ 7.200 rpm 7.200 rpm 5.400 rpm
ÅðéöÜíåéåò 8 4 8
ÊåöáëÝò 16 8 16
Êýëéíäñïé 16383 16383 16383
Âytes áíÜ ôïìÝá 512 512 512
ÁðïìïíùôéêÞ ìíÞìç 8 MBytes 16 MBytes 8 MBytes
ÁíáæÞôçóç (ìÝóç ôéìÞ) 8 msec 8.7 msec < 12 msec
ÊáèõóôÝñçóç (ìÝóç ôéìÞ) 4.16 msec 4.20 msec 5.6 msec
ÌåôáöïñÜ (ìÝãéóôç ôéìÞ) 95 MBytes/sec 150 MBytes/sec 133 MBytes/sec

Ðßíáêáò 2.2: ×áñáêôçñéóôéêÜ óýã÷ñïíùí ìáãíçôéêþí äßóêùí.

Óçìáíôéêü ñüëï ãéá ôçí áðüäïóç åíüò óõóôÞìáôïò óêëçñïý äßóêïõ ðáßæåé ç
áðïìïíùôéêÞ ìíÞìç (buffer Þ cache). Ðñüêåéôáé ãéá äéÜôáîç ìíÞìçò ç ïðïßá
÷ñçóéìïðïéåßôáé ãéá ôçí ðñïóùñéíÞ áðïèÞêåõóç äåäïìÝíùí ôïõ äßóêïõ. Ôïíßæå-
ôáé üôé ç ìíÞìç áõôÞ åßíáé åíóùìáôùìÝíç óôï óýóôçìá ôïõ óêëçñïý äßóêïõ êáé
äåí áðïôåëåß ìÝñïò ôçò ìíÞìçò RAM ôïõ õðïëïãéóôéêïý óõóôÞìáôïò. Ðñéí áðü
êÜèå ðñïóðÝëáóç, ðñáãìáôïðïéåßôáé Ýëåã÷ïò ãéá ôï áí ôá äåäïìÝíá âñßóêïíôáé Þ
ü÷é óôçí áðïìïíùôéêÞ ìíÞìç. Áí íáé, ôüôå äåí áðáéôåßôáé ðñïóðÝëáóç óôï äßóêï.
Ìå ôïí ôñüðï áõôü åðéôá÷ýíåôáé ç äéáäéêáóßá ôçò ìåôáöïñÜò äåäïìÝíùí áðü ôï
äßóêï óôçí êåíôñéêÞ ìïíÜäá åðåîåñãáóßáò. Ðåñéóóüôåñá óôïé÷åßá ãéá ôïí ôñüðï
ðñïóðÝëáóçò ôùí äåäïìÝíùí èá ðáñïõóéÜóïõìå óôï ÊåöÜëáéï 11.
¸íá Üëëï óçìáíôéêü óôïé÷åßï ôçò åðßäïóçò ôùí ìáãíçôéêþí äßóêùí åßíáé
ç áîéïðéóôßá, ç ïðïßá ìåôñÜôáé ìå ôï ìÝóï ÷ñüíï ìåôáîý âëáâþí (Mean Time
Between Failures, MTBF), Ýíá ìÝôñï ðïõ áíôéðñïóùðåýåé ôï ÷ñïíéêü äéÜóôçìá
ðïõ ìåóïëáâåß ìåôáîý äýï äéáäï÷éêþí äõóëåéôïõñãéþí åíüò äßóêïõ. Áðü ôïõò
êáôáóêåõáóôÝò áíáöÝñïíôáé üôé ôõðéêÝò ôéìÝò ôïõ ÷ñüíïõ áõôïý áðü 300.000 ìÝ÷ñé
êáé 1.500.000 þñåò. Ìßá Üëëç ðáñÜìåôñïò ãéá ôç ìÝôñçóç ôçò áîéïðéóôßáò åßíáé
ï ìÝóïò ÷ñüíïò ãéá áðïêáôÜóôáóç (Mean Time to Repair, MTTR), ï ïðïßïò
õðïäçëþíåé ôï ìÝóï ÷ñüíï ðïõ áðáéôåßôáé ãéá ôçí áíôéêáôÜóôáóç ôçò óõóêåõÞò
êáé ôçí åðáíáöïñÜ ôùí äåäïìÝíùí. Ìå ôçí ðñüïäï ôçò ôå÷íïëïãßáò ôùí ìÝóùí
áðïèÞêåõóçò ðáñáôçñïýìå üôé, ç áîéïðéóôßá âåëôéþíåôáé, ï ìÝóïò ÷ñüíïò ìåôáîý
58 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

âëáâþí áõîÜíåôáé êáé ï ìÝóïò ÷ñüíïò ãéá áðïêáôÜóôáóç ìåéþíåôáé.


Ç éóôïñßá ôïõ óêëçñïý ìáãíçôéêïý äßóêïõ ùò ìÝóïõ áðïèÞêåõóçò îåêéíÜ
ôï 1956 üôáí ç IBM êáôáóêåýáóå ôïí ðñþôï äßóêï ìå ôçí ïíïìáóßá RAMAC
êáé ìå óõíïëéêÞ ÷ùñçôéêüôçôá 5 MBytes. Ï RAMAC Þôáí óå ìÝãåèïò áñêåôÜ
ìåãáëýôåñïò óå ó÷Ýóç ìå ôïõò óýã÷ñïíïõò óêëçñïýò äßóêïõò. Áõôü ïöåßëåôáé
óôï ãåãïíüò üôé ç óýã÷ñïíç ôå÷íïëïãßá åðéôñÝðåé ôçí áýîçóç ôçò ðõêíüôçôáò
áðïèÞêåõóçò. Ùóôüóï, áí êáé ïé óçìåñéíïß äßóêïé åßíáé ôá÷ýôåñïé, ìéêñüôåñïé
óå ìÝãåèïò êáé áðïèçêåýïõí ðåñéóóüôåñá äåäïìÝíá, åíôïýôïéò óôçñßæïíôáé óôéò
ßäéåò ôå÷íïëïãéêÝò áñ÷Ýò óôéò ïðïßåò âáóßóèçêå êáé ï äßóêïò RAMAC.

2.2 Óõóôïé÷ßåò Äßóêùí


×ñçóéìïðïéþíôáò ìßá ìüíï ìïíÜäá äßóêïõ õðÜñ÷åé ï êßíäõíïò ôçò óïâáñÞò êá-
èõóôÝñçóçò åêôÝëåóçò ôùí åöáñìïãþí, êáèþò ïé ðñïóðåëÜóåéò óôï äßóêï êïóôß-
æïõí ðïëý ðåñéóóüôåñï áðü ôéò ðñïóðåëÜóåéò óôçí êýñéá ìíÞìç. Åßíáé åðéèõ-
ìçôü ðïëëÝò áéôÞóåéò áíÜãíùóçò Þ áðïèÞêåõóçò íá ìðïñïýí íá åîõðçñåôïýíôáé
ðáñÜëëçëá, ìåéþíïíôáò Ýôóé ôï ÷ñüíï åéóüäïõ-åîüäïõ (I/O). Åðßóçò, óå ðåñß-
ðôùóç âëÜâçò ôçò óõóêåõÞò äßóêïõ õðÜñ÷åé ôï åíäå÷üìåíï êáôáóôñïöÞò Þ áðþ-
ëåéáò óçìáíôéêþí äåäïìÝíùí ðñïóùñéíÜ Þ ìüíéìá. Áí êáé õðÜñ÷åé ðÜíôá ç ëýóç
ôçò åðáíÜêôçóçò ôùí äåäïìÝíùí ìå ôç âïÞèåéá áíôéãñÜöùí áóöáëåßáò (áí åßíáé
äéáèÝóéìá), áõôü äåí åßíáé ðÜíôïôå ç êáëýôåñç ëýóç åðåéäÞ õðÜñ÷ïõí êñßóéìåò
åöáñìïãÝò ðïõ ðñÝðåé íá åêôåëïýíôáé áäéÜëåéðôá. Ç äéáäéêáóßá ôçò åðáíÜêôç-
óçò ôùí äåäïìÝíùí áðü ôá áíôßãñáöá áóöáëåßáò åíäÝ÷åôáé íá åßíáé ÷ñïíïâüñá
ìå áðïôÝëåóìá ôï óýóôçìá íá ôßèåôáé åêôüò ëåéôïõñãßáò ãéá ìåãÜëï ÷ñïíéêü äéÜ-
óôçìá.
Ùò ëýóç óôá ðñïçãïýìåíá ðñïâëÞìáôá Ý÷åé ðñïôáèåß ç óõóôïé÷ßá äßóêùí
(disk array) [Patterson 1988, Chen 1990, Chen 1994]. Ìßá óõóôïé÷ßá äßóêùí åßíáé
ìßá äéÜôáîç ðïõ áðáñôßæåôáé áðü ðïëëÝò ìïíÜäåò óêëçñþí äßóêùí. Ç ãíùóôü-
ôåñç êáé åõñÝùò äéáäåäïìÝíç åßíáé ç óõóôïé÷ßá RAID (redundant array of in-
expensive/independent disks). ÕðÜñ÷ïõí äéáöïñåôéêÜ åðßðåäá RAID, ôá ïðïßá
ìðïñïýí íá ÷ñçóéìïðïéçèïýí áíáëüãùò ìå ôéò áíÜãêåò. Ç ÷ñÞóç ôùí äéáöüñùí
åðéðÝäùí ðñïûðïèÝôåé üôé õðÜñ÷åé õðïóôÞñéîç åßôå áðü åîåéäéêåõìÝíïõò åëåãêôÝò
(RAID controllers), åßôå áðü ôï ëåéôïõñãéêü óýóôçìá. Áðåéêïíßóåéò ôùí åðéðÝ-
äùí RAID äßíïíôáé óôï Ó÷Þìá 2.2. Óôç óõíÝ÷åéá ðåñéãñÜöïíôáé óõíïðôéêÜ ôá
åðßðåäá RAID êáé ïé ìåôáîý ôïõò äéáöïñÝò.

• RAID 0. Ðñüêåéôáé ãéá ôçí áðëïýóôåñç ìïñöÞ üðïõ äåí õðÜñ÷åé åðáíÜ-
ëçøç ôùí äåäïìÝíùí. Ôá äåäïìÝíá äéá÷ùñßæïíôáé óå ìïíÜäåò ðïõ ïíïìÜ-
æïíôáé blocks, êáé ôá ïðïßá äéáìïéñÜæïíôáé óôïõò äéáèÝóéìïõò äßóêïõò. Ôï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 59

êÜèå block áðïèçêåýåôáé óå Ýíá ìüíï äßóêï. Óå ðåñßðôùóç üðïõ êÜðïéïò


äßóêïò ôåèåß åêôüò ëåéôïõñãßáò, ôá áíôßóôïé÷á äåäïìÝíá äåí èá åßíáé ðñï-
óðåëÜóéìá. Ôï áñíçôéêü óôïé÷åßï åßíáé üôé üóï áõîÜíåôáé ï áñéèìüò ôùí
äßóêùí, ôüóï ìåéþíåôáé ï ìÝóïò ÷ñüíïò ìåôáîý âëáâþí ãéá ôï óýíïëï ôùí
äßóêùí. Ôï ãåãïíüò áõôü ïäÞãçóå ôïõò åñåõíçôÝò óôçí áíáæÞôçóç åíáëëá-
êôéêþí äéáôÜîåùí ãéá ôçí åðßëõóç ôïõ ðñïâëÞìáôïò.

• RAID 1. Ç áðëïýóôåñç ìïñöÞ åðáíÜëçøçò ôùí äåäïìÝíùí åßíáé íá ÷ñç-


óéìïðïéçèåß êáèñåðôéóìüò (mirroring) Þ óêßáóç (shadowing). ÊÜèå äßóêïò
A óõíïäåýåôáé áðü Ýíáí åðéðëÝïí äßóêï A0 üðïõ áðïèçêåýïíôáé áêñéâþò
ôá ßäéá äåäïìÝíá. ÅðïìÝíùò, óå ðåñßðôùóç âëÜâçò ôïõ äßóêïõ A (áíôéóôïß-
÷ùò, A0 ) ôá äåäïìÝíá åßíáé ðñïóðåëÜóéìá ìÝóù ôïõ äßóêïõ A0 (áíôéóôïß÷ùò,
A). Ç ëýóç åßíáé áñêåôÜ áðëÞ óôçí õëïðïßçóÞ ôçò, üìùò Ý÷åé áõîçìÝíï
êüóôïò åðåéäÞ ÷ñçóéìïðïéåßôáé äéðëÜóéïò áñéèìüò äßóêùí.

• RAID 2. Ãéá ôçí åðáíÜêôçóç ôùí äåäïìÝíùí óå ðåñßðôùóç âëÜâçò óå ìßá


óõóêåõÞ äßóêïõ, ôï åðßðåäï áõôü ÷ñçóéìïðïéåß êþäéêåò äéüñèùóçò ëáèþí
(error-correcting codes) êáé ðéï óõãêåêñéìÝíá êþäéêåò Hamming. Ïé äß-
óêïé äéá÷ùñßæïíôáé óå äýï õðïóýíïëá: á) äßóêïé äåäïìÝíùí êáé â) äßóêïé
éóïôéìßáò (parity). Ôá bits êÜèå byte äåäïìÝíùí äéáìïéñÜæïíôáé óôïõò äß-
óêïõò äåäïìÝíùí ìå êõêëéêü ôñüðï, óýìöùíá ìå ìßá ôå÷íéêÞ ðïõ ïíïìÜæå-
ôáé data stripping (óå åëåýèåñç ìåôÜöñáóç, äéáìïéñáóìüò ôùí äåäïìÝíùí
óå ëùñßäåò). Áíôéóôïß÷ùò, ïé êþäéêåò Hamming áðïèçêåýïíôáé êáé ðÜëé
ìå stripping óôïõò äßóêïõò éóïôéìßáò. Óå ðåñßðôùóç âëÜâçò åíüò (êáé ìüíï
åíüò) bit óå Ýíá äßóêï äåäïìÝíùí, áíáêôþíôáé ôá õðüëïéðá bits äåäïìÝíùí
áðü ôïõò áâëáâåßò äßóêïõò êáé åðéôõã÷Üíåôáé åðáíÜêôçóç ôùí áðùëåóèÝ-
íôùí bits ÷ñçóéìïðïéþíôáò ôçí ðëçñïöïñßá áðü ôïõò äßóêïõò éóïôéìßáò.
ÐëåïíÝêôçìá ôïõ RAID 2 åßíáé üôé ìðïñåß íá åðéôý÷åé ìåãÜëïõò ñõèìïýò
ìåôáöïñÜò äåäïìÝíùí. Ùóôüóï, áðáéôåßôáé áñêåôÜ ìåãÜëïò áñéèìüò äß-
óêùí ìå áðïôÝëåóìá ôï êüóôïò íá åßíáé õøçëü.

• RAID 3. Êáé áõôü ôï åðßðåäï õéïèåôåß ôçí ôå÷íéêÞ ôïõ data stripping ãéá ôï
äéáìïéñáóìü ôùí äåäïìÝíùí óôïõò áíôßóôïé÷ïõò äßóêïõò. Ïé äéáöïñÝò ìå ôï
åðßðåäï RAID 2 åßíáé äýï: á) ç ôå÷íéêÞ data stripping åöáñìüæåôáé óå åðß-
ðåäï byte êáé ü÷é óå åðßðåäï bit êáé â) ôï åðßðåäï áõôü ÷ñçóéìïðïéåß ìüíï
Ýíá äßóêï ãéá ôçí áðïèÞêåõóç ôçò ðëçñïöïñßáò éóïôéìßáò. Ç ðëçñïöïñßá
éóïôéìßáò ðáñÜãåôáé êáôÜ ôçí áðïèÞêåõóç óôç óõóôïé÷ßá êáé åëÝã÷åôáé ìå
êÜèå áíÜãíùóç. Óå ðåñßðôùóç âëÜâçò ìßáò óõóêåõÞò äßóêïõ äåäïìÝíùí,
ôá êáôåóôñáììÝíá äåäïìÝíá ìðïñïýí íá åðáíáêôçèïýí ìå ôç âïÞèåéá ôùí
õðïëïßðùí äåäïìÝíùí êáé ôùí äåäïìÝíùí áðü ôï äßóêï éóïôéìßáò. Åßíáé
60 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

A B C D
E F G H RAID 0
I J K L
M N O P

A A B B C C D D
E E F F G G H H RAID 1
I I J J K K L L
M M N N O O P P

A0 A1 A2 A3 ECC/Ax ECC/Ay ECC/Az


B0 B1 B2 B3 ECC/Bx ECC/By ECC/Bz RAID 2
C0 C1 C2 C3 ECC/Cx ECC/Cy ECC/Cz
D0 D1 D2 D3 ECC/Dx ECC/Dy ECC/Dz

A0 A1 A2 A3 Ισοτιµία Α
B0 B1 B2 B3 Ισοτιµία Β RAID 3
C0 C1 C2 C3 Ισοτιµία C
D0 D1 D2 D3 Ισοτιµία D

A0 A1 A2 A3 Ισοτιµία Α
B0 B1 B2 B3 Ισοτιµία Β RAID 4
C0 C1 C2 C3 Ισοτιµία C
D0 D1 D2 D3 Ισοτιµία D

A0 B0 C0 D0 Ισοτιµία 0
A1 B1 C1 Ισοτιµία 1 E1
RAID 5
A2 B2 Ισοτιµία 2 D2 E2
A3 Ισοτιµία 3 C3 D3 E3
Ισοτιµία 4 B4 C4 D4 E4

A0 B0 C0 D0 Ισοτιµία 0
A1 B1 C1 Ισοτιµία 1 Ισοτιµία 5
RAID 6
A2 B2 Ισοτιµία 2 Ισοτιµία 6 E1
A3 Ισοτιµία 3 Ισοτιµία 7 D2 E2
Ισοτιµία 4 Ισοτιµία 8 C3 D3 E3
Ισοτιµία 9 B4 C4 D4 E4

Ó÷Þìá 2.2: Åðßðåäá RAID.

ðïëýðëïêç ìÝèïäïò êáé áðáéôåß åî ßóïõ ðïëýðëïêï åëåãêôÞ êáé ãåíéêüôåñá


åßíáé äýóêïëç ç õðïóôÞñéîÞ ôïõ áðü ôï ëåéôïõñãéêü óýóôçìá.

• RAID 4. ÌïéÜæåé ìå ôï åðßðåäï RAID 3 êáôÜ ôï üôé ÷ñçóéìïðïéåß Ýíá


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 61

ìüíï äßóêï ãéá ôéò ðëçñïöïñßåò éóïôéìßáò. ÁíôéèÝôùò, üìùò, äåí ÷ñçóéìï-
ðïéåß ôçí ôå÷íéêÞ ôïõ data stripping óå åðßðåäï byte áëëÜ óå åðßðåäï block.
ÄçëáäÞ, äéáìïéñÜæåé ôá block åíüò áñ÷åßïõ óå üëïõò ôïõò äéáèÝóéìïõò äß-
óêïõò äåäïìÝíùí ìå êõêëéêü ôñüðï. Åðßóçò, áðü ôá block ôùí äßóêùí äå-
äïìÝíùí åîÜãåé Ýíá block éóïôéìßáò, ôï ïðïßï áðïèçêåýåé óôïí áíôßóôïé÷ï
äßóêï éóïôéìßáò. ¸ôóé, óå ðåñßðôùóç âëÜâçò åíüò äßóêïõ äåäïìÝíùí, ÷ñç-
óéìïðïéåßôáé ôï block éóïôéìßáò êáé ôá õðüëïéðá blocks äåäïìÝíùí ãéá ôçí
åðáíÜêôçóç ôùí ìç ðñïóðåëÜóéìùí äåäïìÝíùí. Ãéá ôçí åîõðçñÝôçóç ìßáò
áßôçóçò áíÜãíùóçò åíüò block ÷ñçóéìïðïéåßôáé ìüíï Ýíáò äßóêïò. Ïé õðü-
ëïéðïé äßóêïé åßíáé äéáèÝóéìïé ãéá ôçí åîõðçñÝôçóç Üëëùí áéôÞóåùí. Áõôü
óçìáßíåé üôé ï ñõèìüò ìåôáöïñÜò äåäïìÝíùí êáôÜ ôçí åîõðçñÝôçóç åíüò
óõãêåêñéìÝíïõ åñùôÞìáôïò åßíáé ìéêñüôåñïò, ùóôüóï ðïëëÝò áéôÞóåéò ìðï-
ñïýí íá åîõðçñåôçèïýí ðáñÜëëçëá êáèþò áíáöÝñïíôáé óå äéáöïñåôéêïýò
äßóêïõò. Ïé áéôÞóåéò áðïèÞêåõóçò äåí ìðïñïýí íá åîõðçñåôçèïýí ðáñÜë-
ëçëá, äéüôé ìåôÜ áðü êÜèå áðïèÞêåõóç åíüò block äåäïìÝíùí ðñÝðåé íá
åíçìåñùèïýí ïé ðëçñïöïñßåò éóïôéìßáò, ïé ïðïßåò âñßóêïíôáé áðïèçêåõìÝ-
íåò óôïí Ýíá êáé ìïíáäéêü äßóêï éóïôéìßáò.

• RAID 5. ÌïéÜæåé ìå ôï åðßðåäï RAID 4 êáèþò äåí ÷ñçóéìïðïéåß ôçí ôå-


÷íéêÞ ôïõ data stripping óå åðßðåäï byte áëëÜ óå åðßðåäï block. ¼ìùò áðü
ôçí Üëëç ðëåõñÜ, äåí áðïèçêåýåé ôï block éóïôéìßáò ðïõ åîÜãåé áðü Ýíá
óýíïëï block äåäïìÝíùí óå Ýíáí áðïêëåéóôéêü äßóêï éóïôéìßáò, áëëÜ ôï
äéáìïéñÜæåé óôï óýíïëï ôùí äßóêùí. Ìå Üëëá ëüãéá, äåí äéáêñßíåé îå÷ùñé-
óôïýò äßóêïõò äåäïìÝíùí êáé éóïôéìßáò, áëëÜ üëïé ïé äßóêïé ðåñéÝ÷ïõí êáé
äåäïìÝíá êáé ðëçñïöïñßåò éóïôéìßáò. Ìå ôïí ôñüðï áõôü åðéôõã÷Üíïíôáé
ìåãáëýôåñïé ñõèìïß ìåôáöïñÜò äåäïìÝíùí êáôÜ ôéò áéôÞóåéò áðïèÞêåõóçò.
Ï ó÷åäéáóìüò ôïõ åëåãêôÞ åßíáé áñêåôÜ ðåñßðëïêïò. Åðßóçò, óå ðåñßðôùóç
âëÜâçò åíüò äßóêïõ ôá äåäïìÝíá áíáêôþíôáé áñêåôÜ äõóêïëüôåñá óå ó÷Ýóç
ìå ôá ðñïçãïýìåíá åðßðåäá RAID.

• RAID 6. Åßíáé åðÝêôáóç ôïõ RAID 5 êáé äßíåé ôç äõíáôüôçôá åðáíÜêôç-


óçò äåäïìÝíùí áêüìç êáé áí ðáñïõóéáóèåß âëÜâç óå äýï äßóêïõò. Áõôü
åðéôõã÷Üíåôáé ìå ôç âïÞèåéá äýï áíåîáñôÞôùí ìåèüäùí: åöáñìüæïíôáò ôï
ëåãüìåíï ó÷Þìá P+Q ìå ÷ñÞóç êùäßêùí Reed-Solomon. ¼ðùò êáé óôï
RAID 5, ôüóï ôá äåäïìÝíá üóï êáé ïé ðëçñïöïñßåò éóïôéìßáò äéáìïéñÜ-
æïíôáé óå üëïõò ôïõò äßóêïõò. Ëüãù ôùí äýï áíåîÜñôçôùí ÷ñçóéìïðïéïý-
ìåíùí ìåèüäùí ï ó÷åäéáóìüò ôïõ åëåãêôÞ åßíáé áñêåôÜ ðåñßðëïêïò. Åðé-
ðëÝïí, áðáéôåßôáé óçìáíôéêüò ÷ñüíïò ãéá ôïí õðïëïãéóìü ôùí äéåõèýíóåùí
éóïôéìßáò. ÔÝëïò, ïé áðáéôÞóåéò ôïõ RAID 6 óå áðïèçêåõôéêü ÷þñï åß-
62 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

íáé ìåãáëýôåñåò, êáèþò åßíáé äéðëÜóéïò ï ÷þñïò ðïõ äåóìåýåôáé ãéá ôá


äåäïìÝíá éóïôéìßáò (âë. Ó÷Þìá 2.2).

• Óõíäõáóìïß åðéðÝäùí RAID. ÐïëëÜ áðü ôá áíùôÝñù åðßðåäá ìðïñïýí íá


óõíäõáóèïýí êáé íá ðñïêýøïõí ðïëõðëïêüôåñåò äéáôÜîåéò ìå äéáöïñåôé-
êïýò âáèìïýò áíï÷Þò óå âëÜâåò. Ãéá ðáñÜäåéãìá, óõíäõÜæïíôáò ôï RAID
0 ìå ôï RAID 1 Ý÷ïõìå ìßá íÝá óõóôïé÷ßá (RAID 01 Þ RAID 10), ðïõ
Ý÷åé ôá ÷áñáêôçñéóôéêÜ êáé ôùí äýï åðéðÝäùí. Ïìïßùò, ï óõíäõáóìüò ôùí
åðéðÝäùí RAID 0 êáé RAID 3 äßíåé ôç óõóôïé÷ßá RAID 03.

Áðü ôá åðßðåäá RAID ðïõ áíáöÝñèçêáí, ïé êáôáóêåõáóôÝò ìïíÜäùí áðïèÞ-


êåõóçò óõíÞèùò ÷ñçóéìïðïéïýí ôá RAID 1, RAID 3 êáé RAID 5. Ç åðéëïãÞ ôïõ
êáôÜëëçëïõ åðéðÝäïõ RAID åîáñôÜôáé áðü ðïëëïýò ðáñÜãïíôåò üðùò ôç öýóç
ôùí åöáñìïãþí, ôçí êñéóéìüôçôá ôùí åöáñìïãþí, ôï åßäïò ôùí áéôÞóåùí (äç-
ëáäÞ, áíÜãíùóçò Þ áðïèÞêåõóçò), êáèþò êáé ôï êüóôïò. Ìßá ìïíÜäá áðïèÞ-
êåõóçò RAID ìðïñåß íá ÷ñçóéìïðïéçèåß ùò ôï âáóéêü ìÝóï áðïèÞêåõóçò åíüò
åîõðçñÝôç Þ íá ÷ñçóéìïðïéçèåß ùò ìïíÜäá áðïèÞêåõóçò äéêôýïõ üðïõ èá ìðï-
ñïýí íá Ý÷ïõí ðñüóâáóç ðïëëÜ õðïëïãéóôéêÜ óõóôÞìáôá.

2.3 Ïðôéêïß Äßóêïé


Ï ïðôéêüò äßóêïò [Kenville 1982, Fujitani 1984, O’Leary 1985] ÷ñçóéìïðïéåßôáé
êõñßùò ãéá ôçí áðïèÞêåõóç ðñïãñáììÜôùí, áñ÷åßùí êåéìÝíïõ, áñ÷åßùí Þ÷ïõ,
åéêüíùí êáé ôáéíéþí. Åðßóçò, ÷ñçóéìïðïéåßôáé êáé ùò Ýíáò åýêïëïò ôñüðïò ðá-
ñáãùãÞò áíôéãñÜöùí áóöáëåßáò. Ç ÷ùñçôéêüôçôá åíüò ïðôéêïý äßóêïõ åßíáé
áñêåôÜ ìéêñüôåñç áðü áõôÞí åíüò óýã÷ñïíïõ ìáãíçôéêïý äßóêïõ. ÅðéðëÝïí, ï
÷ñüíïò ðñïóðÝëáóçò ôùí äåäïìÝíùí óôïõò ìáãíçôéêïýò äßóêïõò åßíáé êáôÜ ðïëý
ìéêñüôåñïò. Ùóôüóï, ïé ïðôéêïß äßóêïé ïöåßëïõí ôç ìåãÜëç áðÞ÷çóÞ ôïõò ôüóï
óôï ÷áìçëü êüóôïò ôùí äßóêùí êáé ôùí ïäçãþí ïðôéêþí äßóêùí, üóï êáé óôç
ìåãÜëç áíôï÷Þ êáé ôç ÷ùñçôéêüôçôÜ ôïõò óå ó÷Ýóç ìå ôïõò åýêáìðôïõò ìáãíçôé-
êïýò äßóêïõò.
Ï óõíçèÝóôåñïò ôýðïò ïðôéêïý äßóêïõ åßíáé áõôüò óôïí ïðïßï ç áðïèÞêåõóç
åðéôñÝðåôáé ìüíï ìßá öïñÜ áëëÜ ç áíÜãíùóç ìðïñåß íá ãßíåé áðåñéüñéóôåò öïñÝò
(WORM). Áõôüò ï ôñüðïò áðïèÞêåõóçò äåí åðéôñÝðåé ôç äéáãñáöÞ Þ ôçí åðáíá-
áðïèÞêåõóç äåäïìÝíùí. Ùóôüóï, õðÜñ÷ïõí êáé ïé åðáíåããñÜøéìïé (rewritable)
ïðôéêïß äßóêïé ðïõ ðáñÝ÷ïõí äõíáôüôçôá åðáíá-áðïèÞêåõóçò äåäïìÝíùí, äéá-
ãñÜöïíôáò ôá ðñïçãïýìåíá. Ï áðëüò ïðôéêüò äßóêïò (CD) Ý÷åé ÷ùñçôéêüôçôá
650-700 MBytes, åíþ õðÜñ÷åé ç äõíáôüôçôá áðïèÞêåõóçò ðåñéóóüôåñùí äåäïìÝ-
íùí ÷ñçóéìïðïéþíôáò åéäéêÝò ìåèüäïõò (ð.÷., over-burn). Ïé ïðôéêïß äßóêïé DVD
Ý÷ïõí äõíáôüôçôá áðïèÞêåõóçò ìÝ÷ñé 27 GBytes äåäïìÝíùí (blue-ray DVD) êáé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 63

÷ñçóéìïðïéïýíôáé êõñßùò ãéá ôçí áðïèÞêåõóç ôáéíéþí êáé Üëëùí ðïëõìåóéêþí


(multimedia) äåäïìÝíùí.
¸íáò ïðôéêüò äßóêïò WORM (Þ CD-R) áðïôåëåßôáé áðü Ýíá äßóêï äéáìÝôñïõ
12cm, ï ïðïßïò åßíáé êáôáóêåõáóìÝíïò áðü ðïëõáíèñáêéêü ðëáóôéêü õëéêü (âë.
Ó÷Þìá 2.3). Ôï ðïëõáíèñáêéêü õëéêü åðéêáëýðôåôáé áðü Ýíá óôñþìá öùôïåõáß-
óèçôçò ÷ñùóôéêÞò ïõóßáò êáé áêïëïõèåß åðßóôñùóç áðü ëåðôü öýëëï áëïõìéíßïõ.
Óôï áíþôåñï åðßðåäï ôïõ äßóêïõ âñßóêåôáé ç åôéêÝôá (label). Ôï óõíïëéêü ðÜ÷ïò
ôïõ ïðôéêïý äßóêïõ äåí îåðåñíÜ ôá 1.2mm.

ε δ ώ η δ έ σ  η l a s e r δ ε ν α ν α κ λ ά τ α ι α ν ά κ λ α σ η δ έ σ  η ς l a s e r

ε τ ι κ έ τ τ α

α λ ο υ  ί ν ι ο

χ ρ ω σ τ ι κ ή

ο υ σ ί α

π ο λ υ α ν θ ρ α κ ι κ ό

π λ α σ τ ι κ ό

Ó÷Þìá 2.3: Ó÷åäéÜãñáììá ïðôéêïý äßóêïõ WORM.

Óå Ýíáí êåíü ïðôéêü äßóêï ç óõíïëéêÞ åðéöÜíåéá ôçò ÷ñùóôéêÞò ïõóßáò åßíáé
çìéäéáöáíÞò. Ç áðïèÞêåõóç ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé ìå ôç âïÞèåéá äÝ-
óìçò laser, ç ïðïßá ìåôáôñÝðåé ôç ÷ñùóôéêÞ ïõóßá óå áäéáöáíÞ óå óõãêåêñéìÝíá
óçìåßá. Ìå ôçí ôå÷íéêÞ áõôÞ ìðïñïýìå íá áðïèçêåýóïõìå øçöéáêÜ äåäïìÝíá
óå Ýíáí ïðôéêü äßóêï. Ç áíÜãíùóç ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé ðÜëé ìå
ôç âïÞèåéá äÝóìçò laser ÷áìçëüôåñçò éó÷ýïò. ¼ôáí ç äÝóìç ðåñÜóåé áðü óç-
ìåßï ôçò ÷ñùóôéêÞò ïõóßáò ôï ïðïßï åßíáé çìéäéáöáíÝò, ç äÝóìç èá áíáêëáóèåß
ìÝóù ôçò åðßóôñùóçò áëïõìéíßïõ. ÄéáöïñåôéêÜ, äåí èá õðÜñ÷åé áíÜêëáóç. ¸ôóé,
ìðïñïýìå íá äéá÷ùñßóïõìå ôá bits ôçò ðëçñïöïñßáò ðïõ âñßóêïíôáé óôïí ïðôéêü
äßóêï. Ïé åðáíåããñÜøéìïé ïðôéêïß äßóêïé (CD-RW) êáôáóêåõÜæïíôáé ìå äéá-
öïñåôéêÝò ôå÷íéêÝò ðïõ åðéôñÝðïõí ôç äéáãñáöÞ êáé åðáíá-áðïèÞêåõóç íÝùí
äåäïìÝíùí.
Ï ïðôéêüò äßóêïò ëåéôïõñãåß äéáöïñåôéêÜ áðü ôï ìáãíçôéêü. Ïé óçìáíôéêüôå-
ñåò äéáöïñÝò åßíáé åîÞò äýï:
• óôïõò ïðôéêïýò äßóêïõò ç ðõêíüôçôá áðïèÞêåõóçò åßíáé óôáèåñÞ êáé

• ïé ïðôéêïß äßóêïé äåí ðåñéóôñÝöïíôáé ìå óôáèåñÞ ãùíéáêÞ ôá÷ýôçôá áëëÜ


ìå óôáèåñÞ ãñáììéêÞ ôá÷ýôçôá (Constant Linear Velocity, CLV), ðïõ åßíáé
óõíÜñôçóç ôçò èÝóçò ôïõ äßóêïõ üðïõ ðñïóðåëáýíïõìå.
64 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

Ôï ðëåïíÝêôçìá ôùí óõóêåõþí CLV åßíáé ç êáëýôåñç ÷ñÞóç ôïõ ÷þñïõ ëüãù
ïìïéüìïñöçò ðõêíüôçôáò áðïèÞêåõóçò óå üëï ôï äßóêï. Ôï ìåéïíÝêôçìá åßíáé
üôé ç êåöáëÞ óå Ýíá ôÝôïéï äßóêï äåí ìðïñåß íá ìåôñÞóåé ôéò áôñÜêôïõò ðïõ ðñï-
óðåñíÜ, êáèþò êéíåßôáé ìå ìåãÜëç ôá÷ýôçôá. ¸ôóé, ç ãùíéáêÞ ôá÷ýôçôá áõîÜíåôáé
êáèþò ïé êåöáëÝò êéíïýíôáé ðñïò ôïí Üîïíá ðåñéóôñïöÞò, þóôå üëåò ïé åããñáöÝò
íá ðåñíïýí êÜôù áðü ôï ìç÷áíéóìü áíÜãíùóçò ìå ôïí ßäéï ñõèìü, áíåîÜñôçôá ôçò
èÝóçò ôïõò óôçí åðéöÜíåéá ôïõ äßóêïõ. Ìå ôïí ôñüðï áõôüí üìùò, åßíáé äõíáôüí
íá ÷ñåéáóèïýí ðåñéóóüôåñåò ôçò ìßáò ðñïóðÜèåéåò ìÝ÷ñé íá åíôïðéóèåß ç áíáæç-
ôïýìåíç Üôñáêôïò, ìå áðïôÝëåóìá ç ìåôáêßíçóç ôïõ ìç÷áíéóìïý êáé óõíåðþò ç
áíáæÞôçóç íá åßíáé ó÷åôéêÜ âñáäýôåñåò óå óõóêåõÝò CLV áðü üôé óå óõóêåõÝò
CAV.
Ìßá Üëëç äéáöïñÜ ìåôáîý ôùí äýï ôýðùí äßóêùí åßíáé üôé óôïõò äßóêïõò CLV
äåí õðÜñ÷ïõí ïé ãíùóôïß ïìüêåíôñïé Üôñáêôïé ôùí äßóêùí CAV, áëëÜ ìßá Þ ðå-
ñéóóüôåñåò óðåéñïåéäåßò Üôñáêôïé. Ç ìïñöïðïßçóç èåùñåßôáé ìå âÜóç ìßá áêôßíá
ôïõ äßóêïõ, ïðüôå ìßá íïåñÞ Üôñáêôïò âñßóêåôáé ìåôáîý äýï äéáäï÷éêþí ôïìþí
ôçò áêôßíáò êáé ìßáò óðåéñïåéäïýò áôñÜêôïõ. ¸ôóé, ôï óýíïëï ôùí äéáäï÷éêþí
íïåñþí áôñÜêôùí ßäéáò ÷ùñçôéêüôçôáò ìðïñåß íá èåùñçèåß üôé áðïôåëïýí ìßá
æþíç (zone). Ç äéáìüñöùóç áõôÞ ïíïìÜæåôáé ðïëõæùíéêÞ (multizone) (äßóêïé
ôýðïõ MCLV).
Óå ó÷Ýóç ìå ôïõò ôñåéò ðáñÜãïíôåò êüóôïõò ðïõ áíáöÝñèçêáí óôçí ðåñßðôùóç
ôùí ìáãíçôéêþí äßóêùí, óôïõò ïðôéêïýò äßóêïõò õðÜñ÷åé ìßá äéáöïñïðïßçóç ðïõ
áöïñÜ óôï ÷ñüíï áíáæÞôçóçò. Ðéï óõãêåêñéìÝíá, äåäïìÝíçò ôçò èÝóçò ôïõ ìç-
÷áíéóìïý ôçò êåöáëÞò, õðÜñ÷åé ìßá ìéêñÞ ãåéôïíéÜ áôñÜêôùí ðïõ åíôïðßæïíôáé
÷ùñßò êÜðïéá ÷ñïíïâüñá ðáëéíäñïìéêÞ ìåôáêßíçóç ôïõ âñá÷ßïíá. ÄçëáäÞ, ìå
ìßá áðëÞ ðåñéóôñïöéêÞ êßíçóç åíüò öáêïý óôï ìç÷áíéóìü ôçò êåöáëÞò ðñïóåã-
ãßæïíôáé ìåñéêÝò Üôñáêôïé ðñïò ôá áñéóôåñÜ êáé äåîéÜ ôçò ôñÝ÷ïõóáò èÝóçò ôçò
êåöáëÞò ìå áìåëçôÝï êüóôïò. Ôï óýíïëï ôùí áôñÜêôùí áõôþí ïíïìÜæåôáé åã-
ãýò ðáñÜèõñï (proximal window). Ùóôüóï, ç ðåñéóôñïöÞ áõôÞ ìðïñåß íá ãßíåé
ìÝ÷ñé ìßá ìÝãéóôç ãùíßá, ïðüôå ôï ìÝãåèïò ôïõ åããýò ðáñáèýñïõ åßíáé ó÷åôéêÜ
ðåñéïñéóìÝíï.
Ôá äýï âáóéêÜ ÷áñáêôçñéóôéêÜ ìÝôñçóçò ôçò áðüäïóçò åíüò ïäçãïý ïðôéêþí
äßóêùí åßíáé ç ôá÷ýôçôá ìåôáöïñÜò äåäïìÝíùí êáé ï ÷ñüíïò ðñïóðÝëáóçò ôùí
äåäïìÝíùí. Ç åðßäïóç ôùí ïäçãþí äçëþíåôáé ìå Ýíáí áñéèìü ðïõ ðñïóäéïñßæåé
ðüóåò öïñÝò ãñçãïñüôåñïò åßíáé ï ïäçãüò óå ó÷Ýóç ìå Ýíáí ïäçãü áíáöïñÜò.
Ãéá ðáñÜäåéãìá, ãéá Ýíáí ïäçãü ìå ôïí ðñïóäéïñéóìü 52x, áíáìÝíïõìå íá åßíáé
52 öïñÝò ãñçãïñüôåñïò áðü Ýíáí ïäçãü 1x. Óôïí Ðßíáêá 2.3 áíáöÝñïíôáé ïé ñõè-
ìïß ìåôáöïñÜò äåäïìÝíùí êáé ïé ôá÷ýôçôåò ðñïóðÝëáóçò ãéá ìåñéêïýò ïäçãïýò
ïðôéêþí äßóêùí ðïõ êõêëïöïñïýí óôï åìðüñéï.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 65

Ïíïìáóßá Ñõèìüò ÌÝóïò ×ñüíïò ÊñõöÞ


ïäçãïý Ôá÷ýôçôá ÌåôáöïñÜò ÐñïóðÝëáóçò ÌíÞìç
Asus CD-S520 52x 3.30-7.80 MBytes/sec 85 msec 128 KBytes
Plextor PX-54TA 54x 3.46-7.91 MBytes/sec 95 msec 128 KBytes
Teac CD-552E 52x 3.45-7.80 MBytes/sec 120 msec 128 KBytes

Ðßíáêáò 2.3: ×áñáêôçñéóôéêÜ óýã÷ñïíùí ïäçãþí ïðôéêþí äßóêùí WORM.


(ÐçãÝò: www.asus.com, www.plextor.com, www.teac.com)

Óå ðïëëÝò åöáñìïãÝò, Ýíáò áñéèìüò ïäçãþí ïðôéêþí äßóêùí ó÷çìáôßæåé ìßá


óõóôïé÷ßá ïðôéêþí äßóêùí (üðùò êáé óôçí ðåñßðôùóç ôùí ìáãíçôéêþí äßóêùí).
Ïé óõóôïé÷ßåò áõôÝò êáëïýíôáé jukeboxes êáé Ý÷ïõí ôç äõíáôüôçôá íá åíáëëÜó-
óïõí ôïõò ïðôéêïýò äßóêïõò (üðùò êáé óå Ýíá ìïõóéêü jukebox) áíáëüãùò ìå ôá
äåäïìÝíá ðïõ ðñÝðåé íá ðñïóðåëáóèïýí. ÂÝâáéá, ï ÷ñüíïò åíáëëáãÞò åßíáé áñ-
êåôÜ ìåãÜëïò êáé ãé’ áõôü ïé óõóêåõÝò áõôÝò äåí ÷ñçóéìïðïéïýíôáé ãéá åöáñìïãÝò
ðñáãìáôéêïý ÷ñüíïõ, áëëÜ êõñßùò ãéá äåäïìÝíá ðïõ äåí ðñïóðåëÜæïõìå óõ÷íÜ.

2.4 ÌáãíçôéêÝò Ôáéíßåò


ÊáôÜ ôç äåêáåôßá ôïõ 1950 ç ìáãíçôéêÞ ôáéíßá Þôáí ôï âáóéêü ìÝóï áðïèÞêåõóçò
ôùí õðïëïãéóôþí mainframes. Áí êáé áðü ôéò áñ÷Ýò ôéò äåêáåôßáò ôïõ 1960 ï
ìáãíçôéêüò äßóêïò êáèéåñþèçêå ùò ôï âáóéêü ìÝóï áðïèÞêåõóçò óå ìéêñÜ êáé
ìåãÜëá õðïëïãéóôéêÜ óõóôÞìáôá, ç ìáãíçôéêÞ ôáéíßá óõíå÷ßæåé ìÝ÷ñé óÞìåñá íá
áðïôåëåß Ýíá ÷áìçëïý êüóôïõò âïçèçôéêü ìÝóï áðïèÞêåõóçò.
Ç ìáãíçôéêÞ ôáéíßá êáôáóêåõÜæåôáé áðü Ýíá ëåðôü óôñþìá ðëáóôéêïý õëéêïý
ôï ïðïßï êáëýðôåôáé ìå ìéêñÜ êïììÜôéá áðü ïîåßäéï ôïõ óéäÞñïõ Þ ìå êÜðïéï
Üëëï ìáãíçôéêü õëéêü. Ãéá ôçí áðïèÞêåõóç äåäïìÝíùí óôçí ôáéíßá ÷ñçóéìïðïéåß-
ôáé ìßá êåöáëÞ ðïõ äÝ÷åôáé çëåêôñéêü ñåýìá ìå áðïôÝëåóìá íá ìáãíçôßæåôáé ôï
óõãêåêñéìÝíï ôìÞìá ôïõ ìáãíçôéêïý õëéêïý. ÊáôÜ ôçí áíÜãíùóç ôùí äåäïìÝ-
íùí, ç êåöáëÞ áíáãíùñßæåé ôéò ìåôáâïëÝò óôçí ðüëùóç ôïõ ìáãíçôéêïý õëéêïý
êáé åíéó÷ýåé ôï óÞìá óôçí Ýîïäï.
Ôá äåäïìÝíá óõíÞèùò áðïèçêåýïíôáé óå åííÝá ðáñÜëëçëåò áôñÜêôïõò, åíþ
óðáíéüôåñá óõíáíôþíôáé ôáéíßåò ìå åðôÜ áôñÜêôïõò. ÊÜèå Üôñáêôïò ðáñéóôÜ ìßá
óåéñÜ áðü bits ðïõ êáôá÷ùñßæïíôáé ìå ðõêíüôçôá áðïèÞêåõóçò (Den) áðü 1600
ìÝ÷ñé 6250 bits áíÜ ßíôóá (bpi). ÊáôÜ ôçí áíÜãíùóç Þ áðïèÞêåõóç äåäïìÝíùí,
ç ôáéíßá êéíåßôáé ìå ôç ëåãüìåíç ôá÷ýôçôá áíÜãíùóçò/áðïèÞêåõóçò (read/write
speed). Óõ÷íÜ ç áíáæÞôçóç ãßíåôáé êáôÜ ôõ÷áßï ôñüðï êáé óõíåðþò ðñÝðåé ìßá
óõãêåêñéìÝíç åããñáöÞ (record) íá öèÜóåé åìðñüò áðü ôçí êåöáëÞ ÷ùñßò áðáñáß-
66 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

ôçôá íá ãßíåé åðåîåñãáóßá ôùí ðñïçãïýìåíùí åããñáöþí. Ôüôå ç ôáéíßá êéíåßôáé


ìå ðïëý ìåãÜëç ôá÷ýôçôá. ÌÜëéóôá, åéäéêüò óåñâïìç÷áíéóìüò åëÝã÷åé þóôå íá
ìçí êáôáóôñáöåß ç ôáéíßá êáôÜ ôéò óôÜóåéò êáé ôéò åêêéíÞóåéò, ãéáôß ç áíáðôõó-
óüìåíç åðéôÜ÷õíóç Þ åðéâñÜäõíóç åßíáé ôçò ôÜîçò ôùí 25g. Åðßóçò, óôçí ôáéíßá
õðÜñ÷ïõí äéáóôÞìáôá ÷ùñßò äåäïìÝíá, ðïõ åßíáé áðáñáßôçôá þóôå íá ìåéùèåß
ç ôá÷ýôçôá ìÝ÷ñé ôï åðéèõìçôü óçìåßï êáé íá ãßíåé êáôüðéí áíÜãíùóç Þ áðïèÞ-
êåõóç. ÁõôÜ ôá äéáóôÞìáôá ïíïìÜæïíôáé êåíÜ ìåôáîý ôùí åããñáöþí (interrecord
gaps, IRG). Ï ÷ñüíïò ðïõ áðáéôåßôáé ãéá ôç óÜñùóç ôùí êåíþí ìåôáîý ôùí åã-
ãñáöþí ïíïìÜæåôáé ÷ñüíïò åêêßíçóçò/óôÜóçò (start/stop time) êáé óõìâïëßæåôáé
ìå Ts/s . Ôï ìÝãåèïò ôùí êåíþí åßíáé ìåãáëýôåñï üóï ìéêñüôåñç åßíáé ç ðõêíü-
ôçôá áðïèÞêåõóçò ìå ôõðéêÞ ôéìÞ 0.75 êáé 0.60 ßíôóåò ãéá ôáéíßåò ôùí 7 êáé ôùí
9 áôñÜêôùí, áíôéóôïß÷ùò. Ùò ðáñÜãïíôáò ÷ñçóéìïðïßçóçò ÷þñïõ (storage uti-
lization factor, U ) ïñßæåôáé ï ëüãïò ôïõ ìÞêïõò ôçò öõóéêÞò åããñáöÞò ðñïò ôï
Üèñïéóìá ôïõ ìÞêïõò ôçò öõóéêÞò åããñáöÞò êáé ôïõ êåíïý.
Ç Ýííïéá ôçò åããñáöÞò, üðùò åßíáé ãíùóôÞ áðü ôïí ðñïãñáììáôéóìü, óôéò
ìáãíçôéêÝò ôáéíßåò áðïêáëåßôáé ëïãéêÞ åããñáöÞ (logical record) êáé ÷áñáêôçñß-
æåôáé áðü ôï áíôßóôïé÷ï ìÞêïò (length, R). Ïé ëïãéêÝò åããñáöÝò ïìáäïðïéïýíôáé
óå ìéêñÜ óýíïëá êáé áðïôåëïýí ìßá öõóéêÞ åããñáöÞ (physical record) êáé Ý÷ïõí
ôï áíôßóôïé÷ï ìÞêïò B. ÅðïìÝíùò, Ýíá êåíü (IRG) ìåóïëáâåß ìåôáîý äýï öõóé-
êþí åããñáöþí. Ôï ðëÞèïò ôùí ëïãéêþí åããñáöþí ðïõ ðåñéÝ÷åôáé óå ìßá öõóéêÞ
åããñáöÞ ëÝãåôáé ðáñÜãïíôáò ïìáäïðïßçóçò (blocking factor, Bf r). Ç öõóéêÞ
åããñáöÞ ðñÝðåé íá åßíáé üóï ôï äõíáôü ìåãáëýôåñç, þóôå íá åëá÷éóôïðïéçèåß ôï
óõíïëéêü ìÝãåèïò ôùí êåíþí ôçò ôáéíßáò, áëëÜ ôáõôü÷ñïíá ðñÝðåé íá ÷ùñÜ óôéò
áðïìïíùôéêÝò ìíÞìåò.
Óôéò ïêôþ áôñÜêôïõò ðïõ âñßóêïíôáé óå ìßá êáôáêüñõöç ãñáììÞ ôçò ôáéíßáò
áðïèçêåýåôáé Ýíá byte. Ôï ðëÞèïò ôùí Üóóùí óå Ýíá byte ôùí ïêôþ bits ëÝãåôáé
âÜñïò (weight) Hamming. Ç Ýíáôç Üôñáêôïò ÷ñçóéìåýåé ãéá ôçí áðïèÞêåõóç
ôïõ bit éóïôéìßáò. Óôçí Üñôéá éóïôéìßá (even parity) ôï bit áõôü åßíáé Üóóïò
Þ ìçäÝí, Ýôóé þóôå ôï óõíïëéêü âÜñïò Hamming íá åßíáé Üñôéï. ÁíôéèÝôùò,
óôçí ðåñéôôÞ éóïôéìßá (odd parity) ôï bit éóïôéìßáò åßíáé Üóóïò Þ ìçäÝí, þóôå
ôï óõíïëéêü âÜñïò Hamming íá åßíáé ðåñéôôü. Ôï bit éóïôéìßáò ÷ñçóéìïðïéåßôáé
ãéá ôïí êáôáêüñõöï (vertical) Ýëåã÷ï ëáèþí ðïõ ìðïñåß íá óõìâïýí óôá bits
åíüò byte. ¸ôóé, áí êáôÜ ôçí áíÜãíùóç ôçò ôáéíßáò äéáðéóôùèåß ëÜèïò, ôüôå
åíåñãïðïéåßôáé ìßá äéáäéêáóßá äéáêïðÞò. Ìå Üëëá ëüãéá, åðé÷åéñïýíôáé ðïëëÝò
ðñïóðÜèåéåò áíÜãíùóçò ôïõ óõãêåêñéìÝíïõ óçìåßïõ ôçò ôáéíßáò ìÝ÷ñéò üôïõ Þ
ôï ëÜèïò íá åíôïðéóèåß Þ ï áñéèìüò ôùí åðáíáëÞøåùí íá öèÜóåé ìßá ìÝãéóôç
ôéìÞ. ÌåñéêÝò öïñÝò áéôßá ôùí äõóëåéôïõñãéþí áõôþí åßíáé åßôå ç åõáéóèçóßá
ôçò ôáéíßáò óôç óêüíç åßôå ç ìç óùóôÞ åöáñìïãÞ ôçò ôáéíßáò óôïí ïäçãü ôçò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 67

Åðßóçò, ðåñéïäéêÜ ôïðïèåôïýíôáé bytes éóïôéìßáò ãéá ôç äéåõêüëõíóç ôùí êáôÜ


ìÞêïò (longitudinal) åëÝã÷ùí äéáäï÷éêþí bytes. Ëüãù ôçò óåéñéáêÞò öýóçò ôïõ
ìÝóïõ, ìßá ôõ÷áßá áíáæÞôçóç óôï ìÝóï ôçò ôáéíßáò áðáéôåß ÷ñüíï ôçò ôÜîçò ôùí
ìåñéêþí ëåðôþí. Óõíåðþò, ç ôáéíßá åíäåßêíõôáé ãéá åöáñìïãÝò ðïõ áðïêëåéóôéêÜ
áðáéôïýí óåéñéáêÞ åðåîåñãáóßá.
¼óá áíáöÝñèçêáí ðñïçãïõìÝíùò áíáöÝñïíôáé óôïí ðñþôï ÷ñïíïëïãéêÜ ôýðï
ôáéíßáò ðïõ äéáôßèåôáé åìðïñéêÜ ìÝ÷ñé óÞìåñá. Ï ôýðïò áõôüò áðïèÞêåõóçò
ïíïìÜæåôáé ãñáììéêüò (linear) Þ åðéìÞêçò (longitudinal). ¼ìùò, óôéò çìÝñåò ìáò
äéáôßèåíôáé åìðïñéêÜ êáé Üëëïé ôñåéò ôýðïé ôáéíéþí ðïõ äéáöÝñïõí óå ó÷Ýóç ìå
ôïí ôñüðï áðïèÞêåõóçò êáé åðåîåñãáóßáò ôùí äåäïìÝíùí:
• ï ôýðïò ïöéïåéäïýò áðïèÞêåõóçò (serpentine recording), ï ïðïßïò áðïôå-
ëåß ìßá ðáñáëëáãÞ ôïõ ãñáììéêïý ôýðïõ. Óôéò ôáéíßåò áõôÝò ï áñéèìüò ôùí
áôñÜêôùí åßíáé éäéáßôåñá ìåãÜëïò, ïðüôå ïé Üôñáêôïé ïìáäïðïéïýíôáé óå
áñêåôÜ óýíïëá. Ï ôýðïò, áõôüò Ý÷åé ôç äõíáôüôçôá áíÜãíùóçò/áðïèÞêåõóçò
óå äéáöïñåôéêü óýíïëï áôñÜêôùí, êáèþò ç ôáéíßá êéíåßôáé êáé ðñïò ôéò äýï
êáôåõèýíóåéò, üðùò öáßíåôáé óôï Ó÷Þìá 2.4á. ¸ôóé, óôéò ôáéíßåò áõôÝò ï
÷ñüíïò ðïõ áðáéôåßôáé ãéá ôçí åðéóôñïöÞ óôçí áñ÷Þ ôçò ôáéíßáò åßíáé ìé-
êñüôåñïò óå ó÷Ýóç ìå ôï ãñáììéêü ôýðï ôáéíéþí.
-
¾
-
¾
(á) -
¾
-
¾
-

#
#
##
##
#
##
##
##
##
##
##
#
##
##
#
##
##
##
##
##
##
#
##
##
#
##
##
##
##
##
##
#
##
##
#
#
(â) #
#########
#########
#########
###
#
#########
#########
#########
###

(ã)

Ó÷Þìá 2.4: Óýã÷ñïíïé ôýðïé ìáãíçôéêþí ôáéíéþí.

• ï ôýðïò åëéêïåéäïýò óÜñùóçò (helical scan), ðïõ êáô’ åîï÷Þí åöáñìüæåôáé


óôéò âéíôåïôáéíßåò VCR. Óôéò ôáéíßåò áõôÝò ôá äåäïìÝíá áðïèçêåýïíôáé óå
áôñÜêôïõò ðïõ Ý÷ïõí ãùíßá 10o -20o ùò ðñïò ôïí Üîïíá ôçò ôáéíßáò, üðùò
öáßíåôáé óôï Ó÷Þìá 2.4â, åíþ ïé êåöáëÝò åßíáé óôåñåùìÝíåò óå Ýíá êýëéí-
äñï ðïõ åðßóçò ðåñéóôñÝöåôáé õðü ãùíßá ùò ðñïò ôïí Üîïíá ôçò ôáéíßáò. Ç
ôáéíßá áõôÞ êéíåßôáé ìå ìéêñÞ ôá÷ýôçôá êáôÜ ôçí áíÜãíùóç/áðïèÞêåõóç óå
68 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

ó÷Ýóç ìå ôïõò ðñïçãïýìåíïõò ôýðïõò, åíþ óå ðåñßðôùóç ãñÞãïñçò êßíçóçò


ðñïò ôá åìðñüò Þ ðñïò ôá ðßóù (äçëáäÞ, forward êáé rewind áíôéóôïß÷ùò)
êéíåßôáé áðü 50-75 öïñÝò ôá÷ýôåñá áðü ôçí êáíïíéêÞ ôá÷ýôçôá. ÌåéïíÝ-
êôçìá ôïõ ôýðïõ áõôïý åßíáé ôï ãåãïíüò üôé ïé êåöáëÝò åöÜðôïíôáé óôçí
ôáéíßá, ãåãïíüò ðïõ Ý÷åé åðßðôùóç óôç äéÜñêåéá æùÞò ôçò ôáéíßáò. Ðéï
óõãêåêñéìÝíá, ìåôÜ ôá 1500 ðåñÜóìáôá ôçò ôáéíßáò õðÜñ÷åé áõîçìÝíç ðé-
èáíüôçôá áðþëåéáò äåäïìÝíùí, åíþ ïé ïöéïåéäåßò ôáéíßåò Ý÷ïõí áõîçìÝíç
áîéïðéóôßá ìÝ÷ñé êáé 500.000 ðåñÜóìáôá, ðïõ éóïäõíáìåß 3,5 ÷ñüíéá óõ-
íå÷ïýò ëåéôïõñãßáò. Ùóôüóï, ôï ðëåïíÝêôçìá ôçò ôáéíßáò áõôÞò åßíáé ç
ìåãáëýôåñç ðõêíüôçôá áðïèÞêåõóçò ìÝ÷ñé êáé 20-50 öïñÝò.

• ï ôýðïò åãêÜñóéáò áðïèÞêåõóçò (transverse recording), üðïõ ôá äåäïìÝíá


áðïèçêåýïíôáé óå áôñÜêôïõò êáôáêüñõöåò ðñïò ôïí Üîïíá ôçò ôáéíßáò,
üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 2.4ã. Ïé ôáéíßåò ôïõ ôýðïõ áõôïý äéáêñß-
íïíôáé áðü õøçëÞ ðõêíüôçôá áðïèÞêåõóçò, áëëÜ êáé ÷áìçëÞ ôá÷ýôçôá ìå-
ôáöïñÜò ëüãù ôçò ìç óôáèåñÞò êßíçóçò ôçò ôáéíßáò. Ï ôýðïò áõôüò ÷ñç-
óéìïðïéåßôáé óå åéäéêÝò åöáñìïãÝò, üðùò ãéá áðïèÞêåõóç äåäïìÝíùí áðü
áéóèçôÞñåò ðïõ êáôáãñÜöïíôáé ìå ÷áìçëïýò ñõèìïýò.
Óôïí Ðßíáêá 2.4 äßíïíôáé ìåñéêÜ âáóéêÜ ÷áñáêôçñéóôéêþí åìðïñéêþí óõóôçìÜ-
ôùí ïäçãþí ìáãíçôéêþí ôáéíéþí.

Ïíïìáóßá Ñõèìüò ÌÞêïò ÌÝèïäïò


Ïäçãïý ×ùñçôéêüôçôá ÌåôáöïñÜò Ôáéíßáò ÁðïèÞêåõóçò
HP DDS-4 20/40 GBytes 2.4/4.8 MBytes/sec 150m ÅëéêïåéäÞò
HP AIT-100 100/200 GBytes 12/24 MBytes/sec 230m ÅëéêïåéäÞò
DELL 110T DLT 40/80 GBytes 3/6 MBytes/sec - -
IBM 7206 VX2 80/160 GBytes 3/6 MBytes/sec 230m -

Ðßíáêáò 2.4: ×áñáêôçñéóôéêÜ óýã÷ñïíùí ïäçãþí ìáãíçôéêþí ôáéíéþí. (ÐçãÝò:


www.hp.com, www.dell.com, www.ibm.com)

¼ðùò êáé óôçí ðåñßðôùóç ôùí ïðôéêþí äßóêùí, Ýôóé êáé ãéá ôéò ìáãíçôéêÝò
ôáéíßåò, õðÜñ÷ïõí óõóêåõÝò ôýðïõ jukeboxes, ïé ïðïßåò Ý÷ïõí ôç äõíáôüôçôá íá
åíáëëÜóóïõí ôéò ìáãíçôéêÝò ôáéíßåò ìå ñïìðïôéêü ìç÷áíéóìü áíáëüãùò ìå ôá äå-
äïìÝíá ðïõ ðñÝðåé íá ðñïóðåëáóèïýí. Ðñïöáíþò, ï ÷ñüíïò åíáëëáãÞò ôùí
ôáéíéþí åßíáé óçìáíôéêüò êáé åðïìÝíùò, ïé óõóêåõÝò áõôÝò ÷ñçóéìïðïéïýíôáé ãéá
åéäéêÝò åöáñìïãÝò (ð.÷., ãéá äåäïìÝíá ôçëåðéóêüðçóçò ôá ïðïßá óõëëÝãïíôáé áðü
äïñõöüñïõò). Ôï ìåãÜëï ðëåïíÝêôçìá ôùí óõóêåõþí áõôþí åßíáé ç ôåñÜóôéá ÷ù-
ñçôéêüôçôÜ ôïõò ðïõ áñ÷ßæåé áðü ôçí ôÜîç ôùí terabytes. Ãéá ðáñÜäåéãìá, ìßá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 69

óýã÷ñïíç óõóêåõÞ áõôïý ôïõ ôýðïõ åßíáé ç óåéñÜ MSL6060 ôçò Hewlett Packard,
ç ïðïßá óôçí ðëÝïí áíáâáèìéóìÝíç äéáìüñöùóç (configuration) ðåñéëáìâÜíåé 4
ïäçãïýò ôáéíéþí ãéá 60 èÝóåéò ôáéíéþí ìå ÷ùñçôéêüôçôá 600 GBytes áíÜ ôáéíßá ðñï
óõìðßåóçò êáé ôåëéêÞ óõíïëéêÞ êáèáñÞ ÷ùñçôéêüôçôá 192 ÔÂytes. ¢ëëá ÷áñáêôç-
ñéóôéêÜ ôçò óõóêåõÞò áõôÞò åßíáé üôé áðáéôåß 240 äåõôåñüëåðôá ãéá ÷ñüíï áñ÷é-
êïðïßçóçò êáé 15 äåõôåñüëåðôá ãéá ìÝóï ÷ñüíï åíáëëáãÞò ôáéíéþí óôïí ïäçãü,
åíþ ï ìÝóïò ÷ñüíïò ìåôáöïñÜò äåäïìÝíùí åßíáé 30 MBytes/sec. ÔÝëïò, ï ìÝ-
óïò ÷ñüíïò ìåôáîý âëáâþí (MTBF) åßíáé 250.000 þñåò, äçëáäÞ 28,5 Ýôç ðåñßðïõ
êáé ìÝóç ôéìÞ ëåéôïõñãéþí ìåôáîý âëáâþí (MSBF) 2.000.000 åíáëëáãÝò ôáéíéþí.
ÐåñáéôÝñù, ôÝóóåñéò ôÝôïéåò óõóêåõÝò ìðïñïýí íá äéáóõíäåèïýí ãéá áíþôåñåò
åðéäüóåéò áðïèÞêåõóçò.

2.5 ¢ëëá ÌÝóá ÁðïèÞêåõóçò


ÁñêåôÜ ìÝóá áðïèÞêåõóçò Ý÷ïõí ðëÝïí éóôïñéêÞ áîßá. Ùò ôÝôïéá ðáñáäåßãìáôá
áíáöÝñïõìå ôç äéÜôñçôç êÜñôá (punched card), ôç ÷áñôïôáéíßá (paper tape) êáé
ôï ìáãíçôéêü ôýìðáíï (magnetic drum), ôïí ðñüäñïìï ôïõ ìáãíçôéêïý äßóêïõ.
Ìå ôçí åîÝëéîç ôçò ôå÷íïëïãßáò, íåüôåñá ìÝóá åìöáíßæïíôáé óôï ðñïóêÞíéï êáé
åêôïðßæïõí ôá ðáëáéüôåñá áðü ôç ÷ñÞóç. Óôçí ðáñÜãñáöï áõôÞ áíáöÝñïõìå
åãêõêëïðáéäéêÜ ìåñéêÜ áêüìç ìÝóá áðïèÞêåõóçò äåäïìÝíùí. Ôá ðñþôá áðü
áõôÜ åßíáé ðáëáéüôåñçò ôå÷íïëïãßáò êáé åëÜ÷éóôá Ýùò êáèüëïõ ÷ñçóéìïðïéïýíôáé
ðëÝïí óå ðñáêôéêü åðßðåäï. Óôç óõíÝ÷åéá, áíáöÝñïíôáé ìÝóá ðïõ óôçñßæïíôáé óå
íÝåò õðïó÷üìåíåò ôå÷íïëïãßåò êáé ßóùò óôï ìÝëëïí âñïõí ðñáêôéêÞ åöáñìïãÞ.
¼ðùò áíáöÝñèçêå, ôá PCs ìðïñåß íá Ý÷ïõí ìéêñïýò åýêáìðôïõò äßóêïõò ôùí
3,5 (êáé óôï ðáñåëèüí 5,25) éíôóþí. Ïé äßóêïé áõôïß Ý÷ïõí âáóéêÝò äéáöïñÝò
áðü ôïõò ìåãÜëïõò óêëçñïýò äßóêïõò. Åßíáé ðëáóôéêïß áðü õëéêü Mylar, êëåé-
óìÝíïé óå ôåôñÜãùíåò ðñïóôáôåõôéêÝò ðëáóôéêÝò èÞêåò êáé äåí óõóêåõÜæïíôáé
óå óõóôïé÷ßåò. Ïé ôïìåßò êÜèå áôñÜêôïõ äéáêñßíïíôáé ìåôáîý ôïõò ìå ôç ìÝèïäï
ôçò ìáëáêÞò óåëéäïðïßçóçò (soft sectoring), äçëáäÞ ç äéáìüñöùóç ôùí áôñÜ-
êôùí ãßíïíôáé ìå ôç âïÞèåéá ëïãéóìéêïý (format) êáé ü÷é áðü ôïí êáôáóêåõáóôÞ.
Áðü Üðïøç åðßäïóçò Ý÷ïõí áõîçìÝíïõò ÷ñüíïõò áíáæÞôçóçò, ðåñéóôñïöÞò êáé
ìåôáöïñÜò äåäïìÝíùí êáôÜ äÝêá ðåñßðïõ öïñÝò. Åðßóçò, áðü Üðïøç ðõêíü-
ôçôáò êáé ÷ùñçôéêüôçôáò ç äéáöïñÜ åßíáé ðïëý ìåãÜëç. Ïé êåöáëÝò áíÜãíù-
óçò/áðïèÞêåõóçò êáôÜ ôç ëåéôïõñãßá ôïõò åöÜðôïíôáé óôïõò åýêáìðôïõò äßóêïõò
(ðïõ óçìáßíåé ìåéùìÝíç áîéïðéóôßá), êáé Ýôóé ï ìç÷áíéóìüò åßíáé ðïëý ðéï áðëüò,
áñãüò êáé öèçíüò.
Ï óõóêåõÝò ìáãíçôéêþí äßóêùí ìå óôáèåñÝò êåöáëÝò (fixed-head disks) äéáèÝ-
ôïõí ìßá êåöáëÞ ãéá êÜèå Üôñáêôï. ¸ôóé, êáôÜ ôçí ðñïóðÝëáóç ôïõ äßóêïõ ãéá
áíÜãíùóç/áðïèÞêåõóç äåí áðáéôåßôáé ç ìåôáêßíçóç ôïõ âñá÷ßïíá êáé åðïìÝíùò,
70 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

äåí åðéâáñýíåôáé ç åðßäïóç ìå ôï ÷ñüíï áíáæÞôçóçò. Ìßá Üëëç ôå÷íïëïãßá äß-


óêùí õðïóôçñßæåé ðåñéóóüôåñïõò ôïõ åíüò êéíïýìåíïõò âñá÷ßïíåò (multiple disk
arms), ðáñÝ÷ïíôáò ôç äõíáôüôçôá íá ðñïóðåëÜæïíôáé ãéá áíÜãíùóç/áðïèÞêåõóç
ðåñéóóüôåñá áðü Ýíá óçìåßá ìßáò åðéöÜíåéáò. Ðñïöáíþò, ïé óõóêåõÝò áõôÝò
Þôáí ó÷åôéêÜ áêñéâüôåñåò ëüãù ôçò ýðáñîçò ðïëëþí êåöáëþí êáé âñá÷éüíùí.
Äåí ÷ñçóéìïðïéïýíôáé ðëÝïí óõ÷íÜ óôçí ðñÜîç ðáñÜ ìüíï óå óõóôÞìáôá main-
frame.
Ïé óõóêåõÝò äéåýèõíóçò ìå âÜóç ôï ðåñéå÷üìåíï (content addressable file-
stores) óôçñßæïíôáé óå åéäéêïý ôýðïõ õëéêü êáé ëïãéóìéêü, þóôå ïé åããñáöÝò íá
áíáæçôïýíôáé ü÷é ìå âÜóç ôçí ôéìÞ ôïõ ðñùôåýïíôïò êëåéäéïý áëëÜ ìå ëïãéêïýò
óõíäõáóìïýò ôùí ôéìþí ðïëëþí êëåéäéþí (ãéá ôçí Ýííïéá ôïõ êëåéäéïý âë. ÊåöÜ-
ëáéï 4). Ôï êýñéï ðåäßï ÷ñÞóçò ôùí óõóêåõþí áõôþí åßíáé ç ÁíÜêôçóç Ðëçñï-
öïñßáò óå âéâëéïèçêïíïìéêÜ óõóôÞìáôá. ¸íá ôõðéêü ðáñÜäåéãìá (ðïõ áíáöÝñå-
ôáé óå ðáëáéÜ âéâëéïãñáößá) åßíáé ç óõóêåõÞ CAFS-ISP ôçò ICL ìå ÷ùñçôéêüôçôá
900 GBytes óå ðëÞñç áíÜðôõîç.
Ïé óõóêåõÝò ìáæéêÞò áðïèÞêåõóçò (mass storage) ÷ñçóéìïðïéïýí ðëÞèïò áðü
êáóÝôåò ãéá ìáêñï÷ñüíéá áðïèÞêåõóç óå óõíäõáóìü ìå ìáãíçôéêïýò äßóêïõò ãéá
ôçí áðïèÞêåõóç ôùí äåäïìÝíùí êáôÜ ôçí åðåîåñãáóßá. Ãéá ðáñÜäåéãìá, ïé óõ-
óêåõÝò Control Data 3850 êáé IBM 3850 óå ðëÞñç áíÜðôõîç Ý÷ïõí óõíïëéêÞ
÷ùñçôéêüôçôá 1.000 êáé 472 GBytes, áíôéóôïß÷ùò (åðßóçò, áíáöÝñïíôáé óå ðá-
ëáéÜ âéâëéïãñáößá). Ôï ìåéïíÝêôçìá âÝâáéá åßíáé üôé ï ÷ñüíïò ðñïóðÝëáóçò êáé
áëëáãÞò ôùí êáóåôþí åßíáé ôçò ôÜîçò ôùí ìåñéêþí äåõôåñïëÝðôùí.
Ïé ìíÞìåò ìáãíçôéêþí öõóáëßäùí (magnetic bubble memories) Ý÷ïõí êáëïýò
÷ñüíïõò ðñïóðÝëáóçò (< 7 ms), áëëÜ õóôåñïýí óå ÷ùñçôéêüôçôá êáé ÷ñüíï ìå-
ôáöïñÜò óå ó÷Ýóç ìå ôéò óõóêåõÝò äßóêùí. Ç ôå÷íïëïãßá ôùí ìíçìþí áõôþí Ý÷åé
ðñï ðïëëïý áããßîåé ôá üñéÜ ôçò. Äéáðéóôþèçêå üôé äåí ìðïñåß íá ÷ñçóéìïðïéçèåß
ãéá åìðïñéêïýò ðáñÜ ìüíï ãéá óôñáôéùôéêïýò êáé äéáóôçìéêïýò óêïðïýò, åðåéäÞ
ïé ìíÞìåò áõôÝò äåí Ý÷ïõí êéíçôÜ êáé óõíåðþò, åõáßóèçôá ìÝñç.
Ïé óõóêåõÝò çìéáãþãéìùí äßóêùí (semiconductor disks) åìöáíßóèçêáí åìðï-
ñéêÜ ôï 1978 êáé Ýêôïôå Ý÷ïõí ãíùñßóåé óçìáíôéêÞ åîÝëéîç êáé åöáñìïãÞ óå ðå-
ñéðôþóåéò áðïèÞêåõóçò âéâëéïèçêþí ðñïãñáììÜôùí, êáôáëüãùí Þ ðñïóùñéíþí
áñ÷åßùí åñãáóßáò. Äéáêñßíïíôáé áðü ðÜñá ðïëý ãñÞãïñç ðñïóðÝëáóç (<0,5 ms),
ìåãÜëç ÷ùñçôéêüôçôá, ÷áìçëü êüóôïò êáé êáôáíÜëùóç ñåýìáôïò. ÐïëëÝò ôÝôïéåò
óõóêåõÝò ìðïñïýí íá ìåôáäþóïõí ôáõôü÷ñïíá äåäïìÝíá áðü ðïëëÜ êáíÜëéá,
åðéôõã÷Üíïíôáò ðïëý õøçëïýò ñõèìïýò ìåôáöïñÜò äåäïìÝíùí.
Óå áíôßèåóç ìå üóá ìÝóá áíáöÝñèçêáí ðñïçãïõìÝíùò, äéáöáßíåôáé üôé ç
ïðôéêÞ ôå÷íïëïãßá åßíáé ç ôå÷íïëïãßá ôïõ ìÝëëïíôïò, êáèþò Þäç õðÜñ÷ïõí íÝåò
ðñùôïðïñéáêÝò óõóêåõÝò äåõôåñåýïõóáò/ôñéôåýïõóáò áðïèÞêåõóçò. Ç ïðôéêÞ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 71

ôáéíßá (optical tape) äéáêñßíåôáé ãéá ôç äõíáôüôçôá áðïèÞêåõóçò ôåñÜóôéùí ÷ù-


ñçôéêïôÞôùí óå ðïëý ìéêñü üãêï. Åðßóçò, ðñáãìáôéêÞ áðïèÞêåõóç ãßíåôáé ìüíï
óôï 1/2 ôçò åðéöÜíåéáò ôïõ ïðôéêïý äßóêïõ, óå áíôßèåóç ìå ôçí ïðôéêÞ ôáéíßá, üðïõ
áðïèÞêåõóç ãßíåôáé óå ðåñéóóüôåñï áðü ôá 4/5 ôçò åðéöÜíåéÜò ôçò. ¸ôóé, ôåëéêÜ
ãéá ôçí ßäéá åðéöáíåéáêÞ ðõêíüôçôá áðïèÞêåõóçò, ç ðõêíüôçôá áðïèÞêåõóçò ùò
ðñïò ôïí üãêï ãéá ìßá ïðôéêÞ ôáéíßá åßíáé 25 öïñÝò ðåñéóóüôåñï óå ó÷Ýóç ìå Ýíáí
ïðôéêü äßóêï, ìå ðñïïðôéêÞ íá ãßíåé 75 öïñÝò ðåñéóóüôåñï. Áêüìç óå ó÷Ýóç ìå
ôç ìáãíçôéêÞ ôáéíßá, ç ïðôéêÞ ôáéíßá äéáêñßíåôáé áðü:

• ðïëëáðëÜóéá áðïèçêåõôéêÞ éêáíüôçôá,

• ðïëý ìåãÜëåò ôá÷ýôçôåò ìåôáöïñÜò äåäïìÝíùí, êáé

• ìåãáëýôåñç äéÜñêåéá æùÞò.

Åðß ôïõ ðáñüíôïò, óôá ðñïúüíôá ðïõ äéáôßèåíôáé óôï åìðüñéï ÷ñçóéìïðïéåßôáé ï
ãñáììéêüò ôñüðïò ïñãÜíùóçò ôùí äåäïìÝíùí óôçí ôáéíßá, õðïóôçñßæïíôáò ìüíï
ôå÷íïëïãßá WORM.
Ìßá Üëëç êáôåýèõíóç åßíáé ç áîéïðïßçóç ôçò ïëïãñáößáò (holography) ãéá ôçí
áíÜðôõîç åéäéêþí óõóêåõþí, ìå óêïðü ôçí åêìåôÜëëåõóç ôùí ôñéþí äéáóôÜóåùí
ôïõ ÷þñïõ ãéá ôçí áðïèÞêåõóç äåäïìÝíùí. Ãéá ðáñÜäåéãìá, ðåéñáìáôéêÜ Ý÷åé
åðéôåõ÷èåß ç áðïèÞêåõóç 1000 åéêüíùí óå êñýóôáëëï ïîåéäßïõ ëéèßïõ-íéïâßïõ
ìÞêïõò 1 cm, åíþ åêôéìÜôáé üôé ìðïñåß íá åðéôåõ÷èåß áðïèÞêåõóç äåäïìÝíùí 10
TBytes óå 1 cm3 . ÂÝâáéá, ðáñÜ ôçí õøçëÞ áðïèçêåõôéêÞ éêáíüôçôá, ðñüâëçìá
ðáñáìÝíåé ç ôá÷ýôçôá ìåôáöïñÜò äåäïìÝíùí.
ÔÝëïò, ìßá Üëëç êáôåýèõíóç åßíáé ðñïò ôçí áíÜðôõîç äßóêùí ðïõ óôçñßæï-
íôáé óôï öáéíüìåíï ôçò ðáãßäåõóçò çëåêôñïíßùí (electron trapping). Ìå áðëÜ
ëüãéá, óå ðåñßðôùóç áðïèÞêåõóçò Ýíá óôñþìá õëéêïý ôýðïõ öùóöüñïõ äÝ÷å-
ôáé áêôßíá öùôüò êáé åêðÝìðåé çëåêôñüíéá, ðïõ áðïññïöþíôáé áðü ìßá áãþãéìç
æþíç. Ãéá ôçí áíÜãíùóç äåäïìÝíùí, ï äßóêïò óáñþíåôáé áðü öùò äéáöïñåôéêÞò
óõ÷íüôçôáò ðïõ áíáãêÜæåé ôá çëåêôñüíéá íá åîÝëèïõí áðü ôçí áãþãéìç æþíç êáé
íá åêðÝìøïõí öùôüíéá. Áíáëüãùò ìå ôçí Ýíôáóç ôçò áêôßíáò öùôüò êáôÜ ôçí
áðïèÞêåõóç, åîÜãïíôáé ðåñéóóüôåñá Þ ëéãüôåñá çëåêôñüíéá, êáé êáôÜ óõíÝðåéá
öùôüíéá êáôÜ ôçí ôåëéêÞ öÜóç. Áõôü éóïäõíáìåß ìå ôçí áðïèÞêåõóç ðåñéóóüôå-
ñùí áðü Ýíá bit óå êÜèå èÝóç. ¸ôóé, åêôéìÜôáé üôé ìå ôç ìÝèïäï áõôÞ èá åðéôåõ-
÷èïýí õøçëÝò áðïèçêåõôéêÝò åðéäüóåéò êáé ôá÷ýôçôåò ìåôáöïñÜò äåäïìÝíùí óôï
ìÝëëïí. ÌåéïíÝêôçìá åßíáé üôé ìåôÜ áðü êÜèå áíÜãíùóç ðñÝðåé íá áêïëïõèÞóåé
åðáíá-áðïèÞêåõóç ìå ôçí ßäéá áñ÷éêÞ äéáäéêáóßá. Ï Ðßíáêáò 2.5 óõíïøßæåé ôá
ìÝ÷ñé óôéãìÞò äåäïìÝíá ãéá ôéò óõóêåõÝò ðïõ óôçñßæïíôáé óôçí ïðôéêÞ ôå÷íïëïãßá.
72 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

Ïðôéêüò ÏðôéêÞ Ïëïãñáößá Ðáãßäåõóç


äßóêïò ôáéíßá çëåêôñïíßïõ
Ðõêíüôçôá ÁðïèçêåõôéêÞ
ÐëåïíåêôÞìáôá Âéïìç÷áíéêü Êüóôïò/MByte áðïèÞêåõóçò, éêáíüôçôá,
ðñüôõðï ÄéÜñêåéá æùÞò Ðáñáëëçëéóìüò Ôá÷ýôçôá
ìåôáöïñÜò
5 GBytes óå 200 GBytes óå 1 GBytes óå êÜñôá 10 GBytes óå
×ùñçôéêüôçôá äßóêï 15 cm ôáéíßá 3480 ft 30x30 mm äßóêï 13 cm
ÕðÝñâáóç åõ- ÖïñçôÜ
Êýñéá ÷ñÞóç êáìðôïõ äßóêïõ Áñ÷åéïèÝôçóç óõóôÞìáôá Âßíôåï
Öïñçôïß ìá- ÌáãíçôéêÞ Ìáãíçôéêüò Ðßíáêåò
ÁíôáãùíéóôÞò ãíçôéêïß äßóêïé ôáéíßá óå êÜñôá äßóêïò äßóêùí RAID
×ñüíïò ÓåéñéáêÞ ÊáôáóôñïöéêÞ ÊáôáóôñïöéêÞ
ÌåéïíåêôÞìáôá áíáæÞôçóçò ðñïóðÝëáóç áíÜãíùóç áíÜãíùóç

Ðßíáêáò 2.5: Óýãêñéóç óõóêåõþí ðïõ óôçñßæïíôáé óôçí ïðôéêÞ ôå÷íïëïãßá.

2.6 Äéáóýíäåóç Óõóêåõþí ÁðïèÞêåõóçò


Áíáëüãùò ìå ôéò áðáéôÞóåéò ôùí åöáñìïãþí êáé ôç óõíïëéêÞ ëåéôïõñãéêüôçôá
ôïõ õðïëïãéóôéêïý óõóôÞìáôïò ìðïñïýìå íá åöáñìüóïõìå äéáöïñåôéêÝò ôå÷íéêÝò
äéáóýíäåóçò ôùí ìïíÜäùí áðïèÞêåõóçò. Ç åðéëïãÞ äéáóýíäåóçò åðçñåÜæåôáé
åðßóçò áðü ôç óõíïëéêÞ áñ÷éôåêôïíéêÞ ôïõ óõóôÞìáôïò, ç ïðïßá ìðïñåß íá óôçñß-
æåôáé óå áðïìïíùìÝíïõò åîõðçñÝôåò ðïõ åêôåëïýí óõãêåêñéìÝíç åñãáóßá (ded-
icated servers) Þ óå Ýíá óýíïëï åîõðçñåôþí ðïõ åðéêïéíùíïýí ìÝóù ôïðéêïý
äéêôýïõ (LAN). Ïé âáóéêüôåñåò ôå÷íïëïãßåò äéáóýíäåóçò ìïíÜäùí áðïèÞêåõóçò
åßíáé ïé: á) DAS, â) NAS êáé ã) SAN, ïé ïðïßåò äßíïíôáé ó÷çìáôéêÜ óôï Ó÷Þìá
2.5 êáé ðåñéãñÜöïíôáé óõíïðôéêÜ óôç óõíÝ÷åéá:

• DAS (direct attached storage). Óôçí ôå÷íïëïãßá áõôÞ ç ìïíÜäá áðïèÞêåõ-


óçò óõíäÝåôáé áð’ åõèåßáò óôïí åîõðçñÝôç ìÝóù ìßáò äéåðáöÞò åéóüäïõ-
åîüäïõ (ð.÷., SCSI). Ï åîõðçñÝôçò åßíáé õðåýèõíïò ãéá ôç äéá÷åßñéóç ôçò
ìïíÜäáò áðïèÞêåõóçò êáé ìðïñåß íá åðéôñÝðåé Þ íá áðïôñÝðåé ôçí ðñü-
óâáóç óå Üëëá õðïëïãéóôéêÜ óõóôÞìáôá ìÝóù êÜðïéïõ óõóôÞìáôïò äéáìïé-
ñáóìïý (ð.÷., NFS). Ç ôá÷ýôçôá ìåôáöïñÜò äåäïìÝíùí ðåñéïñßæåôáé áðü
ôéò äõíáôüôçôåò ôçò äéåðáöÞò. Ôï âáóéêü ìåéïíÝêôçìá ôçò ôå÷íéêÞò DAS
åßíáé üôé óå ðåñßðôùóç âëÜâçò ôïõ åîõðçñÝôç äåí õðÜñ÷åé äõíáôüôçôá ðñï-
óðÝëáóçò ôùí äåäïìÝíùí áðü Üëëá óõóôÞìáôá.

• NAS (network attached storage). Ç ôå÷íïëïãßá NAS ðñïûðïèÝôåé ôçí ýðáñîç


áõôüíïìçò óõóêåõÞò ðïõ äéá÷åéñßæåôáé ôéò ìïíÜäåò áðïèÞêåõóçò, ç ïðïßá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 73

LAN
IDC
IDC

IDC IDC IDC

IDC
IDC

LAN

IDC

LAN ∆ίκτυο Οπτικών Ινών

SCSI

RAID Οδηγός Ταινίας Μονάδες Αποθήκευσης Μονάδες Αποθήκευσης

DAS NAS SAN

Ó÷Þìá 2.5: Ôå÷íïëïãßåò DAS, NAS êáé SAN.

Ý÷åé ôï äéêü ôçò åîåéäéêåõìÝíï ëåéôïõñãéêü óýóôçìá, åéäéêÜ äéáìïñöùìÝíï


ãéá äõíáôüôçôåò äéáìïéñáóìïý áñ÷åßùí (file sharing). Ï äéá÷åéñéóôÞò ôïõ
óõóôÞìáôïò Ý÷åé ôç äõíáôüôçôá íá áëëÜîåé ôç äéáìüñöùóç êáé ôïí ôñüðï
ëåéôïõñãßáò ÷ñçóéìïðïéþíôáò åéäéêÜ åñãáëåßá ëïãéóìéêïý. Ç ôá÷ýôçôá ìå-
ôáöïñÜò äåäïìÝíùí ðåñéïñßæåôáé áðü ôï äßêôõï ðïõ ÷ñçóéìïðïéåßôáé ãéá ôç
äéáóýíäåóç ôùí ìïíÜäùí áðïèÞêåõóçò.

• SAN (storage area network). Ç ôå÷íïëïãßá SAN ÷ñçóéìïðïéåß êåíôñéêï-


ðïéçìÝíç (centralized) ìåèïäïëïãßá ãéá ôç äéáóýíäåóç ôùí åîõðçñåôþí ìå
ôéò ìïíÜäåò áðïèÞêåõóçò. Ï óõíçèÝóôåñïò ôýðïò äéáóýíäåóçò åßíáé ìÝóù
êáíáëéïý ïðôéêþí éíþí (fibre channel), ôï ïðïßï åßíáé óå èÝóç íá õðïóôçñß-
îåé äéáöïñåôéêÜ ðñùôüêïëëá åðéêïéíùíßáò. Ãéá ôç óùóôÞ äñïìïëüãçóç ôùí
ðáêÝôùí äåäïìÝíùí áðü ôïõò åîõðçñÝôåò ðñïò ôéò ìïíÜäåò áðïèÞêåõóçò
êáé áíôéóôñüöùò, ÷ñçóéìïðïéïýíôáé ìåôáãùãåßò (switches). Ç ôå÷íïëïãßá
SAN Ý÷åé õøçëÝò åðéäüóåéò ôüóï ùò ðñïò ôçí áðüäïóç üóï êáé ùò ðñïò ôç
äéáèåóéìüôçôá ôùí äåäïìÝíùí.

2.7 Óýíïøç
Ôï âáóéêü ÷áñáêôçñéóôéêü åíüò ÓÄÂÄ åßíáé ç äõíáôüôçôá áðïèÞêåõóçò ìåãÜëïõ
üãêïõ äåäïìÝíùí. Ç áðïèÞêåõóç ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé óå öõóéêÜ
74 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

ìÝóá áðïèÞêåõóçò. Ôá ìÝóá áõôÜ åßíáé óõóêåõÝò ðïõ ðáñÝ÷ïõí äõíáôüôçôåò


áðïèÞêåõóçò êáé ðñïóðÝëáóçò ôùí äåäïìÝíùí. Ôá äýï âáóéêÜ ÷áñáêôçñéóôéêÜ
ôùí ìÝóùí áðïèÞêåõóçò åßíáé ç óõíïëéêÞ ÷ùñçôéêüôçôá ôïõ ìÝóïõ êáé ï ÷ñüíïò
ðñïóðÝëáóçò ôùí äåäïìÝíùí. Ùóôüóï, üóï áõîÜíåôáé ç ôá÷ýôçôá ðñïóðÝëáóçò
êáé ç ÷ùñçôéêüôçôá, ôüóï áõîÜíåôáé êáé ôï áíôßóôïé÷ï êüóôïò. ¸íáò Üëëïò óç-
ìáíôéêüò ðáñÜãïíôáò åßíáé ç áîéïðéóôßá ôïõ ìÝóïõ, ç ïðïßá ìåôñÜ ôï êáôÜ ðüóïí
ôá äåäïìÝíá ðïõ áðïèçêåýïíôáé åßíáé áðáëëáãìÝíá áðü âëÜâåò ðïõ åíäÝ÷åôáé
íá óõìâïýí óôï ìÝóï áðïèÞêåõóçò.
Óôï êåöÜëáéï áõôü åîåôÜóáìå ôá âáóéêüôåñá ÷áñáêôçñéóôéêÜ ôùí ðëÝïí äéá-
äåäïìÝíùí ìÝóùí áðïèÞêåõóçò. Ï ìáãíçôéêüò äßóêïò ÷ñçóéìïðïéåßôáé åõñýôáôá
ùò ôï êýñéï ìÝóï áðïèÞêåõóçò äåõôåñåýïõóáò ìíÞìçò óôá õðïëïãéóôéêÜ óõóôÞ-
ìáôá. Óå ðåñéðôþóåéò õøçëþí áðáéôÞóåùí ÷ñçóéìïðïéïýíôáé ïé óõóôïé÷ßåò äß-
óêùí, ïé ïðïßåò ðñïóöÝñïõí êáëýôåñïõò ÷ñüíïõò ðñïóðÝëáóçò êáé áõîçìÝíç
áîéïðéóôßá óå ðåñéðôþóåéò âëÜâçò. Ïé ïðôéêïß äßóêïé ÷ñçóéìïðïéïýíôáé åõñý-
ôáôá ùò óõóêåõÝò áðïèÞêåõóçò ðïëõìåóéêþí äåäïìÝíùí êáé ãéá ôç äçìéïõñãßá
áíôéãñÜöùí áóöáëåßáò. Ïé ìáãíçôéêÝò ôáéíßåò ÷ñçóéìïðïéïýíôáé ãéá ôçí áðïèÞ-
êåõóç áíôéãñÜöùí áóöáëåßáò, åíþ ï ÷ñüíïò ðñïóðÝëáóçò åßíáé ìåãáëýôåñïò áðü
üôé óôïõò ìáãíçôéêïýò äßóêïõò.
Ç Ýñåõíá óôïí ôïìÝá ôùí øçöéáêþí ìÝóùí áðïèÞêåõóçò ïäÞãçóå ôá ôåëåõ-
ôáßá ÷ñüíéá ôïõò åñåõíçôÝò óôç ìåëÝôç íÝùí ôýðùí. Ðáñáäåßãìáôá áðïôåëïýí ïé
óõóêåõÝò êáé ôá ìÝóá ðïõ óôçñßæïíôáé óôçí ïðôéêÞ ôå÷íïëïãßá åíþ ç âéùóéìüôçôÜ
ôïõò äåí Ý÷åé êñéèåß áêüìç óå ó÷Ýóç ìå ôéò åöáñìïãÝò ôùí ÂÜóåùí ÄåäïìÝíùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


2.1. Íá ðåñéãñáöåß ï ôñüðïò ëåéôïõñãßáò ôïõ ìáãíçôéêïý äßóêïõ áíáëýïíôáò ôïí
ôñüðï ðñïóðÝëáóçò ôùí äåäïìÝíùí. Ðùò ïñßæåôáé ï ÷ñüíïò áíáæÞôçóçò êáé ï
÷ñüíïò ðåñéóôñïöéêÞò êáèõóôÝñçóçò;

2.2. Ìßá óõóêåõÞ ìáãíçôéêïý äßóêïõ áðïôåëåßôáé áðü 11 ÷ñÞóéìåò åðéöÜíåéåò,


êÜèå åðéöÜíåéá Ý÷åé 200 áôñÜêôïõò, êÜèå Üôñáêôïò Ý÷åé 20 ôïìåßò, êÜèå ôïìÝáò
áðïôåëåßôáé áðü 512 bytes, åíþ ôï ìÝãåèïò ôïõ êåíïý åßíáé 128 bytes. Ðüóç åßíáé
ç óõíïëéêÞ ÷ùñçôéêüôçôá óå bytes êáé ðüóá áðü áõôÜ åßíáé ÷ñÞóéìá; Áí õðïôåèåß
üôé äåí åðéôñÝðåôáé ìßá åããñáöÞ íá áðïèçêåõèåß êáôÜ ôï Þìéóõ óå äýï ôïìåßò,
ôüôå ðüóåò åããñáöÝò ôùí 120 bytes ÷ùñïýí óå 10 êõëßíäñïõò áõôïý ôïõ óõóôÞ-
ìáôïò; Áí ï äßóêïò ðåñéóôñÝöåôáé ìå 7200 rpm, ôüôå ðüóïò åßíáé ï ìÝóïò êáé ï
ìÝãéóôïò ÷ñüíïò ðåñéóôñïöéêÞò êáèõóôÝñçóçò;

2.3. ¸óôù C ôï óýíïëï ôùí êõëßíäñùí åíüò ìáãíçôéêïý äßóêïõ, åíþ èåùñåßôáé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 75

üôé êÜèå êýëéíäñïò ðñïóðåëÜæåôáé éóïðßèáíá. Íá âñåèåß ç ìÝóç ôéìÞ ôïõ ðëÞ-
èïõò ôùí êõëßíäñùí ðïõ óáñþíïíôáé áðü ôéò êéíïýìåíåò êåöáëÝò óå ìßá ôõ÷áßá
ðñïóðÝëáóç èåùñþíôáò üôé åêêéíïýí áðü ôõ÷áßá èÝóç êáé êáôåõèýíïíôáé åðß-
óçò óå ôõ÷áßá èÝóç. Áí õðïôåèåß üôé ïé êýëéíäñïé åíüò óõóôÞìáôïò áñ÷åßùí äåí
ðñïóðåëÜæïíôáé éóïðßèáíá, ôüôå ðïéüò åßíáé ï êáëýôåñïò ôñüðïò äéÜôáîçò ôùí
äåäïìÝíùí þóôå íá åëá÷éóôïðïéçèåß ï ÷ñüíïò áíáæÞôçóçò;

2.4. ÓõíÞèùò ïé êáôáóêåõáóôÝò ìáãíçôéêþí äßóêùí äßíïõí ôïí åëÜ÷éóôï, ôï ìÝãé-


óôï êáé ôï ìÝóï ÷ñüíï áíáæÞôçóçò. Ç åëÜ÷éóôç êáé ç ìÝãéóôç ôéìÞ áíôéóôïé÷ïýí
óôïí áðáéôïýìåíï ÷ñüíï ãéá ôç ìåôÜâáóç ôùí êåöáëþí óå ãåéôïíéêü êýëéíäñï êáé
áðü ôïí ðñþôï ùò ôïí ôåëåõôáßï êýëéíäñï, áíôéóôïß÷ùò. Ôá ìåãÝèç áõôÜ åßíáé
ðñáãìáôéêÜ êáé áóöáëÞ. ÈåùñçôéêÜ ï ìÝóïò ÷ñüíïò áíáæÞôçóçò õðïëïãßæåôáé
ùò ôï Üèñïéóìá ôùí ÷ñüíùí áíáæÞôçóçò ãéá üëåò ôéò äõíáôÝò áðïóôÜóåéò äéá ôïõ
áñéèìïý ôùí äõíáôþí áðïóôÜóåùí. Íá õðïëïãéóèåß ï ìÝóïò ÷ñüíïò áíáæÞôç-
óçò ãéá ìßá óõóêåõÞ äßóêïõ ãéá ôçí ïðïßá èá âñåßôå êáôÜëëçëá óôïé÷åßá áðü ôï
äéáäßêôõï. Ãéáôß óôçí ðñÜîç åßíáé ìéêñüôåñïò ï ìÝóïò ÷ñüíïò áíáæÞôçóçò ðïõ
äßíåôáé áðü ôïí êáôáóêåõáóôÞ;

2.5. Íá åîçãÞóåôå ôïõò ëüãïõò ãéá ôïõò ïðïßïõò ÷ñçóéìïðïéïýíôáé ïé óõóôïé÷ßåò


äßóêùí RAID. ÐåñéãñÜøôå óõíïðôéêÜ ôá åðßðåäá RAID 0, RAID 1 êáé RAID 5.

2.6. Æçôåßôáé ï ó÷åäéáóìüò åíüò óõóôÞìáôïò ðïõ èá äéá÷åéñßæåôáé 1000 GBytes


äåäïìÝíùí. ¸÷åôå óôç äéÜèåóÞ óáò äßóêïõò ôùí 80 GBytes. Ó÷åäéÜóôå ôï óý-
óôçìá áðïèÞêåõóçò ãéá RAID 0 êáé RAID 1.

2.7. Ôï åðüìåíï ó÷Þìá ðáñéóôÜ ìßá óõãêåêñéìÝíç äéáìüñöùóç RAID ìå ôá


äéÜöïñá block äåäïìÝíùí êáé éóïôéìßáò êáôáíåìçìÝíá óå 4 äßóêïõò. Ðéï óõãêå-
êñéìÝíá, êÜèå block éóïôéìßáò Pi áíôéóôïé÷åß óôá block äåäïìÝíùí B4i−3 ìÝ÷ñé
B4i . Ìå ðïéü åðßðåäï RAID ìïéÜæåé áõôÞ ç äéáìüñöùóç; ÐïéÜ åßíáé ôá ðëåïíå-
êôÞìáôá/ìåéïíåêôÞìáôÜ ôçò;

Äßóêïò 1 Äßóêïò 2 Äßóêïò 3 Äßóêïò 4


B1 B2 B3 B4
P1 B5 B6 B7
B8 P2 B9 B10
.. .. .. ..
. . . .

2.8. ÁíáöÝñáôå ïìïéüôçôåò/äéáöïñÝò ìåôáîý ìáãíçôéêþí êáé ïðôéêþí äßóêùí.


76 ÊåöÜëáéï 2. ÖõóéêÜ ÌÝóá ÁðïèÞêåõóçò

2.9. Íá ðåñéãñáöåß óõíïðôéêÜ ï ôñüðïò ëåéôïõñãßáò ôçò ìáãíçôéêÞò ôáéíßáò. Ãéá


ðïéïýò ëüãïõò ÷ñçóéìïðïéïýíôáé ïé ìáãíçôéêÝò ôáéíßåò óôá óýã÷ñïíá óõóôÞìáôá;

2.10. Íá ðåñéãñáöïýí ïé ôýðïé ìáãíçôéêþí ôáéíéþí: ïöéïåéäïýò áðïèÞêåõóçò,


åãêÜñóéáò áðïèÞêåõóçò êáé åëéêïåéäïýò óÜñùóçò.

2.11. ÌáãíçôéêÞ ôáéíßá ìå ãñáììéêÞ äéáìüñöùóç Ý÷åé ìÞêïò 2.400 ðüäéá, ç ðõ-
êíüôçôá áðïèÞêåõóçò åßíáé 1.600 bpi êáé ç ôá÷ýôçôá áíÜãíùóçò/áðïèÞêåõóçò
åßíáé 50 ßíôóåò/sec. Ôï êåíü ìåôáîý ôùí öõóéêþí åããñáöþí åßíáé 0,5 ßíôóá, åíþ
ï ÷ñüíïò åêêßíçóçò/óôÜóçò åßíáé 0,01 sec. Áí ôï ìÞêïò ôçò ëïãéêÞò åããñáöÞò
åßíáé 200 bytes, ðïéüò åßíáé ï âÝëôéóôïò ðáñÜãïíôáò ïìáäïðïßçóçò þóôå X% ôçò
ôáéíßáò íá êáôáëáìâÜíåôáé áðü öõóéêÝò åããñáöÝò; Ðüóï ìÞêïò ôáéíßáò ÷ñåéÜæå-
ôáé ãéá íá áðïèçêåõèïýí Y öõóéêÝò åããñáöÝò ìåãÝèïõò B bytes;

2.12. Ôï ëåéôïõñãéêü óýóôçìá áíôéãñÜöåé áñ÷åßá áðü ôï ìáãíçôéêü äßóêï óå ìá-


ãíçôéêÞ ôáéíßá. Ôï ìÝãåèïò ôïõ ôïìÝá åßíáé 512 bytes, ç ðõêíüôçôá áðïèÞêåõóçò
åßíáé 1.600 bpi, ôï êåíü ìåôáîý ôùí öõóéêþí åããñáöþí åßíáé 0,5 ßíôóá êáé ôÝëïò
ï ðáñÜãïíôáò ïìáäïðïßçóçò åßíáé 20 ëïãéêÝò/öõóéêÞ åããñáöÞ. Ðüóïé ôïìåßò ÷ù-
ñïýí óå ìßá ôáéíßá ìÞêïõò 2400 ðïäþí;

2.13. Ôá áñ÷åßá ôùí ÷ñçóôþí êáôáëáìâÜíïõí 150.000 ôïìåßò åíüò ìáãíçôéêïý


äßóêïõ. Ãéá ëüãïõò áóöÜëåéáò, óôï ôÝëïò êÜèå çìÝñáò ìåôáöÝñïíôáé óå ìáãíç-
ôéêÞ ôáéíßá ôá áñ÷åßá ðïõ åíçìåñþíïíôáé. ¸óôù, ëïéðüí, üôé êáèçìåñéíÜ êáôÜ
ìÝóï üñï 20% ôïõ ðåñéå÷ïìÝíïõ ôïõ äßóêïõ áíôéãñÜöåôáé óôçí ôáéíßá. Ðüóïò
÷ñüíïò áðáéôåßôáé êáèçìåñéíÜ ãéá ôçí áíôéãñáöÞ, áí åßíáé ãíùóôü üôé ç ôá÷ýôçôá
áíÜãíùóçò/áðïèÞêåõóçò åßíáé 50 ßíôóåò/sec êáé üôé ï ÷ñüíïò åêêßíçóçò/óôÜóçò
åßíáé 0,02 sec. ¼,ôé Üëëá äåäïìÝíá ÷ñåéÜæïíôáé íá ëçöèïýí áðü ôçí ðñïçãïýìåíç
Üóêçóç.

2.14. Áò õðïôåèåß üôé ãéá ôçí ðñïçãïýìåíç Üóêçóç ç áíÜãíùóç ôùí ôïìÝùí
áðü ôï äßóêï ãßíåôáé êáôÜ äéáäï÷éêïýò êõëßíäñïõò. Ôá äåäïìÝíá âñßóêïíôáé óå
30.000 ôïìåßò ðïõ ìïéñÜæïíôáé åîßóïõ óå 500 êõëßíäñïõò. Ôï óýóôçìá äßóêùí
áðïôåëåßôáé áðü ôÝóóåñéò ÷ñÞóéìåò åðéöÜíåéåò êáé ïé ôïìåßò ðïõ áíôéóôïé÷ïýí
óå Ýíá êýëéíäñï ìïéñÜæïíôáé åîßóïõ óå áõôÝò. Ï åëÜ÷éóôïò ÷ñüíïò áíáæÞôçóçò
åßíáé ßóïò ìå 7 ms, ï ìÝóïò ÷ñüíïò ðåñéóôñïöéêÞò êáèõóôÝñçóçò åßíáé 8,3 ms,
åíþ ï ÷ñüíïò ìåôáöïñÜò äåí ëáìâÜíåôáé õð’ üøç. Íá õðïëïãéóèåß êáé ðÜëé ï
áðáéôïýìåíïò óõíïëéêüò ÷ñüíïò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 77

2.15. ÖõëëïìåôñÞóôå ôï äéáäßêôõï êáé âñåßôå áíáëõôéêÜ óôïé÷åßá þóôå íá ðåñé-


ãñÜøåôå ôéò ìíÞìåò ìáãíçôéêþí öõóáëßäùí êáé çìéáãþãéìùí äßóêùí.
3
Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

Ïé äõíáôüôçôåò ôïõ ÓÄÂÄ áîéïðïéïýíôáé áðü äéÜöïñåò êáôçãïñßåò ÷ñçóôþí. Ïé


êáôçãïñßåò áõôÝò Ý÷ïõí ùò åîÞò:
• Áðëïß ×ñÞóôåò (naive users). Óôçí êáôçãïñßá áõôÞ áíÞêïõí ïé ÷ñÞóôåò
ðïõ ÷ñçóéìïðïéïýí êÜðïéï ðñüãñáììá åöáñìïãÞò ãéá íá áðïêôÞóïõí ðñü-
óâáóç óôá äåäïìÝíá ôçò âÜóçò. Ôá äéêáéþìáôá ôùí áðëþí ÷ñçóôþí åßíáé
ðåñéïñéóìÝíá, åíþ ïé ëåéôïõñãßåò ðïõ åðéôñÝðåôáé íá ðñáãìáôïðïéÞóïõí
åßíáé ðñïêáèïñéóìÝíåò êáé ñõèìßæïíôáé áíáëüãùò ìå ôç ëåéôïõñãßá ôïõ óõ-
óôÞìáôïò. Ãéá ðáñÜäåéãìá, Ýíáò ÷ñÞóôçò ôïõ öïñïëïãéêïý óõóôÞìáôïò
TAXIS, ï ïðïßïò Ý÷åé õðïâÜëëåé çëåêôñïíéêÜ ôç öïñïëïãéêÞ ôïõ äÞëùóç,
ìðïñåß íá äéáâÜóåé êáé íá ôñïðïðïéÞóåé ìüíï ôá äéêÜ ôïõ äåäïìÝíá êáé
ü÷é Üëëùí ÷ñçóôþí. Ïé áðëïß ÷ñÞóôåò ôéò ðåñéóóüôåñåò öïñÝò áãíïïýí ôçí
ýðáñîç ôïõ ÓÄÂÄ.
• Ðñï÷ùñçìÝíïé ×ñÞóôåò (casual users). Óôçí êáôçãïñßá áõôÞ áíÞêïõí ïé
÷ñÞóôåò ðïõ Ý÷ïõí åðßãíùóç ôçò ýðáñîçò ôïõ ÓÄÂÄ êáèþò êáé ôçò äïìÞò
ôçò âÜóçò. ¸÷ïõí ôç äõíáôüôçôá íá ÷ñçóéìïðïéïýí ôç ÄïìçìÝíç Ãëþóóá
åñùôçìÜôùí (SQL) ãéá íá åðéêïéíùíïýí ìå ôç âÜóç, åíþ óå ðïëëÝò ðåñé-
ðôþóåéò ãñÜöïõí ôá äéêÜ ôïõò ðñïãñÜììáôá åöáñìïãÞò.

79
80 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

• ÐñïãñáììáôéóôÝò Åöáñìïãþí (application programmers). Ï ðñïãñáììá-


ôéóôÞò åöáñìïãþí êáëåßôáé íá õëïðïéÞóåé ôìÞìáôá ëïãéóìéêïý, ôá ïðïßá
åðéêïéíùíïýí ìå ôï ÓÄÂÄ ãéá ðñïóðÝëáóç êáé åíçìÝñùóç äåäïìÝíùí. Ïé
åöáñìïãÝò áõôÝò óõíÞèùò ÷ñçóéìïðïéïýí êÜðïéï API (Application Pro-
gramming Interface) ðïõ äßíåôáé áðü ôïí êáôáóêåõáóôÞ ôïõ ÓÄÂÄ êáé
ôï ïðïßï ðåñéãñÜöåé ëåðôïìåñþò ôïõò êáíüíåò ðñïóðÝëáóçò ôùí äåäïìÝ-
íùí áðü ôéò åöáñìïãÝò. Ïé åöáñìïãÝò õëïðïéïýíôáé ÷ñçóéìïðïéþíôáò ìßá
ãëþóóá ðñïãñáììáôéóìïý (ð.÷., C++, Java) Þ ÷ñçóéìïðïéþíôáò êÜðïéï
ðåñéâÜëëïí áíÜðôõîçò åöáñìïãþí, ôï ïðïßï ðáñÝ÷åé ï êáôáóêåõáóôÞò ôïõ
ÓÄÂÄ.
• Ó÷åäéáóôÝò ÂÜóåùí ÄåäïìÝíùí (database designers). Ç áíáðáñÜóôáóç ôïõ
ðñáãìáôéêïý êüóìïõ áðáéôåß ôçí ðñïóåêôéêÞ ó÷åäßáóç ôçò ÂÜóçò ÄåäïìÝ-
íùí. Áñ÷éêÜ èá ðñÝðåé íá ðñïóäéïñéóèïýí ïé áðáñáßôçôåò ïíôüôçôåò êáé
ïé óõó÷åôßóåéò ðïõ õðÜñ÷ïõí ìåôáîý ôïõò. Óôç óõíÝ÷åéá, ç ðëçñïöïñßá
áõôÞ ÷ñçóéìïðïéåßôáé ãéá ôçí êáôáóêåõÞ ôçò åóùôåñéêÞò áíáðáñÜóôáóçò
ôçò ðëçñïöïñßáò óôç ÂÜóç ÄåäïìÝíùí ôïõ óõóôÞìáôïò. Ç äéáäéêáóßá áõôÞ
åêôåëåßôáé áðü åîåéäéêåõìÝíïõò áíáëõôÝò êáé ó÷åäéáóôÝò ÂÜóåùí ÄåäïìÝ-
íùí, ïé ïðïßïé êáëïýíôáé íá ðåñéãñÜøïõí ôá áíôéêåßìåíá ôïõ ðñáãìáôéêïý
êüóìïõ ìå áíôéêåßìåíá ôçò ÂÜóçò ÄåäïìÝíùí. Ïé ó÷åäéáóôÝò Ý÷ïõí óôç
äéÜèåóÞ ôïõò åñãáëåßá ëïãéóìéêïý ìå ôá ïðïßá áõôïìáôïðïéåßôáé ç äéáäé-
êáóßá ðåñéãñáöÞò ôùí äåäïìÝíùí.
• Äéá÷åéñéóôÝò ÂÜóåùí ÄåäïìÝíùí (database administrators, DBA). Óôçí êá-
ôçãïñßá áõôÞ áíÞêïõí ïé ÷ñÞóôåò ðïõ Ý÷ïõí åðéðëÝïí äéêáéþìáôá ðïõ áöï-
ñïýí óôïí ôñüðï ïñãÜíùóçò ôùí äåäïìÝíùí, óôïí ôñüðï ëåéôïõñãßáò ôïõ
ÓÄÂÄ, óôç äéá÷åßñéóç ôùí ÷ñçóôþí êáé óôçí áðïêáôÜóôáóç ôùí äåäïìÝíùí
óå ðåñéðôþóåéò áðþëåéáò äåäïìÝíùí ëüãù âëáâþí ôïõ õëéêïý ôïõ óõóôÞ-
ìáôïò. Ïé äéá÷åéñéóôÝò Ý÷ïõí óôç äéÜèåóÞ ôïõò åîåéäéêåõìÝíåò åöáñìïãÝò
ìå ôéò ïðïßåò åëÝã÷ïõí ôçí ïñèüôçôá ôùí äåäïìÝíùí êáé öñïíôßæïõí ãéá ôç
âÝëôéóôç ëåéôïõñãßá ôïõ óõóôÞìáôïò.

3.1 Ç Áñ÷éôåêôïíéêÞ ANSI-SPARC


Ç ðñþôç ðñïóÝããéóç ãéá ôïí ïñéóìü ìßáò êïéíÜ áðïäåêôÞò ïñïëïãßáò êáé áñ÷é-
ôåêôïíéêÞò ãéá ôá ÓÄÂÄ ðñïÞëèå áðü ôçí ÏìÜäá Åñãáóßáò ÂÜóåùí ÄåäïìÝíùí
(Data Base Task Group) óôï óõíÝäñéï CODASYL (Conference on Data Systems
and Languages) ôï 1971 [DBTG 1971]. Ç ÏÅÂÄ Ýêñéíå áðáñáßôçôç ôçí ýðáñîç
äýï äéáöïñåôéêþí åðéðÝäùí óôçí áñ÷éôåêôïíéêÞ åíüò ÓÄÂÄ. ¸ôóé, äéáöïñïðïéåß-
ôáé ç üøç ôïõ óõóôÞìáôïò áðü ôçí üøç ôùí ÷ñçóôþí ôïõ ÓÄÂÄ. Ëßãá ÷ñüíéá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 81

áñãüôåñá (1975) ç åðéôñïðÞ ANSI-SPARC (American National Standards Insti-


tute - Standards Planning and Requirements Committee) ðñüôåéíå ôçí áñ÷éôåêôï-
íéêÞ ôñéþí åðéðÝäùí, ãíùóôÞ êáé ùò áñ÷éôåêôïíéêÞ ANSI-SPARC [Jardine 1977,
Tsichritzis 1978]. Áí êáé ç áñ÷éôåêôïíéêÞ ANSI-SPARC äåí ðñïôõðïðïéÞèçêå,
áðïôåëåß ìßá êáëÞ áöåôçñßá ãéá ôçí êáôáíüçóç ôçò ëåéôïõñãéêüôçôáò åíüò ÓÄÂÄ.

Χ ρ ή σ τ η ς Α Χ ρ ή σ τ η ς Β Χ ρ ή σ τ η ς Γ

Ε ξ ω τ ε ρ ι κ ή Ό ψ η Α Ε ξ ω τ ε ρ ι κ ή Ό ψ η Β Ε ξ ω τ ε ρ ι κ ή Ό ψ η Γ

Ε ξ ω τ ε ρ ι κ ό Ε π ί π ε δ ο

Μ ε τ α τ ρ ο π ή  ε τ α ξ ύ

ε ξ ω τ ε ρ ι κ ο ύ κ α ι ε ν ν ο ι ο λ ο γ ι κ ο ύ

Ε ν ν ο ι ο λ ο γ ι κ ό Σ χ ή , α

Ε ν ν ο ι ο λ ο γ ι κ ό Ε π ί π ε δ ο

Μ ε τ α τ ρ ο π ή  ε τ α ξ ύ

ε σ ω τ ε ρ ι κ ο ύ κ α ι ε ν ν ο ι ο λ ο γ ι κ ο ύ

Ε σ ω τ ε ρ ι κ ό Σ χ ή , α

Ε σ ω τ ε ρ ι κ ό Ε π ί π ε δ ο

Α π ο θ η κ ε υ , έ ν α

3 ε δ ο , έ ν α

Ó÷Þìá 3.1: Áñ÷éôåêôïíéêÞ ôñéþí åðéðÝäùí ANSI-SPARC.

Ç áñ÷éôåêôïíéêÞ ANSI-SPARC ðáñïõóéÜæåôáé óôï Ó÷Þìá 3.1. Ðáñáôçñïýìå


üôé õðÜñ÷ïõí ôñßá åðßðåäá: åîùôåñéêü (external), åóùôåñéêü (internal) êáé åí-
íïéïëïãéêü (conceptual). Ï ôñüðïò ìå ôïí ïðïßï ïé ÷ñÞóôåò áíôéëáìâÜíïíôáé ôá
äåäïìÝíá êáëåßôáé åîùôåñéêü åðßðåäï. Ï ôñüðïò ìå ôïí ïðïßï ôï ÓÄÂÄ êáé ôï ëåé-
ôïõñãéêü óýóôçìá áíôéëáìâÜíïíôáé ôá äåäïìÝíá êáëåßôáé åóùôåñéêü åðßðåäï. Ôï
åííïéïëïãéêü åðßðåäï ðáñÝ÷åé ôçí áíôéóôïé÷ßá êáé ôçí áíåîáñôçóßá ìåôáîý ôïõ
åóùôåñéêïý êáé ôïõ åîùôåñéêïý åðéðÝäïõ. Ï óôü÷ïò ôçò áñ÷éôåêôïíéêÞò ôñéþí
åðéðÝäùí åßíáé ï äéá÷ùñéóìüò ôïõ ôñüðïõ ìå ôïí ïðïßï ï ÷ñÞóôçò "âëÝðåé" ôá
äåäïìÝíá áðü ôïí ôñüðï öõóéêÞò ïñãÜíùóçò ôùí äåäïìÝíùí. Ï äéá÷ùñéóìüò
áõôüò åßíáé åðéèõìçôüò ãéá ôïõò åîÞò ëüãïõò:
82 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

• Óå êÜèå ÷ñÞóôç ðñÝðåé íá äßíåôáé ç äõíáôüôçôá íá Ý÷åé äéáöïñåôéêÞ üøç


ôùí äåäïìÝíùí, áíáëüãùò ìå ôéò áíÜãêåò ôïõ. Ç üøç åíüò ÷ñÞóôç ðñÝðåé
íá åßíáé áíåîÜñôçôç áðü ôéò üøåéò ôùí õðüëïéðùí ÷ñçóôþí.
• Ç ðñïóðÝëáóç ôùí äåäïìÝíùí áðü ôïõò ÷ñÞóôåò ðñÝðåé íá ðñáãìáôïðïéåß-
ôáé áíåîÜñôçôá áðü ôç öõóéêÞ ïñãÜíùóç ôùí äåäïìÝíùí.
• Ï äéá÷åéñéóôÞò ôïõ ÓÄÂÄ ðñÝðåé íá Ý÷åé ôç äõíáôüôçôá íá ìåôáâÜëëåé
ôïí ôñüðï öõóéêÞò ïñãÜíùóçò ôùí äåäïìÝíùí ÷ùñßò íá åðçñåÜæïíôáé ïé
÷ñÞóôåò ôïõò óõóôÞìáôïò.
• Ç åóùôåñéêÞ ïñãÜíùóç ôçò âÜóçò ðñÝðåé íá åßíáé áíåîÜñôçôç áðü áëëáãÝò
ðïõ óõìâáßíïõí óôïí ôñüðï áðïèÞêåõóçò ôùí äåäïìÝíùí (ð.÷., ðñïóèÞêç
ìßáò åðéðëÝïí ìïíÜäáò äßóêïõ óôï óýóôçìá).
• Ï äéá÷åéñéóôÞò ôïõ ÓÄÂÄ ðñÝðåé íá ìðïñåß íá ìåôáâÜëëåé ôçí åííïéïëïãéêÞ
äïìÞ ôçò âÜóçò ÷ùñßò íá åðçñåÜæïíôáé ïé ÷ñÞóôåò ôïõ óõóôÞìáôïò.
Óôç óõíÝ÷åéá, áíáëýåôáé îå÷ùñéóôÜ êÜèå åðßðåäï ôçò áñ÷éôåêôïíéêÞò ANSI-
SPARC êáé ðåñéãñÜöåôáé ç ÷ñçóéìüôçôÜ ôïõ:
• Åîùôåñéêü Åðßðåäï. Ôï åðßðåäï áõôü áíáöÝñåôáé óôïí ôñüðï ïñéóìïý ôùí
üøåùí ôùí ÷ñçóôþí ðñïò ôá äåäïìÝíá. ÏõóéáóôéêÜ áðïôåëåßôáé áðü Ýíá
óýíïëï äéáöïñåôéêþí åîùôåñéêþí üøåùí, êáèþò êÜèå ÷ñÞóôçò Ý÷åé ìßá
äéêÞ ôïõ üøç ôïõ ðñáãìáôéêïý êüóìïõ. Ìßá åîùôåñéêÞ üøç ðåñéëáìâÜíåé
ôéò ïíôüôçôåò (áíôéêåßìåíá) ôïõ ðñáãìáôéêïý êüóìïõ êáé ôéò ìåôáîý ôïõò
ó÷Ýóåéò ãéá ôéò ïðïßåò åíäéáöÝñåôáé ï óõãêåêñéìÝíïò ÷ñÞóôçò. Ùóôüóï,
ìðïñåß íá õðÜñ÷ïõí êáé Üëëåò ïíôüôçôåò ôùí ïðïßùí ôçí ýðáñîç äåí ãíùñß-
æåé ï ÷ñÞóôçò. Ïé äéáöïñåôéêÝò üøåéò åíäÝ÷åôáé íá Ý÷ïõí êáé äéáöïñåôéêÝò
áíáðáñáóôÜóåéò ãéá ôá ßäéá äåäïìÝíá. ×áñáêôçñéóôéêü ðáñÜäåéãìá áðï-
ôåëåß ç ðëçñïöïñßá ðïõ áíáðáñéóôÜ ôçí þñá. Ðïëëïß ÷ñÞóôåò ðñïôéìïýí
ôç 12ùñç áíáðáñÜóôáóç (ð.÷., 2:00 ìì), åíþ Üëëïé ðñïôéìïýí ôçí 24ùñç
áíáðáñÜóôáóç (ð.÷., 14:00).
• Åííïéïëïãéêü Åðßðåäï. Ôï åðßðåäï áõôü ðåñéãñÜöåé ôç ëïãéêÞ äïìÞ üëùí
ôùí äåäïìÝíùí ôçò âÜóçò. Åäþ ðåñéãñÜöåôáé ôï óýíïëï ôùí ïíôïôÞôùí
ôïõ ðñáãìáôéêïý êüóìïõ êáèþò êáé ïé ó÷Ýóåéò ìåôáîý ôïõò. Åðßóçò, ðå-
ñéãñÜöïíôáé ïé ðåñéïñéóìïß ðïõ õðÜñ÷ïõí óôá äåäïìÝíá (ð.÷., äåí åðéôñÝ-
ðïíôáé çëéêßåò ìéêñüôåñåò áðü ôï ìçäÝí) êáé ïé óõó÷åôßóåéò ìåôáîý ôïõò.
Ôï åííïéïëïãéêü åðßðåäï åßíáé áíåîÜñôçôï áðü ôç öõóéêÞ ïñãÜíùóç ôùí
äåäïìÝíùí, ìå áðïôÝëåóìá íá ìçí åðçñåÜæåôáé áðü êÜðïéï óõãêåêñéìÝíï
ôñüðï áðïèÞêåõóçò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 83

• Åóùôåñéêü Åðßðåäï. Ôï åóùôåñéêü åðßðåäï ðåñéãñÜöåé ôç öõóéêÞ ïñãÜ-


íùóç ôïõ óõíüëïõ ôùí äåäïìÝíùí ôçò âÜóçò. Åäþ êáèïñßæåôáé ï ôñüðïò
áðïèÞêåõóçò ôùí äåäïìÝíùí óôï öõóéêü ìÝóï áðïèÞêåõóçò (ð.÷., äßóêïò,
óõóôïé÷ßåò äßóêùí ê.ë.ð.) êáèþò êáé ï ôñüðïò ðñïóðÝëáóçò óôá äåäïìÝíá.
ÁëëáãÝò óôï åóùôåñéêü åðßðåäï äåí åðçñåÜæïõí ôá ðñïçãïýìåíá åðßðåäá.

Ç óõíïëéêÞ ðåñéãñáöÞ ôçò ÂÄ êáëåßôáé ó÷Þìá (schema). ÕðÜñ÷ïõí ôñßá


äéáöïñåôéêÜ ó÷Þìáôá, Ýíá ãéá êÜèå åðßðåäï ôçò áñ÷éôåêôïíéêÞò ôñéþí åðéðÝäùí.
Ôï åîùôåñéêü ó÷Þìá ó÷åôßæåôáé ìå ôï åîùôåñéêü åðßðåäï, ôï åííïéïëïãéêü ó÷Þìá
ó÷åôßæåôáé ìå ôï åííïéïëïãéêü åðßðåäï êáé ôï åóùôåñéêü ó÷Þìá ó÷åôßæåôáé ìå
ôï åóùôåñéêü åðßðåäï ôçò áñ÷éôåêôïíéêÞò. Ôï ÓÄÂÄ åßíáé õðåýèõíï ãéá ôçí
áíôéóôïé÷ßá ôïõ åíüò ó÷Þìáôïò óôï Üëëï, áðåéêïíßæïíôáò êÜèå ðëçñïöïñßá ôïõ
åîùôåñéêïý ó÷Þìáôïò ìå ôçí áíôßóôïé÷ç ðëçñïöïñßá ôïõ åííïéïëïãéêïý ó÷Þìáôïò
êáé óôç óõíÝ÷åéá ôéò ðëçñïöïñßåò ôïõ åííïéïëïãéêïý ó÷Þìáôïò ìå ôéò áíôßóôïé÷åò
ðëçñïöïñßåò ôïõ åóùôåñéêïý ó÷Þìáôïò.
Óå êÜèå ÷ñïíéêÞ óôéãìÞ ç ÂÄ ðåñéÝ÷åé Ýíá óõãêåêñéìÝíï óýíïëï äåäïìÝíùí.
Ïé åéóáãùãÝò, ïé äéáãñáöÝò êáé ïé åíçìåñþóåéò ôùí äåäïìÝíùí ìåôáâÜëëïõí ôçí
êáôÜóôáóç ôçò ÂÄ. Ç óõãêåêñéìÝíç êáôÜóôáóç ôçò ÂÄ óå ìßá äåäïìÝíç ÷ñïíéêÞ
óôéãìÞ êáëåßôáé óôéãìéüôõðï (instance). ÊÜèå óôéãìéüôõðï õðáêïýåé óôïõò êáíü-
íåò ðïõ åðéâÜëåé ôï ó÷Þìá ôçò ÂÄ. ÅðïìÝíùò, óå êÜèå ó÷Þìá ôçò ÂÄ áíôéóôïé÷ïýí
ðïëëÜ óôéãìéüôõðá.
Ç áñ÷éôåêôïíéêÞ ôñéþí åðéðÝäùí ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôçí êáôáíüçóç
ôçò Ýííïéáò ôçò áíåîáñôçóßáò äåäïìÝíùí (data independence), ç ïðïßá áíáöÝñå-
ôáé óôçí áðïöõãÞ ôñïðïðïßçóçò ôùí äåäïìÝíùí åíüò åðéðÝäïõ üôáí óõìâáßíïõí
áëëáãÝò óôá êáôþôåñá åðßðåäá. Äéáêñßíïõìå äýï ôýðïõò áíåîáñôçóßáò äåäïìÝ-
íùí:

• ëïãéêÞ (logical) áíåîáñôçóßá äåäïìÝíùí, ç ïðïßá äçëþíåé üôé áëëáãÝò ðïõ


óõìâáßíïõí óôï åííïéïëïãéêü ó÷Þìá ôçò âÜóçò äåí åðçñåÜæïõí ôï åîùôå-
ñéêü ó÷Þìá, êáé

• öõóéêÞ (physical) áíåîáñôçóßá äåäïìÝíùí, ç ïðïßá äçëþíåé üôé áëëáãÝò


ðïõ óõìâáßíïõí óôï åóùôåñéêü ó÷Þìá ôçò âÜóçò äåí åðçñåÜæïõí ôï åí-
íïéïëïãéêü êáé (êáô’ åðÝêôáóç) ôï åîùôåñéêü ó÷Þìá.

Ïé äýï ôýðïé áíåîáñôçóßáò äåäïìÝíùí åßíáé åöéêôü íá ðñáãìáôïðïéçèïýí ÷ñçóé-


ìïðïéþíôáò ôïõò êáôÜëëçëïõò ìåôáó÷çìáôéóìïýò ìåôáîý ôùí åðéðÝäùí. Ùóôüóï,
õðÜñ÷åé ðåñßðôùóç íá ìåéùèåß ç áðüäïóç ôïõ óõóôÞìáôïò ëüãù ôïõ åðéðëÝïí
êüóôïõò åðéêïéíùíßáò ìåôáîý ôùí åðéðÝäùí.
84 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

Áêïëïõèåß Ýíá áðëü ðáñÜäåéãìá ãéá ôçí êáôáíüçóç ôùí ðñïçãïýìåíùí åí-
íïéþí. Áò èåùñÞóïõìå Ýíáí åêäïôéêü ïßêï ðïõ äéáôçñåß ìßá çëåêôñïíéêÞ âé-
âëéïèÞêç üðïõ áðïèçêåýåé Ýíá õðïóýíïëï ôùí åêäüóåþí ôïõ óå çëåêôñïíéêÞ
ìïñöÞ (ð.÷., óå ìïñöÞ PDF). ¸ôóé, äßíåôáé ç äõíáôüôçôá óå ÷ñÞóôåò íá ðñáãìá-
ôïðïéïýí áíáæçôÞóåéò óôç âéâëéïèÞêç êáé íá áíáêôïýí äéÜöïñá âéâëßá êáôüðéí
óõíäñïìÞò. Èåùñïýìå üôé ôá âéâëßá åßíáé äéá÷ùñéóìÝíá ìå âÜóç ôï ãíùóôéêü
áíôéêåßìåíï, åíþ ôï ðïóü ôçò óõíäñïìÞò åßíáé áíÜëïãï ôïõ ðëÞèïõò ôùí ãíùóôé-
êþí áíôéêåéìÝíùí ðïõ Ý÷åé åðéëÝîåé êÜèå ÷ñÞóôçò. Èåùñïýìå üôé Ý÷ïõìå ôïõò
÷ñÞóôåò X1 , X2 êáé X3 . Ï ÷ñÞóôçò X1 Ý÷åé äéêáßùìá ðñüóâáóçò óôç ãíùóôéêÞ
ðåñéï÷Þ ÉáôñéêÞ ÐëçñïöïñéêÞ, ï ÷ñÞóôçò X2 óôéò ãíùóôéêÝò ðåñéï÷Ýò ÉáôñéêÞ
ÐëçñïöïñéêÞ êáé Äßêôõá Åðéêïéíùíßáò, åíþ ï ÷ñÞóôçò X3 äåí åßíáé áêüìç óõí-
äñïìçôÞò óå êÜðïéá ãíùóôéêÞ ðåñéï÷Þ. ¸óôù üôé õðÜñ÷ïõí áðïèçêåõìÝíåò ïé
ðëçñïöïñßåò ðïõ åìöáíßæïíôáé óôïí Ðßíáêá 3.1.

Êùäéêüò Ôßôëïò ÃíùóôéêÞ Ðåñéï÷Þ Óåëßäåò ÔéìÞ Áñ÷åßï PDF Áíôßôõðá


1001 ÁðïèÞêåõóç ÉáôñéêÞ
Éáôñéêþí Åéêüíùí ÐëçñïöïñéêÞ 399 30 1001.pdf 3000
1002 ÉáôñéêÜ ÉáôñéêÞ
ÐëçñïöïñéáêÜ ÐëçñïöïñéêÞ 600 100 1002.pdf 8000
ÓõóôÞìáôá
2099 Äßêôõá ÁÔÌ Äßêôõá
Åðéêïéíùíßáò 500 44 2099.pdf 5000
2100 ÄïñõöïñéêÜ Äßêôõá
Äßêôõá Åðéêïéíùíßáò 400 60 2100.pdf 2000
3000 ÓõóôÞìáôá ÂÜóåéò
ÂÜóåùí ÄåäïìÝíùí ÄåäïìÝíùí 500 70 3000.pdf 10000

Ðßíáêáò 3.1: Ðëçñïöïñßåò êáôá÷ùñéóìÝíåò óôçí çëåêôñïíéêÞ âéâëéïèÞêç.

Ìå âÜóç üóá Ý÷ïõí áíáöåñèåß ðñïçãïõìÝíùò, ç ðñïóðÝëáóç ôùí ðëçñïöï-


ñéþí ôçò âÜóçò Ý÷åé ùò åîÞò:

• Ôï ðåäßï Áíôßôõðá åßíáé áðñïóðÝëáóôï ãéá üëïõò ôïõò ÷ñÞóôåò. Ôï ðåäßï


áõôü äçëþíåé ôï ðëÞèïò ôùí áíôéôýðùí ðïõ Ý÷ïõí ðïõëçèåß êáé áöïñÜ
ìüíï óôéò åóùôåñéêÝò äéáäéêáóßåò ôïõ åêäïôéêïý ïßêïõ. ÅðïìÝíùò, ïé ÷ñÞ-
óôåò áãíïïýí ôçí ýðáñîç áõôÞò ôçò ðëçñïöïñßáò, ðáñÜ ôï ãåãïíüò üôé ç
ðëçñïöïñßá åßíáé êáôá÷ùñéóìÝíç óôç ÂÄ ôïõ åêäïôéêïý ïßêïõ.

• Ôï ðåäßï Áñ÷åßï PDF åßíáé ðñïóðåëÜóéìï ìüíï áðü ôïõò ÷ñÞóôåò ðïõ åßíáé
óõíäñïìçôÝò ãéá ôç óõãêåêñéìÝíç ãíùóôéêÞ ðåñéï÷Þ. ¸ôóé, ï ÷ñÞóôçò X1
ìðïñåß íá ðñïóðåëÜóåé ôï ðåäßï áõôü ìüíï ãéá ôá âéâëßá ìå êùäéêïýò 1001
êáé 1002. Ï ÷ñÞóôçò X2 ìðïñåß íá ðñïóðåëÜóåé ôï ðåäßï ãéá ôá âéâëßá ìå
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 85

êùäéêïýò 1001, 1002, 2099 êáé 2100. ÔÝëïò ï ÷ñÞóôçò X3 , ðïõ äåí åßíáé
áêüìç óõíäñïìçôÞò, äåí Ý÷åé ðñïóðÝëáóç óôï ðåäßï áõôü ãéá üëá ôá âéâëßá.
Óýìöùíá ìå ôá ðñïçãïýìåíá, Ý÷ïõìå ôñßá åîùôåñéêÜ ó÷Þìáôá (Ýíá ãéá êÜèå
÷ñÞóôç), Ýíá åííïéïëïãéêü ó÷Þìá êáé Ýíá åóùôåñéêü ó÷Þìá, ðïõ äéáìïñöþíïíôáé
ùò åîÞò:
• Åîùôåñéêü Ó÷Þìá X1 : ðåñéëáìâÜíåé ôá ðåäßá Êùäéêüò, Ôßôëïò, ÃíùóôéêÞ
Ðåñéï÷Þ, Óåëßäåò, ÔéìÞ ãéá üëåò ôéò ãíùóôéêÝò ðåñéï÷Ýò. ÅðéðëÝïí ãéá ôç
ãíùóôéêÞ ðåñéï÷Þ ÉáôñéêÞ ÐëçñïöïñéêÞ ðåñéëáìâÜíåôáé êáé ôï ðåäßï Áñ-
÷åßï PDF.
• Åîùôåñéêü Ó÷Þìá X2 : ðåñéëáìâÜíåé ôá ðåäßá Êùäéêüò, Ôßôëïò, ÃíùóôéêÞ
Ðåñéï÷Þ, Óåëßäåò, ÔéìÞ ãéá üëåò ôéò ãíùóôéêÝò ðåñéï÷Ýò. Ãéá ôéò ãíùóôéêÝò
ðåñéï÷Ýò ÉáôñéêÞ ÐëçñïöïñéêÞ êáé Äßêôõá Åðéêïéíùíßáò ðåñéëáìâÜíåôáé
êáé ôï ðåäßï Áñ÷åßï PDF.
• Åîùôåñéêü Ó÷Þìá X3 : ðåñéëáìâÜíåé ôá ðåäßá Êùäéêüò, Ôßôëïò, ÃíùóôéêÞ
Ðåñéï÷Þ, Óåëßäåò, ÔéìÞ ãéá üëåò ôéò ãíùóôéêÝò ðåñéï÷Ýò.
• Åííïéïëïãéêü Ó÷Þìá: ðåñéëáìâÜíåé ôá ðåäßá Êùäéêüò, Ôßôëïò, ÃíùóôéêÞ
Ðåñéï÷Þ, Óåëßäåò, ÔéìÞ, Áñ÷åßï PDF, Áíôßôõðá ãéá üëåò ôéò ãíùóôéêÝò ðå-
ñéï÷Ýò.
• Åóùôåñéêü Ó÷Þìá: ðåñéëáìâÜíåé ôá ðåäßá Êùäéêüò, Ôßôëïò, ÃíùóôéêÞ Ðå-
ñéï÷Þ, Óåëßäåò, ÔéìÞ, Áñ÷åßï PDF, Áíôßôõðá êáé åðéðëÝïí ôéò áðáñáßôçôåò
ðëçñïöïñßåò ãéá ôïí ôñüðï áðïèÞêåõóçò ôùí ðåäßùí áõôþí. Ãéá ðáñÜ-
äåéãìá, ôï ðåäßï Óåëßäåò ìðïñåß íá êùäéêïðïéçèåß ùò èåôéêüò áêÝñáéïò
áñéèìüò, åíþ ôï ðåäßï Ôßôëïò ìðïñåß íá áíáðáñáóôáèåß ùò óåéñÜ ÷áñáêôÞ-
ñùí.
Ðáñáôçñïýìå üôé äéáöïñåôéêïß ÷ñÞóôåò Ý÷ïõí ðñïóðÝëáóç óå äéáöïñåôéêÜ
äåäïìÝíá ôçò ÂÄ, áíáëüãùò ìå ôïõò ðåñéïñéóìïýò êáé ôïõò êáíüíåò ðñïóðÝëáóçò
ðïõ åöáñìüæåé ï åêäïôéêüò ïßêïò. Ôá äéêáéþìáôá ðñïóðÝëáóçò ìåôáâÜëëïíôáé
áíáëüãùò ìå ôéò åêÜóôïôå óõíèÞêåò. Ãéá ðáñÜäåéãìá, áí Ýíáò ÷ñÞóôçò ðëçñþóåé
óõíäñïìÞ ãéá ìßá ãíùóôéêÞ ðåñéï÷Þ, áõôïìÜôùò áðïêôÜ äéêáßùìá ðñïóðÝëáóçò
ôùí áíôßóôïé÷ùí áñ÷åßùí PDF.

3.2 Ãëþóóåò ÂÜóåùí ÄåäïìÝíùí


Ìßá ãëþóóá ÂÜóåùí ÄåäïìÝíùí áðïôåëåßôáé áðü äýï ôìÞìáôá ðïõ åßíáé ó÷åäéá-
óìÝíá ãéá äéáöïñåôéêïýò óêïðïýò. Ç ãëþóóá ïñéóìïý äåäïìÝíùí (Data Defi-
nition Language, DDL) ÷ñçóéìïðïéåßôáé ãéá ôïí ïñéóìü ôùí ïíôïôÞôùí êáé ôùí
86 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

ìåôáîý ôïõò ó÷Ýóåùí. Ìå ôç ãëþóóá áõôÞ äçëþíïõìå ôá ÷áñáêôçñéóôéêÜ ðïõ Ý÷åé


êÜèå ïíôüôçôá êáé ôïõò áíôßóôïé÷ïõò ôýðïõò äåäïìÝíùí (ð.÷., áêÝñáéïò áñéèìüò,
óåéñÜ ÷áñáêôÞñùí). Ç ãëþóóá ÷åéñéóìïý äåäïìÝíùí (Data Manipulation Lan-
guage, DML) ÷ñçóéìïðïéåßôáé ãéá ôçí åðåîåñãáóßá, ôçí åíçìÝñùóç, ôçí åéóá-
ãùãÞ êáé ôç äéáãñáöÞ äåäïìÝíùí. Áîßæåé íá óçìåéùèåß üôé ìßá ãëþóóá ÂÜóåùí
ÄåäïìÝíùí Ý÷åé ôåñÜóôéá äéáöïñÜ áðü ìßá ãëþóóá ðñïãñáììáôéóìïý. ÃåíéêÜ,
ìßá ãëþóóá ðñïãñáììáôéóìïý åßíáé åíéó÷õìÝíç ìå ðïëëÝò äõíáôüôçôåò ãéá ôç
äéåõêüëõíóç ôïõ ðñïãñáììáôéóôÞ åöáñìïãþí. ÁíôéèÝôùò, ìßá ãëþóóá ÂÜóåùí
ÄåäïìÝíùí åßíáé áðëïýóôåñç óôç óýíôáîÞ ôçò êáé êáôÜ êýñéï ëüãï åßíáé äçëù-
ôéêÞ (declarative). Áõôü óçìáßíåé üôé äåí ðñïóäéïñßæïõìå ôïí ôñüðï åêôÝëåóçò
ìßáò åñãáóßáò, áëëÜ áðëþò äçëþíïõìå ôé èÝëïõìå óôçí áðÜíôçóç. Ç ìåôÜöñáóç,
áîéïëüãçóç êáé åðåîåñãáóßá ôùí åñùôçìÜôùí åßíáé åõèýíç ôïõ ÓÄÂÄ.

3.2.1 Ãëþóóá Ïñéóìïý ÄåäïìÝíùí


Ôï ðñþôï âÞìá óôï ó÷åäéáóìü ìßáò ÂÄ åßíáé ï ðñïóäéïñéóìüò ôùí ïíôïôÞôùí
ðïõ èá ÷ñçóéìïðïéçèïýí ãéá íá áíáðáñáóôÞóïõí ôá áíôéêåßìåíá ôïõ ðñáãìá-
ôéêïý êüóìïõ. Óôç óõíÝ÷åéá, ðñïóäéïñßæïíôáé ïé éäéüôçôåò ôçò êÜèå ïíôüôçôáò
êáé ðåñéãñÜöïíôáé ïé ó÷Ýóåéò ìåôáîý ôùí ïíôïôÞôùí. Åðßóçò, ðñÝðåé íá ðñïó-
äéïñéóèïýí ïé ðåñéïñéóìïß ðïõ õðÜñ÷ïõí óôá äåäïìÝíá. ¼ëá ôá ðñïçãïýìåíá
óôïé÷åßá óõíèÝôïõí ôï ó÷Þìá ôçò ÂÄ. Õðåýèõíïò ãéá ôçí êáôáóêåõÞ ôïõ ó÷Þìáôïò
åßíáé ï äéá÷åéñéóôÞò, ðïõ ðñÝðåé íá Ý÷åé óôç äéÜèåóÞ ôïõ ôá êáôÜëëçëá åñãáëåßá
ãéá íá èÝóåé ôá èåìÝëéá ôçò ÂÄ, þóôå íá ÷ñçóéìïðïéçèåß óôç óõíÝ÷åéá áðü ôïõò
÷ñÞóôåò. ¸íá áðü ôá åñãáëåßá áõôÜ åßíáé ç ãëþóóá ïñéóìïý äåäïìÝíùí.
Ôï áðïôÝëåóìá ôçò ìåôÜöñáóçò ôùí åíôïëþí ôçò ãëþóóáò ïñéóìïý äåäïìÝíùí
áðïèçêåýåôáé óå åéäéêü áñ÷åßï ðïõ êáëåßôáé ëåîéêü äåäïìÝíùí (data dictionary)
Þ êáôÜëïãïò äåäïìÝíùí (data directory) Þ êáôÜëïãïò óõóôÞìáôïò (system cata-
log). Ôï áñ÷åßï áõôü ðåñéÝ÷åé ìåôá-äåäïìÝíá (metadata), äçëáäÞ ðëçñïöïñßåò
ðïõ áöïñïýí óôá ßäéá ôá áðïèçêåõüìåíá äåäïìÝíá. ÅðåéäÞ õðÜñ÷ïõí ôñßá äéá-
öïñåôéêÜ ó÷Þìáôá (åîùôåñéêü, åííïéïëïãéêü, åóùôåñéêü) èá Ýðñåðå íá õðÜñ÷ïõí
êáé äéáöïñåôéêÝò ãëþóóåò ïñéóìïý äåäïìÝíùí. Ùóôüóï, ôá ðåñéóóüôåñá ÓÄÂÄ
ðáñÝ÷ïõí ìßá ìüíï ãëþóóá ïñéóìïý äåäïìÝíùí, ç ïðïßá ÷ñçóéìïðïéåßôáé ãéá ôïí
ðñïóäéïñéóìü ôïõ åîùôåñéêïý êáé ôïõ åííïéïëïãéêïý ó÷Þìáôïò ôïõëÜ÷éóôïí.
¼ðùò èá áíáëõèåß óå åðüìåíï êåöÜëáéï, ðïëëÜ ÓÄÂÄ áðïèçêåýïõí ôá äå-
äïìÝíá õðü ìïñöÞ ðßíáêá. ¸óôù ï ðßíáêáò Áõôïêßíçôï, ï ïðïßïò ðåñéÝ÷åé äå-
äïìÝíá ãéá äéáöïñåôéêÜ ìïíôÝëá áõôïêéíÞôùí ðïõ êõêëïöïñïýí óôï åìðüñéï. Ï
äéá÷åéñéóôÞò ôçò ÂÄ êáëåßôáé íá êáôáóêåõÜóåé ôç äïìÞ ìßáò âÜóçò ðïõ èá ðå-
ñéÝ÷åé ãéá êÜèå ìïíôÝëï áõôïêéíÞôïõ ôá åîÞò ÷áñáêôçñéóôéêÜ: êùäéêüò áñéèìüò,
üíïìá ìïíôÝëïõ, êõâéóìüò, éððïäýíáìç. Áõôü ìðïñåß íá ðñáãìáôïðïéçèåß ìå ôçí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 87

åîÞò åíôïëÞ ôçò ãëþóóáò ïñéóìïý äåäïìÝíùí:

CREATE TABLE Áõôïêßíçôï


(êùäéêüò INTEGER,
üíïìá CHAR(20),
åôáéñåßá CHAR(20),
êõâéóìüò INTEGER,
éððïäýíáìç INTEGER);

ÌåôÜ ôçí åêôÝëåóç ôçò åíôïëÞò áõôÞò óõìâáßíïõí ôá åîÞò: á) ôï ÓÄÂÄ åíçìå-
ñþíåé ôïí êáôÜëïãï äåäïìÝíùí ó÷åôéêÜ ìå ôç äçìéïõñãßá ìßáò íÝáò ïíôüôçôáò
(Áõôïêßíçôï) ìå ôá áíôßóôïé÷á ÷áñáêôçñéóôéêÜ, â) äåóìåýåôáé ìßá ðåñéï÷Þ óôï
÷þñï áðïèÞêåõóçò ôçò ÂÄ êáé ã) êáôáóêåõÜæåôáé ï ðßíáêáò ðïõ áñ÷éêÜ äåí
ðåñéÝ÷åé äåäïìÝíá.

3.2.2 Ãëþóóá ×åéñéóìïý ÄåäïìÝíùí


Ïé ÷ñÞóôåò ôçò ÂÄ ðñÝðåé íá Ý÷ïõí óôç äéÜèåóÞ ôïõò ôñüðïõò ðñïóðÝëáóçò ôùí
äåäïìÝíùí. Ç åõêïëßá ÷åéñéóìïý ôùí äåäïìÝíùí åßíáé Ýíáò ðïëý óçìáíôéêüò
ðáñÜãïíôáò. Ôá ðñïóöåñüìåíá åñãáëåßá ðñÝðåé íá äßíïõí ôç äõíáôüôçôá á)
åéóáãùãÞò íÝùí äåäïìÝíùí, â) åíçìÝñùóçò ôùí áðïèçêåõìÝíùí äåäïìÝíùí, ã)
ðñïóðÝëáóçò ôùí äåäïìÝíùí êáé ä) äéáãñáöÞò ôùí äåäïìÝíùí (åö’ üóïí õðÜñ-
÷ïõí ôá áíôßóôïé÷á äéêáéþìáôá). Ç ãëþóóá ÷åéñéóìïý äåäïìÝíùí ðñïóöÝñåé
óôïõò ÷ñÞóôåò üëåò ôéò ðñïçãïýìåíåò äõíáôüôçôåò êáé ëüãù ôçò áðëüôçôÜò ôçò ï
÷åéñéóìüò ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé ó÷åôéêÜ åýêïëá. Ôï ôìÞìá ôçò ãëþó-
óáò ÷åéñéóìïý äåäïìÝíùí ðïõ ÷ñçóéìïðïéåßôáé ìüíï ãéá ðñïóðÝëáóç (áíÜãíùóç)
ôùí äåäïìÝíùí êáëåßôáé ãëþóóá åñùôçìÜôùí (query language).
Ç ãëþóóá ÷åéñéóìïý äåäïìÝíùí ìðïñåß íá åßíáé åßôå äéåñãáóéáêÞ (procedu-
ral) åßôå ìç-äéåñãáóéáêÞ (non-procedural). Ìßá äéåñãáóéáêÞ ãëþóóá ÷åéñéóìïý
äåäïìÝíùí äßíåé óôï ÷ñÞóôç ôç äõíáôüôçôá íá áíáæçôÞóåé äåäïìÝíá áðü ôç ÂÄ ìå
óõãêåêñéìÝíï ôñüðï, äçëáäÞ äçëþíïíôáò ôïí ôñüðï ðñáãìáôïðïßçóçò ôçò ðñï-
óðÝëáóçò ôùí äåäïìÝíùí. ÓõíÞèùò, ìßá åöáñìïãÞ ðïõ åßíáé âáóéóìÝíç óå äéåñ-
ãáóéáêÞ ãëþóóá ÷åéñéóìïý äéáâÜæåé ôìÞìáôá äåäïìÝíùí ÷ñçóéìïðïéþíôáò åéäéêÝò
óõíáñôÞóåéò, êáé óôç óõíÝ÷åéá ÷ñçóéìïðïéþíôáò åíôïëÝò åëÝã÷ïõ (äçëáäÞ, if-
then-else, ê.ë.ð.) êáé åíôïëÝò âñü÷ùí (üðùò for, while, repeat) ðñïâáßíåé
óå åðéðëÝïí åíÝñãåéåò. ÁíôéèÝôùò óå ìßá ìç-äéåñãáóéáêÞ ãëþóóá ÷åéñéóìïý äå-
äïìÝíùí ï ÷ñÞóôçò äçëþíåé ìüíï ôá äåäïìÝíá ðïõ ÷ñåéÜæåôáé íá äéáâáóèïýí êáé
ôïõò ðåñéïñéóìïýò ðïõ Ý÷ïõí ôá äåäïìÝíá (ð.÷., éððïäýíáìç > 110). ¸ôóé, ï
÷ñÞóôçò áðïäåóìåýåôáé áðü ôéò ëåðôïìÝñåéåò ðïõ ó÷åôßæïíôáé ìå ôïí ôñüðï ðñï-
óðÝëáóçò ôùí äåäïìÝíùí, ïðüôå ï ôñüðïò ðñáãìáôïðïßçóçò ôçò åðåîåñãáóßáò
ôïõ åñùôÞìáôïò ðñïóäéïñßæåôáé áðü ôï ÓÄÂÄ. ×áñáêôçñéóôéêÜ ðáñáäåßãìáôá
88 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

ìç-äéåñãáóéáêþí ãëùóóþí ÷åéñéóìïý äåäïìÝíùí åßíáé ç SQL (Structured Query


Language) êáé ç QBE (Query By Example). ÐïëëÜ ÓÄÂÄ ðáñÝ÷ïõí êáé äéåñ-
ãáóéáêÝò ãëþóóåò ÷åéñéóìïý äåäïìÝíùí, üðùò ç Transact-SQL óôï óýóôçìá Mi-
crosoft SQL Server êáé ç PL/SQL óôï óýóôçìá Oracle.
Áò åîåôÜóïõìå Ýíá áðëü ðáñÜäåéãìá ðïõ äåß÷íåé ìåñéêÝò âáóéêÝò ëåéôïõñãßåò
÷åéñéóìïý äåäïìÝíùí ôçò ãëþóóáò SQL. Èåùñïýìå üôé ðßíáêáò Áõôïêßíçôï Ý÷åé
êáôáóêåõáóèåß êáé äåí ðåñéÝ÷åé äåäïìÝíá. Ïé åðüìåíåò åíôïëÝò ôçò ãëþóóáò ÷åé-
ñéóìïý äåäïìÝíùí åéóÜãïõí óôïí ðßíáêá ðÝíôå äéáöïñåôéêÜ ìïíôÝëá áõôïêéíÞôïõ
ìå ôá áíôßóôïé÷á ÷áñáêôçñéóôéêÜ .

INSERT INTO Áõôïêßíçôï


VALUES (1, ‘Stilo’, ‘FIAT’, 1600, 103);

INSERT INTO Áõôïêßíçôï


VALUES (2, ‘106 Rallye’, ‘Peugeot’, 1600, 122);

INSERT INTO Áõôïêßíçôï


VALUES (3, ‘Saxo VTS’, ‘Citroen’, 1600, 122);

INSERT INTO Áõôïêßíçôï


VALUES (4, ‘Golf’, ’VW’, 1600, 115);

INSERT INTO Áõôïêßíçôï


VALUES (5, ‘S 2000’, ’Honda’, 2000, 241);

¸óôù ôþñá üôé Ýíáò ÷ñÞóôçò åðéèõìåß íá áíáæçôÞóåé áðü ôá áðïèçêåõìÝíá ìï-
íôÝëá áõôÜ ðïõ Ý÷ïõí éððïäýíáìç ìåãáëýôåñç áðü 115 ßððïõò. Áõôü åðéôõã÷Ü-
íåôáé ìå ôçí åêôÝëåóç ôçò åîÞò åíôïëÞò ôçò ãëþóóáò åñùôçìÜôùí:

SELECT *
FROM Áõôïêßíçôï
WHERE éððïäýíáìç > 115;

Ôï áðïôÝëåóìá ôçò åêôÝëåóçò ôçò ðñïçãïýìåíçò åíôïëÞò åßíáé ôá ìïíôÝëá "106


Rallye", "Saxo VTS" êáé "S 2000" ãéá ôá ïðïßá éó÷ýåé ï ðåñéïñéóìüò ôçò éððïäý-
íáìçò ðïõ Ýäùóå ï ÷ñÞóôçò.

3.2.3 Ãëþóóåò ÔÝôáñôçò ÃåíéÜò


Ïé ìç-äéåñãáóéáêÝò ãëþóóåò áíÞêïõí óôéò ãëþóóåò ôÝôáñôçò ãåíéÜò (4th genera-
tion languages, 4GL), ïé ïðïßåò åßíáé ãëþóóåò õøçëïý åðéðÝäïõ êáé áðïäåóìåýïõí
ôï ÷ñÞóôç Þ ôïí ðñïãñáììáôéóôÞ åöáñìïãþí áðü ëåðôïìÝñåéåò õëïðïßçóçò. Åðß-
óçò, ç ìç-äéåñãáóéáêÞ öýóç ôùí ãëùóóþí áõôþí åðéôñÝðåé ôçí åýêïëç äéáôýðùóç
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 89

åñùôçìÜôùí áðü ôïõò ÷ñÞóôåò, áðëïõóôåýïíôáò ôïí ôñüðï åðéêïéíùíßáò ìåôáîý


÷ñÞóôç êáé óõóôÞìáôïò. Óôç óõíÝ÷åéá ðåñéãñÜöïíôáé óõíïðôéêÜ ïé äõíáôüôçôåò
ôùí ãëùóóþí ôÝôáñôçò ãåíéÜò:

• Äçìéïõñãßá Öïñìþí (form generation). Ïé öüñìåò ðáñÝ÷ïõí Ýíáí ôñüðï


åðéêïéíùíßáò ìåôáîý ôïõ ÷ñÞóôç êáé ôïõ ÓÄÂÄ. Ï ÷ñÞóôçò Ý÷åé óôç äéÜèåóÞ
ôïõ Ýíáí åýêïëï ôñüðï ãéá ôçí åéóáãùãÞ, áíÜãíùóç, äéáãñáöÞ êáé åíçìÝ-
ñùóç ôùí äåäïìÝíùí. Ìå ôç ÷ñÞóç öïñìþí äåí õðÜñ÷åé ç áðáßôçóç ãéá ôï
÷ñÞóôç íá ãíùñßæåé ôç ãëþóóá ÷åéñéóìïý äåäïìÝíùí ôïõ ÓÄÂÄ. Ôï ÓÄÂÄ
äéáâÜæåé ôá äåäïìÝíá áðü ôç öüñìá êáé åêôåëåß åóùôåñéêÜ ôéò åíôïëÝò ôçò
ãëþóóáò ÷åéñéóìïý äåäïìÝíùí.

• Äçìéïõñãßá Áíáöïñþí (report generation). Ìßá áíáöïñÜ åßíáé Ýíáò ôñü-


ðïò ðáñïõóßáóçò ôùí áðïôåëåóìÜôùí åíüò åñùôÞìáôïò. Óå ðïëëÝò ðåñé-
ðôþóåéò õðÜñ÷åé ç áðáßôçóç ôá áðïôåëÝóìáôá íá åìöáíßæïíôáé óôï ÷ñÞóôç
ìå óõãêåêñéìÝíç ìïñöïðïßçóç. Ç áíáöïñÜ ðáñÜãåôáé áðü ôï ÓÄÂÄ ìå
âÜóç ôá áðïôåëÝóìáôá ôïõ åñùôÞìáôïò êáé ôéò áðáéôÞóåéò ìïñöïðïßçóçò,
ôéò ïðïßåò åéóÜãåé ï ÷ñÞóôçò.

• Äçìéïõñãßá ÃñáöçìÜôùí (graph generation). ¸íá ãñÜöçìá ÷ñçóéìåýåé ãéá


ôïí ðñïóäéïñéóìü ôïõ ôñüðïõ óõó÷Ýôéóçò äýï ìåãåèþí. Ãéá ðáñÜäåéãìá,
ãéá íá ðñïóäéïñéóèåß ç ó÷Ýóç ìåôáîý ôùí ìåãåèþí Á êáé Â, ìðïñïýìå íá
êáôáóêåõÜóïõìå Ýíá ãñÜöçìá ìå äýï Üîïíåò (x êáé y) êáé íá ìåëåôÞóïõìå
ôç ìïñöÞ ôçò ðñïêýðôïõóáò êáìðýëçò.

• Äçìéïõñãßá Åöáñìïãþí (application generation). Ç ãñÞãïñç äçìéïõñãßá


ðñïãñáììÜôùí åöáñìïãÞò åßíáé ìßá ÷ñÞóéìç äõíáôüôçôá ðïõ åðéôñÝðåé
ôç ìåßùóç ôïõ ÷ñüíïõ áíÜëõóçò, ó÷åäéáóìïý êáé õëïðïßçóçò ôçò åöáñ-
ìïãÞò. ×ñçóéìïðïéåßôáé óõíÞèùò ãéá ôç äçìéïõñãßá äïêéìáóôéêþí åöáñ-
ìïãþí (demo), Ýôóé þóôå íá Ý÷ïõìå ìßá ðñþôç åéêüíá ó÷åôéêÜ ìå ôçí ôå-
ëéêÞ ìïñöÞ ôïõ ðñïúüíôïò. Ùóôüóï, ìå ðñïóåêôéêÞ áíÜëõóç êáé ó÷åäéáóìü
ç ãñÞãïñç äçìéïõñãßá åöáñìïãþí ìðïñåß íá ÷ñçóéìïðïéçèåß êáé ãéá ôçí
áíÜðôõîç ïëïêëçñùìÝíùí åöáñìïãþí åðáããåëìáôéêþí ðñïäéáãñáöþí.

3.3 ÌïíôÝëá ÄåäïìÝíùí


¼ðùò Ý÷åé áíáöåñèåß ðñïçãïõìÝíùò, ïé åíôïëÝò ôçò ãëþóóáò ïñéóìïý äåäïìÝ-
íùí ìðïñïýí íá ðåñéãñÜøïõí ðëÞñùò ôï ó÷Þìá ìßáò ÂÄ. Ùóôüóï, ãéá ôçí ðåñé-
ãñáöÞ ôïõ ó÷Þìáôïò ôçò ÂÄ ÷ñåéáæüìáóôå åíáëëáêôéêïýò ôñüðïõò, äéüôé ç ãëþóóá
ïñéóìïý äåäïìÝíùí âñßóêåôáé óå áñêåôÜ ÷áìçëü åðßðåäï êáé ðåñéÝ÷åé áñêåôÝò
90 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

ëåðôïìÝñåéåò. Ãéá ôï ëüãï áõôü ÷ñçóéìïðïéïýíôáé ìïíôÝëá äåäïìÝíùí (data mod-


els), ôá ïðïßá ðåñéãñÜöïõí ôï ó÷Þìá ôçò ÂÄ óå áñêåôÜ õøçëü åðßðåäï (äçëáäÞ
÷ùñßò ëåðôïìÝñåéåò õëïðïßçóçò). ¸íá ìïíôÝëï äåäïìÝíùí áðïôåëåß ìßá áíá-
ðáñÜóôáóç ôïõ ðñáãìáôéêïý êüóìïõ êáé åßíáé åóôéáóìÝíï óôéò ïíôüôçôåò êáé ôéò
ìåôáîý ôïõò ó÷Ýóåéò ðïõ åíäéáöÝñïõí óôéò åöáñìïãÝò. Ôïíßæåôáé üôé ëÜèç Þ ðá-
ñáëÞøåéò óôï ìïíôÝëï äåäïìÝíùí Ý÷ïõí Üìåóï áíôßêôõðï ôüóï óôá áðïèçêåõìÝíá
äåäïìÝíá üóï êáé óôéò ëåéôïõñãßåò åðåîåñãáóßáò äåäïìÝíùí. Ç áëëáãÞ ôïõ ìï-
íôÝëïõ äåäïìÝíùí óõíåðÜãåôáé áëëáãÝò óå ðïëëÜ ôìÞìáôá ôçò ÂÄ.
Ìå âÜóç ôçí áñ÷éôåêôïíéêÞ ANSI-SPARC, ìðïñïýìå íá ðñïóäéïñßóïõìå Ýíá
ìïíôÝëï äåäïìÝíùí ãéá êÜèå åðßðåäï: åîùôåñéêü, åííïéïëïãéêü êáé åóùôåñéêü ìï-
íôÝëï äåäïìÝíùí. Óôç âéâëéïãñáößá Ý÷ïõí ðñïôáèåß áñêåôÜ ìïíôÝëá äåäïìÝíùí,
ôá ïðïßá áíÞêïõí óå ìßá áðü ôéò åîÞò êáôçãïñßåò: ìïíôÝëá âáóéóìÝíá óå åã-
ãñáöÝò (record-based models), ìïíôÝëá âáóéóìÝíá óå áíôéêåßìåíá (object-based
models) êáé öõóéêÜ ìïíôÝëá äåäïìÝíùí (physical data models).

3.3.1 ÌïíôÝëá ÂáóéóìÝíá óå ÅããñáöÝò


Ôá ìïíôÝëá áõôÜ ÷ñçóéìïðïéïýíôáé ãéá ôçí ðåñéãñáöÞ ôïõ åííïéïëïãéêïý êáé
ôïõ åîùôåñéêïý ó÷Þìáôïò. Ãéá ôç äüìçóç ôçò ðëçñïöïñßáò ÷ñçóéìïðïéïýíôáé
åããñáöÝò (records) ìå óõãêåêñéìÝíç ãñáììïãñÜöçóç (layout). ÊÜèå åããñáöÞ
áðïôåëåßôáé áðü ðåäßá (fields) ðïõ êáëïýíôáé êáé éäéüôçôåò Þ ÷áñáêôçñéóôéêÜ
(attributes). Ãéá ðáñÜäåéãìá, ç éððïäýíáìç êáé ï êõâéóìüò åßíáé éäéüôçôåò åíüò
áõôïêéíÞôïõ.
Ôá ìïíôÝëá åããñáöþí Ý÷ïõí áñêåôÜ ìåãÜëç éóôïñßá êáé áñ÷éêÜ ÷ñçóéìïðïéÞ-
èçêáí ãéá ôç ìïíôåëïðïßçóç äåäïìÝíùí óå ÂÜóåéò ÄåäïìÝíùí, ïé ïðïßåò óôçñéæü-
ôáí óôçí ðñïóÝããéóç ôùí óõóôçìÜôùí áñ÷åßùí. Ùóôüóï, ç áðëüôçôá ôùí ìïíôÝëùí
áõôþí Þôáí Ýíáò âáóéêüò ëüãïò ãéá ôç ÷ñÞóç ôïõò êáé óôá óýã÷ñïíá ÓÄÂÄ. Óôçí
êáôçãïñßá áõôÞ áíÞêïõí ôá åîÞò ìïíôÝëá: ó÷åóéáêü ìïíôÝëï (relational model),
äéêôõáêü ìïíôÝëï (network model) êáé éåñáñ÷éêü ìïíôÝëï (hierarchical model).
Ôï ó÷åóéáêü ìïíôÝëï ÷ñçóéìïðïéåß ðßíáêåò ãéá ôçí áíáðáñÜóôáóç ôùí äå-
äïìÝíùí êáé ãéá ôçí ðåñéãñáöÞ ôùí ó÷Ýóåùí ìåôáîý ôùí äåäïìÝíùí. ÊÜèå ðßíá-
êáò áðïôåëåßôáé áðü Ýíáí áñéèìü óôçëþí (columns). ÊÜèå óôÞëç ðåñéãñÜöåé ìßá
éäéüôçôá. ¸÷ïíôáò õð’ üøç ìßá åöáñìïãÞ ãéá Ýíá êáôÜóôçìá åíïéêßáóçò ôáéíéþí
(video club) óôï Ó÷Þìá 3.2 ðáñïõóéÜæåôáé Ýíá ðáñÜäåéãìá ó÷åóéáêïý ìïíôÝëïõ,
ôï ïðïßï áðïôåëåßôáé áðü ôñåéò ðßíáêåò: çèïðïéüò, ôáéíßá êáé çèïðïéüò-ôáéíßá. Ï
ðßíáêáò çèïðïéüò-ôáéíßá óõó÷åôßæåé ôïí ðßíáêá çèïðïéüò êáé ôïí ðßíáêá ôáéíßá
êáé äßíåé ðëçñïöïñßåò ó÷åôéêÜ ìå ôïõò çèïðïéïýò ðïõ Ý÷ïõí ëÜâåé ìÝñïò óôéò
óõãêåêñéìÝíåò ôáéíßåò.
Óôï äéêôõáêü ìïíôÝëï äåäïìÝíùí ôá äåäïìÝíá ìïíôåëïðïéïýíôáé ìå åããñáöÝò,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 91

êùäéêüò ôßôëïò êáôçãïñßá DVD VHS


1 The others Ôñüìïõ 3 3
2 Armagedon ÐåñéðÝôåéá 2 1
3 Contact Åð. Öáíôáóßáò 6 5
4 Midnight run ÐåñéðÝôåéáò 2 1
5 Fifth element Åð. Öáíôáóßáò 7 7
Ðßíáêáò Ôáéíéþí
êùäéêüò êùäéêüò
êùäéêüò üíïìá çèïðïéïý ôáéíßáò
1 Nicole Kidman 1 1
2 Jodie Foster 2 3
3 Bruce Willis 3 2
4 Robert de Niro 3 5
5 Charles Grodin 4 4
Ðßíáêáò Çèïðïéþí 5 4
Ðßíáêáò Çèïðïéþí-Ôáéíéþí

Ó÷Þìá 3.2: Ó÷åóéáêü ìïíôÝëï.

åíþ ïé ó÷Ýóåéò ìåôáîý ôùí äåäïìÝíùí ðåñéãñÜöïíôáé ìå óõíäÝóìïõò (links, point-


ers). Ïé åããñáöÝò ìáæß ìå ôïõò óõíäÝóìïõò ó÷çìáôßæïõí ìßá äïìÞ ãñÜöïõ (graph).
Ç ßäéá ôå÷íéêÞ ÷ñçóéìïðïéåßôáé êáé óôï éåñáñ÷éêü ìïíôÝëï ìå ôç âáóéêÞ äéáöïñÜ
üôé ó÷çìáôßæïíôáé éåñáñ÷éêÝò äåíäñéêÝò äïìÝò êáé ü÷é äïìÝò ãñÜöïõ. Óçìåéþíå-
ôáé üôé ç åðåîåñãáóßá åñùôçìÜôùí óôï äéêôõáêü êáé óôï éåñáñ÷éêü ìïíôÝëï åßíáé
áñêåôÜ óýíèåôç åñãáóßá óå áíôßèåóç ìå ôï ó÷åóéáêü ìïíôÝëï. ¸ôóé, ôá ìïíôÝëá
áõôÜ äåí ÷ñçóéìïðïéïýíôáé ðëÝïí áðü ôá óýã÷ñïíá ÓÄÂÄ, óå áíôßèåóç ìå ôï
ó÷åóéáêü ìïíôÝëï (Þ åðåêôÜóåéò áõôïý).

3.3.2 ÌïíôÝëá ÂáóéóìÝíá óå Áíôéêåßìåíá


Óôá ìïíôÝëá áõôÜ ôï âáóéêü óôïé÷åßï åßíáé ôï áíôéêåßìåíï (object). ¸íá áíôé-
êåßìåíï áíôéðñïóùðåýåé ìßá ïíôüôçôá ôïõ ðñáãìáôéêïý êüóìïõ, ç ïðïßá Ý÷åé
óõãêåêñéìÝíåò éäéüôçôåò êáé ó÷åôßæåôáé ìå Üëëåò ïíôüôçôåò.
Ôá åõñýôåñá äéáäåäïìÝíá ìïíôÝëá áíôéêåéìÝíùí åßíáé: ôï ìïíôÝëï ïíôïôÞôùí-
óõó÷åôßóåùí (entity-relationship), ôï áíôéêåéìåíïóôñåöÝò (object-oriented), ôï åí-
íïéïëïãéêü (semantic) êáé ôï óõíáñôçóéáêü (functional). ÅóôéÜæïõìå óôá äýï
ðñþôá ìå ôá ïðïßá èá áó÷ïëçèïýìå óôç óõíÝ÷åéá ôïõ âéâëßïõ. Ôá ìïíôÝëá
92 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

ðïõ âáóßæïíôáé óå áíôéêåßìåíá ÷ñçóéìïðïéïýíôáé ãéá ôç ìïíôåëïðïßçóç ôùí äå-


äïìÝíùí óôï åîùôåñéêü êáé óôï åííïéïëïãéêü åðßðåäï ôçò áñ÷éôåêôïíéêÞò ANSI-
SPARC.

Óôï ìïíôÝëï ïíôïôÞôùí-óõó÷åôßóåùí ÷ñçóéìïðïéïýíôáé ïíôüôçôåò, éäéüôçôåò


êáé óõó÷åôßóåéò. Ãéá ðáñÜäåéãìá, ï ÓõããñáöÝáò ìðïñåß íá ÷áñáêôçñéóèåß ùò
ïíôüôçôá ìå óõãêåêñéìÝíåò éäéüôçôåò üðùò üíïìá, åðßèåôï, äéåýèõíóç. Ìßá Üëëç
ïíôüôçôá åßíáé ôï Âéâëßï ðïõ Ý÷åé ôéò äéêÝò ôïõ éäéüôçôåò üðùò ôßôëïò, áñéèìüò óåëß-
äùí. Ãéá íá ìðïñÝóïõìå íá ðñïóäéïñßóïõìå ôï óõããñáöÝá åíüò âéâëßïõ ðñÝðåé
íá õðÜñ÷åé Ýíáò óõíäåôéêüò êñßêïò ðïõ íá óõíäÝåé ôéò äýï ïíôüôçôåò. Ï óõí-
äåôéêüò áõôüò êñßêïò êáëåßôáé óõó÷Ýôéóç êáé ðñïóäéïñßæåé ôïí ôñüðï óýíäåóçò
äýï Þ ðåñéóóïôÝñùí ïíôïôÞôùí. Ç áíáðáñÜóôáóç åíüò ìïíôÝëïõ ïíôïôÞôùí-
óõó÷åôßóåùí óõíÞèùò ðñáãìáôïðïéåßôáé ìå ôç âïÞèåéá åíüò äéáãñÜììáôïò ðïõ
êáëåßôáé äéÜãñáììá ïíôïôÞôùí-óõó÷åôßóåùí (E-R diagram). Ôï äéÜãñáììá ãéá
ôéò ïíôüôçôåò ÓõããñáöÝáò êáé Âéâëßï äßíåôáé óôï Ó÷Þìá 3.3. Ôï ìïíôÝëï ïíôïôÞôùí-
óõó÷åôßóåùí èá áíáëõèåß äéåîïäéêÜ óôï åðüìåíï êåöÜëáéï.

Ό ν ο α Ε π ί θ ε τ ο  ι ε ύ θ υ ν σ η Τ ί τ λ ο ς Σ ε λ ί δ ε ς

Σ υ γ γ ρ α φ έ α ς Έ χ ε ι γ ρ ά ψ ε ι Β ι β λ ί ο

Ó÷Þìá 3.3: ÄéÜãñáììá ïíôïôÞôùí-óõó÷åôßóåùí.

Ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí ÷ñçóéìïðïéåß áíôéêåßìåíá, éäéüôç-


ôåò (properties) êáé ìåèüäïõò (methods) ãéá ôçí ðåñéãñáöÞ êáé ðñïóðÝëáóç ôùí
äåäïìÝíùí. ÊÜèå áíôéêåßìåíï åðéêïéíùíåß ìå ôï åîùôåñéêü ðåñéâÜëëïí ìÝóù
ôùí ìåèüäùí. Ìßá ìÝèïäïò ìðïñåß íá ìåôáâÜëåé Þ íá äéáâÜóåé ôéò éäéüôçôåò
ôïõ áíôéêåéìÝíïõ. Ìå ôïí ôñüðï áõôü åðéôõã÷Üíåôáé ç åðéêïéíùíßá ìåôáîý ôùí
áíôéêåéìÝíùí. Áíôéêåßìåíá ìå ôéò ßäéåò éäéüôçôåò êáé ìåèüäïõò ïìáäïðïéïýíôáé
óå êëÜóåéò áíôéêåéìÝíùí (object classes), üðùò êáé óôçí ðåñßðôùóç ôùí áíôéêåé-
ìåíïóôñåöþí ãëùóóþí ðñïãñáììáôéóìïý (ð.÷., C++, Java). Ç ìïíôåëïðïßçóç
êáé ïñãÜíùóç ôùí äåäïìÝíùí ìå ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï èá ðåñéãñáöåß
áíáëõôéêÜ óå åðüìåíï êåöÜëáéï (âë. ÊåöÜëáéï 18).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 93

3.3.3 ÖõóéêÜ ÌïíôÝëá ÄåäïìÝíùí


Ôá öõóéêÜ ìïíôÝëá äåäïìÝíùí (physical data models) ÷ñçóéìïðïéïýíôáé ãéá ôçí
áíáðáñÜóôáóç ôùí äåäïìÝíùí óôï êáôþôåñï åðßðåäï. Óå áíôßèåóç ìå ôá åí-
íïéïëïãéêÜ ìïíôÝëá, Ý÷ïõí ðñïôáèåß ðïëý ëßãá öõóéêÜ ìïíôÝëá äåäïìÝíùí. Ôá
ðëÝïí äéáäåäïìÝíá åßíáé ôï ìïíôÝëï åíïðïßçóçò (unifying model) êáé ôï ìïíôÝëï
ðëáéóßïõ-ìíÞìçò (frame-memory model). Ç áíÜëõóç ôùí ìïíôÝëùí áõôþí åßíáé
ðÝñá áðü ôïõò óêïðïýò ôïõ âéâëßïõ áõôïý.

3.4 Ëåéôïõñãßåò ÓÄÂÄ


Ôï ÓÄÂÄ äåí åßíáé ìïíïëéèéêü ëïãéóìéêü. ÁíôéèÝôùò, áðïôåëåßôáé áðü ðïëëÜ
õðïóõóôÞìáôá ðïõ óõíåñãÜæïíôáé áñìïíéêÜ ìåôáîý ôïõò ðñïêåéìÝíïõ íá åðéôåõ-
÷èåß áðïôåëåóìáôéêÞ êáé áðïäïôéêÞ äéá÷åßñéóç ôùí äåäïìÝíùí ôçò âÜóçò. Ìå-
ñéêÝò áðü ôéò âáóéêÝò áðáéôÞóåéò ôïõ ÓÄÂÄ êáëýðôïíôáé áðü ôéò ëåéôïõñãßåò ôïõ
ëåéôïõñãéêïý óõóôÞìáôïò. Ïé ðïëõðëïêüôåñåò äéåñãáóßåò õðïóôçñßæïíôáé áðü
ôï ÓÄÂÄ ÷ñçóéìïðïéþíôáò ùò âÜóç ôéò ëåéôïõñãßåò ôïõ ëåéôïõñãéêïý óõóôÞìáôïò.
ÅðïìÝíùò, ç óùóôÞ ó÷åäßáóç åíüò ÓÄÂÄ ðñïûðïèÝôåé ôç ìåëÝôç ôçò åðéêïéíùíßáò
ìåôáîý ÓÄÂÄ êáé ëåéôïõñãéêïý óõóôÞìáôïò.
Óôï Ó÷Þìá 3.4 ðáñïõóéÜæïíôáé ôá óçìáíôéêüôåñá õðïóõóôÞìáôá åíüò ÓÄÂÄ,
êáèþò êáé ï ôñüðïò ðñáãìáôïðïßçóçò ôçò ìåôáîý ôïõò åðéêïéíùíßáò. Ïé óõ-
ìðáãåßò ãñáììÝò äçëþíïõí ñïÞ äåäïìÝíùí êáé åëÝã÷ïõ, åíþ ïé äéáêåêïììÝíåò
ãñáììÝò äçëþíïõí ìüíï ñïÞ åëÝã÷ïõ. Áò åóôéÜóïõìå óôïí ôñüðï ëåéôïõñãßáò
ôùí õðïóõóôçìÜôùí êáôÜ ôçí åðåîåñãáóßá åíüò åñùôÞìáôïò ðïõ ôßèåôáé áðü Ýíá
÷ñÞóôç.

• ÌåôáãëùôôéóôÞò ÅñùôçìÜôùí DML (DML query compiler). Ðñüêåéôáé


ãéá ôï õðïóýóôçìá ðïõ åßíáé õðåýèõíï ãéá ôç ìåôáãëþôôéóç ôïõ åñùôÞìá-
ôïò ôïõ ÷ñÞóôç. Ôï åñþôçìá äßíåôáé óå ãëþóóá ÷åéñéóìïý äåäïìÝíùí êáé
ìåôáôñÝðåôáé óå åóùôåñéêÞ áíáðáñÜóôáóç êáôÜëëçëç ãéá åðåîåñãáóßá. Ïé
ìåôáãëùôôéóìÝíåò åíôïëÝò ðñïùèïýíôáé óôç ìç÷áíÞ åêôÝëåóçò.

• ÌåôáãëùôôéóôÞò Åíôïëþí DDL (DDL compiler). Åßíáé õðåýèõíïò ãéá ôç


ìåôáãëþôôéóç ôùí åíôïëþí ôçò ãëþóóáò ïñéóìïý äåäïìÝíùí. Ïé åíôïëÝò
áõôÝò äßíïíôáé óõíÞèùò áðü äéá÷åéñéóôÝò Þ ðñï÷ùñçìÝíïõò ÷ñÞóôåò. ¼ðùò
Ý÷åé Þäç áíáöåñèåß, ç åêôÝëåóç ôùí åíôïëþí áõôþí äçìéïõñãåß ôç äïìÞ
(ó÷Þìá) ôçò ÂÄ. Ïé ìåôáãëùôôéóìÝíåò åíôïëÝò ðñïùèïýíôáé óôç ìç÷áíÞ
åêôÝëåóçò.

• Ìç÷áíÞ ÅêôÝëåóçò (execution engine). Ï ôñüðïò áðÜíôçóçò ôïõ åñùôÞìá-


ôïò ôïõ ÷ñÞóôç ðñïóäéïñßæåôáé áðü ôç ìç÷áíÞ åêôÝëåóçò. Óçìåéþíåôáé üôé
94 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

Μ ε τ α γ λ ω τ τ ι σ τ ή ς Χ ρ ή σ τ ε ς κ α ι

Ε ρ ω τ η  ά τ ω ν D M L Ε φ α ρ  ο γ έ ς

Π ί ν α κ α ς Κ λ ε ι δ α ρ ι ώ ν

Έ λ ε γ χ ο ς Μ ε τ α γ λ ω τ τ ι σ τ ή ς

Μ η χ α ν ή Ε κ τ έ λ ε σ η ς

Τ α υ τ ο χ ρ ο ν ι σ  ο ύ Ε ν τ ο λ ώ ν D D L

ι α χ ε ι ρ ι σ τ ή ς Σ υ ν α λ λ α γ ώ ν

ι α χ ε ι ρ ι σ τ ή ς Α ρ χ ε ί ω ν

ι α χ ε ι ρ ι σ τ ή ς

ι α χ ε ι ρ ι σ τ ή ς

Ε π α ν ά κ τ η σ η ς κ α ι

Α π ο  ο ν ω τ ι κ ή ς Μ ν ή  η ς

Η  ε ρ ο λ ο γ ί ο υ

ι α χ ε ι ρ ι σ τ ή ς Α π ο θ ή κ η ς

Α π ο  ο ν ω τ ι κ ή Μ ν ή  η

Β ά σ η ε δ ο  έ ν ω ν

Σ τ α τ ι σ τ ι κ ά Λ ε ξ ι κ ό

Κ α τ ά λ ο γ ο ι

Σ τ ο ι χ ε ί α ε δ ο  έ ν ω ν

Α ρ χ ε ί α ε δ ο  έ ν ω ν

Ó÷Þìá 3.4: ÄïìÞ åíüò ÓÄÂÄ.

ðñéí ôçí åðåîåñãáóßá ôïõ åñùôÞìáôïò ðñïçãåßôáé ç äéáäéêáóßá ôçò âåëôé-


óôïðïßçóçò, üðïõ ðñïóäéïñßæïíôáé åíáëëáêôéêïß ôñüðïé åðåîåñãáóßáò êáé
åðéëÝãåôáé ï ôñüðïò åðåîåñãáóßáò ðïõ óôáôéóôéêÜ èá Ý÷åé ôï ìéêñüôåñï
êüóôïò. ËáìâÜíïíôáé õð’ üøç ðáñÜãïíôåò üðùò ï áíáìåíüìåíïò áñéè-
ìüò ðñïóðåëÜóåùí óôï äßóêï, ôï êüóôïò åðåîåñãáóßáò ãéá ôáîéíüìçóç ôùí
áðïôåëåóìÜôùí.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 95

• ¸ëåã÷ïò Ôáõôï÷ñïíéóìïý (concurrency control manager). ÐïëëÝò öïñÝò


åìöáíßæåôáé ç ðåñßðôùóç üðïõ ðïëëÜ åñùôÞìáôá áíáöÝñïíôáé óôï ßäéï óý-
íïëï äåäïìÝíùí åßôå ãéá áíÜãíùóç åßôå ãéá åíçìÝñùóç. Åßíáé óçìáíôéêü
ïé ëåéôïõñãßåò áõôÝò íá ìç ãßíïíôáé áíåîÝëåãêôá, äéüôé õðÜñ÷åé êßíäõíïò
êáôáóôñïöÞò ôùí äåäïìÝíùí êáé áðþëåéáò ÷ñÞóéìçò ðëçñïöïñßáò. Ôï õðï-
óýóôçìá åëÝã÷ïõ ôáõôï÷ñïíéóìïý ðñïóäéïñßæåé áí ôï åñþôçìá ôïõ ÷ñÞóôç
ìðïñåß íá åêôåëåóèåß Üìåóá Þ ðñÝðåé íá êáèõóôåñÞóåé ìÝ÷ñé íá ôåëåéþóåé
ç åêôÝëåóç Üëëùí ëåéôïõñãéþí. Ï Ýëåã÷ïò ôáõôï÷ñïíéóìïý ÷ñçóéìïðïéåß
ìç÷áíéóìïýò êëåéäþìáôïò (locking) þóôå íá åðéôñÝðåé Þ íá áðïôñÝðåé ôçí
ðñüóâáóç.

• Äéá÷åéñéóôÞò ÅðáíÜêôçóçò êáé Çìåñïëïãßïõ (logging and recovery man-


ager). ÕðÜñ÷ïõí ðåñéðôþóåéò üðïõ ï ôåñìáôéóìüò ìßáò óõíáëëáãÞò äåí
ðñáãìáôïðïéåßôáé ïìáëÜ. ×áñáêôçñéóôéêü ðáñÜäåéãìá åßíáé ç ðáýóç ëåé-
ôïõñãßáò ôïõ óõóôÞìáôïò ëüãù ðôþóçò ôÜóçò Þ ëüãù ðñïâëçìÜôùí óôï ëåé-
ôïõñãéêü óýóôçìá. ÌåôÜ ôçí åðáíáöïñÜ ôïõ óõóôÞìáôïò áðáéôåßôáé Ýëåã-
÷ïò ãéá ôçí áêåñáéüôçôá ôùí äåäïìÝíùí. ÓõíÞèùò, ôï ÓÄÂÄ êáôá÷ùñßæåé
óå çìåñïëüãéï (log) üëåò ôéò ôñïðïðïéÞóåéò ðïõ ðñáãìáôïðïéïýíôáé, Ýôóé
þóôå íá åßíáé óå èÝóç íá åðáíáëáìâÜíåé (redo) Þ íá áðïññßðôåé (undo)
ïñéóìÝíåò åíÝñãåéåò áíáëüãùò ìå ôç öýóç ôïõ ðñïâëÞìáôïò.

• Äéá÷åéñéóôÞò Óõíáëëáãþí (transaction manager). Ìßá óõíáëëáãÞ áðïôå-


ëåßôáé áðü ìßá Þ ðåñéóóüôåñåò ëåéôïõñãßåò ðïõ ðñÝðåé íá ïëïêëçñùèïýí.
Áí ìßá áðü ôéò ëåéôïõñãßåò áðïôý÷åé, ôüôå ðñÝðåé íá áêõñùèåß ïëüêëçñç
ç óõíáëëáãÞ. ×áñáêôçñéóôéêü ðáñÜäåéãìá åßíáé ç áíÜëçøç åíüò ðïóïý
áðü Ýíáí ôñáðåæéêü ëïãáñéáóìü. Ç óõíáëëáãÞ áõôÞ áðïôåëåßôáé áðü äýï
ëåéôïõñãßåò: á) áíÜëçøç ÷ñçìÜôùí êáé â) åíçìÝñùóç ôïõ õðïëïßðïõ. Áí
áðïôý÷åé ïðïéáäÞðïôå áðü ôéò äýï ëåéôïõñãßåò ðñÝðåé íá áêõñùèåß êáé ç
Üëëç.

• Äéá÷åéñéóôÞò Áñ÷åßùí (file manager). Óå Ýíá áñ÷åßï áðïèçêåýïíôáé äå-


äïìÝíá, âïçèçôéêÝò äïìÝò äåäïìÝíùí, ôï ëåîéêü äåäïìÝíùí êáé Üëëåò ðëç-
ñïöïñßåò áðáñáßôçôåò ãéá ôï ÓÄÂÄ. Ï ôñüðïò ïñãÜíùóçò ôùí áñ÷åßùí
áõôþí ïñßæåôáé áðü ôï äéá÷åéñéóôÞ áñ÷åßùí.

• Äéá÷åéñéóôÞò ÁðïìïíùôéêÞò ÌíÞìçò (buffer manager). Ðñüêåéôáé ãéá ôï


õðïóýóôçìá ðïõ ïñßæåé ôá ôìÞìáôá ôçò ÂÄ ðïõ èá âñßóêïíôáé óôçí êý-
ñéá ìíÞìç. ÊÜèå öïñÜ ðïõ õðÜñ÷åé ç áíÜãêç ðñïóðÝëáóçò äåäïìÝíùí,
åëÝã÷åôáé ç äéáèåóéìüôçôá ôùí äåäïìÝíùí óôçí êýñéá ìíÞìç. Ï ôñüðïò
áíôéêáôÜóôáóçò ôùí äåäïìÝíùí èá åîçãçèåß óôï ÊåöÜëáéï 11.
96 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

• Äéá÷åéñéóôÞò ÁðïèÞêçò (storage manager). Ôï õðïóýóôçìá áõôü åßíáé


õðåýèõíï ãéá ôïí ôñüðï öõóéêÞò áðïèÞêåõóçò ôùí äåäïìÝíùí óôç äåõ-
ôåñåýïõóá ìíÞìç êáé ãéá ôïí Ýëåã÷ï ôçò ìåôáêßíçóçò äåäïìÝíùí áðü êáé
ðñïò ôçí êýñéá ìíÞìç ôïõ óõóôÞìáôïò. Êáèïñßæåé ôç èÝóç áðïèÞêåõóçò
ôùí äåäïìÝíùí êáé äßíåé óôï Äéá÷åéñéóôÞ ÁðïìïíùôéêÞò ÌíÞìçò äåäïìÝíá
ìå ôç ìïñöÞ óåëßäùí (blocks).

H ÂÜóç ÄåäïìÝíùí óå öõóéêü åðßðåäï áðïôåëåßôáé áðü ôÝóóåñá äéáöïñåôéêÜ


ôìÞìáôá äåäïìÝíùí ðïõ åßíáé:

• Áñ÷åßá ÄåäïìÝíùí. Åßíáé ï êýñéïò ÷þñïò áðïèÞêåõóçò ôùí äåäïìÝíùí ôçò


ÂÄ. Åäþ áðïèçêåýïíôáé ïé ðßíáêåò ôçò ÂÄ.

• ÊáôÜëïãïé. Ïé êáôÜëïãïé áðïôåëïýí ìåèüäïõò ðñïóðÝëáóçò ãéá ôç äéåõêü-


ëõíóç ôçò äéáäéêáóßáò áíáæÞôçóçò äåäïìÝíùí. Ðáñáäåßãìáôá êáôáëüãùí
åßíáé ïé äåíäñéêÝò äïìÝò ðñïóðÝëáóçò (âë. ÊåöÜëáéï 12) êáé ï êáôáêåñ-
ìáôéóìüò (âë. ÊåöÜëáéï 13).

• ÓôáôéóôéêÜ Óôïé÷åßá. Åßíáé äåäïìÝíá ðïõ áðïèçêåýåé ôï ßäéï ôï ÓÄÂÄ ìå


óôü÷ï ôçí åêôßìçóç êüóôïõò ôùí åñùôçìÜôùí Ýôóé þóôå íá ìåéùèåß êáôÜ ôï
äõíáôüí ï ÷ñüíïò åðåîåñãáóßáò ôùí åñùôçìÜôùí.

• Ëåîéêü ÄåäïìÝíùí. ¼ðùò Ý÷åé áíáöåñèåß óå ðñïçãïýìåíç ðáñÜãñáöï, ôï


áðïôÝëåóìá ôçò ìåôÜöñáóçò ôùí åíôïëþí ôçò ãëþóóáò ïñéóìïý äåäïìÝíùí
áðïèçêåýåôáé óå åéäéêü áñ÷åßï ðïõ êáëåßôáé ëåîéêü äåäïìÝíùí. Óôï áñ÷åßï
áõôü áðïèçêåýïíôáé ìåôá-äåäïìÝíá, äçëáäÞ ðëçñïöïñßåò ðïõ áöïñïýí óôá
ßäéá ôá áðïèçêåõìÝíá äåäïìÝíá.

Ï ôñüðïò ëåéôïõñãßáò ôùí äéáöïñåôéêþí õðïóõóôçìÜôùí åíüò ÓÄÂÄ áíáëýå-


ôáé óå âÜèïò óå åðüìåíá êåöÜëáéá ôïõ âéâëßïõ, üðïõ ðåñéãñÜöïíôáé ïé ëåðôïìÝ-
ñåéåò õëïðïßçóçò ôïõò óå óýã÷ñïíá óõóôÞìáôá.

3.5 Óýíïøç
Ç áñ÷éôåêôïíéêÞ ôñéþí åðéðÝäùí ANSI-SPARC áðïôåëåß ìßá áðü ôéò ðñþôåò ðñï-
óðÜèåéåò ãéá ôç ìåëÝôç ôçò äïìÞò åíüò ÓÄÂÄ. Ç áñ÷éôåêôïíéêÞ áõôÞ äéá÷ùñßæåé
Ýíá ÓÄÂÄ óå ôñßá åðßðåäá: ôï åîùôåñéêü, ôï åóùôåñéêü êáé ôï åííïéïëïãéêü.
ÊÜèå åðßðåäï ÷áñáêôçñßæåôáé áðü ôï äéêü ôïõ ó÷Þìá.
Ï âáóéêüò ôñüðïò åðéêïéíùíßáò ÷ñçóôþí êáé ÓÄÂÄ åßíáé ç ÷ñÞóç ìßáò ãëþó-
óáò ÂÜóåùí ÄåäïìÝíùí ðïõ áðïôåëåßôáé áðü äýï âáóéêÜ ôìÞìáôá: á) ôç ãëþóóá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 97

ïñéóìïý äåäïìÝíùí, ìå ôçí ïðïßá ïñßæïíôáé ïé ôýðïé ôùí äåäïìÝíùí êáé äçìéïõñ-
ãåßôáé ç äïìÞ ôçò âÜóçò êáé â) ôç ãëþóóá ÷åéñéóìïý äåäïìÝíùí, ìå ôçí ïðïßá
ìðïñïýìå íá äéáôõðþíïõìå åñùôÞìáôá áíÜêôçóçò, åéóáãùãÞò, äéáãñáöÞò êáé
åíçìÝñùóçò óôï ÓÄÂÄ.
Ç äçìéïõñãßá åíüò ìïíôÝëïõ áíáðáñÜóôáóçò ôïõ ðñáãìáôéêïý êüóìïõ áðï-
ôåëåß óçìáíôéêü óôÜäéï ãéá ôçí êáôáóêåõÞ ìßáò ÂÜóçò ÄåäïìÝíùí. Äéáêñßíïíôáé
äýï âáóéêÝò êáôçãïñßåò ìïíôÝëùí: á) ìïíôÝëá âáóéóìÝíá óå åããñáöÝò êáé â)
ìïíôÝëá âáóéóìÝíá óå áíôéêåßìåíá. Áðü ôçí ðñþôç êáôçãïñßá îå÷ùñßæïõìå ôï
ó÷åóéáêü ìïíôÝëï ðïõ Ý÷åé ãíùñßóåé åõñåßá áðïäï÷Þ ëüãù ôçò áðëüôçôáò êáé
ôçò ìáèçìáôéêÞò ðåñéãñáöÞò ôïõ, åíþ áðü ôç äåýôåñç êáôçãïñßá ôá ðëÝïí äéá-
äåäïìÝíá åßíáé ôï ìïíôÝëï ïíôïôÞôùí-óõó÷åôßóåùí êáé ôï áíôéêåéìåíïóôñåöÝò
ìïíôÝëï äåäïìÝíùí.
¸íá ÓÄÂÄ áðïôåëåßôáé áðü ðïëëÜ õðïóõóôÞìáôá êÜèå Ýíá áðü ôá ïðïßá
åßíáé õðåýèõíï ãéá ìßá îå÷ùñéóôÞ ëåéôïõñãßá. Óôá åðüìåíá êåöÜëáéá èá åîåôÜ-
óïõìå ëåðôïìåñþò ôá ðåñéóóüôåñá áðü ôá õðïóõóôÞìáôá áõôÜ.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


3.1. Íá ðåñéãñáöïýí ïé âáóéêÝò êáôçãïñßåò ÷ñçóôþí åíüò ÓÄÂÄ.

3.2. Íá áíáöåñèïýí ïé äéêáéïäïóßåò ôïõ äéá÷åéñéóôÞ åíüò ÓÄÂÄ.

3.3. Ïé ðñïãñáììáôéóôÝò êáé ìç÷áíéêïß ëïãéóìéêïý ìå áñìïäéüôçôá óôçí õëïðïß-


çóç ôïõ ßäéïõ ôïõ ÓÄÂÄ äåí êáôáôÜóóïíôáé óôçí êáôçãïñßá ôùí ÷ñçóôþí ôïõ
ÓÄÂÄ. Íá áíáöÝñåôå ôéò áñìïäéüôçôÝò ôïõò.

3.4. ÐåñéãñÜøôå ôçí áñ÷éôåêôïíéêÞ ôñéþí åðéðÝäùí ANSI-SPARC. ÐïéÝò ïé äéá-


öïñÝò ìåôáîý ôïõ åîùôåñéêïý êáé ôïõ åííïéïëïãéêïý åðéðÝäïõ;

3.5. Áíáëýóôå ôïõò üñïõò ëïãéêÞ êáé öõóéêÞ áíåîáñôçóßá äåäïìÝíùí. Ãéá ðïéïýò
ëüãïõò êáôÜ ôç ãíþìç óáò ïé äýï áõôÝò ìïñöÝò áíåîáñôçóßáò åßíáé óçìáíôéêÝò;

3.6. ÈåùñÞóôå Ýíá ðñïãñáììáôéóôéêü ðåñéâÜëëïí. Ðùò ìðïñïýìå íá ìåôáöÝ-


ñïõìå ôéò Ýííïéåò ôçò ëïãéêÞò êáé öõóéêÞò áíåîáñôçóßáò äåäïìÝíùí óôçí ðåñß-
ðôùóç ôïõ ïñéóìïý êáé ôçò åðåîåñãáóßáò åíüò äéóäéÜóôáôïõ ðßíáêá;

3.7. ÐåñéãñÜøôå ôéò Ýííïéåò ó÷Þìá ÂÜóçò ÄåäïìÝíùí êáé óôéãìéüôõðï ÂÜóçò Äå-
äïìÝíùí. Íá äþóåôå Ýíá ðáñÜäåéãìá.
98 ÊåöÜëáéï 3. Áñ÷éôåêôïíéêÞ ÓõóôçìÜôùí

3.8. Íá ðåñéãñáöåß ç ÷ñçóéìüôçôá ôùí ãëùóóþí ÂÜóåùí ÄåäïìÝíùí êáé íá


åîçãÞóåôå ôç äéáöïñÜ ìåôáîý ôçò ãëþóóáò ïñéóìïý äåäïìÝíùí êáé ôçò ãëþóóáò
÷åéñéóìïý äåäïìÝíùí.

3.9. ÁíáöÝñåôå ôéò äéáäéêáóôéêÝò êáé ôéò ìç äéáäéêáóôéêÝò ãëþóóåò ðñïãñáììá-


ôéóìïý, ôéò ïðïßåò ãíùñßæåôå.

3.10. ÐïéÝò åßíáé ïé äõíáôüôçôåò ôùí ãëùóóþí ôÝôáñôçò ãåíéÜò;

3.11. Ôé åßíáé Ýíá ìïíôÝëï äåäïìÝíùí; Íá ðåñéãñáöïýí ïé âáóéêÝò êáôçãïñßåò


ìïíôÝëùí êáé íá äþóåôå Ýíá ðáñÜäåéãìá ó÷åóéáêïý ìïíôÝëïõ.

3.12. ÐïéÜ åßíáé ôá âáóéêÜ õðïóõóôÞìáôá åíüò ÓÄÂÄ; ÐåñéãñÜøôå óõíïðôéêÜ ôï


êáèÝíá áðü áõôÜ.

3.13. ÈåùñÞóôå ìßá áåñïðïñéêÞ åôáéñåßá ðïõ äéáôçñåß ìßá ÂÜóç ÄåäïìÝíùí ìå
üëá ôá óôïé÷åßá ôùí êñáôÞóåùí ãéá ôéò ðôÞóåéò. ÐñïóðáèÞóôå íá äéáêñßíåôå ôïõò
äéáöïñåôéêïýò ÷ñÞóôåò ôçò âÜóçò êáé íá ðñïóäéïñßóåôå ôá äåäïìÝíá ôçò âÜóçò
ðïõ ðéèáíþò íá ÷ñåéáóèåß ï êáèÝíáò áíáëüãùò ìå ôéò áíÜãêåò ôïõ. Ãéá ðáñÜ-
äåéãìá, Ýíáò ðïëßôçò åðéèõìåß íá ãíùñßæåé ôéò áêñéâåßò þñåò ôùí ðôÞóåùí áðü
ôçí áöåôçñßá óôïí ðñïïñéóìü.

3.14. Ãéá ôï ðñïçãïýìåíï ðáñÜäåéãìá, ðñïóðáèÞóôå íá ðñïäéáãñÜøåôå ôá åîù-


ôåñéêÜ ó÷Þìáôá ôùí äéáöüñùí ÷ñçóôþí ôçò âÜóçò, êáèþò êáé ôá áíôßóôïé÷á ó÷Þ-
ìáôá óôï åííïéïëïãéêü êáé åóùôåñéêü åðßðåäï.

3.15. Ãéá ôï ðñïçãïýìåíï ðáñÜäåéãìá, ðñïóðáèÞóôå íá åíôïðßóåôå ôéò êõñéüôå-


ñåò ïíôüôçôåò êáé ôéò ìåôáîý ôïõò óõó÷åôßóåéò êáé íá ôéò ðáñïõóéÜóåôå ìå Ýíá
äéêü óáò äéáãñáììáôéêü ôñüðï.
ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí
4
Ôï ìïíôÝëï oíôïôÞôùí-óõó÷åôßóåùí (ÏÓ) âáóßæåôáé óôç èåþñçóç üôé ï ðñáã-
ìáôéêüò êüóìïò áðïôåëåßôáé áðü ïíôüôçôåò ìå ÷áñáêôçñéóôéêÜ, åíþ ìåôáîý ôùí
ïíôïôÞôùí äéáêñßíïõìå óõó÷åôßóåéò. Áíáðôý÷èçêå þóôå êáôÜ ôï ó÷åäéáóìü ìßáò
ÂÜóçò ÄåäïìÝíùí íá äéåõêïëýíåôáé ï ïñéóìüò åíüò ó÷Þìáôïò ðïõ íá áíáðáñé-
óôÜ ôç óõíïëéêÞ ëïãéêÞ äïìÞ ôçò âÜóçò. Ôï ìïíôÝëï ÏÓ ðñïôÜèçêå áðü ôïí
Chen [Chen 1976] ùò Ýíáò ôñüðïò åðéêïéíùíßáò ìåôáîý ÷ñçóôþí êáé ó÷åäéáóôþí
ÂÄ. ÁöïñìÞ õðÞñîå ç ìåãÜëç äéáöïñÜ ðïõ óõíÞèùò õðÜñ÷åé óôïí ôñüðï óêÝ-
øçò ÷ñçóôþí êáé ó÷åäéáóôþí. ÌåñéêÝò öïñÝò êáôÜ ôç ó÷åäßáóç ãßíïíôáé ëÜèç
ðïõ ïöåßëïíôáé ôüóï óôçí Üãíïéá ôùí ÷ñçóôþí üóï êáé óôïí áíåðáñêÞ ó÷åäéá-
óìü ëüãù Ýëëåéøçò ãíþóçò ôïõ ãíùóôéêïý áíôéêåéìÝíïõ áðü ôïõò ó÷åäéáóôÝò. Ç
áðëÞ äïìÞ ôïõ ìïíôÝëïõ ÏÓ ãåöõñþíåé ôï ÷Üóìá ìåôáîý ÷ñçóôþí êáé ó÷åäéá-
óôþí. Åêôüò áðü ôï ìïíôÝëï ÏÓ õðÜñ÷ïõí êáé Üëëá óçìáóéïëïãéêÜ (semantic)
ìïíôÝëá, áëëÜ ôï ìïíôÝëï ÏÓ åßíáé åîáéñåôéêÜ äéáäåäïìÝíï êáé õðÜñ÷ïõí ðïëëÜ
åñãáëåßá ó÷åäßáóçò ÂÜóåùí ÄåäïìÝíùí, ôá ïðïßá óôçñßæïíôáé óå áõôü.

4.1 ÄéáãñÜììá ÏíôïôÞôùí-Óõó÷åôßóåùí


Ï óõíçèÝóôåñïò ôñüðïò ðåñéãñáöÞò ôïõ ìïíôÝëïõ ÏÓ åßíáé ç ÷ñÞóç äéáãñáì-
ìÜôùí ïíôïôÞôùí-óõó÷åôßóåùí (ER diagrams). Ôá äéáãñÜììáôá áõôÜ ðáñÝ÷ïõí

99
100 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

Ýíáí áðëü êáé êáôáíïçôü ôñüðï ðåñéãñáöÞò ôçò äïìÞò ôùí äåäïìÝíùí ôçò ÂÄ,
ôùí ïíôïôÞôùí, ôùí óõó÷åôßóåùí êáé ôùí ÷áñáêôçñéóôéêþí. Óôï Ó÷Þìá 4.1 ðá-
ñïõóéÜæåôáé ôï äéÜãñáììá ÏÓ ãéá ìßá ÂÄ ðïõ õðïóôçñßæåé ìßá óõíäñïìçôéêÞ
çëåêôñïíéêÞ âéâëéïèÞêç.
ό ν ο  α

τ η λ έ φ ω ν ο

τ ί τ λ ο ς

τ ί τ λ ο ς
α ρ ι θ  ό ς _

κ ω δ ι κ ό ς

κ ω δ ι κ ό ς P D F

σ υ ν δ ρ ο  η τ ώ ν

κ ω δ ι κ ό ς

Μ N N 1

Σ υ γ γ ρ α φ ή

ρ θ ρ ο ν ή κ ε ι Γ ν ω σ τ ι κ ή Π ε ρ ι ο χ ή
Σ υ γ γ ρ α φ έ α ς Ά

ρ θ ρ ο υ Α
Ά

χ ώ ρ α

δ ι ε ύ θ υ ν σ η

σ ύ ν ο λ ο _ ά ρ θ ρ ω ν

ό λ η

Τ Κ

ο δ ό ς

α ρ ι θ  ό ς Μ

α ό

Σ υ ν δ ρ ο  ή

α ρ χ ι κ ή _ σ ε λ ί δ α

N N
τ ε ύ χ ο ς

έ ω ς

τ ό  ο ς

τ ε λ ι κ ή _ σ ε λ ί δ α

 η  ο σ ί ε υ σ η

 η  ο σ ί ε υ σ η

Π ρ α κ τ ι κ ώ ν

Π ε ρ ι ο δ ι κ ο ύ

α ρ χ ι κ ή _ σ ε λ ί δ α

Π Κ

1
τ ε λ ι κ ή _ σ ε λ ί δ α Α

1 κ ω δ ι κ ό ς

η  ε ρ ο  η ν ί α

Σ υ ν δ ρ ο  η τ ή ς

κ ω δ ι κ ό ς

Π ρ α κ τ ι κ ά

σ υ ν έ δ ρ ι ο

Π ε ρ ι ο δ ι κ ό

Σ υ ν ε δ ρ ί ο υ

τ ό ο ς

π κ ω δ ι κ ό ς

τ ί τ λ ο ς

N N δ ι ε ύ θ υ ν σ η

ό ν ο  α

τ η λ έ φ ω ν ο

Έ κ δ ο σ η

Έ κ δ ο σ η

Π ρ α κ τ ι κ ώ ν

Π ε ρ ι ο δ ι κ ο ύ

1 1

Ε κ δ ο τ ι κ ό ς Ο ί κ ο ς

κ ω δ ι κ ό ς

τ η λ έ φ ω ν ο

ό ν ο  α δ ι ε ύ θ υ ν σ η

Ó÷Þìá 4.1: ÄéÜãñáììá ÏÓ.

Ôá âáóéêÜ ãåùìåôñéêÜ ó÷Þìáôá ðïõ óõíèÝôïõí Ýíá äéÜãñáììá ÏÓ åßíáé: ôï


ïñèïãþíéï, ï ñüìâïò, ç Ýëëåéøç, ôï åõèýãñáììï ôìÞìá1 . Óôï äéÜãñáììá ÏÓ, êÜèå
óýíïëï ïíôïôÞôùí ðáñéóôÜíåôáé áðü Ýíá ïñèïãþíéï, êÜèå ÷áñáêôçñéóôéêü ìå ìßá
Ýëëåéøç êáé êÜèå óýíïëï óõó÷åôßóåùí ìå Ýíá ñüìâï. Ôá åõèýãñáììá ôìÞìáôá
÷ñçóéìïðïéïýíôáé ãéá íá äçëþóïõí ôá ÷áñáêôçñéóôéêÜ åíüò óõíüëïõ ïíôïôÞôùí,
êáèþò åðßóçò êáé ãéá íá äçëþóïõí ôç óýíäåóç åíüò óõíüëïõ ïíôïôÞôùí ìå Ýíá
1
Óôç óõíÝ÷åéá èá áíáëõèåß ç ÷ñÞóç ïñéóìÝíùí óõìðëçñùìáôéêþí óõìâüëùí, üðùò äéðëÞ Ýëëåéøç,
äéðëüò ñüìâïò, äéðëÞ ãñáììÞ êáé Üëëá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 101

óýíïëï óõó÷åôßóåùí. Óôï äéÜãñáììá ôïõ Ó÷Þìáôïò 4.1 ðáñáôçñïýìå ôá åîÞò


óýíïëá:

• Óýíïëá ÏíôïôÞôùí: ÓõããñáöÝáò, ¢ñèñï, ÓõíäñïìçôÞò, Ðåñéïäéêü, Ðñá-


êôéêÜ Óõíåäñßïõ, ÃíùóôéêÞ Ðåñéï÷Þ, Åêäïôéêüò Ïßêïò.

• Óýíïëá Óõó÷åôßóåùí: ÓõããñáöÞ ¢ñèñïõ, Äçìïóßåõóç Ðåñéïäéêïý, Äçìïóß-


åõóç Ðñáêôéêþí, ¸êäïóç Ðåñéïäéêïý, ¸êäïóç Ðñáêôéêþí, ÓõíäñïìÞ, ÁíÞ-
êåé.

4.2 Óýíïëá ÏíôïôÞôùí


Ìßá ïíôüôçôá åßíáé Ýíá áíôéêåßìåíï ôïõ ðñáãìáôéêïý êüóìïõ, ôï ïðïßï åßíáé
óáöþò äéáêåêñéìÝíï êáé äéá÷ùñßóéìï áðü üëá ôá Üëëá áíôéêåßìåíá. Ìßá ïíôü-
ôçôá ìðïñåß íá åßíáé êÜôé "÷åéñïðéáóôü", üðùò ãéá ðáñÜäåéãìá Ýíáò óõããñáöÝáò,
Þ ìðïñåß íá åßíáé êáé ìßá áöçñçìÝíç Ýííïéá, üðùò ãéá ðáñÜäåéãìá ç óõããñáöÞ
åíüò âéâëßïõ. ¸íá óýíïëï ïíôïôÞôùí (entity set) åßíáé ìßá óõëëïãÞ áðü ïíôüôçôåò
ôïõ ßäéïõ ôýðïõ ðïõ Ý÷ïõí ôéò ßäéåò éäéüôçôåò Þ ìïéñÜæïíôáé ôá ßäéá ÷áñáêôçñé-
óôéêÜ. Ãéá ðáñÜäåéãìá, ç óõëëïãÞ üëùí ôùí âéâëßùí ìßáò âéâëéïèÞêçò ìðïñåß íá
ïñéóèåß ùò ôï óýíïëï ïíôïôÞôùí Âéâëßï.
¸íá óýíïëï ïíôïôÞôùí ìðïñåß íá Ý÷åé Ýíá Þ ðåñéóóüôåñá ÷áñáêôçñéóôéêÜ.
Ãéá ðáñÜäåéãìá, ôá ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ ïíôïôÞôùí Âéâëßï ìðïñåß íá
åßíáé ï ôßôëïò, ï êùäéêüò áñéèìüò ISBN, ï áñéèìüò óåëßäùí ê.ë.ð. Ïé ôéìÝò åíüò
õðïóõíüëïõ áõôþí ôùí ÷áñáêôçñéóôéêþí ìðïñïýí íá ðñïóäéïñßóïõí ìå ìïíáäéêü
ôñüðï ìßá ïíôüôçôá ôïõ óõíüëïõ. Ãéá ðáñÜäåéãìá, ãíùñßæïõìå üôé ï áñéèìüò ISBN
åßíáé ìïíáäéêüò ãéá êÜèå âéâëßï, åðïìÝíùò ìðïñïýìå íá ðñïóäéïñßóïõìå ðëÞñùò
ôï óõãêåêñéìÝíï âéâëßï áí ãíùñßæïõìå ôïí áñéèìü ISBN.

4.2.1 Ôýðïé ×áñáêôçñéóôéêþí


Óôï ìïíôÝëï ÏÓ Ýíá ÷áñáêôçñéóôéêü ìðïñåß íá Ý÷åé äéáöïñåôéêÝò ìïñöÝò áíáëü-
ãùò ìå ôï ðëÞèïò êáé ôïí ôýðï ôùí ôéìþí ðïõ áõôü ëáìâÜíåé. ÁíáëõôéêÜ, Ý÷ïõìå
ôïõò åîÞò ôýðïõò ÷áñáêôçñéóôéêþí:

• Áðëü Þ Óýíèåôï. ¸íá áðëü (simple) Þ áôïìéêü (atomic) ÷áñáêôçñéóôéêü


äåí ìðïñåß íá äéá÷ùñéóèåß óå ìéêñüôåñá ôìÞìáôá. Ôá óýíèåôá (compos-
ite) ÷áñáêôçñéóôéêÜ ìðïñïýí íá ÷ùñéóèïýí óå ìéêñüôåñá ôìÞìáôá êáé ôå-
ëéêÜ óå áðëÜ ÷áñáêôçñéóôéêÜ. Ç ÷ñÞóç óõíèÝôùí ÷áñáêôçñéóôéêþí åßíáé
åíäåäåéãìÝíç üôáí åðéèõìïýìå íá áíáöåñüìáóôå óå ïëüêëçñï ôï ÷áñáêôç-
ñéóôéêü, åíþ óå êÜðïéåò Üëëåò ðåñéðôþóåéò åðéèõìïýìå íá áíáöåñüìáóôå
102 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

óôá åðéìÝñïõò ôìÞìáôÜ ôïõ. Ãéá ðáñÜäåéãìá, èá ìðïñïýóáìå íá áíôéêáôá-


óôÞóïõìå ôá áðëÜ ÷áñáêôçñéóôéêÜ oäüò êáé áñéèìüò ôïõ óõíüëïõ ïíôïôÞôùí
ÓõããñáöÝáò ìå ôï óýíèåôï ÷áñáêôçñéóôéêü äéåýèõíóç. Ôá óýíèåôá ÷áñá-
êôçñéóôéêÜ âïçèïýí íá óõãêåíôñþóïõìå óõó÷åôéæüìåíá ÷áñáêôçñéóôéêÜ óå
ïìÜäåò, äéåõêïëýíïíôáò ôï ó÷åäéáóìü ôçò ÂÄ.

• ÁðëÞò ÔéìÞò Þ ÐïëëáðëÞò ÔéìÞò . Ôá ÷áñáêôçñéóôéêÜ áðëÞò ôéìÞò (single-


valued) Ý÷ïõí ìßá ìüíï ôéìÞ êÜèå öïñÜ. Ãéá ðáñÜäåéãìá, ôï óýíïëï ïíôïôÞ-
ôùí Âéâëßï Ý÷åé ôï ÷áñáêôçñéóôéêü ôßôëïò ðïõ åßíáé ìïíáäéêüò ãéá êÜèå ïíôü-
ôçôá. ÕðÜñ÷ïõí üìùò ÷áñáêôçñéóôéêÜ ìå äýï Þ ðåñéóóüôåñåò ôéìÝò. ÁõôÜ
ïíïìÜæïíôáé ÷áñáêôçñéóôéêÜ ðïëëáðëÞò ôéìÞò (multi-valued). Ãéá ðáñÜ-
äåéãìá, èåùñÞóôå ôï óýíïëï ïíôïôÞôùí Åñãáæüìåíïò ìå ôï ÷áñáêôçñéóôéêü
ôçëÝöùíï. Ôï ÷áñáêôçñéóôéêü áõôü ìðïñåß íá Ý÷åé äýï ôéìÝò ãéá íá áíáðá-
ñáóôÞóåé ôï ãåãïíüò üôé êÜðïéïò ìðïñåß íá Ý÷åé äýï ôçëåöùíéêÝò óõíäÝóåéò.
¼ðïõ ÷ñåéÜæåôáé, ìðïñïýìå íá ïñßóïõìå Üíù êáé êÜôù üñéá óôï ðëÞèïò
ôéìþí åíüò ÷áñáêôçñéóôéêïý ðïëëáðëÞò ôéìÞò. Ãéá ðáñÜäåéãìá, ìðïñïýìå
íá ðåñéïñßóïõìå ôï ðëÞèïò ôùí ôçëåöùíéêþí óõíäÝóåùí ðïõ åðéèõìïýìå
íá êáôáãñÜøïõìå óå äýï ìüíï (ð.÷., Ýíáí áñéèìü ôçëåöþíïõ óðéôéïý êáé
Ýíá ãéá ôï ôçëÝöùíï åñãáóßáò).

• Êåíü. Ôï êåíü (null) ÷ñçóéìïðïéåßôáé üôáí êÜðïéá ïíôüôçôá äåí Ý÷åé ôéìÞ óå
êÜðïéï óõãêåêñéìÝíï ÷áñáêôçñéóôéêü. Ãéá ðáñÜäåéãìá, áí êÜðïéïò ðåëÜ-
ôçò äçëþóåé üôé äåí Ý÷åé ôçëÝöùíï, ôüôå ç ôéìÞ ôïõ ÷áñáêôçñéóôéêïý ôçëÝ-
öùíï ãéá ôï óõãêåêñéìÝíï ðåëÜôç èá åßíáé êåíÞ. Ç êåíÞ ôéìÞ ìðïñåß åðßóçò
íá ðñïóäéïñßæåé üôé ç ôéìÞ åíüò ÷áñáêôçñéóôéêïý åßíáé Üãíùóôç. Ìßá Üãíù-
óôç ôéìÞ ìðïñåß åßôå íá ëåßðåé (äçëáäÞ, ãíùñßæïõìå üôé ç ôéìÞ õðÜñ÷åé áëëÜ
äåí îÝñïõìå ðïéÜ åßíáé áêñéâþò) åßôå íá ìçí åßíáé ãíùóôÞ (äçëáäÞ äåí
ãíùñßæïõìå áí õðÜñ÷åé Þ ü÷é). Ãéá ðáñÜäåéãìá, áí êÜðïéïò ðåëÜôçò äåí
äþóåé ôïí áñéèìü ôçëåöþíïõ ôïõ, ôüôå ç ôéìÞ ôïõ ÷áñáêôçñéóôéêïý ôçëÝ-
öùíï ãéá ôï óõãêåêñéìÝíï ðåëÜôç èá åßíáé êåíÞ, ãéáôß äåí ãíùñßóïõìå áí
Ý÷åé Þ ü÷é êÜðïéá ôçëåöùíéêÞ óýíäåóç.

• Ðáñáãüìåíï. ¸íá ðáñáãüìåíï (derived) ÷áñáêôçñéóôéêü ìðïñåß íá ðÜñåé


ôéìÞ áðü ôçí ôéìÞ êÜðïéïõ Þ êÜðïéùí Üëëùí ÷áñáêôçñéóôéêþí, ü÷é áðá-
ñáßôçôá ôçò ßäéáò ïíôüôçôáò. Ãéá ðáñÜäåéãìá, áò õðïèÝóïõìå üôé ç ïíôü-
ôçôá ÓõããñáöÝáò Ý÷åé ôï ÷áñáêôçñéóôéêü áñéèìüò âéâëßùí, ôï ïðïßï äçëþíåé
ðüóá âéâëßá Ý÷åé óõããñÜøåé êÜèå óõããñáöÝáò. Ç ôéìÞ ôïõ ÷áñáêôçñéóôé-
êïý áõôïý ìðïñåß íá âñåèåß áí ìåôñÞóïõìå ôï ðëÞèïò ôùí âéâëßùí ðïõ
Ý÷åé (óõí-)óõããñÜøåé ï êÜèå óõããñáöÝáò. Ôá ðáñáãüìåíá ÷áñáêôçñéóôéêÜ
áðåéêïíßæïíôáé ìå äéáêåêïììÝíåò åëëåßøåéò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 103

Ôï Ó÷Þìá 4.2 ðáñïõóéÜæåé Ýíá ðáñÜäåéãìá ãéá ôéò ðñïçãïýìåíåò ðåñéðôþóåéò


÷áñáêôçñéóôéêþí.
α

ό ν ο 

έ φ

τ η λ ω ν ο

κ ω δ ι κ ό

Σ υ γ γ ρ α φ έ α ς

ρ α

χ ώ

δ ι ε ύ θ ν σ η

ρ ρ

σ ύ ν ο λ ο _ ά θ ω ν

π ό λ η

Τ Κ

ο δ ό

α ρ ς

ι θ  ό

Ó÷Þìá 4.2: ×áñáêôçñéóôéêÜ óýíèåôá, ðïëëáðëÞò ôéìÞò êáé ðáñáãüìåíá.

4.2.2 ÊëåéäéÜ
Ôï ÷áñáêôçñéóôéêü ðïõ ðñïóäéïñßæåé ìïíáäéêÜ ìßá ïíôüôçôá êáëåßôáé êëåéäß (key)
êáé äéáêñßíåôáé áðü Ýíá ðåäßï ïñéóìïý (domain). Åßíáé äõíáôüí ðåñéóóüôåñá
ôïõ åíüò ÷áñáêôçñéóôéêÜ íá Ý÷ïõí ôçí éäéüôçôá ôïõ êëåéäéïý. Ãéá ðáñÜäåéãìá, ï
áñéèìüò áóôõíïìéêÞò ôáõôüôçôáò Þ ï áñéèìüò öïñïëïãéêïý ìçôñþïõ ðñïóäéïñßæåé
ìïíáäéêÜ ôïí êÜèå ðïëßôç. Ôá êëåéäéÜ áõôÜ ïíïìÜæïíôáé õðïøÞöéá (candidate).
¸íá áðü áõôÜ ôá êëåéäéÜ ÷áñáêôçñßæåôáé ùò ðñùôåýïí (primary) êëåéäß, åíþ ôá
õðüëïéðá ùò åíáëëáêôéêÜ (alternative) êëåéäéÜ. Ôï ðñùôåýïí êëåéäß êÜèå óõíüëïõ
ïíôïôÞôùí åìöáíßæåôáé õðïãñáììéóìÝíï óå Ýíá äéÜãñáììá ÏÓ.
Óõ÷íÜ äåí õðÜñ÷åé êÜðïéï ÷áñáêôçñéóôéêü ðïõ áðü ìüíï ôïõ íá áðïôåëåß
êëåéäß, Þ áí õðÜñ÷åé ôÝôïéï ÷áñáêôçñéóôéêü äåí áðïôõðþíåôáé óôï ó÷Þìá ôçò
ÂÄ, äéüôé äåí åßíáé áðáñáßôçôï. Óå ìßá ôÝôïéá ðåñßðôùóç, ëïéðüí, ìðïñïýìå íá
÷ñçóéìïðïéÞóïõìå äýï Þ ðåñéóóüôåñá ÷áñáêôçñéóôéêÜ (áí õðÜñ÷ïõí) Ýôóé þóôå
óôï óýíïëü ôïõò íá ðñïóäéïñßæïõí ìïíáäéêÜ ìßá ïíôüôçôá. ¸íá ôÝôïéï êëåéäß
êáëåßôáé óýíèåôï (composite) êëåéäß. ÂÝâáéá, ÷ñçóéìüôçôá Ý÷åé ôï óýíèåôï êëåéäß
áðü ôï ïðïßï äåí åßíáé äõíáôüí íá åîáéñåèåß êÜðïéï ÷áñáêôçñéóôéêü ôïõ ÷ùñßò
íá ÷áèåß ç âáóéêÞ éäéüôçôÜ ôïõ íá ðñïóäéïñßæåé ìïíáäéêÜ êÜèå ïíôüôçôá. ¼ôáí
äåí õðÜñ÷åé êÜðïéï ÷áñáêôçñéóôéêü ðïõ íá ìðïñåß íá ÷ñçóéìïðïéçèåß ùò êëåéäß,
ôüôå ìðïñïýìå íá ïñßóïõìå êÜðïéï ôå÷íçôü ÷áñáêôçñéóôéêü ðïõ íá ðñïóäéïñßæåé
ìïíáäéêÜ êÜèå ïíôüôçôá. Ôï ÷áñáêôçñéóôéêü áõôü óõíÞèùò ïíïìÜæåôáé êùäéêüò Þ
104 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

ID Þ Ý÷åé êÜðïéï Üëëï ðñïóäéïñéóôéêü. Óôï ðáñÜäåéãìá ôïõ Ó÷Þìáôïò 4.1 Ý÷ïõìå
÷ñçóéìïðïéÞóåé ôçí ïíïìáóßá êùäéêüò ãéá ôï êëåéäß åíüò óõíüëïõ ïíôïôÞôùí.

4.3 Óýíïëá Óõó÷åôßóåùí


Ìßá óõó÷Ýôéóç åßíáé ìßá áðåéêüíéóç ìåôáîý ïíôïôÞôùí. Ãéá ðáñÜäåéãìá, ìðï-
ñïýìå íá ïñßóïõìå ìßá óõó÷Ýôéóç ðïõ áíôéóôïé÷ßæåé ôï óõããñáöÝá "ÌÝíçò Êïõ-
ìáíôáñÝáò" ìå ôï âéâëßï "Äýï öïñÝò ¸ëëçíáò". Áõôü óçìáßíåé üôé ï óõããñáöÝáò
"ÌÝíçò ÊïõìáíôáñÝáò" åßíáé ï óõããñáöÝáò ôïõ âéâëßïõ "Äýï öïñÝò ¸ëëçíáò".
¸íá óýíïëï óõó÷åôßóåùí (relationship set) åßíáé ìßá óõëëïãÞ óõó÷åôßóåùí ôïõ
ßäéïõ ôýðïõ. ÔõðéêÜ, åßíáé ìßá ìáèçìáôéêÞ ó÷Ýóç ìåôáîý äýï Þ ðåñéóóïôÝñùí
óõíüëùí. Ãéá ðáñÜäåéãìá, áí Ý÷ïõìå ôá óýíïëá ïíôïôÞôùí E1 , E2 , ..., En , ôüôå
Ýíá óýíïëï óõó÷åôßóåùí R åßíáé Ýíá õðïóýíïëï ôïõ óõíüëïõ {(e1 , e2 , ..., en ) |
(e1 ∈ E1 , e2 ∈ E2 , ..., en ∈ En )}, üðïõ ôá (e1 , e2 , ..., en ) áðïôåëïýí ìßá óõ-
ó÷Ýôéóç. Ãéá ðáñÜäåéãìá, áò èåùñÞóïõìå ôá óýíïëá ïíôïôÞôùí ÓõããñáöÝáò êáé
¢ñèñï. Ôüôå ìðïñïýìå íá ïñßóïõìå ôç óõó÷Ýôéóç ÓõããñáöÞ ¢ñèñïõ ãéá íá ðñïó-
äéïñßóïõìå üëá ôá Üñèñá ðïõ Ý÷åé óõããñÜøåé êÜèå óõããñáöÝáò. Ç óõó÷Ýôéóç
ìåôáîý óõíüëùí ïíôïôÞôùí áðïêáëåßôáé óõììåôï÷Þ (participation), äçëáäÞ ôá
óýíïëá E1 , E2 , ..., En óõììåôÝ÷ïõí óôï óýíïëï óõó÷åôßóåùí R.
Ôï óýíïëï óõó÷åôßóåùí ÓõíäñïìÞ åßíáé Ýíá ðáñÜäåéãìá äõáäéêïý (binary)
óõíüëïõ óõó÷åôßóåùí, åðåéäÞ óõììåôÝ÷ïõí äýï ìüíï óýíïëá ïíôïôÞôùí (äçëáäÞ,
ÓõíäñïìçôÞò êáé ÃíùóôéêÞ Ðåñéï÷Þ). Ïé ðåñéóóüôåñåò óõó÷åôßóåéò óå ìßá ÂÄ åß-
íáé óõíÞèùò äõáäéêÝò. Åßíáé üìùò äõíáôü Ýíá óýíïëï óõó÷åôßóåùí íá óõíäÝåé
ðåñéóóüôåñá áðü äýï óýíïëá ïíôïôÞôùí, ïðüôå Ý÷ïõìå ôñéáäéêÝò (ternary) ê.ï.ê.
óõó÷åôßóåéò. Ãéá ðáñÜäåéãìá, ãéá ôá óýíïëá ïíôïôÞôùí ÊáèçãçôÞò, ÖïéôçôÞò, ÌÜ-
èçìá ðñïêýðôåé Ýíá ôñéáäéêü óýíïëï óõó÷Ýôéóçò ðïõ åêöñÜæåé ðïéÜ ìáèÞìáôá
ðáñáêïëïýèçóå ï êÜèå öïéôçôÞò áðü ôïí êÜèå êáèçãçôÞ. Ôï Ó÷Þìá 4.3 áðåéêïíß-
æåé ôï ðáñÜäåéãìá. Ôï ðëÞèïò ôùí óõíüëùí ïíôïôÞôùí ðïõ óõììåôÝ÷ïõí óå Ýíá

Μ Ν

Φ ο ι τ η τ ή ς α ρ α κ ο λ ο υ θ ε ί Μ ά θ η
α
Π

α θ η γ η τ ή ς
Κ

Ó÷Þìá 4.3: ÔñéáäéêÞ óõó÷Ýôéóç.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 105

óýíïëï óõó÷åôßóåùí êáëåßôáé âáèìüò (degree) ôïõ óõíüëïõ óõó÷Ýôéóçò.


Ç ëåéôïõñãßá ðïõ åðéôåëåß ìßá ïíôüôçôá óå ìßá óõó÷Ýôéóç áðïêáëåßôáé ñü-
ëïò (role). Áí ìßá ïíôüôçôá Ý÷åé ìüíï Ýíá ñüëï, ôüôå ç ðåñßðôùóç êáëýðôåôáé
áðü üóá åêôÝèçêáí ìÝ÷ñé óôéãìÞò ó÷åôéêÜ ìå ôéò ïíôüôçôåò êáé ôéò óõó÷åôßóåéò.
Ùóôüóï, åßíáé äõíáôüí ìßá ïíôüôçôá íá äéáêñßíåôáé áðü ðåñéóóüôåñïõò ôïõ åíüò
ñüëïõò. Ãéá ðáñÜäåéãìá, óôçí ïíôüôçôá Åñãáæüìåíïò äéáêñßíïõìå äýï äéáêñéôïýò
ñüëïõò: äéåõèõíôÞò êáé õðÜëëçëïò, üðùò áðåéêïíßæåôáé óôï Ó÷Þìá 4.4. Ðáñüìïéåò
ðåñéðôþóåéò ìðïñïýí íá åìöáíéóèïýí óå åöáñìïãÝò ìå äéáðñïóùðéêÝò ó÷Ýóåéò
ôýðïõ: óýæõãïò ðñïò óýæõãï, ãïíÝáò ðñïò ôÝêíï, áäåëöüò ðñïò áäåëöü ê.ï.ê. Ãéá
ôéò ðåñéðôþóåéò áõôÝò áíáöÝñåôáé üôé ìßá óõó÷Ýôéóç åßíáé áíáäñïìéêÞ (recursive).
ÂÝâáéá, õðÜñ÷ïõí êáé ìç áíáäñïìéêÝò ðåñéðôþóåéò, üðïõ ïíôüôçôåò åíüò óõíüëïõ
óõììåôÝ÷ïõí õðü ðïëëïýò ñüëïõò óå ìßá óõó÷Ýôéóç ìå ôéò ïíôüôçôåò åíüò Üëëïõ
óõíüëïõ ïíôïôÞôùí.

ι ο α θ έ σ η

κ ω δ κ ό ς ό ν

Ε ρ γ α ζ ε ο

ό ν ς

ι ε υ θ υ τ ή υ π ά λ λ η λ ο

δ ν ς ς

1 Ν

Ε π ο π τ ε ύ ε ι

Ó÷Þìá 4.4: ÁíáäñïìéêÞ óõó÷Ýôéóç.

4.3.1 Ôýðïé Áðåéêüíéóçò


Èåùñïýìå äýï óýíïëá ïíôïôÞôùí A êáé B êáé Ýíá óýíïëï óõó÷Ýôéóçò R ìåôáîý
ôïõò. ÁíÜëïãá ìå ôï ðëÞèïò ôùí ïíôïôÞôùí ôïõ åíüò óõíüëïõ ðïõ ó÷åôßæïíôáé ìå
ïíôüôçôåò ôïõ Üëëïõ óõíüëïõ ðñïêýðôïõí äéáöïñåôéêïß ôýðïé óõó÷åôßóåùí ðïõ
÷áñáêôçñßæïíôáé áðü ôïí ðëçèéêü ëüãï (cardinality ratio) ôùí óõó÷åôéæüìåíùí
ïíôïôÞôùí. Ïé âáóéêïß ôýðïé óõó÷åôßóåùí åßíáé ïé åîÞò:

• Ýíá-ðñïò-Ýíá (one-to-one). Ìßá ïíôüôçôá a ∈ A ìðïñåß íá óõó÷åôéóèåß ìå


ìßá ìüíï ïíôüôçôá b ∈ B êáé êÜèå ïíôüôçôá b ∈ B ìðïñåß íá óõó÷åôéóèåß
ìå ìßá ìüíï ïíôüôçôá a ∈ A. Óõìâïëßæåôáé ìå ôçí Ýêöñáóç "1:1".
106 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

• Ýíá-ðñïò-ðïëëÜ (one-to-many). Ìßá ïíôüôçôá a ∈ A ìðïñåß íá óõó÷åôé-


óèåß ìå ìßá Þ ðåñéóóüôåñåò ïíôüôçôåò b ∈ B, áëëÜ êÜèå ïíôüôçôá b ∈ B
ìðïñåß íá óõó÷åôéóèåß ìå ìßá ôï ðïëý ïíôüôçôá a ∈ A. Óõìâïëßæåôáé ìå ôçí
Ýêöñáóç "1:Í".
• ðïëëÜ-ðñïò-Ýíá (many-to-one). Ìßá ïíôüôçôá a ∈ A ìðïñåß íá óõó÷åôéóèåß
ìå ìßá ôï ðïëý ïíôüôçôá b ∈ B, áëëÜ êÜèå ïíôüôçôá b ∈ B ìðïñåß íá
óõó÷åôéóèåß ìå ìßá Þ ðåñéóóüôåñåò ïíôüôçôåò a ∈ A. Óõìâïëßæåôáé ìå ôçí
Ýêöñáóç "Í:1".
• ðïëëÜ-ðñïò-ðïëëÜ (many-to-many). Ìßá ïíôüôçôá a ∈ A ìðïñåß íá óõó÷å-
ôéóèåß ìå ïóåóäÞðïôå ïíôüôçôåò b ∈ B êáé êÜèå ïíôüôçôá b ∈ B ìðïñåß íá
óõó÷åôéóèåß ìå ïóåóäÞðïôå ïíôüôçôåò a ∈ A. Óõìâïëßæåôáé ìå ôçí Ýêöñáóç
"Ì:Í".

A B A B

Ένα-προς-ένα Ένα-προς-πολλά

A B A B

Πολλά-προς-ένα Πολλά-προς-πολλά

Ó÷Þìá 4.5: Ôýðïé óõíüëùí óõó÷åôßóåùí.

Ïé äéáöïñåôéêïß ôýðïé áðåéêüíéóçò ðáñïõóéÜæïíôáé ãñáöéêÜ óôï Ó÷Þìá 4.5. Ï


ôýðïò ôçò áðåéêüíéóçò áðïôõðþíåôáé óôï äéÜãñáììá ÏÓ ìå Ýíáí áñéèìü äßðëá óôï
åõèýãñáììï ôìÞìá ðïõ åíþíåé ôï óýíïëï ïíôïôÞôùí ìå ôï óýíïëï óõó÷åôßóåùí.
ÄçëáäÞ, óå êÜèå óýíäåóç óõíüëïõ ïíôïôÞôùí ìå óýíïëï óõó÷åôßóåùí õðÜñ÷åé
Ýíá óýìâïëï (ôï 1, ôï Í Þ ôï Ì) ðïõ ïñßæåé ôï ìÝãéóôï áñéèìü óõó÷åôßóåùí óôéò
ïðïßåò ìðïñåß íá óõììåôÝ÷åé ìßá ïíôüôçôá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 107

Ï ôýðïò ôçò óõó÷Ýôéóçò ðïõ ÷ñçóéìïðïéåßôáé êÜèå öïñÜ åîáñôÜôáé ôüóï áðü
ôéò éäéüôçôåò ôùí ïíôïôÞôùí ôïõ ðñáãìáôéêïý êüóìïõ, üóï êáé áðü ôéò ðáñáäï÷Ýò
êáé ôéò áðëïðïéÞóåéò ðïõ ãßíïíôáé óôç öÜóç ôçò ìïíôåëïðïßçóçò. Óôï ðáñÜäåéãìá
ôïõ Ó÷Þìáôïò 4.5, ôá óýíïëá óõó÷åôßóåùí ÓõããñáöÞ ¢ñèñïõ êáé ÓõíäñïìÞ åßíáé
Í:Ì, åíþ ôï óýíïëï óõó÷åôßóåùí Äçìïóßåõóç óå Ðåñéïäéêü åßíáé 1:Í Þ Í:1 áíá-
ëüãùò ìå ôç öïñÜ ðïõ åîåôÜæïõìå ôï óýíïëï óõó÷Ýôéóçò (áðü ôï ¢ñèñï ðñïò
ôï Ðåñéïäéêü Þ áíôéóôñüöùò). Åðßóçò, ôï óýíïëï óõó÷åôßóåùí ÁíÞêåé, ôï ïðïßï
óõó÷åôßæåé ôá óýíïëá ïíôïôÞôùí ¢ñèñï êáé ÃíùóôéêÞ Ðåñéï÷Þ åßíáé Í:1, äéüôé èå-
ùñïýìå üôé Ýíá Üñèñï áíÞêåé ìüíï óå ìßá ãíùóôéêÞ ðåñéï÷Þ 2 , åíþ ìßá ãíùóôéêÞ
ðåñéï÷Þ ìðïñåß íá Ý÷åé Ýíá Þ ðåñéóóüôåñá êáôá÷ùñéóìÝíá Üñèñá.

4.3.2 ×áñáêôçñéóôéêÜ Óõíüëïõ Óõó÷åôßóåùí


¸íá óýíïëï óõó÷åôßóåùí ìðïñåß íá Ý÷åé ðåñéãñáöéêÜ ÷áñáêôçñéóôéêÜ. Ãéá ðáñÜ-
äåéãìá, óôï Ó÷Þìá 4.6 ôï óýíïëï óõó÷åôßóåùí ÓõíäñïìÞ Ý÷åé ôá ÷áñáêôçñéóôéêÜ
Áðü êáé ¸ùò, ôá ïðïßá äçëþíïõí ôï ÷ñïíéêü äéÜóôçìá ãéá ôï ïðïßï Ýíáò óõíäñï-
ìçôÞò åðéèõìåß íá Ý÷åé ðñüóâáóç óôá Üñèñá ìßáò ãíùóôéêÞò ðåñéï÷Þò. Ôïíßæåôáé
üôé ôá äýï áõôÜ ÷áñáêôçñéóôéêÜ äåí áöïñïýí ïýôå óôï óýíïëï ïíôïôÞôùí Óõí-
äñïìçôÞò ïýôå óôï óýíïëï ïíôïôÞôùí ÃíùóôéêÞ Ðåñéï÷Þ, áëëÜ óôç ìåôáîý ôïõò
ó÷Ýóç. Áí ôïðïèåôÞóïõìå ôá ÷áñáêôçñéóôéêÜ Áðü êáé ¸ùò óôï óýíïëï ïíôïôÞôùí
ÓõíäñïìçôÞò èá óçìáßíåé üôé ï êÜèå óõíäñïìçôÞò ðñÝðåé íá ðëçñþóåé óõíäñïìÞ
ãéá ôï ßäéï ÷ñïíéêü äéÜóôçìá ãéá üëåò ôéò ãíùóôéêÝò ðåñéï÷Ýò. ÁíôéèÝôùò, áí
ôá ÷áñáêôçñéóôéêÜ ôïðïèåôçèïýí óôï óýíïëï ïíôïôÞôùí ÃíùóôéêÞ Ðåñéï÷Þ, ôüôå
áõôü èá óçìáßíåé üôé üëïé ïé óõíäñïìçôÝò ìßáò ãíùóôéêÞò ðåñéï÷Þò ðñÝðåé íá
ðëçñþóïõí óõíäñïìÞ ãéá ôï ßäéï ÷ñïíéêü äéÜóôçìá.

τ η λ έ φ ω ν ο

δ ι ε ύ θ υ ν σ η

τ ί τ λ ο ς

ό ν ο  α

α ρ ι θ  ό ς _

α π ό έ ω ς

κ ω δ ι κ ό ς

σ υ ν δ ρ ο  η τ ώ ν

κ ω δ ι κ ό ς

M N

Σ υ ν δ ρ ο  η τ ή ς Σ υ ν δ ρ ο  ή Γ ν ω σ τ ι κ ή Π ε ρ ι ο χ ή

Α Π Κ

Ó÷Þìá 4.6: Óýíïëï óõó÷åôßóåùí ÓõíäñïìÞ êáé ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ.

Áðáéôåßôáé éäéáßôåñç ðñïóï÷Þ êáôÜ ôçí êáôáóêåõÞ ôïõ ìïíôÝëïõ þóôå íá áðï-
öåýãïíôáé ôÝôïéïõ åßäïõò ó÷åäéáóôéêÜ ëÜèç ðïõ ìåôáâÜëëïõí êáé ðåñéïñßæïõí ôéò
2
Èá ìðïñïýóå ï ôýðïò ôçò áðåéêüíéóçò íá åßíáé Í:Ì, üìùò ãéá ëüãïõò áðëüôçôáò ïñßæåôáé óáí
Í:1.
108 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

äõíáôüôçôåò ôçò ÂÄ. Óôïõò ôýðïõò óõó÷åôßóåùí Í:1 êáé 1:Í ôá ÷áñáêôçñéóôéêÜ
ðïõ õðÜñ÷ïõí óôï óýíïëï óõó÷Ýôéóçò ìðïñïýí íá èåùñçèïýí ÷áñáêôçñéóôéêÜ
ôïõ óõíüëïõ ïíôïôÞôùí, ôï ïðïßï óõììåôÝ÷åé ìå ðëçèéêü áñéèìü Ýíá. Ãéá ôïí
ôýðï 1:1 ôá ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ óõó÷åôßóåùí ìðïñïýí íá áíáôåèïýí óå
ïðïéáäÞðïôå áðü ôá äýï óõììåôÝ÷ïíôá óýíïëá ïíôïôÞôùí. Ùóôüóï, áõôü ðñáã-
ìáôïðïéåßôáé óå åðüìåíá óôÜäéá ôçò ó÷åäßáóçò ôçò ÂÄ þóôå ôï äéÜãñáììá ÏÓ íá
åßíáé óáöÝóôåñï.

4.3.3 Ôýðïé Óõììåôï÷Þò Ïíôüôçôáò óå Óõó÷Ýôéóç


Ìå ôç óõììåôï÷Þ åíüò óõíüëïõ ïíôïôÞôùí óå Ýíá óýíïëï óõó÷åôßóåùí ðñÝðåé íá
äçëþíåôáé áí ìßá ïíôüôçôá óõììåôÝ÷åé ïðùóäÞðïôå óå ìßá ôïõëÜ÷éóôïí óõó÷Ýôéóç.
Ç ðëçèéêüôçôá äçëþíåé ôï ìÝãéóôï áñéèìü óõó÷åôßóåùí óôéò ïðïßåò ìðïñåß íá
óõììåôÝ÷åé ìßá ïíôüôçôá, åíþ ç óõììåôï÷Þ äçëþíåé ôïí åëÜ÷éóôï áñéèìü. ËÝãåôáé
üôé ç ôéìÞ óõììåôï÷Þò åßíáé 0 üôáí äåí åßíáé áðáñáßôçôç ç óõììåôï÷Þ ôçò ïíôüôçôáò
êáé 1 äéáöïñåôéêÜ. Óôç âéâëéïãñáößá, ç õðï÷ñåùôéêÞ óõììåôï÷Þ êáëåßôáé êáé
êáèïëéêÞ (total), åíþ ç ðñïáéñåôéêÞ óõììåôï÷Þ êáëåßôáé êáé ìåñéêÞ (partial).
ο
τ ί τ λ ς α
ο
τ ί τ λ ς ρ θ 
ι ό ς _

κ ω δ ι κ ό ς

P D F
κ ω δ ι κ ό ς

ρ ο  η
σ υ ν δ τ ώ ν

N 1

Α ρ ο χ
Ά ρ θ ρ ο ν ή κ ε ι Γ ν ω σ τ ι κ ή Π ε ι ή

Ó÷Þìá 4.7: Óõììåôï÷Þ ïíôïôÞôùí óå óýíïëï óõó÷åôßóåùí.

Ãéá ðáñÜäåéãìá, èåùñÞóôå ôï óýíïëï óõó÷åôßóåùí ÁíÞêåé, ôï ïðïßï ðñïó-


äéïñßæåé ôç ãíùóôéêÞ ðåñéï÷Þ üðïõ áíÞêåé Ýíá Üñèñï, üðùò áðåéêïíßæåôáé óôï
Ó÷Þìá 4.7. ÊÜèå êáôá÷ùñéóìÝíï Üñèñï ðñÝðåé íá áíÞêåé ïðùóäÞðïôå óå ìßá
ãíùóôéêÞ ðåñéï÷Þ. Ùóôüóï, ìðïñåß íá õðÜñ÷ïõí ãíùóôéêÝò ðåñéï÷Ýò ÷ùñßò áêüìç
êáôá÷ùñéóìÝíá Üñèñá. ÅðïìÝíùò, êÜèå ïíôüôçôá ðïõ áíÞêåé óôï óýíïëï ïíôïôÞ-
ôùí ¢ñèñï ðñÝðåé ïðùóäÞðïôå íá óõíäÝåôáé ìå áêñéâþò ìßá ïíôüôçôá ôïõ óõíü-
ëïõ ïíôïôÞôùí ÃíùóôéêÞ Ðåñéï÷Þ. Áõôü äçëþíåôáé óôï äéÜãñáììá ÏÓ ìå ìßá äéðëÞ
ãñáììÞ ðïõ óõíäÝåé ôï óýíïëï ïíôïôÞôùí ¢ñèñï ìå ôï óýíïëï óõó÷åôßóåùí ÁíÞ-
êåé. Ç ìïíÞ ãñáììÞ äçëþíåé üôé ïé ïíôüôçôåò ôïõ óõíüëïõ ïíôïôÞôùí ÃíùóôéêÞ
Ðåñéï÷Þ äåí åßíáé õðï÷ñåùôéêü íá óõó÷åôßæïíôáé ìå êÜðïéá Üñèñá.
ÕðÜñ÷ïõí ðåñéðôþóåéò üðïõ üëåò ïé ïíôüôçôåò ôùí óõíüëùí ïíôïôÞôùí ðïõ
óõó÷åôßæïíôáé ðñÝðåé íá Ý÷ïõí õðï÷ñåùôéêÞ óõììåôï÷Þ. ÈåùñÞóôå ôï óýíïëï óõ-
ó÷åôßóåùí ÓõããñáöÞ ¢ñèñïõ ôïõ Ó÷Þìáôïò 4.8. ÕðÜñ÷ïõí äéðëÝò ãñáììÝò êáé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 109

ο  α έ φ ο

ο ο _ ά ρ θ ρ

ό ν ω ν

ο ς
σ ύ ν ω ν

τ η λ

ς τ ί τ λ P D F

κ ω δ ι κ ό

κ ω δ ι κ ό

Μ N

Σ υ γ γ ρ α φ ή

ρ θ ρ ο
Σ υ γ γ ρ α φ έ α ς Ά

ρ θ ρ ο υ
Ά

θ υ

δ ι ε ύ ν σ

Ó÷Þìá 4.8: Õðï÷ñåùôéêÞ óõììåôï÷Þ ïíôïôÞôùí óå óýíïëï óõó÷åôßóåùí.

áðü ôéò äýï ðëåõñÝò ôïõ óõíüëïõ óõó÷åôßóåùí. Áõôü óçìáßíåé üôé êÜèå óõã-
ãñáöÝáò ðïõ åßíáé êáôá÷ùñéóìÝíïò óôç ÂÄ ðñÝðåé íá Ý÷åé óõããñÜøåé Ýíá ôïõëÜ-
÷éóôïí Üñèñï. Åðßóçò, êÜèå êáôá÷ùñéóìÝíï Üñèñï ðñÝðåé íá óõó÷åôßæåôáé ìå
ôïõëÜ÷éóôïí Ýíá óõããñáöÝá.
σ υ ν έ δ ρ ι ο

τ ί τ λ ο ς

α ρ χ ι κ ή _

τ ε λ ι κ ή _

κ ω δ ι κ ό ς

P D F

σ ε λ ί δ α

σ ε λ ί δ α
κ ω δ ι κ ό ς

η  ε ρ ο  η ν ί α

 η  ο σ ί ε υ σ η Π ρ α κ τ ι κ ά

Ά ρ θ ρ ο Ν 1

Π ρ α κ τ ι κ ώ ν Σ υ ν ε δ ρ ί ο υ

τ ό π ο ς

Ó÷Þìá 4.9: ÐñïáéñåôéêÞ óõììåôï÷Þ ïíôïôÞôùí óå óýíïëï óõó÷åôßóåùí.

Åðßóçò, õðÜñ÷ïõí ðåñéðôþóåéò üðïõ Ý÷ïõìå ðñïáéñåôéêÞ óõììåôï÷Þ ôùí ïíôï-


ôÞôùí óôï óýíïëï óõó÷åôßóåùí. Ãéá ðáñÜäåéãìá, óôï Ó÷Þìá 4.9 ðáñïõóéÜæåôáé
ôï óýíïëï óõó÷åôßóåùí Äçìïóßåõóç Ðñáêôéêþí, ôï ïðïßï óõó÷åôßæåé ôá óýíïëá
ïíôïôÞôùí ¢ñèñï êáé ÐñáêôéêÜ Óõíåäñßïõ. ¸íá Üñèñï ìðïñåß íá ìçí Ý÷åé äç-
ìïóéåõèåß áêüìç óôá ðñáêôéêÜ êÜðïéïõ óõíåäñßïõ, åíþ ãéá êÜðïéï óõíÝäñéï
åíäÝ÷åôáé íá ìçí Ý÷ïõìå áêüìç ðëçñïöïñßá ãéá ôá äçìïóéåõìÝíá Üñèñá 3 .

4.3.4 ÅîáñôÞóåéò ¾ðáñîçò


Ìßá äåýôåñç óçìáíôéêÞ êáôçãïñßá ðåñéïñéóìþí åßíáé ïé åîáñôÞóåéò ýðáñîçò (ex-
istence dependency). Åéäéêüôåñá, áí ç ýðáñîç ìßáò ïíôüôçôáò A åîáñôÜôáé áðü
ôçí ýðáñîç ôçò ïíôüôçôáò B, ôüôå ëÝãåôáé üôé ç A åßíáé õðáñîéáêÜ åîáñôþìåíç
áðü ôç B. Áõôü óçìáßíåé üôé áí êÜðïéá óôéãìÞ äéáãñÜøïõìå ôçí ïíôüôçôá B, ôüôå
3
ÅíáëëáêôéêÜ, èá ìðïñïýóáìå íá èåùñÞóïõìå õðï÷ñåùôéêÞ óõììåôï÷Þ ôïõ óõíüëïõ ÐñáêôéêÜ
Óõíåäñßïõ, Ýôóé þóôå íá êáôá÷ùñßæïíôáé óõíÝäñéá ãéá ôá ïðïßá Ý÷ïõìå ôïõëÜ÷éóôïí Ýíá Üñèñï
áðïèçêåõìÝíï óôç ÂÄ.
110 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

ðñÝðåé íá äéáãñÜøïõìå êáé ôçí ïíôüôçôá A. Ç ïíôüôçôá B êáëåßôáé êõñßáñ÷ç


(dominant) êáé ç A õðïôåëÞò (subordinate). Ãéá ðáñÜäåéãìá, èåùñÞóôå ôá óý-
íïëá ïíôïôÞôùí ÃíùóôéêÞ Ðåñéï÷Þ êáé ÓõíäñïìçôÞò, ôá ïðïßá óõíäÝïíôáé ìå ôï
óýíïëï óõó÷åôßóåùí ÓõíäñïìÞ. ÈåùñÞóôå åðßóçò ôï óõíäñïìçôÞ ìå êùäéêü 1000,
ï ïðïßïò åßíáé óõíäñïìçôÞò ìüíï ôçò ãíùóôéêÞò ðåñéï÷Þò "ÔçëåðéêïéíùíéáêÜ Äß-
êôõá". Óå ðåñßðôùóç äéáãñáöÞò ôçò ãíùóôéêÞò ðåñéï÷Þò "ÔçëåðéêïéíùíéáêÜ Äß-
êôõá", ðñÝðåé íá äéáãñáöåß êáé ï óõíäñïìçôÞò ìå êùäéêü 1000.

4.3.5 Áäýíáìá Óýíïëá ÏíôïôÞôùí


¸íá óýíïëï ïíôïôÞôùí êáëåßôáé áäýíáìï (weak) áí äåí Ý÷åé ïýôå áðëü áëëÜ
ïýôå êáé óýíèåôï êëåéäß. ÁíôéèÝôùò, áí Ýíá óýíïëï ïíôïôÞôùí Ý÷åé ðñùôåýïí
êëåéäß, ôüôå ïíïìÜæåôáé éó÷õñü (strong). Ãéá ðáñÜäåéãìá, áò èåùñÞóïõìå ôçí
ïíôüôçôá ÐëçñùìÞ ðïõ äçëþíåé ôçí ðëçñùìÞ ôïõ ðïóïý ôçò åôÞóéáò óõíäñïìÞò
êÜèå óõíäñïìçôÞ êáé áðïôåëåßôáé áðü ôá ôñßá ÷áñáêôçñéóôéêÜ: áñéèìüò ðëçñùìÞò
(ðïõ äåß÷íåé ôçí ôÜîç ôçò ðëçñùìÞò, äçëáäÞ ëáìâÜíåé ôéìÝò 1, 2, ê.ï.ê.), çìåñï-
ìçíßá ðëçñùìÞò êáé ðïóü ðëçñùìÞò. Óôçí ðáñïýóá êáôÜóôáóç, äåí ìðïñåß íá
ãßíåé äéÜêñéóç ìåôáîý ôùí ïíôïôÞôùí áõôþí ãéáôß åßíáé äõíáôüí ðåñéóóüôåñïé ôïõ
åíüò óõíäñïìçôÝò ôçí ßäéá çìåñïìçíßá, íá ðëçñþíïõí ôï ßäéï ðïóü ãéá ôç óõí-
äñïìÞ ôïõò êáé ìÜëéóôá áõôÞ ç ðëçñùìÞ íá Ý÷åé ôçí ßäéá ôÜîç (äçëáäÞ, íá åßíáé
ç ðñþôç Þ ç äåýôåñç ê.ï.ê.).
ÓõíÞèùò ôá óýíïëá áäýíáìùí ïíôïôÞôùí óõììåôÝ÷ïõí óå óýíïëá óõó÷åôß-
óåùí ôýðïõ Í:Ì, ôá ïðïßá äåí Ý÷ïõí äéêÜ ôïõò ÷áñáêôçñéóôéêÜ. ¸ôóé, ç áäýíáìç
ïíôüôçôá åßíáé õðïôåëÞò áðü ôçí éó÷õñÞ ïíôüôçôá, ðïõ åßíáé âÝâáéá ç êõñßáñ÷ç.
Óôï Ó÷Þìá 4.10 ðáñïõóéÜæåôáé Ýíá ðáñÜäåéãìá, üðïõ ç éó÷õñÞ ïíôüôçôá åßíáé
ç ÓõíäñïìÞ 4 , åíþ ç óõó÷Ýôéóç ÐëçñùìÞ ÓõíäñïìÞò ïíïìÜæåôáé ôáõôïðïéçôéêÞ
(identifying). ÄïäïìÝíçò, ëïéðüí, ìßáò éó÷õñÞò ïíôüôçôáò, èåùñïýìå Ýíá ÷áñáêôç-
ñéóôéêü ôçò áäýíáìçò ïíôüôçôáò, ôï ïðïßï ïíïìÜæïõìå äéáêñéôéêü (discriminator)
Þ ìåñéêü êëåéäß (partial key), êáé ôï ïðïßï ìáæß ìå ôï ðñùôåýïí êëåéäß ôçò éó÷õñÞò
ïíôüôçôáò ÷ñçóéìåýïõí ãéá ôï ÷åéñéóìü ôçò áäýíáìçò ïíôüôçôáò. Ãéá ðáñÜäåéãìá,
ôï äéáêñéôéêü áñéèìüò ðëçñùìÞò ìáæß ìå ôï ðñùôåýïí êëåéäß êùäéêüò óõíäñïìÞò
÷ñçóéìåýïõí ãéá ôçí ôáõôïðïßçóç ôùí ïíôïôÞôùí ôçò áäýíáìçò ïíôüôçôáò.
Óôï Ó÷Þìá 4.10 ðáñáôçñïýìå üôé ç áäýíáìç ïíôüôçôá ðáñéóôÜíåôáé ìå äéðëü
ïñèïãþíéï êáé äéáêåêïììÝíá õðïãñáììéóìÝíï ôï äéáêñéôéêü, åíþ ç ôáõôïðïéç-
ôéêÞ óõó÷Ýôéóç ìå äéðëü ñüìâï. Åðßóçò, ç äéðëÞ ãñáììÞ äåß÷íåé ôçí êáèïëéêÞ
óõììåôï÷Þ ôçò áäýíáìçò ïíôüôçôáò.
ÔÝëïò, óçìåéþíåôáé üôé êÜèå áäýíáìç ïíôüôçôá åßíáé õðáñîéáêÜ åîáñôþìåíç
ùò õðïôåëÞò áðü ìßá êõñßáñ÷ç éó÷õñÞ ïíôüôçôá, áëëÜ ãåíéêÜ äåí éó÷ýåé ôï áíôß-
4
Ãéá ôéò áíÜãêåò ôïõ ðáñáäåßãìáôïò ç ÓõíäñïìÞ åßíáé ïíôüôçôá êáé ü÷é óõó÷Ýôéóç.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 111

π ο σ _ π λ η ρ ω  ή ς

ρ ι θ  ς _ π λ η ρ ω  ή ς

ω δ ι ς _ σ υ ν δ ρ ο  ή ς α

κ κ ό

. . .

1 Ν

Σ υ ν δ ρ ο  ή Π λ η ρ ω  ή _ Σ υ ν δ ρ ο  ή ς Π λ η ρ ω  ή

η  ε ρ ο  η ν ί _ π λ η ρ ω  ή ς

Ó÷Þìá 4.10: Áðåéêüíéóç áäýíáìïõ óõíüëïõ ïíôïôÞôùí.

óôñïöï. ÄçëáäÞ, äåí åßíáé áðáñáßôçôá áäýíáìç ïíôüôçôá êÜèå õðáñîéáêÜ åîáñ-
ôþìåíç ïíôüôçôá.

4.4 ÅðåêôÜóåéò ôïõ Âáóéêïý ÌïíôÝëïõ ÏÓ


Ôï âáóéêü ìïíôÝëï ÏÓ, ôï ïðïßï áíáëýèçêå óôéò ðñïçãïýìåíåò óåëßäåò, ìðï-
ñåß íá êáëýøåé ôçí ðëåéïøçößá ôùí åöáñìïãþí. Ùóôüóï, ôá äåäïìÝíá óõ÷íÜ
Ý÷ïõí êÜðïéåò éäéáßôåñåò éäéüôçôåò ðïõ ìðïñïýí íá áðïäïèïýí ðëçñÝóôåñá êáé
ðëÝïí êáôáíïçôÜ ÷ñçóéìïðïéþíôáò ìåñéêÝò åðáõîÞóåéò ôïõ âáóéêïý ìïíôÝëïõ
[Codd 1979]. Óôç óõíÝ÷åéá åîåôÜæïíôáé ïé êõñéüôåñåò åðåêôÜóåéò ôïõ ìïíôÝëïõ
êáé ï ôñüðïò âåëôßùóçò êáé áðëïðïßçóçò ôçò äéáäéêáóßáò ôçò ìïíôåëïðïßçóçò.

4.4.1 Åîåéäßêåõóç êáé Ãåíßêåõóç


¸íá óýíïëï ïíôïôÞôùí ìðïñåß íá ðåñéÝ÷åé õðïóýíïëá ïíôïôÞôùí, ôá ïðïßá ðéèá-
íþò íá Ý÷ïõí äéáöïñåôéêÜ ÷áñáêôçñéóôéêÜ ìåôáîý ôïõò. Ìßá áðü ôéò åðåêôÜóåéò
ôïõ ìïíôÝëïõ ÏÓ, ç ïðïßá êáëåßôáé åîåéäßêåõóç (specialization), ìáò åðéôñÝðåé
íá ÷åéñéóèïýìå êáôÜëëçëá ôéò ðåñéðôþóåéò áõôÝò. Áíôéóôñüöùò, îåêéíþíôáò áðü
Ýíá óýíïëï ïíôïôÞôùí êáé ðñïóäéïñßæïíôáò ôá êïéíÜ ÷áñáêôçñéóôéêÜ ôïõò ìðï-
ñïýìå íá äçìéïõñãÞóïõìå Ýíá íÝï óýíïëï ïíôïôÞôùí óå áíþôåñï åðßðåäï. Ç
äéáäéêáóßá áõôÞ êáëåßôáé ãåíßêåõóç (generalization). Ç åîåéäßêåõóç êáé ç ãåíß-
êåõóç åßíáé äõúêÝò Ýííïéåò êáé äéáöÝñïõí ùò ðñïò ôïí ôñüðï åöáñìïãÞò ôïõò. Ç
åîåéäßêåõóç îåêéíÜ áðü Ýíá óýíïëï ïíôïôÞôùí, ðñïóäéïñßæåé ôéò äéáöïñÝò ìåôáîý
ôùí ïíôïôÞôùí êáé äçìéïõñãåß ðåñéóóüôåñåò ïíôüôçôåò óå êáôþôåñï åðßðåäï. Ç
ãåíßêåõóç îåêéíÜ áðü ðïëëÜ óýíïëá ïíôïôÞôùí, ðñïóäéïñßæåé ôá êïéíÜ ÷áñáêôç-
ñéóôéêÜ ôïõò, ôá ïìáäïðïéåß êáé äçìéïõñãåß Ýíá óýíïëï ïíôïôÞôùí óôï áíþôåñï
åðßðåäï.
112 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

Ãéá ôçí ðåñéãñáöÞ ôçò åîåéäßêåõóçò êáé ãåíßêåõóçò óå Ýíá äéÜãñáììá ÏÓ


÷ñçóéìïðïéåßôáé ç óõó÷Ýôéóç ISA (is a), ç ïðïßá óõó÷åôßæåé éåñáñ÷éêÜ óýíïëá
ïíôïôÞôùí äéáêñßíïíôáò ìßá õðåñêëÜóç (superclass) êáé ôéò õðïêëÜóåéò (sub-
classes). Óôï Ó÷Þìá 4.11 äßíåôáé Ýíá ðáñÜäåéãìá ðïõ ðåñéãñÜöåé ôç ó÷Ýóç ôùí
ïíôïôÞôùí ¼÷çìá, Åðéâáôéêü êáé Öïñôçãü. Åßíáé ðñïöáíÝò üôé Ýíá åðéâáôéêü
áõôïêßíçôï êáé Ýíá öïñôçãü Ý÷ïõí ðïëëÜ êïéíÜ ÷áñáêôçñéóôéêÜ, üìùò äéáöïñï-
ðïéïýíôáé óå ìåñéêÜ óçìåßá.

α τ α ν ά λ η

κ ω σ

α τ α α τ ή

κ ω δ ι κ ό ς κ σ κ ε υ σ ς

Ό χ η  α

α ν

ISA
ρ . θ υ ρ ώ

 έ γ τ

ι σ ο ύ ψ ο ς

ρ .

α α ξ ν ν

ρ . ό ω

α α ν

ε ρ ό σ κ ω

Ε π α τ τ η γ

ι β ι κ ό Φ ο ρ ό

Ó÷Þìá 4.11: ÁíáðáñÜóôáóç åîåéäßêåõóçò êáé ãåíßêåõóçò óå äéÜãñáììá ÏÓ.

Óå ìßá éåñáñ÷ßá ISA ìðïñåß íá õðÜñ÷ïõí äéÜöïñïé ðåñéïñéóìïß. ¸íáò ðñþôïò


ðåñéïñéóìüò ïíïìÜæåôáé åðéêÜëõøç (overlapping). Ðéï óõãêåêñéìÝíá, áí õðÜñ÷åé
ðåñéïñéóìüò ùò ðñïò ôçí åðéêÜëõøç, ôüôå äåí åßíáé äõíáôüí ìßá ïíôüôçôá íá
áíÞêåé ôáõôü÷ñïíá êáé óôéò äýï êëÜóåéò ìßáò åîåéäßêåõóçò. Ãéá ðáñÜäåéãìá,
áí èåùñçèåß üôé Ýíá äéðëïêÜìðéíï çìéöïñôçãü åßíáé âáóéêÜ öïñôçãü êáé ü÷é
åðéâáôéêü áõôïêßíçôï, ôüôå áõôÞ ç ðåñßðôùóç èá ðñÝðåé íá êáôá÷ùñéóèåß ìüíï
óôç ìßá êëÜóç (äçëáäÞ, óôá öïñôçãÜ). Ôï áíôßèåôï èá óõíÝâáéíå áí åðéôñåðüôáí
ç åðéêÜëõøç ôùí äýï êëÜóåùí, ïðüôå ôï óõãêåêñéìÝíï ü÷çìá èá ìðïñïýóå íá
êáôá÷ùñéóèåß êáé óôéò äýï êëÜóåéò.
¸íáò Üëëïò ðåñéïñéóìüò åßíáé ç êÜëõøç (covering) Þ ðëçñüôçôá (complete-
ness). Ìå ôçí Ýííïéá áõôÞ äçëþíåôáé ç ðåñßðôùóç üðïõ ðñÝðåé êÜèå ïíôüôçôá
ôçò õðåñêëÜóçò íá áíÞêåé óå ìßá áðü ôéò õðïêëÜóåéò. Óôï ðáñÜäåéãìá ôïõ ó÷Þ-
ìáôïò, ìðïñïýìå íá õðïèÝóïõìå üôé ðñÜãìáôé èá ðñÝðåé íá óõìâáßíåé êÜôé ôÝôïéï
ìå ôçí ðñïûðüèåóç üôé êáôá÷ùñßæïíôáé ï÷Þìáôá ðáñáãùãÞò. ¼ìùò, áò õðïèÝ-
óïõìå üôé êáôá÷ùñßæïõìå êáé áãùíéóôéêÜ ï÷Þìáôá ôçò Formula1, ôüôå ðñïöáíþò
ôá ï÷Þìáôá áõôÜ äåí èá ðñÝðåé íá êáôá÷ùñéóèïýí óå ìßá áðü ôéò õðÜñ÷ïõóåò
õðïêëÜóåéò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 113

4.4.2 Êëçñïíïìéêüôçôá ×áñáêôçñéóôéêþí


Ìßá ðïëý âáóéêÞ éäéüôçôá ôçò äïìÞò ðïõ ðñïêýðôåé áðü ôç ÷ñÞóç åîåéäßêåõ-
óçò/ãåíßêåõóçò åßíáé ç êëçñïíïìéêüôçôá (inheritance) ôùí ÷áñáêôçñéóôéêþí. Ôá
÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ ïíôïôÞôùí åíüò åðéðÝäïõ êëçñïíïìïýíôáé áðü ôá
óýíïëá ïíôïôÞôùí ôïõ áìÝóùò êáôþôåñïõ åðéðÝäïõ ôçò éåñáñ÷ßáò ISA. Ãéá ðáñÜ-
äåéãìá, ôï óýíïëï ïíôïôÞôùí ¼÷çìá ôïõ Ó÷Þìáôïò 4.11 ðåñéÝ÷åé ôá ÷áñáêôçñé-
óôéêÜ êùäéêüò, êáôáíÜëùóç êáé êáôáóêåõáóôÞò, ôá ïðïßá êëçñïíïìïýíôáé óôá
óýíïëá ïíôïôÞôùí Åðéâáôéêü Áõôïêßíçôï êáé Öïñôçãü.
Ç êëçñïíïìéêüôçôá ôùí ÷áñáêôçñéóôéêþí åßíáé Ýíá ðïëý éó÷õñü åñãáëåßï ðïõ
äéåõêïëýíåé óçìáíôéêÜ ôç äéáäéêáóßá ôçò êáôáóêåõÞò ôïõ ìïíôÝëïõ ìßáò ÂÜóçò
ÄåäïìÝíùí. Ç åîåéäßêåõóç, ç ãåíßêåõóç êáé ç êëçñïíïìéêüôçôá ôùí ÷áñáêôçñé-
óôéêþí åíüò óõíüëïõ ïíôïôÞôùí åßíáé Ýííïéåò ðïõ óõíáíôïýìå êáé óôï áíôéêåé-
ìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí, ôï ïðïßï åîåôÜæåôáé óå åðüìåíï êåöÜëáéï ôïõ
âéâëßïõ (âë. ÊåöÜëáéï 18).

4.4.3 ÓõóóùìÜôùóç
¼ðùò öÜíçêå áðü ðëÞèïò ðáñáäåéãìÜôùí, ìßá óõó÷Ýôéóç áíáöÝñåôáé óå äýï Þ
ðåñéóóüôåñåò ïíôüôçôåò. ¼ìùò, óôçí ðñÜîç óõìâáßíåé ìßá óõó÷Ýôéóç íá óõììåôÝ-
÷åé óå ìßá Üëëç óõó÷Ýôéóç. Óå ìßá ôÝôïéá ðåñßðôùóç ÷ñåéÜæåôáé Ýíá íÝï åñãá-
ëåßï ìïíôåëïðïßçóçò ôïõ ðñáãìáôéêïý êüóìïõ, ôï ïðïßï êáëåßôáé óõóóùìÜôùóç
Þ óõíÜèñïéóç (aggregation).

τ ί τ λ ο ς α

ρ ι θ  ό ς _ α

ό ν ο  Α Π Κ

κ ω δ ι κ ό ς

α π

ό έ ω ς κ ω δ ι κ ό ς
σ υ ν δ ρ ο  η τ ώ ν

δ ι ε ύ θ υ ν σ η

Μ Ν

τ η λ έ φ ω ν ο

Γ ν ω σ τ ι κ ή Π ε ρ ι ο χ ή Σ υ ν δ ρ ο  ή Σ υ ν δ ρ ο  η τ ή ς

Μ Ν

α α α γ

η  ε ρ ο  η ν ί _ σ υ ν λ λ ή ς

α α γ α

Κ τ ρ φ ή

κ ω δ ι κ ό ς

ό ν ο 

π ά

Υ λ λ η λ ο ς

Ó÷Þìá 4.12: ÍÝá ôñéáäéêÞ óõó÷Ýôéóç ÊáôáãñáöÞ êáé óýíïëï ïíôïôÞôùí ÕðÜëëç-
ëïò.
114 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

Áò èåùñÞóïõìå êáé ðÜëé ôï Ó÷Þìá 4.6 ðïõ áðåéêïíßæåé ôï óýíïëï óõó÷åôß-


óåùí ÓõíäñïìÞ êáé ôá áíôßóôïé÷á ÷áñáêôçñéóôéêÜ ôïõ. ¸óôù, ëïéðüí, üôé äéÜ-
öïñïé õðÜëëçëïé êáôá÷ùñßæïõí ôéò óõíäñïìÝò ôùí óõíäñïìçôþí êáé üôé èÝëïõìå
íá êáôáãñÜøïõìå áõôÞ ôç ëåéôïõñãßá. Óå ìßá ðñþôç ðñïóÝããéóç ìðïñïýìå íá
èåùñÞóïõìå ìßá íÝá ôñéáäéêÞ óõó÷Ýôéóç ìåôáîý ôùí óõíüëùí ïíôïôÞôùí Óõíäñï-
ìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé ÕðÜëëçëïò, üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 4.12. Ç
íÝá áõôÞ ôñéáäéêÞ óõó÷Ýôéóç ïíïìÜæåôáé ÊáôáãñáöÞ êáé Ý÷åé Ýíá äéêü ôçò ÷á-
ñáêôçñéóôéêü, ôçí çìåñïìçíßá óõíáëëáãÞò. Óå áõôü ôï äéÜãñáììá ÏÓ öáßíåôáé
üôé ïé äýï óõó÷åôßóåéò ÓõíäñïìÞ êáé ÊáôáãñáöÞ èá ìðïñïýóáí íá åíïðïéçèïýí
óå ìßá. ¼ìùò, êÜôé ôÝôïéï äåí åßíáé åðéèõìçôü ãéáôß ôá äýï ÷áñáêôçñéóôéêÜ Áðü
êáé ¸ùò ôçò óõó÷Ýôéóçò ÓõíäñïìÞ èá áðïäßäïíôáí óôç íÝá ôñéáäéêÞ óõó÷Ýôéóç,
åíþ áðëþò áíáöÝñïíôáé óôç óõó÷Ýôéóç ÓõíäñïìÞ. Ôï ßäéï èá óõíÝâáéíå êáé ãéá
ôï ìïíáäéêü ÷áñáêôçñéóôéêü çìåñïìçíßá óõíáëëáãÞò ôçò óõó÷Ýôéóçò ÊáôáãñáöÞ.

τ ί τ λ ο ς α

ρ ι θ  ό ς _ α

ό ν ο  Α Π Κ

κ ω δ ι κ ό ς

α π

ό έ ω ς κ ω δ ι κ ό ς
σ υ ν δ ρ ο  η τ ώ ν

δ ι ε ύ θ υ ν σ η

Μ Ν

τ η λ έ φ ω ν ο

Γ ν ω σ τ ι κ ή Π ε ρ ι ο χ ή Σ υ ν δ ρ ο  ή Σ υ ν δ ρ ο  η τ ή ς

α α α γ

η  ε ρ ο  η ν ί _ σ υ ν λ λ ή ς

α α γ α

Κ τ ρ φ ή

κ ω δ ι κ ό ς

ό ν ο 

π ά

Υ λ λ η λ ο ς

Ó÷Þìá 4.13: Áðåéêüíéóç óõóóùìÜôùóçò óôï äéÜãñáììá ÏÓ.

Ç êáôÜóôáóç áõôÞ ìðïñåß íá áðåéêïíéóèåß óå Ýíá äéÜãñáììá ÏÓ ìå ôç âïÞ-


èåéá ôçò óõóóùìÜôùóçò, üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 4.13. Ðáñáôçñïýìå üôé
ôá óýíïëá ïíôïôÞôùí ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ áðü êïéíïý ìå ôç óõó÷Ýôéóç
ÓõíäñïìÞ, áðïôåëïýí Ýíá åéêïíéêü óýíïëï ïíôïôÞôùí, ôï ïðïßï óõììåôÝ÷åé óôç
óõó÷Ýôéóç ÊáôáãñáöÞ. ¸ôóé, ãßíåôáé êáé óùóôüôåñç áíáðáñÜóôáóç ôïõ ðñáãìá-
ôéêïý êüóìïõ áëëÜ êáé äåí õðÜñ÷åé áðþëåéá ðëçñïöïñßáò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 115

4.5 Óýíïøç
Ôï ìïíôÝëï ïíôïôÞôùí-óõó÷åôßóåùí (ÏÓ) áðïôåëåß Ýíáí áðëü ôñüðï áíáðáñÜóôá-
óçò ôïõ ðñáãìáôéêïý êüóìïõ. Ôá âáóéêÜ óôïé÷åßá ðïõ ÷áñáêôçñßæïõí ôï ìïíôÝëï
åßíáé ïé ïíôüôçôåò êáé ïé óõó÷åôßóåéò. Ïíôüôçôåò ìå ßäéá ÷áñáêôçñéóôéêÜ óõíèÝ-
ôïõí Ýíá óýíïëï ïíôïôÞôùí êáé óõó÷åôßóåéò ìå ßäéá ÷áñáêôçñéóôéêÜ äçìéïõñãïýí
Ýíá óýíïëï óõó÷åôßóåùí.
Ïé ïíôüôçôåò åíüò óõíüëïõ ïíôïôÞôùí äéáêñßíïíôáé ìåôáîý ôïõò ÷ñçóéìïðïéþ-
íôáò Ýíá êëåéäß, ðïõ áðïôåëåßôáé áðü Ýíá Þ ðåñéóóüôåñá ÷áñáêôçñéóôéêÜ (Þ éäéü-
ôçôåò). Äýï ïíôüôçôåò ìðïñïýí íá óõìöùíïýí óå üëá ôá ÷áñáêôçñéóôéêÜ åêôüò
áðü ôï êëåéäß. ¸íá óýíïëï ïíôïôÞôùí ìðïñåß íá Ý÷åé ðïëëÜ êëåéäéÜ, Ýíá üìùò
èåùñåßôáé ôï ðñùôåýïí êëåéäß. Ôá õðüëïéðá êáëïýíôáé åíáëëáêôéêÜ (Þ äåõôåñåýï-
íôá) êëåéäéÜ.
Ìßá óõó÷Ýôéóç ÷áñáêôçñßæåôáé áðü ôïí ôýðï ôçò áðåéêüíéóçò ðïõ ïñßæåé.
¸ôóé, äéáêñßíïõìå ôéò ðåñéðôþóåéò: 1:1, 1:Í, Í:1 êáé Í:Ì. Ïé áðåéêïíßóåéò áõôÝò
äçëþíïõí ôï ðëÞèïò ôùí ïíôïôÞôùí åíüò óõíüëïõ ðïõ ìðïñïýí íá óõó÷åôéóèïýí
ìå ïíôüôçôåò ôïõ Üëëïõ óõíüëïõ. Óýíïëá óõó÷åôßóåùí ìðïñïýí íá ïñéóèïýí êáé
ãéá ðåñéóóüôåñá ôùí äýï óõíüëùí ïíôïôÞôùí. Ç óõììåôï÷Þ ìßáò ïíôüôçôáò óå Ýíá
óýíïëï óõó÷åôßóåùí ìðïñåß íá åßíáé åßôå êáèïëéêÞ åßôå ìåñéêÞ. Áõôü åîáñôÜôáé
áðïêëåéóôéêÜ áðü ôïõò ðåñéïñéóìïýò ôïõ ðñïâëÞìáôïò êáé áðü ôïí ôñüðï ìï-
íôåëïðïßçóçò ôïõ ðñáãìáôéêïý êüóìïõ. ×ñÞóéìç åßíáé ç Ýííïéá ôçò áäýíáìçò
ïíôüôçôáò ðïõ õðáñîéáêÜ åîáñôÜôáé ðÜíôïôå áðü ìßá éó÷õñÞ ïíôüôçôá.
Ãéá ôç ãñáöéêÞ áíáðáñÜóôáóç åíüò ìïíôÝëïõ ÏÓ ÷ñçóéìïðïéïýíôáé ôá áíôß-
óôïé÷á äéáãñÜììáôá ÏÓ. Ôá äéáãñÜììáôá áõôÜ åßíáé ðïëý ÷ñÞóéìá ãéá ôçí ðå-
ñéãñáöÞ ôùí äåäïìÝíùí êáé ôùí ìåôáîý ôïõò óõó÷åôßóåùí êáé ÷ñçóéìïðïéïýíôáé
ùò ìÝóï åðéêïéíùíßáò ìåôáîý ôïõ ó÷åäéáóôÞ ôçò âÜóçò êáé ôïõ ðåëÜôç/÷ñÞóôç.
Ôï âáóéêü ìïíôÝëï ÏÓ Ý÷åé õðïóôåß åðåêôÜóåéò Ýôóé þóôå íá åìðëïõôéóèåß ìå
íÝá óôïé÷åßá ìå óôü÷ï ôçí êáëýôåñç ìïíôåëïðïßçóç ðïëýðëïêùí ïíôïôÞôùí êáé
óõó÷åôßóåùí. Ïé êõñéüôåñåò åðåêôÜóåéò ôïõ ìïíôÝëïõ ÏÓ åßíáé ç åîåéäßêåõóç, ç
ãåíßêåõóç, ç êëçñïíïìéêüôçôá êáé ç óõóóùìÜôùóç. Ï åíäéáöåñüìåíïò áíáãþ-
óôçò ðïõ åðéèõìåß ìßá åéò âÜèïò ìåëÝôç ôïõ ìïíôÝëïõ ÏÓ ìðïñåß íá ìåëåôÞóåé ôéò
áíáöïñÝò [Batini 1991] êáé [Thalheim 2000].

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


4.1. Íá áíáëõèïýí ïé Ýííïéåò ïíôüôçôá, óõó÷Ýôéóç, óýíïëï ïíôïôÞôùí, óýíïëï
óõó÷åôßóåùí.

4.2. Ðüôå Ýíá ÷áñáêôçñéóôéêü êáëåßôáé óýíèåôï êáé ðüôå ðïëëáðëÞò ôéìÞò; Äþóôå
116 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

áðü Ýíá ðáñÜäåéãìá ãéá ôçí êÜèå ðåñßðôùóç.

4.3. ÐïéÜ åßíáé ÷ñçóéìüôçôá ôïõ êëåéäéïý óå Ýíá óýíïëï ïíôïôÞôùí;

4.4. Óå ðïéÝò ðåñéðôþóåéò áðáéôåßôáé íá ðñïóèÝóïõìå ÷áñáêôçñéóôéêÜ óå Ýíá


óýíïëï óõó÷åôßóåùí; Íá äþóåôå ìåñéêÜ ðáñáäåßãìáôá.

4.5. Íá äþóåôå ðáñáäåßãìáôá áðåéêïíßóåùí 1:1, 1:Í êáé Í:Ì. ÁíáöÝñáôå óõ-
ãêåêñéìÝíåò ðñïûðïèÝóåéò õðü ôéò ïðïßåò ìßá óõó÷Ýôéóç èá ìðïñïýóå íá áíÞêåé
óå äéáöïñåôéêÝò áðåéêïíßóåéò.

4.6. Íá áíáëõèåß ç ðñïáéñåôéêÞ êáé õðï÷ñåùôéêÞ óõììåôï÷Þ ïíôïôÞôùí óå óõ-


ó÷Ýôéóç êáé íá äþóåôå Ýíá ðáñÜäåéãìá ãéá ôçí êÜèå ðåñßðôùóç.

4.7. Íá äïèïýí äýï ðáñáäåßãìáôá ôñéáäéêþí óõíüëùí óõó÷åôßóåùí.

4.8. Åßíáé äõíáôüí ìßá áäýíáìç ïíôüôçôá íá ðáñáóôáèåß ùò ðëåéïíüôéìï óýíèåôï


÷áñáêôçñéóôéêü ôçò éó÷õñÞò ïíôüôçôáò; Íá äïèïýí äýï ðáñáäåßãìáôá åíáëëáêôé-
êþí ó÷åäéáóìþí.

4.9. Íá äïèïýí äýï ðáñáäåßãìáôá õðáñîéáêÞò åîÜñôçóçò. Óôï Ýíá ç õðïôåëÞò


ïíôüôçôá íá åßíáé áäýíáìç, åíþ óôï Üëëï ç õðïôåëÞò ïíôüôçôá íá ìçí åßíáé áäý-
íáìç.

4.10. Íá äïèïýí ðáñáäåßãìáôá ãåíßêåõóçò êáé åîåéäßêåõóçò ìå ðåñéïñéóìïýò


êáé ÷ùñßò ðåñéïñéóìïýò åðéêÜëõøçò êáé ðëçñüôçôáò. Óôï äéÜãñáììá íá áðïôõ-
ðùèïýí êáé ôá êëçñïíïìïýìåíá ÷áñáêôçñéóôéêÜ.

4.11. Íá äïèïýí äýï ðáñáäåßãìáôá óõóóùìÜôùóçò êáé íá ó÷ïëéáóèåß ï ó÷åäéá-


óìüò óáò óå ó÷Ýóç ìå åíáëëáêôéêïýò õðü ôç ìïñöÞ ôñéáäéêþí óõó÷åôßóåùí.

4.12. Íá ìåôáôñáðåß ôï äéÜãñáììá ÏÓ ôïõ Ó÷Þìáôïò 4.1 Ýôóé þóôå íá äßíåôáé ç


äõíáôüôçôá óå Ýíá óõããñáöÝá íá åßíáé ôáõôü÷ñïíá êáé óõíäñïìçôÞò.

4.13. ÈåùñÞóôå ôï äéÜãñáììá ÏÓ ôïõ åðüìåíïõ ó÷Þìáôïò, ôï ïðïßï áðïôåëåßôáé


áðü Ýíá ôñéáäéêü óýíïëï óõó÷åôßóåùí R êáé óýíïëá ïíôïôÞôùí A, B, C. Åðß-
óçò, äßíïíôáé ôñßá äéáöïñåôéêÜ óýíïëá óõó÷åôßóåùí ãéá ôï R, üðïõ a1, a2 ∈ A,
b1, b2 ∈ B, êáé c1, c2 ∈ C.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 117

• Íá ðñïóäéïñéóèåß ðïéü áðü ôá óýíïëá óõó÷åôßóåùí (á), (â) êáé (ã) äåí
áíôéóôïé÷åß óôï äéÜãñáììá ÏÓ. Íá äéêáéïëïãÞóåôå ôçí áðÜíôçóÞ óáò.
• Áí ôá óýíïëá ïíôïôÞôùí A, B êáé C ðåñéÝ÷ïõí áíôéóôïß÷ùò 100, 1000 êáé
10 óôïé÷åßá, ôüôå ðïéüò åßíáé ï ìÝãéóôïò áñéèìüò ôùí óôïé÷åßùí ôïõ óõíüëïõ
óõó÷åôßóåùí R;

M N
A R B

a1 b1 c1 a1 b1 c1 a1 b1 c1
a2 b1 c2 a2 b2 c1 a1 b1 c2
(á) (â) (ã)

4.14. Íá ó÷åäéÜóåôå ôï äéÜãñáììá ÏÓ ãéá ìßá ÂÜóç ÄåäïìÝíùí ó÷åôéêÜ ìå ôï


äéáäßêôõï. Áðáéôåßôáé ç áðïèÞêåõóç ôùí åîÞò äåäïìÝíùí:
• Óôï äéáäßêôõï åßíáé óõíäåäåìÝíïé õðïëïãéóôÝò êÜèå Ýíáò áðü ôïõò ïðïßïõò
÷áñáêôçñßæåôáé áðü ìßá äéåýèõíóç IP (ð.÷., 155.207.113.100), Ýíá üíïìá
(ð.÷., skyblue.csd.auth.gr) êáé ôçí Ýêäïóç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò (ð.÷.,
Windows 2000 Advanced Server).
• Ï êÜèå õðïëïãéóôÞò ðåñéÝ÷åé Ýíá óýóôçìá áñ÷åßùí ìå êáôáëüãïõò (direc-
tories). Ï êÜèå êáôÜëïãïò Ý÷åé Ýíá üíïìá ðïõ åßíáé ìïíáäéêü ãéá ôïí êÜèå
õðïëïãéóôÞ. ÅðïìÝíùò, Ýíáò êáôÜëïãïò ðñïóäéïñßæåôáé ðëÞñùò áðü ôïí
õðïëïãéóôÞ êáé ôï üíïìá ôïõ êáôáëüãïõ. Óå êÜèå êáôÜëïãï áíôéóôïé÷åß ç
çìåñïìçíßá ôåëåõôáßáò áëëáãÞò ôùí ðåñéå÷ïìÝíùí ôïõ.
• ÔÝëïò, áðáéôåßôáé ç áðïèÞêåõóç ôùí ðñïóðåëÜóåùí áðü ÷ñÞóôåò. ÊÜèå
÷ñÞóôçò ÷áñáêôçñßæåôáé áðü ôç äéåýèõíóç IP êáé ôï üíïìá ôïõ õðïëïãéóôÞ
ôïõ ÷ñÞóôç. Óå êÜèå ðñïóðÝëáóç áíôéóôïé÷åß êáé ìßá ÷ñïíéêÞ óôéãìÞ ðïõ
äçëþíåé ðüôå ðñáãìáôïðïéÞèçêå ç ðñïóðÝëáóç.
Íá ó÷åäéáóèåß ôï äéÜãñáììá ÏÓ ãéá ôçí ðñïçãïýìåíç ÂÜóç ÄåäïìÝíùí êáé íá
ó÷ïëéáóèåß ï ôñüðïò åðéëïãÞò ôùí óõíüëùí ïíôïôÞôùí êáé óõó÷åôßóåùí.
118 ÊåöÜëáéï 4. ÌïíôÝëï ÏíôïôÞôùí-Óõó÷åôßóåùí

4.15. Êáëåßóôå íá ó÷åäéÜóåôå ôï äéÜãñáììá ÏÓ ãéá ìßá ÂÜóç ÄåäïìÝíùí ç ïðïßá


èá ÷ñçóéìïðïéçèåß áðü Ýíá êáôÜóôçìá Åíïéêßáóçò ôáéíéþí, óýìöùíá ìå ôéò åîÞò
ðñïäéáãñáöÝò:

• ¸íáò ðåëÜôçò ìðïñåß íá åíïéêéÜóåé üóåò ôáéíßåò åðéèõìåß.

• ÊÜðïéåò ôáéíßåò õðÜñ÷ïõí ìüíï óå êáóÝôá, åíþ êÜðïéåò Üëëåò ìüíï óå


DVD. Ùóôüóï õðÜñ÷ïõí ôáéíßåò êáé ìå ôéò äýï ìïñöÝò.

• ÕðÜñ÷ïõí äéáöïñåôéêÝò êáôçãïñßåò ôáéíéþí, üðùò åðéóôçìïíéêÞò öáíôáóßáò,


äñÜóçò, ôñüìïõ ê.ë.ð.

• Ôï ÷ñïíéêü äéÜóôçìá åíïéêßáóçò ìßáò ôáéíßáò åßíáé ìßá çìÝñá, ôñåéò çìÝñåò
Þ ìßá åâäïìÜäá.

Íá êáôáãñÜøåôå ôéò õðïèÝóåéò êáé ôéò áðëïðïéÞóåéò ðïõ ðñáãìáôïðïéÞóáôå. Óôï


äéÜãñáììá íá öáßíïíôáé óáöþò ôá ÷áñáêôçñéóôéêÜ ôïõ êÜèå óõíüëïõ ïíôïôÞôùí
êáé óõó÷åôßóåùí.
ÅéóáãùãÞ óôï Óýóôçìá Microsoft
5
SQL Server 2000

Óôï êåöÜëáéï áõôü ãßíåôáé ìßá óýíôïìç åéóáãùãÞ óôï ÓÄÂÄ ðïõ èá ÷ñçóéìïðïéÞ-
óïõìå óôç óõíÝ÷åéá ãéá ôçí ðñáêôéêÞ åöáñìïãÞ ôùí èåùñçôéêþí åííïéþí ðïõ èá
ìåëåôÞóïõìå. Ôï óýóôçìá Microsoft SQL Server 2000 (MSSQLS-2000)1 áðïôå-
ëåß Ýíá éó÷õñü ÓÄÂÄ ìå ðïëëÝò äõíáôüôçôåò, ôï ïðïßï ÷ñçóéìïðïéåßôáé åõñýôáôá
ãéá ôç äéá÷åßñéóç ìåãÜëùí ÂÜóåùí ÄåäïìÝíùí. Óçìåéþíåôáé üôé ç ôñÝ÷ïõóá Ýê-
äïóç ôïõ ðñïúüíôïò (SQL Server 2005) Ý÷åé áêüìç ðåñéóóüôåñåò äõíáôüôçôåò.
Ùóôüóï, ç Ýêäïóç SQL Server 2000 êáëýðôåé åðáñêþò ôá èÝìáôá ðïõ ìåëåôþ-
íôáé óôï ðáñüí âéâëßï. Ôïíßæåôáé, üôé äåí åßíáé äõíáôüí íá ðáñïõóéáóèïýí üëåò
ïé äõíáôüôçôåò êáé ëåéôïõñãßåò, äéüôé êÜôé ôÝôïéï åßíáé ðÝñá áðü ôïõò óêïðïýò
áõôïý ôïõ âéâëßïõ. Ùóôüóï, èá ìåëåôÞóïõìå ðïëëÝò áðü ôéò ëåéôïõñãßåò ôïõ óõ-
óôÞìáôïò óå âÜèïò, Ýôóé þóôå íá êáôáíïçèïýí áñêåôÝò ëåðôïìÝñåéåò õëïðïßçóçò
ìßáò ðñáãìáôéêÞò ÂÜóçò ÄåäïìÝíùí. Áõôü èá âïçèÞóåé ôïí áíáãíþóôç áö’ åíüò
íá áðïêôÞóåé ôçí áðáéôïýìåíç åìðåéñßá ÷ñÞóçò åíüò ÓÄÂÄ, êáé áö’ åôÝñïõ íá
ðåéñáìáôéóèåß óå ó÷Ýóç ìå üóá áíáöÝñåé ç áíôßóôïé÷ç èåùñßá, áðïêôþíôáò Ýôóé
1
Óôï åîÞò ÷ñçóéìïðïéïýìå ôç óõíïðôéêÞ ïíïìáóßá ãéá ëüãïõò åõêïëßáò.

119
120 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

ìßá åéò âÜèïò ãíþóç ôïõ áíôéêåéìÝíïõ. Ãéá ðåñéóóüôåñç åìâÜèõíóç óôéò Ýííïéåò
ðïõ ðáñïõóéÜæïíôáé åäþ ðñïôåßíåôáé ç ìåëÝôç åîåéäéêåõìÝíùí âéâëßùí ãéá ôïí
SQL Server, üðùò ôá [Petkovic 2000, Riordan 2000, Sharma 2002, Rankins 2003,
Beauchemin 2004].

5.1 Åêäüóåéò ôïõ MSSQLS-2000


Ôï óýóôçìá MSSQLS-2000 åßíáé äéáèÝóéìï óå äéÜöïñåò åêäüóåéò, áíáëüãùò ìå
ôéò áðáéôÞóåéò ðïõ õðÜñ÷ïõí. Ïé åêäüóåéò ôïõ óõóôÞìáôïò åßíáé ïé åîÞò:

• SQL Server 2000 Enterprise Edition. ×ñçóéìïðïéåßôáé ùò ÓÄÂÄ ãéá ôç


äéá÷åßñéóç ìåãÜëùí ÂÜóåùí ÄåäïìÝíùí. Õðïóôçñßæåé üëåò ôéò äõíáôüôçôåò
ôïõ MSSQLS-2000, åíþ åìöáíßæåé ðïëý êáëÞ êëéìÜêùóç óå ó÷Ýóç ìå ôï
ìÝãåèïò ôùí äåäïìÝíùí êáé ôï ðëÞèïò ôùí ÷ñçóôþí. Ôá ÷áñáêôçñéóôéêÜ
áõôÜ åðéôñÝðïõí óôï óýóôçìá íá ìðïñåß íá ÷ñçóéìïðïéçèåß åðéôõ÷þò ãéá
ôçí õðïóôÞñéîç ìåãÜëùí äéáäéêôõáêþí ôüðùí, ôçí õðïóôÞñéîç óõóôçìÜôùí
ìå ìåãÜëï áñéèìü óõíáëëáãþí óôç ìïíÜäá ôïõ ÷ñüíïõ êáé ôç äéá÷åßñéóç
áðïèçêþí äåäïìÝíùí. ÐïëëÝò áðü áõôÝò ôéò äõíáôüôçôåò èá åîåôÜóïõìå
óå åðüìåíá êåöÜëáéá.

• SQL Server 2000 Standard Edition. ×ñçóéìïðïéåßôáé ùò åîõðçñÝôçò ÂÜ-


óåùí ÄåäïìÝíùí ãéá ìéêñÝò åðé÷åéñÞóåéò êáé ãåíéêÜ ãéá ïìÜäåò åñãáóßáò,
ïé ïðïßåò äåí Ý÷ïõí ðïëý õøçëÝò áðáéôÞóåéò.

• SQL Server 2000 Personal Edition. ×ñçóéìïðïéåßôáé êõñßùò áðü ÷ñÞóôåò


êéíçôþí ôåñìáôéêþí äéáôÜîåùí (mobile terminals), üðùò öïñçôïýò õðïëï-
ãéóôÝò, ïé ïðïßïé áêüìç êáé áí äåí Ý÷ïõí Üìåóç óýíäåóç ìå ôïí êåíôñéêü
åîõðçñÝôç ôçò ÂÄ, åíôïýôïéò ìðïñïýí íá åêôåëïýí ôéò åöáñìïãÝò ÷ñçóéìï-
ðïéþíôáò ôï ôïðéêü óýóôçìá.

• SQL Server 2000 Developer Edition. ×ñçóéìïðïéåßôáé áðü ðñïãñáììá-


ôéóôÝò åöáñìïãþí, ïé ïðïßïé ÷ñåéÜæïíôáé ôçí õðïóôÞñéîç åíüò ÓÄÂÄ ãéá
ôéò åöáñìïãÝò ðïõ áíáðôýóóïõí. Áí êáé ç Ýêäïóç áõôÞ Ý÷åé üëåò ôéò äõ-
íáôüôçôåò ôçò Ýêäïóçò Enterprise, ïé Üäåéåò ÷ñÞóçò åðéôñÝðïõí ìüíï ôçí
áíÜðôõîç êáé ôïí Ýëåã÷ï ôçò ëåéôïõñãßáò ôùí íÝùí åöáñìïãþí, êáé ü÷é ôçí
åãêáôÜóôáóç ôïõ ôåëéêïý ðñïúüíôïò (production database).

• SQL Server 2000 Windows CE Edition. ×ñçóéìïðïéåßôáé ãéá ôçí áðïèÞ-


êåõóç êáé äéá÷åßñéóç äåäïìÝíùí óå õðïëïãéóôÝò ìå ëåéôïõñãéêü óýóôçìá
Microsoft Windows CE.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 121

• SQL Server 2000 Enterprise Evaluation Edition. Ç Ýêäïóç áõôÞ Ý÷åé üëåò
ôéò äõíáôüôçôåò ìå ôç âáóéêÞ äéáöïñÜ üôé Ý÷åé ðåñéïñéóìü ÷ñÞóçò ãéá 120
çìÝñåò áðü ôçí çìåñïìçíßá åãêáôÜóôáóçò. ×ñçóéìïðïéåßôáé êõñßùò ãéá ôç
äïêéìáóôéêÞ ëåéôïõñãßá ôïõ MSSQLS-2000 êáé åßíáé äéáèÝóéìç óôï äéáäß-
êôõï.

• SQL Server 2000 Desktop Engine. Áðïôåëåß ìßá åöáñìïãÞ ìå ôçí ïðïßá ïé
ðñïãñáììáôéóôÝò åöáñìïãþí Ý÷ïõí ôç äõíáôüôçôá äéáíïìÞò åíüò áíôéãñÜ-
öïõ ôçò ìç÷áíÞò ÂÜóçò ÄåäïìÝíùí (database engine) ìáæß ìå ôéò åöáñìïãÝò
ôïõò.

5.2 ÓõóôáôéêÜ ôïõ MSSQLS-2000


Ôï óýóôçìá MSSQLS-2000 äåí åßíáé áðëþò ìßá ìç÷áíÞ ÂÜóåùí ÄåäïìÝíùí. Áí
êáé áõôü áðïôåëåß ôç âáóéêüôåñç ëåéôïõñãßá ôïõ óõóôÞìáôïò, ôï óýóôçìá ðëáé-
óéþíåôáé áðü Ýíáí áñéèìü óçìáíôéêþí åöáñìïãþí ðïõ ðñïóöÝñïõí óçìáíôéêÞ
ëåéôïõñãéêüôçôá êáé åõêïëßåò äéá÷åßñéóçò óôïõò ÷ñÞóôåò. Åäþ ðåñéãñÜöïõìå óõ-
íïðôéêÜ ôá âáóéêüôåñá óõóôáôéêÜ óôïé÷åßá ôïõ MSSQLS-2000, åíþ êÜðïéá áðü
áõôÜ åîåôÜæïíôáé óôç ëåðôïìÝñåéÜ ôïõò óå Üëëá êåöÜëáéá ôïõ âéâëßïõ. Ãéá ôçí
áðïöõãÞ ðáñåñìçíåßáò, ÷ñçóéìïðïéïýìå ôçí áããëéêÞ ãëþóóá ãéá ôçí ïíïìáôï-
ëïãßá.

5.2.1 SQL Server Database Engine


Áðïôåëåß ôï âáóéêü ðõñÞíá ôïõ óõóôÞìáôïò êáé áíáëáìâÜíåé üëåò ôéò ëåéôïõñãßåò
áðïèÞêåõóçò êáé ðñïóðÝëáóçò ôùí äåäïìÝíùí. Ïé âáóéêÝò õðåõèõíüôçôåò ôçò
ìç÷áíÞò åßíáé:

• ç áîéüðéóôç áðïèÞêåõóç ôùí äåäïìÝíùí ðïõ ëáìâÜíïíôáé,

• ç ðáñï÷Þ ãñÞãïñçò ðñïóðÝëáóçò äåäïìÝíùí,

• ç ôÞñçóç ôçò óõíÝðåéáò ôùí äåäïìÝíùí ìå ôç ÷ñÞóç åîåéäéêåõìÝíùí ìç÷á-


íéóìþí åëÝã÷ïõ ôáõôü÷ñïíùí ðñïóðåëÜóåùí,

• ç åöáñìïãÞ äéáäéêáóéþí ðïõ åããõþíôáé ôçí áóöÜëåéá ôùí áðïèçêåõìÝíùí


äåäïìÝíùí,

• ç åöáñìïãÞ êáíüíùí áêåñáéüôçôáò äåäïìÝíùí Ýôóé þóôå íá äéáôçñçèåß


ç ðïéüôçôá ôùí äåäïìÝíùí ôçò âÜóçò êáôÜ ôéò åéóáãùãÝò, äéáãñáöÝò êáé
åíçìåñþóåéò.
122 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

5.2.2 SQL Server Enterprise Manager


Ôï ôìÞìá áõôü ôïõ óõóôÞìáôïò áðïôåëåß ôçí êåíôñéêÞ êïíóüëá äéá÷åßñéóçò áðü
üðïõ ìðïñïýí íá óõíôïíéóèïýí üëåò ïé ëåéôïõñãßåò äéá÷åßñéóçò ôçò ÂÜóçò Äå-
äïìÝíùí. Ìå ôç ÷ñÞóç ôçò åöáñìïãÞò áõôÞò ìðïñïýìå íá åêôåëÝóïõìå ðïëýðëï-
êåò åñãáóßåò óå üëåò ôéò ÂÜóåéò ÄåäïìÝíùí, ôéò ïðïßåò äéá÷åéñßæåôáé ôï óýóôçìá
MSSQLS-2000. Ìßá åéêüíá ôïõ Enterprise Manager äßíåôáé óôï Ó÷Þìá 5.1.

Ó÷Þìá 5.1: ÅìöÜíéóç ìåñéêþí äõíáôïôÞôùí ôïõ Enterprise Manager.

Ç êïíóüëá áõôÞ äßíåé ôç äõíáôüôçôá åêôÝëåóçò ðïëëþí âáóéêþí ëåéôïõñãéþí


äéá÷åßñéóçò ôùí ÂÜóåùí ÄåäïìÝíùí, üðùò:
• ôáõôü÷ñïíç äéá÷åßñéóç ðïëëþí ÂÜóåùí ÄåäïìÝíùí,
• äéá÷åßñéóç ëïãáñéáóìþí ÷ñçóôþí,
• êáèïñéóìüò áõôüìáôçò åêôÝëåóçò êÜðïéùí ëåéôïõñãéþí óå ôáêôÜ ÷ñïíéêÜ
äéáóôÞìáôá,
• äçìéïõñãßá íÝùí ÂÜóåùí ÄåäïìÝíùí,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 123

• äçìéïõñãßá áíôéãñÜöùí áóöáëåßáò,


• ìåôáöïñÜ äåäïìÝíùí áðü ìßá ÂÜóç ÄåäïìÝíùí óå Üëëç,
• ðáñáêïëïýèçóç ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò êáé ôùí åíäå÷ïìÝíùí óöáëìÜ-
ôùí ðïõ óõìâáßíïõí (error log)
5.2.3 SQL Server Agent
Ï SQL Server Agent åßíáé Ýíá âïçèçôéêü åñãáëåßï ðïõ ÷ñçóéìïðïéåßôáé ãéá ÷ñï-
íïðñïãñáììáôéóìü ëåéôïõñãéþí ðïõ èÝëïõìå íá åêôåëïýíôáé óå óõãêåêñéìÝíåò
÷ñïíéêÝò óôéãìÝò. Åðßóçò, ÷ñçóéìïðïéåßôáé ãéá ôçí åêôÝëåóç ëåéôïõñãéþí áí óõì-
âåß êÜðïéï óçìáíôéêü ãåãïíüò (ð.÷., áí äåí õðÜñ÷åé äéáèÝóéìïò ÷þñïò óôç ÂÜóç
ÄåäïìÝíùí). Óå ìßá ôÝôïéá ðåñßðôùóç, ï Agent ìðïñåß íá ðñïãñáììáôéóèåß þóôå
íá åêôåëÝóåé ìßá óõãêåêñéìÝíç ëåéôïõñãßá óôç ÂÜóç ÄåäïìÝíùí Þ íá óôåßëåé Ýíá
ìÞíõìá e-mail óôï äéá÷åéñéóôÞ þóôå íá åéäïðïéçèåß ãéá ôï ãåãïíüò.
Ï SQL Server Agent åßíáé ìßá õðçñåóßá (service) ôïõ ëåéôïõñãéêïý óõóôÞìáôïò
Windows, ç ïðïßá åêôåëåßôáé óôï ßäéï õðïëïãéóôéêü óýóôçìá üðïõ åêôåëåßôáé êáé
ç ìç÷áíÞ ôïõ MSSQLS-2000. Ç äéá÷åßñéóç ôïõ Agent ìðïñåß íá ãßíåé åßôå áðü
ôïí Enterprise Manager åßôå ìÝóù ôçò åöáñìïãÞò äéá÷åßñéóçò õðçñåóéþí (service
management) ôùí Windows.
Óå åãêáôáóôÜóåéò üðïõ õðÜñ÷ïõí ðïëëïß åîõðçñÝôåò ðïõ äéá÷åéñßæïíôáé äéá-
öïñåôéêÝò åãêáôáóôÜóåéò ôïõ MSSQLS-2000, ï Agent ìðïñåß íá ÷ñçóéìïðïéçèåß
ãéá ôçí ðñïþèçóç êïéíþí åñãáóéþí ðñïò ôéò äéáöïñåôéêÝò ìç÷áíÝò MSSQLS-
2000.

5.2.4 SQL Query Analyzer


Ï SQL Query Analyzer áðïôåëåß ìßá åöáñìïãÞ ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá
ôçí áðïóôïëÞ åñùôçìÜôùí SQL ðñïò ôç ìç÷áíÞ ôçò ÂÜóçò ÄåäïìÝíùí. Äßíåôáé
ç äõíáôüôçôá ôáõôü÷ñïíçò óýíäåóçò ìå ðïëëÝò åãêáôáóôÜóåéò MSSQLS-2000 êáé
ç áðïóôïëÞ åñùôçìÜôùí ðñïò áõôÝò. Ôï åñãáëåßï áõôü ðáñÝ÷åé ðñïêáôáóêåõá-
óìÝíåò åíôïëÝò (templates) ðïõ ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ãéá ðïëëÝò óç-
ìáíôéêÝò ëåéôïõñãßåò, üðùò êáôáóêåõÞ íÝáò ÂÜóçò ÄåäïìÝíùí, êáôáóêåõÞ íÝùí
ðéíÜêùí, ê.ë.ð.

5.2.5 SQL Profiler


Ï SQL Profiler åßíáé Ýíá óçìáíôéêü åñãáëåßï ðïõ Ý÷åé ôç äõíáôüôçôá íá êá-
ôáãñÜøåé üëåò ôéò ìåôáêéíÞóåéò åñùôçìÜôùí êáé äåäïìÝíùí áðü êáé ðñïò ôïí
MSSQLS-2000. Áðü ôç ìåëÝôç ôùí êáôáãñáöþí áõôþí ìðïñïýìå íá åîÜãïõìå
÷ñÞóéìá óõìðåñÜóìáôá ãéá ôç äéáäéêáóßá åêôÝëåóçò åíüò åñùôÞìáôïò. Ïé âáóé-
êüôåñåò ÷ñÞóåéò ôïõ SQL Profiler åßíáé ïé åîÞò:
124 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

• ÊáôáãñáöÞ ôùí åíôïëþí SQL ðïõ áðïóôÝëëïíôáé óôï óýóôçìá áðü Ýíá
ðñüãñáììá åöáñìïãÞò ãéá ôï ïðïßï ï ðçãáßïò êþäéêáò äåí åßíáé äéáèÝóé-
ìïò.
• ÊáôáãñáöÞ üëùí ôùí åñùôçìÜôùí ðïõ Ý÷ïõí áðïóôáëåß êáé äõíáôüôçôá
åðáíåêôÝëåóçò ôùí åñùôçìÜôùí ãéá ôç äéåíÝñãåéá åëÝã÷ùí.
• Óå ðåñéðôþóåéò ðïõ åìöáíßæïíôáé óöÜëìáôá ôýðïõ Access Violation, ìðï-
ñïýìå íá ÷ñçóéìïðïéÞóïõìå ôïí Profiler ãéá íá äéáðéóôþóïõìå ôï áßôéï ôïõ
ðñïâëÞìáôïò.
• Ï SQL Profiler Ý÷åé ôç äõíáôüôçôá íá êáôáãñÜøåé ðëçñïöïñßåò áðüäï-
óçò ó÷åôéêÜ ìå ôçí åêôÝëåóç ôùí åñùôçìÜôùí. Ìå ôïí ôñüðï áõôü ìðï-
ñïýìå åýêïëá íá áíáãíùñßóïõìå åñùôÞìáôá ðïõ åßíáé áñêåôÜ ðïëýðëïêá
êáé åðïìÝíùò åðéöÝñïõí êáèõóôÝñçóç óôç ëåéôïõñãßá ôïõ óõóôÞìáôïò. Ôï
ðñüâëçìá åßíáé åíôïíüôåñï áí õðÜñ÷ïõí ðïëëïß ÷ñÞóôåò ðïõ áðïóôÝëëïõí
åñùôÞìáôá ìå ìåãÜëåò áðáéôÞóåéò. Óå ìßá ôÝôïéá ðåñßðôùóç ìðïñïýìå åý-
êïëá íá äéáðéóôþóïõìå áí õðÜñ÷åé åóêåììÝíç ðñüèåóç ìåßùóçò ôçò áðü-
äïóçò ôïõ óõóôÞìáôïò.
5.2.6 Data Transformation Services (DTS)
Ôï åñãáëåßï DTS ÷ñçóéìïðïéåßôáé ãéá ôçí åéóáãùãÞ äåäïìÝíùí áðü áñ÷åßá êåéìÝ-
íïõ êáé ôç ìåôáêßíçóç äåäïìÝíùí áðü ìßá ðçãÞ óå Üëëç. ÌÝóù ôçò åöáñìïãÞò
DTS Designer, óôçí ïðïßá Ý÷ïõìå ðñüóâáóç áðü ôïí Enterprise Manager, üðùò
äåß÷íåé ôï Ó÷Þìá 5.2, ìðïñïýìå íá åêôåëÝóïõìå ôéò åîÞò ëåéôïõñãßåò:
• ÅéóáãùãÞ äåäïìÝíùí óôïí MSSQLS-2000 áðü áñ÷åßá êåéìÝíïõ,
• Äéáóýíäåóç ìå ÓÄÂÄ Üëëùí êáôáóêåõáóôþí (üðùò Oracle, DB2 ê.ë.ð.)
ìÝóù ôùí äéåðáöþí OLEDB êáé ODBC,
• ÓõããñáöÞ ìéêñþí ðñïãñáììÜôùí (scripts) ìåôáôñïðÞò äåäïìÝíùí áðü ìßá
ìïñöÞ óå Üëëç,
• Óýíäåóç ìå ftp servers êáé äõíáôüôçôá áíÜãíùóçò áñ÷åßùí êáé ìåôáöïñÜ
áõôþí (download) óôï ôïðéêü óýóôçìá,
• ÁðïóôïëÞ ìçíýìáôïò e-mail ìå ôçí ðåñéãñáöÞ åíüò óöÜëìáôïò Þ ôá áðï-
ôåëÝóìáôá åíüò åñùôÞìáôïò,
• Äéáóýíäåóç ìå ôçí ïõñÜ ìçíõìÜôùí MS Message Queue êáé äõíáôüôçôá
ëÞøçò, áðïóôïëÞò êáé åðåîåñãáóßáò ìçíõìÜôùí.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 125

Ó÷Þìá 5.2: Ðñüóâáóç óôï åñãáëåßï DTS áðü ôïí Enterprise Manager.

5.2.7 SQL Server Analysis Services


Ç áíÜëõóç ôùí áðïèçêåõìÝíùí äåäïìÝíùí Ý÷åé áðáó÷ïëÞóåé óçìáíôéêÜ ôïõò
åñåõíçôÝò ôá ôåëåõôáßá ÷ñüíéá. Ï MSSQLS-2000 ðáñÝ÷åé ðëÞñç õðïóôÞñéîç ãéá
ôçí äéá÷åßñéóç áðïèÞêçò äåäïìÝíùí ìÝóù ôïõ åñãáëåßïõ Analysis Services êáé
õðïóôçñßæåé ôçí åðåîåñãáóßá åñùôçìÜôùí OLAP êáé åîüñõîçò äåäïìÝíùí. Ôá
åñùôÞìáôá áõôÜ ÷ñçóéìïðïéïýíôáé êõñßùò ãéá ôïõò åîÞò óêïðïýò:

• Ôçí áíÜëõóç ôùí äåäïìÝíùí ìå óôü÷ï ôçí áíß÷íåõóç ôÜóåùí ðïõ åìöáíßæï-
íôáé, äéåõêïëýíïíôáò ôçí ðñüâëåøç (ð.÷., ðñüâëåøç åóüäùí áðü ðùëÞóåéò
ôçí åðüìåíç ÷ñïíéÜ),

• Ôçí áíáêÜëõøç óõó÷åôßóåùí ðïõ õðÜñ÷ïõí ìåôáîý ôùí äåäïìÝíùí (ð.÷., ôï


80% ôùí ðåëáôþí åíüò supermarket ðïõ áãïñÜæåé ôï ðñïúüí Á èá áãïñÜóåé
êáé ôï ðñïúüí Â),

• Ôçí Üèñïéóç äåäïìÝíùí êáé ôçí åðéëïãÞ ôïõ åðéðÝäïõ ëåðôïìÝñåéáò ìå


âÜóç ôçí ïðïßá èÝëïõìå íá åìöáíßæïíôáé ôá äåäïìÝíá (ð.÷., ðñïâïëÞ ôùí
ðùëÞóåùí êéíçôþí ôçëåöþíùí óôçí ÅëëÜäá áíÜ ìÞíá, áíÜ ôñßìçíï Þ áíÜ
åîÜìçíï).
126 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

Ïé ëåéôïõñãßåò ðïõ áíáöÝñèçêáí äåí ìðïñïýí íá åêôåëåóèïýí áðü Ýíá áðëü


ÓÄÂÄ êáé ãéá ôï ëüãï áõôü Ý÷ïõí õëïðïéçèåß åéäéêÜ åñãáëåßá ðïõ äéåõêïëýíïõí
ôï ÷ñÞóôç óå ðïëý ìåãÜëï âáèìü.

5.2.8 Microsoft Full-Text Search Services


ÈåùñÞóôå ìßá ìåãÜëç óõëëïãÞ êåéìÝíùí, ç ïðïßá ÷ñçóéìïðïéåßôáé ùò çëåêôñï-
íéêÞ âéâëéïèÞêç (ð.÷., áñ÷åßá PDF). Ìßá ðïëý ÷ñÞóéìç ëåéôïõñãßá åßíáé ç åýñåóç
ôùí êåéìÝíùí ðïõ ðåñéÝ÷ïõí êÜðïéåò ëÝîåéò-êëåéäéÜ (keywords) ïñéæüìåíåò áðü ôï
÷ñÞóôç. Ùóôüóï, ç åðéëïãÞ óõãêåêñéìÝíùí ëÝîåùí ôïõ êåéìÝíïõ êáé ç óýãêñéóç
áõôþí ìå ôéò ëÝîåéò ðïõ äßíåé ï ÷ñÞóôçò äåí åðéöÝñåé ðÜíôïôå ôá êáëýôåñá áðï-
ôåëÝóìáôá. Ç êáëýôåñç ìÝèïäïò åßíáé ç ïñãÜíùóç üëùí (Þ ôùí ðåñéóóïôÝñùí)
ëÝîåùí ôùí êåéìÝíùí óå åéäéêÝò äïìÝò Ýôóé þóôå íá ìðïñïýìå íá ðñïóäéïñß-
óïõìå ãñÞãïñá êáé áðïäïôéêÜ ôá êåßìåíá ðïõ ðåñéÝ÷ïõí ôéò ëÝîåéò áíáæÞôçóçò.
Ôéò äõíáôüôçôåò áõôÝò ôéò ÷ñçóéìïðïéïýìå üëïé ìáò êáèçìåñéíÜ ìå ôç âïÞèåéá ôùí
ìç÷áíþí áíáæÞôçóçò (ð.÷., Google, AltaVista, ê.ë.ð.). Ï MSSQLS-2000 ðáñÝ÷åé
õðïóôÞñéîç áíáæÞôçóçò ðëÞñïõò êåéìÝíïõ (full-text) ìÝóù ôùí õðçñåóéþí Full-
Text Search Services.

5.2.9 English Query


Ôï åñãáëåßï English Query ðáñÝ÷åé ôç äõíáôüôçôá áíÜðôõîçò åöáñìïãþí ðïõ
ìðïñïýí íá èÝôïõí åñùôÞìáôá óôçí áããëéêÞ ãëþóóá, ìå áðïôÝëåóìá íá åßíáé
öéëéêüôåñåò ðñïò ôï ÷ñÞóôç. Ç áíÜðôõîç ôùí åöáñìïãþí áõôþí õðïóôçñßæåôáé
áðü ôï Visual Studio ÷ñçóéìïðïéþíôáò ôïí åðéìåëçôÞ English Query Model Editor.

5.2.10 Distributed Transaction Coordinator


Óå ðïëëÝò ðåñéðôþóåéò ôá äåäïìÝíá äåí åßíáé áðïèçêåõìÝíá óå ìßá ìüíï ÂÜóç
ÄåäïìÝíùí, áëëÜ åßíáé êáôáíåìçìÝíá óå ðåñéóóüôåñåò. ÅðïìÝíùò, ðñïêýðôåé ç
áíÜãêç ìç÷áíéóìþí åëÝã÷ïõ ôçò ñïÞò åêôÝëåóçò ôùí åñùôçìÜôùí, êáèþò åðßóçò
êáé ìç÷áíéóìïß óõã÷ñïíéóìïý Ýôóé þóôå íá õðÜñ÷åé äéáöÜíåéá. Ãéá ôï óêïðü áõôü
ç Microsoft ðáñÝ÷åé Ýíá óçìáíôéêü ëïãéóìéêü ðïõ êáëåßôáé Distributed Transac-
tion Coordinator (MS DTC) êáé åêôåëåßôáé ìå ôç ìïñöÞ õðçñåóßáò. ÔõðéêÜ, óå
êÜèå óýóôçìá üðïõ õðÜñ÷åé åãêáôÜóôáóç ôïõ MSSQQLS-2000 åêôåëåßôáé êáé ìßá
õðçñåóßá MS DTC.

5.2.11 SQL Server Service Manager


Ï SQL Server Service Manager (äéá÷åéñéóôÞò õðçñåóéþí ôïõ SQL Server) åßíáé
ìßá ìéêñÞ åöáñìïãÞ ðïõ ÷ñçóéìïðïéåßôáé ãéá ôïí Ýëåã÷ï ôùí åîÞò óõóôáôéêþí ôïõ
MSSQLS-2000:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 127

• ôç ìç÷áíÞ ÂÜóåùí ÄåäïìÝíùí ôïõ MSSQLS-2000 (SQL Server database


engine),

• ôïí SQL Server Agent,

• ôç ìç÷áíÞ áíáæÞôçóçò ðëÞñïõò êåéìÝíïõ (full-text search engine),

• ôï óõíôïíéóôÞ êáôáíåìçìÝíùí óõíáëëáãþí (distributed transaction coordi-


nator),

• ôïí åîõðçñÝôç OLAP, ï ïðïßïò ÷ñçóéìïðïéåßôáé ãéá ôç äéá÷åßñéóç áðïèçêþí


äåäïìÝíùí.

Ï Service Manager áðïôåëåß óçìáíôéêü âïÞèçìá êáèþò åßíáé äõíáôüò ï Ýëåã÷ïò


ôùí ðñïçãïýìåíùí õðïóõóôçìÜôùí óå ïðïéïäÞðïôå õðïëïãéóôÞ ôïõ äéêôýïõ ðïõ
Ý÷åé åãêáôÜóôáóç ôïõ MSSQLS-2000.

5.3 Ïé ÂÜóåéò ÄåäïìÝíùí ÓõóôÞìáôïò


ÊÜèå åãêáôÜóôáóç ôïõ MSSQLS-2000 ðåñéÝ÷åé ôÝóóåñéò äéáöïñåôéêÝò ÂÜóåéò
ÄåäïìÝíùí, ïé ïðïßåò ÷ñçóéìïðïéïýíôáé îå÷ùñéóôÜ áðü ôéò âÜóåéò ðïõ ðåñéÝ÷ïõí
ôá êõñßùò äåäïìÝíá. Ïé âÜóåéò áõôÝò ïíïìÜæïíôáé master, model, msdb êáé
tempdb êáé åìöáíßæïíôáé óôïí Enterprise Manager üðùò äåß÷íåé ôï Ó÷Þìá 5.3.
Óôç óõíÝ÷åéá ðåñéãñÜöåôáé ç ÷ñÞóç ôçò êÜèå ÂÜóçò ÄåäïìÝíùí:

• master: Óôç âÜóç áõôÞ êáôáãñÜöïíôáé üëåò ïé ðëçñïöïñßåò ðïõ áðáéôïý-


íôáé ãéá ôç äéá÷åßñéóç åíüò óõóôÞìáôïò MSSQLS-2000, óôéò ïðïßåò ìåôáîý
Üëëùí ðåñéëáìâÜíïíôáé ïé ëïãáñéáóìïß ôùí ÷ñçóôþí êáé ïé ÂÜóåéò Äå-
äïìÝíùí ðïõ ïñßæïíôáé ìÝóá óôá ðëáßóéá ôïõ óõóôÞìáôïò. Ôï óýíïëï ôùí
ðëçñïöïñéþí ôçò âÜóçò êáëåßôáé êáôÜëïãïò óõóôÞìáôïò.

• model: Ç âÜóç áõôÞ ÷ñçóéìïðïéåßôáé ùò ðñüôõðï üôáí äçìéïõñãïýíôáé íÝåò


ÂÜóåéò ÄåäïìÝíùí ÷ñçóôþí. ÐåñéÝ÷åé ôéò áðáñáßôçôåò ðëçñïöïñßåò ðïõ
÷ñçóéìïðïéïýíôáé áðü ôïí MSSQLS-2000 ãéá íá ïñßæïíôáé ôá äåäïìÝíá
ðïõ õðÜñ÷ïõí óôéò âÜóåéò ôùí ÷ñçóôþí.

• msdb: Ç âÜóç áõôÞ ÷ñçóéìïðïéåßôáé áðü ôïí SQL Server Agent ãéá ôçí
áðïèÞêåõóç ðëçñïöïñéþí ó÷åôéêÜ ìå ôï ÷ñïíïðñïãñáììáôéóìü ëåéôïõñ-
ãéþí êáé ôïí ðñïóäéïñéóìü óçìáíôéêþí ãåãïíüôùí ðïõ áí óõìâïýí, ôüôå
èá ðñÝðåé áõôüìáôá íá åêôåëåóèåß êÜðïéá åíÝñãåéá.
128 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

Ó÷Þìá 5.3: ÂÜóåéò ÄåäïìÝíùí óõóôÞìáôïò üðùò åìöáíßæïíôáé óôïí Enterprise


Manager.

• tempdb: Ç âÜóç áõôÞ ÷ñçóéìïðïéåßôáé ùò ÷þñïò ðñïóùñéíÞò áðïèÞêåõ-


óçò (üðùò ï êáôÜëïãïò tmp óå óõóôÞìáôá UNIX Þ TEMP óå óõóôÞìáôá
Windows). Ôá ðåñéå÷üìåíá ôçò âÜóçò äéáãñÜöïíôáé êáôÜ ôïí ôåñìáôéóìü
ôçò ëåéôïõñãßáò ôïõ MSSQLS-2000. Åðßóçò, áí äçìéïõñãçèïýí ðñïóùñéíÜ
äåäïìÝíá ãéá ôçí åîõðçñÝôçóç åíüò ÷ñÞóôç, ôá äåäïìÝíá èá äéáãñáöïýí
ìåôÜ ôçí áðïóýíäåóç ôïõ ÷ñÞóôç áðü ôï óýóôçìá.
ÌåôÜ áðü ìßá íÝá åãêáôÜóôáóç ôïõ MSSQLS-2000 äçìéïõñãïýíôáé äýï íÝåò
ÂÜóåéò ÄåäïìÝíùí, ïé ïðïßåò ìðïñïýí íá ÷ñçóéìïðïéçèïýí ùò ðáñáäåßãìáôá. Ïé
âÜóåéò áõôÝò åßíáé:
• pubs: åßíáé ìßá åîáéñåôéêÜ áðëÞ âÜóç êáé éäáíéêÞ ãéá åêðáéäåõôéêïýò óêï-
ðïýò. Ç âÜóç êáôáëáìâÜíåé ìüëéò 2MBytes óôï äßóêï.
• northwind: åßíáé ðïëõðëïêüôåñç êáé ðáñïõóéÜæåé ðåñéóóüôåñåò äõíáôüôç-
ôåò ôïõ MSSQLS-2000. Ôï ìÝãåèïò ôçò âÜóçò åßíáé ðåñßðïõ 4MBytes.
Ïé âÜóåéò áõôÝò ìðïñïýí íá äéáãñáöïýí ÷ùñßò êáíÝíá ðñüâëçìá. Ùóôüóï, óõ-
íéóôÜôáé ïé âÜóåéò íá äéáôçñçèïýí ùò Ý÷ïõí, Ýôóé þóôå íá õðÜñ÷åé ç äõíáôüôçôá
ðåéñáìáôéóìïý ìå ôéò äõíáôüôçôåò ôïõ MSSQLS-2000.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 129

5.4 Äçìéïõñãßá ÂÜóçò ÄåäïìÝíùí


Ç äçìéïõñãßá ìßáò íÝáò ÂÜóçò ÄåäïìÝíùí åßíáé ìßá áðëÞ äéáäéêáóßá ãéá ôï
äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò ÷Üñéò óôéò äéåõêïëýíóåéò ðïõ ðáñÝ÷åé ï Enterprise
Manager. Óôç óõíÝ÷åéá ðáñáèÝôïõìå ôá âáóéêÜ âÞìáôá ðïõ ðñÝðåé íá áêï-
ëïõèçèïýí ãéá ôç äçìéïõñãßá ôçò ÂÜóçò ÄåäïìÝíùí e-library, ðïõ ðñüêåéôáé íá
÷ñçóéìïðïéçèåß ùò çëåêôñïíéêÞ âéâëéïèÞêç åðéóôçìïíéêþí Üñèñùí.

Ó÷Þìá 5.4: Äçìéïõñãßá íÝáò ÂÜóçò ÄåäïìÝíùí óôïí Enterprise Manager.

Óôï Ó÷Þìá 5.4 äßíåôáé ìßá åéêüíá ôïõ Enterprise Manager üðïõ äåß÷íåôáé ç
åðéëïãÞ ãéá äçìéïõñãßá íÝáò âÜóçò. Óôç óõíÝ÷åéá åìöáíßæåôáé Ýíá íÝï ðáñÜèõñï
üðïõ ðñÝðåé íá óõìðëçñþóïõìå ôï üíïìá ôçò íÝáò âÜóçò, êáèþò êáé ìåñéêÝò
Üëëåò ðëçñïöïñßåò, üðùò ôï üíïìá ôïõ êáôáëüãïõ (directory) üðïõ èá áðïèç-
êåõèïýí ôá áñ÷åßá ðïõ áíôéóôïé÷ïýí óôç íÝá âÜóç (âë. Ó÷Þìá 5.5). ÌåôÜ ôçí
ïëïêëÞñùóç ôçò äéáäéêáóßáò, ç íÝá ÂÜóç ÄåäïìÝíùí åìöáíßæåôáé óôïí Enterprise
Manager, êÜôù áðü ôçí åðéëïãÞ Databases, üðùò äåß÷íåé ôï Ó÷Þìá 5.6.
Ç íÝá âÜóç ðïõ ìüëéò äçìéïõñãÞóáìå äåí ðåñéÝ÷åé äåäïìÝíá. Ãéá íá ìðïñÝ-
óïõìå íá áðïèçêåýóïõìå äåäïìÝíá óôç âÜóç ðñÝðåé ðñþôá íá êáôáóêåõÜóïõìå
êÜðïéïõò ðßíáêåò. ×ñçóéìïðïéþíôáò ôïõò ðßíáêåò óôç óõíÝ÷åéá Ý÷ïõìå ôç äõíá-
130 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

Ó÷Þìá 5.5: ÄÞëùóç ïíüìáôïò íÝáò âÜóçò.

ôüôçôá íá êáôáóêåõÜóïõìå äéáãñÜììáôá ÏÓ, Ýôóé þóôå íá Ý÷ïõìå Ýíá ìïíôÝëï


ôçò ÂÜóçò ÄåäïìÝíùí, ôï ïðïßï íá ìðïñïýìå íá ìåôáâÜëïõìå áíáëüãùò ìå ôéò
áíÜãêåò. Ï ôñüðïò êáôáóêåõÞò ôùí ðéíÜêùí êáé ôùí äéáãñáììÜôùí ÏÓ áíáëýå-
ôáé óå åðüìåíï êåöÜëáéï ôïõ âéâëßïõ, ìåôÜ ôç ìåëÝôç ôçò èåùñßáò ôùí ó÷åóéáêþí
óõóôçìÜôùí.

5.5 Óýíïøç
¸íá áðïôåëåóìáôéêü ÓÄÂÄ äåí ÷áñáêôçñßæåôáé ìüíï áðü ôçí éêáíüôçôá äéá÷åß-
ñéóçò ôùí áðïèçêåõìÝíùí äåäïìÝíùí áëëÜ êáé áðü ôï óýíïëï ôùí åñãáëåßùí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 131

Ν έ α β ά σ η δ ε δ ο
έ ν ω ν

Ó÷Þìá 5.6: ÅìöÜíéóç íÝáò ÂÜóçò ÄåäïìÝíùí óôïí Enterprise Manager.

ðïõ ðáñÝ÷åé ãéá ôç ãåíéêüôåñç åðïðôåßá ôïõ óõóôÞìáôïò. Óôï êåöÜëáéï áõôü
åíôïðßóáìå ôá óçìáíôéêüôåñá õðïóõóôÞìáôá ôïõ MSSQLS-2000, ôá ïðïßá êáëý-
ðôïõí Ýíá ìåãÜëï åýñïò áðáéôçôéêþí åöáñìïãþí, êáé óõíïðôéêÜ ðåñéãñÜøáìå ôéò
äõíáôüôçôÝò ôïõò. ÌåñéêÝò áðü ôéò óçìáíôéêüôåñåò åñãáóßåò ìðïñïýí íá åêôå-
ëåóèïýí ìå ôç âïÞèåéá ôçò êïíóüëáò ôïõ Enterprise Manager, üðùò äçìéïõñãßá
íÝáò ÂÜóçò ÄåäïìÝíùí, äçìéïõñãßá ëïãáñéáóìþí ÷ñçóôþí, êáôáóêåõÞ ðéíÜêùí,
ê.ë.ð. Óå åðüìåíá êåöÜëáéá èá åìâáèýíïõìå óå ðåñéóóüôåñá ÷áñáêôçñéóôéêÜ ôïõ
MSSQLS-2000 êáé èá åîåôÜóïõìå ôïí ôñüðï ÷ñÞóçò ôïõ ãéá ôçí áðïôåëåóìáôéêÞ
êáé áðïäïôéêÞ äéá÷åßñéóç ÂÜóåùí ÄåäïìÝíùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


5.1. Íá ðáñáèÝóåôå ôéò âáóéêÝò åêäüóåéò ôïõ óõóôÞìáôïò MSSQLS-2000 êáé íá
ðåñéãñÜøåôå óõíïðôéêÜ ôçí êÜèå ìßá.

5.2. ÐïéÜ åßíáé ôá âáóéêÜ óõóôáôéêÜ ôïõ MSSQLS-2000;

5.3. Ìå ôç âïÞèåéá ôïõ Enterprise Manager íá êáôáóêåõÜóåôå ìßá íÝá ÂÜóç Äå-
132 ÊåöÜëáéï 5. ÅéóáãùãÞ óôï Óýóôçìá Microsoft SQL Server 2000

äïìÝíùí ìå ôï üíïìá MyFirstDB. ÐáñáôçñÞóôå ðñïóåêôéêÜ êáé êáôáãñÜøôå ôéò


ðáñáìÝôñïõò ðïõ ìðïñïýìå íá ñõèìßóïõìå êáôÜ ôç äçìéïõñãßá ôçò íÝáò âÜóçò.

5.4. ×ñçóéìïðïéþíôáò ôïí Enterprise Manager åîåñåõíÞóôå ôá äåäïìÝíá ðïõ


åßíáé áðïèçêåõìÝíá óôéò ÂÜóåéò ÄåäïìÝíùí pubs êáé northwind ðïõ êáôáóêåõÜ-
æïíôáé ìåôÜ ôçí åãêáôÜóôáóç ôïõ SQL Server 2000.

5.5. ÅðéëÝîôå ôç ÂÜóç ÄåäïìÝíùí northwind êáé ÷ñçóéìïðïéþíôáò ôïí Query An-
alyzer ðëçêôñïëïãÞóôå ôçí åíôïëÞ SELECT * FROM orders. ÐáñáôçñÞóôå ôá
áðïôåëÝóìáôá.

5.6. ÐïéÜ åßíáé ç ÷ñÞóç ôïõ SQL Server Agent;

5.7. ÐïéÝò åßíáé ïé ÂÜóåéò ÄåäïìÝíùí óõóôÞìáôïò ôïõ MSSQLS-2000; Íá ðåñé-


ãñÜøåôå ôç ÷ñçóéìüôçôá ôçò êÜèå ìßáò.

5.8. Ãéáôß êáôÜ ôç ãíþìç óáò åßíáé áðáñáßôçôç ç äéá÷åßñéóç ðïëëþí ÂÜóåùí
ÄåäïìÝíùí áðü Ýíá ÓÄÂÄ;

5.9. Ðïéü õðïóýóôçìá ôïõ MSSQLS-2000 åßíáé õðåýèõíï ãéá ôçí áðïóôïëÞ åñù-
ôçìÜôùí óå Üëëåò ÂÜóåéò ÄåäïìÝíùí; ÐåñéãñÜøôå ìßá ðåñßðôùóç üðïõ áðáéôåßôáé
ç äéá÷åßñéóç äåäïìÝíùí áðü ðïëëÜ ÓÄÂÄ ðïõ âñßóêïíôáé óå äéáöïñåôéêÝò ãåù-
ãñáöéêÝò ðåñéï÷Ýò.

5.10. ÐïéÜ ç ÷ñçóéìüôçôá ôïõ åñãáëåßïõ Data Transformation Services;


ÌÝñïò II

Ó×ÅÓÉÁÊÅÓ ÂÁÓÅÉÓ
ÄÅÄÏÌÅÍÙÍ

Ïé ó÷åóéáêÜ ÓõóôÞìáôá Äéá÷åßñéóçò ÂÜóåùí ÄåäïìÝíùí áðïôåëïýí ôçí ðëåéï-


øçößá ôùí óýã÷ñïíùí åìðïñéêþí ÓÄÂÄ. Ôá óõóôÞìáôá áõôÜ óôçñßæïíôáé óôï ó÷å-
óéáêü ìïíôÝëï äåäïìÝíùí, ôï ïðïßï ÷áñáêôçñßæåôáé ãéá ôçí áðëüôçôÜ ôïõ êáé ôïí
åýêïëï öïñìáëéóìü ôïõ. Ôá äýï áõôÜ óôïé÷åßá, êáèþò åðßóçò êáé ç äõíáôüôçôá
ôçò óõíïëïèåùñçôéêÞò ðåñéãñáöÞò ôïõ ìïíôÝëïõ áðïôÝëåóáí ôá âáóéêÜ áßôéá ôçò
ôåñÜóôéáò áðÞ÷çóÞò ôïõ. Ôï ìÝñïò áõôü ôïõ âéâëßïõ ìåëåôÜ ôï ó÷åóéáêü ìïíôÝëï
äåäïìÝíùí êáé ôá ó÷åóéáêÜ ÓÄÂÄ. Óôï ÊåöÜëáéï 6 ðåñéãñÜöïíôáé ïé âáóéêÝò
Ýííïéåò ôïõ ó÷åóéáêïý ìïíôÝëïõ êáé ðåñéãñÜöïíôáé ôá óôïé÷åßá ðïõ ôï óõíèÝôïõí.
Óôï ÊåöÜëáéï 7 ðáñïõóéÜæïíôáé ç ó÷åóéáêÞ Üëãåâñá êáé ï ó÷åóéáêüò ëïãéóìüò.
Ìå ôá äýï áõôÜ ìáèçìáôéêÜ åñãáëåßá Ý÷ïõìå ôç äõíáôüôçôá íá åêôåëïýìå ðñÜ-
îåéò åðÜíù óôï ó÷åóéáêü ìïíôÝëï óå õøçëü åðßðåäï êáé íá èÝôïõìå åñùôÞìáôá.
Óôï ÊåöÜëáéï 8 ðáñïõóéÜæåôáé ç ìåèïäïëïãßá ôçò êáíïíéêïðïßçóçò êáé ïé áðá-
ñáßôçôåò åîáñôÞóåéò. Óôç óõíÝ÷åéá, óôï ÊåöÜëáéï 9, ðåñéãñÜöïõìå áíáëõôéêÜ
ôç ãëþóóá ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí SQL (structured query language), ç
ïðïßá óôçñßæåôáé óôïõò ôåëåóôÝò ôçò ó÷åóéáêÞò Üëãåâñáò êáé áðïôåëåß óôçí ïõóßá
õëïðïßçóÞ ôçò. Ç ãëþóóá SQL åßíáé ç ðëÝïí äéáäåäïìÝíç ãëþóóá ÂÜóåùí Äå-
äïìÝíùí êáé õëïðïéåßôáé áðü üëá ôá ó÷åóéáêÜ ÓÄÂÄ. ÔÝëïò, óôï ÊåöÜëáéï 10
ðáñïõóéÜæïíôáé ïé äõíáôüôçôåò ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí ôïõ MSSQLS-
2000.
Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí
6
Ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí (relational data model) áíáðôý÷èçêå áðü ôïí
Codd ôï 1970 [Codd 1970]1 . Ç áðëÞ êáé êáôáíïçôÞ äïìÞ ôïõ åßíáé äýï áðü ôá áß-
ôéá ôçò ôåñÜóôéáò áðÞ÷çóçò ôïõ ìïíôÝëïõ ôüóï óå êëáóéêÝò üóï êáé óå óýã÷ñïíåò
åöáñìïãÝò õøçëþí áðáéôÞóåùí. Ôï ìåãÜëï ðëåïíÝêôçìá ôïõ ìïíôÝëïõ åßíáé üôé
ìðïñåß íá ðåñéãñáöåß ìå ìáèçìáôéêü ôñüðï ìå ôç âïÞèåéá ôçò Èåùñßáò Óõíüëùí
(Set Theory) Þ ôçò ÊáôçãïñçìáôéêÞò ËïãéêÞò (Predicate Logic). Ôá ðåñéóóüôåñá
åìðïñéêÜ ÓÄÂÄ õðïóôçñßæïõí ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí Þ/êáé åðåêôÜóåéò
ôïõò, ôéò ïðïßåò èá áíáëýóïõìå óå åðüìåíá êåöÜëáéá. Åðßóçò ôï ìïíôÝëï õðï-
óôçñßæåôáé êáé áðü ðïëëÜ åñãáëåßá ó÷åäéáóìïý, äéåõêïëýíïíôáò ôï ó÷åäéáóôÞ ôçò
ÂÄ. Ïé âáóéêïß óôü÷ïé ôïõ ó÷åóéáêïý ìïíôÝëïõ åßíáé ïé åîÞò:
• Ç õðïóôÞñéîç ôçò áíåîáñôçóßáò äåäïìÝíùí, Ýôóé þóôå áëëáãÝò óôç öõóéêÞ
äïìÞ êáé ïñãÜíùóç ôçò ÂÄ íá ìçí áðáéôïýí áëëáãÝò óôá ðñïãñÜììáôá
åöáñìïãÞò,
• Ç áðïöõãÞ ôïõ ðëåïíáóìïý (redundancy), ðïõ åìöáíßæåôáé üôáí ôá ßäéá
äåäïìÝíá áðïèçêåýïíôáé ðïëëÝò öïñÝò óå äéáöïñåôéêÝò ðåñéï÷Ýò ôçò ÂÄ,
1
Ç éóôïñéêÞ åñãáóßá ôïõ Codd ãéá ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí åßíáé äéáèÝóéìç óå çëåêôñï-
íéêÞ ìïñöÞ óôç äéåýèõíóç http://www.acm.org/classics/nov95/toc.html

135
136 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

• Ç äéáôÞñçóç ôçò áêåñáéüôçôáò êáé ôçò óõíÝðåéáò ôùí äåäïìÝíùí,

• Ç õðïóôÞñéîç ôçò áíÜðôõîçò óõíïëïèåùñçôéêþí ãëùóóþí ÷åéñéóìïý äå-


äïìÝíùí, ïé ïðïßåò óôçñßæïíôáé óôç èåùñßá óõíüëùí êáé äéåõêïëýíïõí ôç
äéáôýðùóç åñùôçìÜôùí ðñïò ôï ÓÄÂÄ.

Áí êáé ôï åíäéáöÝñïí ãéá ôï ó÷åóéáêü ìïíôÝëï Ý÷åé ðñïÝëèåé áðü äéáöïñå-


ôéêÝò êáôåõèýíóåéò, ç áíÜðôõîç êáé ç õëïðïßçóÞ ôïõ ïöåßëåôáé êõñßùò óå ôñåéò
áíåîÜñôçôåò åñåõíçôéêÝò ðñïóðÜèåéåò. Êáô’ áñ÷Þí, óôá ìÝóá ôçò äåêáåôßáò ôïõ
1970, ç ÉÂÌ áíÝðôõîå åñãáóôçñéáêÜ óôï San Jose IBM Research Laboratory ôï
ðñùôüôõðï óýóôçìá ìå ôçí ïíïìáóßá System R (áðü ôï "r"-elational), ôï ïðïßï
óôçñß÷èçêå ðëÞñùò óôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí. Ç õëïðïßçóç ôïõ System
R óôÜèçêå áöïñìÞ íá ëõèïýí äéÜöïñá ðñáêôéêÜ ðñïâëÞìáôá ðïõ áíôéìåôùðßæåé
Ýíá ÓÄÂÄ óôç ëåéôïõñãßá ôïõ, üðùò ãéá ðáñÜäåéãìá ï Ýëåã÷ïò ôáõôï÷ñïíéóìïý,
ç äéá÷åßñéóç óõíáëëáãþí, ç åðåîåñãáóßá êáé âåëôéóôïðïßçóç ôùí åñùôçìÜôùí
ê.ë.ð. Ç áíÜðôõîç ôïõ System R ïäÞãçóå óôçí áíÜðôõîç äýï âáóéêþí êáôåõèýí-
óåùí:

• Ôçí áíÜðôõîç ìßáò äïìçìÝíçò ãëþóóáò ÷åéñéóìïý êáé ïñéóìïý äåäïìÝíùí


ìå ôçí ïíïìáóßá SQL (structured query language), ç ïðïßá áðïôåëåß óÞìåñá
ôç âáóéêÞ ãëþóóá ðïõ õðïóôçñßæïõí ôá ðåñéóóüôåñá óõóôÞìáôá.

• Ôçí ðáñáãùãÞ óôç äåêáåôßá ôïõ 1970 êáé 1980 äéáöüñùí åìðïñéêÜ äéáèÝóé-
ìùí ÓÄÂÄ, ôá ïðïßá óôçñß÷èçêáí óôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí, üðùò
ôá óõóôÞìáôá DB2 êáé SQL/DS ôçò åôáéñåßáò IBM êáé ôï óýóôçìá Oracle
ôçò åôáéñåßáò Oracle.

Ç äåýôåñç âáóéêÞ ðñïóðÜèåéá ðïõ âïÞèçóå óôç äéÜäïóç ôïõ ó÷åóéáêïý


ìïíôÝëïõ Þôáí ç áíÜðôõîç ôïõ åñåõíçôéêïý ðñùôïôýðïõ INGRES (Interactive
Graphics Retrieval System) óôï ÐáíåðéóôÞìéï ôçò California óôï Berkeley. Ïé
óôü÷ïé ôïõ óõóôÞìáôïò INGRES Þôáí ðáñüìïéïé ìå áõôïýò ôïõ System R. Ôï
óýóôçìá INGRES ïäÞãçóå óôçí áíÜðôõîç äýï åìðïñéêþí ÓÄÂÄ, ôïõ INGRES
áðü ôçí åôáéñåßá Relational Technologies Inc. êáé ôïõ IDM (Intelligent Database
Machine) áðü ôçí åôáéñåßá Britton Lee Inc.
Ç ôñßôç ðñïóðÜèåéá õëïðïßçóçò ôïõ ó÷åóéáêïý ìïíôÝëïõ äåäïìÝíùí ðñáã-
ìáôïðïéÞèçêå åðßóçò áðü ôçí ÉÂÌ óôç ÌåãÜëç Âñåôáíßá êáé óõãêåêñéìÝíá óôï
Peterlee IBM UK Scientific Centre. Ôï óýóôçìá ïíïìÜóèçêå PRTV (Peterlee Re-
lational Test Vehicle) êáé åß÷å ìßá ðåñéóóüôåñï èåùñçôéêÞ ðñïóÝããéóç óå ó÷Ýóç
ìå ôá óõóôÞìáôá System R êáé INGRES. Äüèçêå ðåñéóóüôåñç óçìáóßá óå èÝìáôá
âåëôéóôïðïßçóçò åñùôçìÜôùí êáé óõíáñôçóéáêÝò åðåêôÜóåéò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 137

Ôá ðñþôá ó÷åóéáêÜ ÓÄÂÄ Ýèåóáí ôá èåìÝëéá ãéá ôçí ðåñáéôÝñù äéÜäïóç


ôïõ ìïíôÝëïõ, ìå áðïôÝëåóìá íá õðÜñ÷ïõí óÞìåñá áñêåôÜ ó÷åóéáêÜ óõóôÞìáôá
ìå ðïëëÝò äõíáôüôçôåò êáé åõêïëßåò ðñïò ôïõò ÷ñÞóôåò. Óçìåéþíåôáé, üôé ãéá
ôçí êÜëõøç ôùí óýã÷ñïíùí åöáñìïãþí ôá ðåñéóóüôåñá óõóôÞìáôá õëïðïéïýí
åðåêôÜóåéò ôïõ êáèáñïý ó÷åóéáêïý ìïíôÝëïõ, ïé ïðïßåò èá ìåëåôçèïýí óå åðü-
ìåíá êåöÜëáéá. ÌåñéêÜ áðü ôá óýã÷ñïíá åìðïñéêÜ äéáèÝóéìá ÓÄÂÄ ôá ïðïßá
õðïóôçñßæïõí ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí åßíáé ôá åîÞò:
• SQL Server 2000 ôçò åôáéñåßáò Microsoft (http://www.microsoft.com),

• Oracle 10g ôçò åôáéñåßáò Oracle (http://www.oracle.com),

• DB2 êáé Informix ôçò åôáéñåßáò IBM (http://www.ibm.com),

• Teradata ôçò åôáéñåßáò Teradata (http://www.teradata.com),

6.1 ÂáóéêÝò ¸ííïéåò


Ãéá ôçí áíáðáñÜóôáóç ôùí äåäïìÝíùí ôï ó÷åóéáêü ìïíôÝëï ÷ñçóéìïðïéåß ó÷Ýóåéò
Þ áëëéþò ðßíáêåò (ïé äýï üñïé ÷ñçóéìïðïéïýíôáé åíáëëáêôéêÜ). Ï êÜèå ðßíáêáò
Ý÷åé Ýíá ìïíáäéêü üíïìá êáé ðñïóäéïñßæåôáé áðü Ýíá óýíïëï ãñáììþí êáé Ýíá
óýíïëï óôçëþí. ÊÜèå ãñáììÞ ôïõ ðßíáêá áíáðáñéóôÜ ìßá åããñáöÞ äåäïìÝíùí
êáé ïíïìÜæåôáé ðëåéÜäá (tuple). Ïé óôÞëåò ôïõ ðßíáêá ïñßæïõí ôá ÷áñáêôçñé-
óôéêÜ Þ éäéüôçôåò (attributes) ôçò êÜèå åããñáöÞò. Óôï Ó÷Þìá 6.1 ðáñïõóéÜæåôáé
ï ðßíáêáò ìå üíïìá ÓõíäñïìçôÞò. Ï ðßíáêáò Ý÷åé ðÝíôå óôÞëåò ìå ïíïìáóßåò:
êùäéêüò, üíïìá, ôçëÝöùíï, äéåýèõíóç êáé ÁÐÊ (áñéèìüò ðéóôùôéêÞò êÜñôáò). Ïé
óôÞëåò áõôÝò áðïôåëïýí ôá ÷áñáêôçñéóôéêÜ ôïõ ðßíáêá. Ôï ðëÞèïò ôùí ÷áñá-
êôçñéóôéêþí ôçò ó÷Ýóçò êáëåßôáé âáèìüò (degree), åíþ ï áñéèìüò ôùí ðëåéÜäùí
êáëåßôáé ðëçèéêüôçôá (cardinality). Ç ó÷Ýóç ÓõíäñïìçôÞò ðïõ áðåéêïíßæåôáé óôï
Ó÷Þìá 6.1 Ý÷åé âáèìü 5 êáé ðëçèéêüôçôá 3.

êùäéêüò üíïìá ôçëÝöùíï äéåýèõíóç ÁÐÊ


12 Ãéþñãïò 6977333222 Ð. ÊïñïìçëÜ 12 12345
44 Ìáñßá 6945123456 Â. ¼ëãáò 13 54321
55 ÁëÝîáíäñïò 6937222999 Ã. ËáìðñÜêç 11111

Ó÷Þìá 6.1: Óôéãìéüôõðï ó÷Ýóçò ÓõíäñïìçôÞò.

Ãéá êÜèå ÷áñáêôçñéóôéêü õðÜñ÷åé Ýíá óýíïëï åðéôñåðôþí ôéìþí, ôï ïðïßï


êáëåßôáé ðåäßï ïñéóìïý (domain) ôïõ ÷áñáêôçñéóôéêïý. Ïé ôéìÝò ðïõ ìðïñåß íá
138 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

ëÜâåé Ýíá ÷áñáêôçñéóôéêü ðñïóäéïñßæïíôáé áðü ôï áíôßóôïé÷ï ðåäßï ïñéóìïý. Ãéá


ðáñÜäåéãìá, áí Ý÷ïõìå ïñßóåé üôé ôï ðåäßï ïñéóìïý ôïõ ÷áñáêôçñéóôéêïý êùäéêüò
åßíáé ôï óýíïëï ôùí èåôéêþí áêÝñáéùí áñéèìþí, ôüôå ç ôéìÞ -10 äåí åßíáé áðï-
äåêôÞ. ¸óôùóáí D1 , D2 , D3 , D4 êáé D5 ôá ðåäßá ïñéóìïý ôùí ÷áñáêôçñéóôéêþí
ôïõ ðßíáêá. Ôüôå ï ðßíáêáò ÓõíäñïìçôÞò áðïôåëåß õðïóýíïëï ôïõ êáñôåóéáíïý
ãéíïìÝíïõ D1 x D2 x D3 x D4 x D5 . Ãåíéêåýïíôáò, Ýíáò ðßíáêáò ìå N ÷áñá-
êôçñéóôéêÜ åßíáé õðïóýíïëï ôïõ êáñôåóéáíïý ãéíïìÝíïõ D1 x D2 x . . . x DN .
Óçìåéþíåôáé üôé äýï Þ ðåñéóóüôåñá ÷áñáêôçñéóôéêÜ ìðïñåß íá ëáìâÜíïõí ôéìÝò
áðü ôï ßäéï ðåäßï ïñéóìïý.
Ãéá ôïí ðëÞñç ðñïóäéïñéóìü ôïõ ðåäßïõ ïñéóìïý åíüò ÷áñáêôçñéóôéêïý åßíáé
áðáñáßôçôï íá ãíùñßæïõìå ôïí ôýðï äåäïìÝíùí (data type) êáé ôç ìïñöïðïßçóç
(format). Ãéá ðáñÜäåéãìá, äåí áñêåß ìüíï íá ãíùñßæïõìå üôé ôï ÷áñáêôçñéóôéêü
ôçëÝöùíï ëáìâÜíåé ãéá ôéìÞ ìßá óåéñÜ ÷áñáêôÞñùí, áëëÜ ðñÝðåé íá ðñïóäéï-
ñéóèåß êáé ôï åßäïò ôçò ìïñöïðïßçóçò. ¸íáò ôçëåöùíéêüò áñéèìüò ìðïñåß íá
êáôá÷ùñéóèåß åßôå ùò "6973755667" åßôå ùò "6973-755667".
Åßíáé õðï÷ñåùôéêü üôé ãéá êÜèå ó÷Ýóç R, ôá ðåäßá ïñéóìïý ôùí ÷áñáêôç-
ñéóôéêþí íá åßíáé áôïìéêÜ. Ôï ðåäßï ïñéóìïý åíüò ÷áñáêôçñéóôéêïý ïíïìÜæåôáé
áôïìéêü, áí ïé ôéìÝò ôïõ ðåäßïõ èåùñïýíôáé áäéáßñåôåò ìïíÜäåò. Ãéá ðáñÜäåéãìá,
ôï óýíïëï ôùí áêåñáßùí ìðïñåß íá èåùñçèåß áôïìéêü ðåäßï ïñéóìïý, äéüôé êÜèå
áêÝñáéïò áñéèìüò ìðïñåß íá åßíáé áôïìéêÞ ðåñéï÷Þ, áëëÜ ôï óýíïëï üëùí ôùí
óõíüëùí ôùí áêåñáßùí äåí åßíáé áôïìéêü ðåäßï. Ç äéáöïñÜ âñßóêåôáé óôï üôé
óõíÞèùò èåùñïýìå üôé Ýíáò áêÝñáéïò äåí Ý÷åé õðïôìÞìáôá, åíþ Ýíá óýíïëï áêå-
ñáßùí Ý÷åé õðïôìÞìáôá (ðïõ åßíáé ïé áêÝñáéïé ðïõ áðáñôßæïõí ôï óýíïëï). Ôï
óçìáíôéêü óôç äéÜêñéóç åíüò ðåäßïõ óå áôïìéêü êáé óå ìç-áôïìéêü åßíáé ôï ðþò
åðéëÝãïõìå åìåßò íá åñìçíåýóïõìå ôá óôïé÷åßá ôçò. Ãéá ðáñÜäåéãìá, áí èåùñÞ-
óïõìå üôé Ýíáò áêÝñáéïò åßíáé ìßá áêïëïõèßá áðü äåêáäéêÜ øçößá, ôüôå ôï óýíïëï
ôùí áêåñáßùí åßíáé Ýíá ìç-áôïìéêü ðåäßï ïñéóìïý.
¼ôáí áíáöåñüìáóôå óå ìßá ÂÜóç ÄåäïìÝíùí ðñÝðåé íá äéáêñßíïõìå ìåôáîý
ôïõ ó÷Þìáôïò ôçò ÂÄ (database schema), ðïõ áíáöÝñåôáé óôç ëïãéêÞ ó÷åäßáóÞ
ôçò, êáé ôïõ óôéãìéüôõðïõ ôçò ÂÄ (database instance), ðïõ áíáöÝñåôáé óôá êá-
ôá÷ùñéóìÝíá äåäïìÝíá ôçò âÜóçò óå ìßá óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ. ÊÜèå
ó÷Ýóç ôïõ ìïíôÝëïõ ÷áñáêôçñßæåôáé áðü Ýíá ó÷Þìá ó÷Ýóçò (relation schema)
ðïõ ðåñéãñÜöåôáé áðü ôï üíïìá ôçò ó÷Ýóçò êáé áðü ôá ïíüìáôá ôùí ÷áñáêôç-
ñéóôéêþí ôçò ó÷Ýóçò. ÅðïìÝíùò, ôï ó÷Þìá ìßáò ó÷Ýóçò R ìå N ÷áñáêôçñéóôéêÜ
A1 , A2 , ..., AN åßíáé ôï R(A1 , A2 , ..., AN ). Ãéá ðáñÜäåéãìá, ôï ó÷Þìá ôçò ó÷Ýóçò
ÓõíäñïìçôÞò ãñÜöåôáé ùò: ÓõíäñïìçôÞò(êùäéêüò, üíïìá, ôçëÝöùíï, äéåýèõíóç,
ÁÐÊ). ¸íá óôéãìéüôõðï ìßáò ó÷Ýóçò R (óõìâïëßæåôáé ùò I(R)) ðåñéëáìâÜíåé ôá
äåäïìÝíá üðùò áêñéâþò õðÜñ÷ïõí êáôá÷ùñéóìÝíá óôç ÂÄ ôç óõãêåêñéìÝíç ÷ñï-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 139

íéêÞ óôéãìÞ, êáé ðåñéãñÜöåôáé ùò Ýíá óýíïëï ðëåéÜäùí. Ôï óýíïëï ôùí ó÷çìÜôùí
üëùí ôùí ó÷Ýóåùí áðáñôßæåé ôï ó÷Þìá ôçò ÂÄ, åíþ ôï óýíïëï ôùí óôéãìéüôõðùí
ôùí ó÷Ýóåùí óõíèÝôåé ôï óôéãìéüôõðï ôçò ÂÄ. Ôïíßæåôáé üôé óå êÜèå ó÷Þìá ôçò
ÂÄ ìðïñåß íá áíôéóôïé÷ïýí ðïëëÜ óôéãìéüôõðá.
Óôç óõíÝ÷åéá óõíïøßæïíôáé ïé âáóéêüôåñåò éäéüôçôåò ôùí ó÷Ýóåùí:

• Ç êÜèå ó÷Ýóç Ý÷åé Ýíá ìïíáäéêü üíïìá ìåôáîý ôùí õðïëïßðùí ó÷Ýóåùí
ôçò ÂÄ.

• Ç ôéìÞ åíüò ÷áñáêôçñéóôéêïý ãéá ìßá ðëåéÜäá åßíáé áôïìéêÞ.

• Ôï êÜèå ÷áñáêôçñéóôéêü Ý÷åé ìïíáäéêü üíïìá ìÝóá óôç ó÷Ýóç. Äýï ÷áñá-
êôçñéóôéêÜ ðïõ áíÞêïõí óå äéáöïñåôéêÝò ó÷Ýóåéò åðéôñÝðåôáé íá Ý÷ïõí ßäéï
üíïìá.

• ¼ëåò ïé ôéìÝò åíüò ÷áñáêôçñéóôéêïý ðñÝðåé íá áíÞêïõí óôï ðåäßï ïñéóìïý


ôïõ ÷áñáêôçñéóôéêïý.

• Ç óåéñÜ äÞëùóçò ôùí ÷áñáêôçñéóôéêþí ìßáò ó÷Ýóçò äåí ðáßæåé êÜðïéï ñüëï.

• Äýï ðëåéÜäåò ìßáò ó÷Ýóçò äåí åðéôñÝðåôáé íá ôáõôßæïíôáé óå üëá ôá ÷áñá-


êôçñéóôéêÜ.

• Óôï ó÷åóéáêü ìïíôÝëï äåí ìáò åíäéáöÝñåé ç óåéñÜ ôùí ðëåéÜäùí óôç ó÷Ýóç.
Ùóôüóï, ç óåéñÜ áðïèÞêåõóçò ôùí äåäïìÝíùí óõíÞèùò åðçñåÜæåé ôï ÷ñüíï
åðåîåñãáóßáò êáé åðïìÝíùò ëáìâÜíåôáé õð’ üøç.

6.2 ÊëåéäéÜ Ó÷Ýóåùí


¸íá ÷áñáêôçñéóôéêü åíüò ðßíáêá (Þ Ýíá óýíïëï ÷áñáêôçñéóôéêþí) ïíïìÜæåôáé
ðñùôåýïí êëåéäß áí ìðïñåß íá äéáêñßíåé ôéò äéÜöïñåò ãñáììÝò ôïõ ðßíáêá. Ãéá
ðáñÜäåéãìá, ï áñéèìüò áóôõíïìéêÞò ôáõôüôçôáò Þ ï áñéèìüò öïñïëïãéêïý ìç-
ôñþïõ ìðïñïýí íá èåùñçèïýí ùò êëåéäéÜ ãéá Ýíáí õðïôéèÝìåíï ðßíáêá ÕðÜëëç-
ëïò. ÁíôéèÝôùò, ôï ïíïìáôåðþíõìï äåí èåùñåßôáé êëåéäß, äéüôé ìðïñåß íá õðÜñ-
÷ïõí ðïëëïß õðÜëëçëïé ìå ôï ßäéï üíïìá êáé åðßèåôï. ¸íáò ðßíáêáò ìðïñåß íá
Ý÷åé ðåñéóóüôåñá ôïõ åíüò ÷áñáêôçñéóôéêÜ ðïõ íá ìðïñïýí íá ÷ñçóéìåýóïõí ùò
ðñùôåýïíôá êëåéäéÜ. Ùóôüóï, Ýíá ìüíï åðéëÝãåôáé íá ÷ñçóéìïðïéçèåß ãéá áõôü ôï
óêïðü, ïðüôå ôá õðüëïéðá ëÝãïíôáé õðïøÞöéá (candidate) Þ åíáëëáêôéêÜ (alter-
nate) êëåéäéÜ. Ôá ÷áñáêôçñéóôéêÜ ðïõ äåí ìðïñïýí íá äéáêñßíïõí ôéò äéÜöïñåò
ãñáììÝò ôïõ ðßíáêá êáëïýíôáé äåõôåñåýïíôá (secondary) êëåéäéÜ.
140 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

Óå ðïëëÝò ðåñéðôþóåéò áðáéôïýíôáé ðåñéóóüôåñá ôïõ åíüò ÷áñáêôçñéóôéêÜ


ãéá íá óõíèÝóïõí Ýíá êëåéäß, ïðüôå ôï êëåéäß êáëåßôáé óýíèåôï (composite). Óôï
Ó÷Þìá 6.2 ðáñïõóéÜæïíôáé ïé ðßíáêåò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé Óõí-
äñïìÞ. Ï ðßíáêáò ÓõíäñïìÞ óõó÷åôßæåé Ýíá óõíäñïìçôÞ ìå ôéò ãíùóôéêÝò ðåñéï÷Ýò
ãéá ôéò ïðïßåò Ý÷åé êáôá÷ùñéóèåß. ÐáñáôçñÞóôå üôé ôï êëåéäß ôïõ ðßíáêá ÓõíäñïìÞ
áðïôåëåßôáé áðü ôá äýï ÷áñáêôçñéóôéêÜ êùäéêüòÁ êáé êùäéêüòÂ. Ôá äýï áõôÜ
÷áñáêôçñéóôéêÜ áíôéóôïé÷ïýí óôïí êùäéêü ôïõ óõíäñïìçôÞ êáé ôïí êùäéêü ôçò
ãíùóôéêÞò ðåñéï÷Þò. Áõôü óõìâáßíåé åðåéäÞ ìüíï áí ãíùñßæïõìå ôïí êùäéêü ôïõ
óõíäñïìçôÞ êáé ôïí êùäéêü ôçò ãíùóôéêÞò ðåñéï÷Þò ìðïñïýìå íá ðñïóäéïñßóïõìå
ôá õðüëïéðá ÷áñáêôçñéóôéêÜ ôçò óõíäñïìÞò (óôçí ðåñßðôùóÞ ìáò áõôÜ åßíáé ôá
÷áñáêôçñéóôéêÜ áðü êáé Ýùò, ôá ïðïßá äçëþíïõí ôç ÷ñïíéêÞ äéÜñêåéá ôçò óõí-
äñïìÞò). Ï êùäéêüò åíüò óõíäñïìçôÞ ìðïñåß íá åìöáíßæåôáé ðïëëÝò öïñÝò ìÝóá
óôïí ðßíáêá ÓõíäñïìÞ, äéüôé Ýíáò óõíäñïìçôÞò ìðïñåß íá åíäéáöÝñåôáé ãéá ðïë-
ëÝò ãíùóôéêÝò ðåñéï÷Ýò. Ðáñïìïßùò, ï êùäéêüò ìßáò ãíùóôéêÞò ðåñéï÷Þò ìðïñåß
íá åìöáíßæåôáé ðïëëÝò öïñÝò ìÝóá óôïí ðßíáêá ÓõíäñïìÞ, äéüôé ãéá ìßá ãíùóôéêÞ
ðåñéï÷Þ ìðïñåß íá åíäéáöÝñïíôáé ðåñéóóüôåñïé ôïõ åíüò óõíäñïìçôÝò.

êùäéêüò üíïìá ôçëÝöùíï äéåýèõíóç ÁÐÊ


12 Ãéþñãïò 6977333222 Ð. ÊïñïìçëÜ 12 12345
44 Ìáñßá 6945123456 Â. ¼ëãáò 13 54321
55 ÁëÝîáíäñïò 6937222999 Ã. ËáìðñÜêç 11111

êùäéêüò ôßôëïò áñéèìüò óõíäñïìçôþí


100 Äßêôõá Ôçëåðéêïéíùíéþí 1
101 ÂÜóåéò ÄåäïìÝíùí 2
103 ÊâáíôéêÞ ÖõóéêÞ 2

êùäéêüòÁ êùäéêüòÂ áðü Ýùò


12 100 1/1/2003 31/12/2003
44 101 21/9/2002 30/6/2003
44 103 21/9/2002 30/6/2003
55 101 30/9/2002 5/2/2003
55 103 1/1/1999 31/12/2003

Ó÷Þìá 6.2: Ðßíáêåò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé ÓõíäñïìÞ.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 141

6.3 Ðåñéïñéóìïß Áêåñáéüôçôáò Ó÷Ýóåùí


Ïé ðåñéïñéóìïß áêåñáéüôçôáò (integrity constraints) ðñÝðåé íá éó÷ýïõí ðÜíôá óå
êÜèå óôéãìéüôõðï ôçò ÂÄ. Ó÷åôßæïíôáé Üìåóá ìå ôï ó÷Þìá ôçò ÂÄ êáé åðáëç-
èåýïíôáé êÜèå öïñÜ ðïõ ðñáãìáôïðïéïýíôáé áëëáãÝò óôá äåäïìÝíá (äçëáäÞ,
åéóáãùãÞ, äéáãñáöÞ Þ åíçìÝñùóç). ¸íá óôéãìéüôõðï ôçò ÂÄ êáëåßôáé Ýãêõñï
óôéãìéüôõðï (valid instance) áí åðáëçèåýïíôáé üëïé ïé ðåñéïñéóìïß áêåñáéüôçôáò
ãéá ôá óôéãìéüôõðá üëùí ôùí ó÷Ýóåùí. Ï Ýëåã÷ïò ãéá ôçí åðáëÞèåõóç ôùí ðåñéï-
ñéóìþí åßíáé ðïëý óçìáíôéêüò êáé óõìâÜëëåé óôç ìåßùóç ôùí ëáèþí ðïõ õðÜñ÷ïõí
óôç ÂÄ. Ç åéóáãùãÞ, äéáãñáöÞ Þ åíçìÝñùóç åíüò óôïé÷åßïõ ðïõ ïäçãåß óå ìç
Ýãêõñï óôéãìéüôõðï èá áðïññéöèåß áðü ôï ÓÄÂÄ, êáé ç ÂÄ èá åðáíÝëèåé óôçí
ðñïçãïýìåíç Ýãêõñç êáôÜóôáóç. Äéáêñßíïõìå ôïõò åîÞò ôýðïõò ðåñéïñéóìþí: á)
êåíÝò ôéìÝò, â) ðåñéïñéóìïß áêåñáéüôçôáò ïíôïôÞôùí, ã) ðåñéïñéóìïß áêåñáéüôç-
ôáò áíáöïñþí, êáé ä) Üëëïõò ðåñéïñéóìïýò ðïõ áíáëýïíôáé óôç óõíÝ÷åéá.

6.3.1 ÊåíÝò ÔéìÝò


ÕðÜñ÷ïõí ðåñéðôþóåéò üðïõ äåí ãíùñßæïõìå ôçí ôéìÞ åíüò ÷áñáêôçñéóôéêïý Þ
ãéá ôï óõãêåêñéìÝíï ÷áñáêôçñéóôéêü äåí ìðïñïýìå íá ðñïóäéïñßóïõìå êÜðïéá
ôéìÞ. Ùóôüóï, áðïäßäïõìå óôï ÷áñáêôçñéóôéêü áõôü ôçí êåíÞ ôéìÞ (NULL). Ãéá
ðáñÜäåéãìá, èåùñÞóôå ôïí ðßíáêá Åêäïôéêüò Ïßêïò, üðùò åìöáíßæåôáé óôï Ó÷Þìá
6.3. Ïé ôéìÝò ðïõ óõìâïëßæïíôáé ìå xxxx äçëþíïõí ìßá ôéìÞ äéáöïñåôéêÞ ôïõ
NULL. Ðáñáôçñïýìå üôé ãéá ôïí åêäïôéêü ïßêï "Kluwer Academic Publishers"
ç ôéìÞ ôïõ ÷áñáêôçñéóôéêïý äéåýèõíóç åßíáé NULL. Áõôü ìðïñåß íá óõìâáßíåé
åðåéäÞ ôç óôéãìÞ ðïõ êáôá÷ùñßóèçêå óôç ÂÄ ï óõãêåêñéìÝíïò åêäïôéêüò ïßêïò,
ç áêñéâÞò äéåýèõíóç äåí Þôáí ãíùóôÞ. Ôï ßäéï óõìâáßíåé êáé ìå ôçí ôéìÞ ôïõ
÷áñáêôçñéóôéêïý ôçëÝöùíï ãéá ôïí åêäïôéêü ïßêï "ACM Press".

êùäéêüò üíïìá ôçëÝöùíï äéåýèõíóç


1 Kluwer Academic Publishers xxxx NULL
2 ACM Press NULL xxxx
3 IEEE Press xxxx xxxx
4 Morgan-Kauffman xxxx xxxx
5 Addison-Wesley xxxx xxxx

Ó÷Þìá 6.3: Ðßíáêáò Åêäïôéêüò Ïßêïò êáé NULL ôéìÝò ãéá ìåñéêÜ ÷áñáêôçñéóôéêÜ.

Ìßá êåíÞ ôéìÞ óõíÞèùò äåí äçìéïõñãåß ðñüâëçìá. Ùóôüóï êáëü åßíáé êáôÜ
ôï äõíáôüí ïé ôéìÝò NULL íá áðïöåýãïíôáé, äéüôé äçìéïõñãïýíôáé äõóêïëßåò óôç
142 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

äéáôýðùóç åñùôçìÜôùí. Ôïíßæåôáé üôé äåí åðéôñÝðïíôáé êåíÝò ôéìÝò ãéá ôá êëåéäéÜ
åíüò ðßíáêá.

6.3.2 Áêåñáéüôçôá ÏíôïôÞôùí


Ç áêåñáéüôçôá ïíôïôÞôùí (entity integrity) åßíáé óôåíÜ óõíäåäåìÝíç ìå ôçí Ýí-
íïéá ôïõ êëåéäéïý ìßáò ó÷Ýóçò. ÊÜèå ãñáììÞ ôïõ ðßíáêá ðñÝðåé íá ðñïóäéïñß-
æåôáé ìïíáäéêÜ áðü ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá. ÅðïìÝíùò, äýï ãñáììÝò ôïõ
ðßíáêá äåí åßíáé äõíáôü íá Ý÷ïõí ôéò ßäéåò ôéìÝò ãéá üëá ôá ÷áñáêôçñéóôéêÜ, áëëÜ
ðñÝðåé íá äéáöÝñïõí ôïõëÜ÷éóôïí ùò ðñïò ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá.

6.3.3 Áêåñáéüôçôá Áíáöïñþí


Áí ôï êëåéäß k åíüò ðßíáêá A åìöáíßæåôáé ùò ÷áñáêôçñéóôéêü óå Ýíáí Üëëï ðß-
íáêá B, ôüôå ëÝãåôáé üôé ôï k áðïôåëåß îÝíï êëåéäß (foreign key) ãéá ôïí ðßíáêá
B. ÈåùñÞóôå ôïõò ðßíáêåò ðïõ áðåéêïíßæïíôáé óôï Ó÷Þìá 6.2. ¼ðùò Ý÷åé áíá-
öåñèåß, ôá ÷áñáêôçñéóôéêÜ êùäéêüòÁ êáé êùäéêüò áíôéóôïé÷ïýí óôïí êùäéêü ôïõ
óõíäñïìçôÞ êáé ôïí êùäéêü ôçò ãíùóôéêÞò ðåñéï÷Þò, ôá ïðïßá åßíáé ðñùôåýïíôá
êëåéäéÜ ãéá ôïõò áíôßóôïé÷ïõò ðßíáêåò. ¢ñá, ôá ÷áñáêôçñéóôéêÜ êùäéêüòÁ êáé
êùäéêüò åßíáé îÝíá êëåéäéÜ ãéá ôïí ðßíáêá ÓõíäñïìÞ. Ç áêåñáéüôçôá áíáöï-
ñþí (referential integrity) åðéâÜëëåé ç ôéìÞ åíüò îÝíïõ êëåéäéïý íá Ý÷åé áíôßóôïé÷ç
ôéìÞ óôïí áñ÷éêü ðßíáêá. Ãéá ðáñÜäåéãìá, ðáñáôçñïýìå üôé ïé ôéìÝò ãéá ôï ÷á-
ñáêôçñéóôéêü êùäéêüòÁ ïé ïðïßåò åßíáé ïé 12, 44 êáé 55 õðÜñ÷ïõí óôïí ðßíáêá
ÓõíäñïìçôÞò. Ïìïßùò, ïé ôéìÝò ãéá ôï ÷áñáêôçñéóôéêü êùäéêüò õðÜñ÷ïõí óôïí
ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ. Áí êÜðïéá ôéìÞ ôïõ îÝíïõ êëåéäéïý äåí õðÜñ÷åé óôïí
áñ÷éêü ðßíáêá, ôüôå äçìéïõñãåßôáé óïâáñü ðñüâëçìá åðåéäÞ äåí Ý÷ïõìå ðñü-
óâáóç óôá ÷áñáêôçñéóôéêÜ ôçò óõãêåêñéìÝíçò ïíôüôçôáò. ¸óôù üôé óôïí ðßíáêá
ÓõíäñïìÞ ðñïóôßèåôáé ìßá íÝá ãñáììÞ ðïõ Ý÷åé ôéò åîÞò ôéìÝò: êùäéêüòÁ=23,
êùäéêüòÂ=100, áðü=‘1/1/2002’, Ýùò=‘5/5/2003’. Êáèþò äåí õðÜñ÷åé ãñáììÞ ôïõ
ðßíáêá ÓõíäñïìçôÞò ìå êùäéêü 23, èá Ý÷ïõìå áðïôõ÷ßá áíáæçôþíôáò ôá óôïé÷åßá
ôïõ óõãêåêñéìÝíïõ óõíäñïìçôÞ.
Ôá âáóéêÜ áßôéá ôÝôïéùí ðñïâëçìáôéêþí êáôáóôÜóåùí åßíáé êõñßùò ïé åéóá-
ãùãÝò êáé äéáãñáöÝò íÝùí äåäïìÝíùí. Óå ðåñßðôùóç äéáãñáöÞò åíüò óõíäñïìçôÞ
áðü ôïí ðßíáêá ÓõíäñïìçôÞò, ðñÝðåé íá äéáãñáöïýí êáé üëåò ïé åìöáíßóåéò ôïõ
áðü ôïí ðßíáêá ÓõíäñïìÞ þóôå ç ÂÄ íá âñßóêåôáé óå áêÝñáéá êáôÜóôáóç. Äéá-
öïñåôéêÜ äçìéïõñãïýíôáé ðñïâëÞìáôá ôüóï óôçí åðåîåñãáóßá ôùí åñùôçìÜôùí
üóï êáé óôïí Ýëåã÷ï ôçò ïñèüôçôáò ôùí äåäïìÝíùí ôçò ÂÄ. ÓõíÞèùò ï Ýëåã÷ïò
ôùí ðåñéïñéóìþí áêåñáéüôçôáò áíáöïñþí ðñáãìáôïðïéåßôáé ðñéí ôçí åéóáãùãÞ,
äéáãñáöÞ êáé åíçìÝñùóç ôùí äåäïìÝíùí.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 143

6.3.4 ¢ëëïé Ðåñéïñéóìïß


Åêôüò áðü ôïõò ðåñéïñéóìïýò áêåñáéüôçôáò ðïõ áíáöÝñèçêáí óôéò ðñïçãïýìå-
íåò ðáñáãñÜöïõò, ìðïñïýìå íá ïñßóïõìå êáé Üëëïõò ðïõ íá åîáñôþíôáé áðü ôç
óçìáóéïëïãßá (semantics) ôùí áðïèçêåõìÝíùí äåäïìÝíùí êáé ôç óõãêåêñéìÝíç
åöáñìïãÞ. Áõôïß ïé ðåñéïñéóìïß óõíÞèùò ïñßæïíôáé áðü ôï äéá÷åéñéóôÞ ôïõ ÓÄÂÄ
êáé åíéó÷ýïõí ôçí áîéïðéóôßá ôùí äåäïìÝíùí. Ãéá ðáñÜäåéãìá, áí óôç ÂÄ êá-
ôá÷ùñßæïíôáé óôïé÷åßá ó÷åôéêÜ ìå óõããÝíåéåò, ôüôå åßíáé áäýíáôï ç çëéêßá åíüò
ãïíÝá íá åßíáé ìéêñüôåñç áðü ôçí çëéêßá ôïõ ðáéäéïý. Åðßóçò, ï ìéóèüò åíüò
áðëïý õðáëëÞëïõ äåí ìðïñåß íá õðåñâáßíåé ôï ìéóèü ôïõ Ãåíéêïý ÄéåõèõíôÞ ìßáò
åôáéñåßáò. ÔÝôïéïõ åßäïõò ðåñéïñéóìïß äéåõêïëýíïõí êáôÜ ðïëý ôï Ýñãï ôçò åé-
óáãùãÞò êáé ôçò åíçìÝñùóçò ôùí äåäïìÝíùí, äéüôé áðïöåýãïíôáé ëÜèç êáé äéá-
ôçñåßôáé ç áîéïðéóôßá ôùí äåäïìÝíùí ôçò âÜóçò. Ç åöáñìïãÞ ôùí ðåñéïñéóìþí
áõôþí êñßíåôáé áíáãêáßá, äéüôé åßíáé Ýíáò åðéðëÝïí ïõóéáóôéêüò ìç÷áíéóìüò ãéá
ôçí ðñïóôáóßá ôçò ÂÄ áðü ëáíèáóìÝíç åéóáãùãÞ, äéáãñáöÞ Þ åíçìÝñùóç óôïé-
÷åßùí.

6.4 ÌåôáôñïðÞ ôïõ ÌïíôÝëïõ ÏÓ óå Ó÷åóéáêü


Ðáñáôçñïýìå üôé ìåôáîý ôïõ ìïíôÝëïõ ÏÓ êáé ôïõ ó÷åóéáêïý ìïíôÝëïõ õðÜñ÷ïõí
ðïëëÝò ïìïéüôçôåò ôüóï óôçí ïñïëïãßá üóï êáé óôç äïìÞ ôïõò. Ãéá ðáñÜäåéãìá,
ìßá ïíôüôçôá ôïõ ìïíôÝëïõ ÏÓ áíôéóôïé÷åß óå ìßá ðëåéÜäá åíüò ðßíáêá. ¸íá
óýíïëï ïíôïôÞôùí áíôéóôïé÷åß óå Ýíáí ðßíáêá ôïõ ó÷åóéáêïý ìïíôÝëïõ. Åðßóçò,
ôá ÷áñáêôçñéóôéêÜ åíüò óõíüëïõ ïíôïôÞôùí áíôéóôïé÷ïýí óôéò óôÞëåò ôïõ ðßíáêá.
Óçìåéþíåôáé üôé óôï ó÷åóéáêü ìïíôÝëï äåí õðÜñ÷åé äéá÷ùñéóìüò ìåôáîý ôùí
ðéíÜêùí. Åßôå ðñüêåéôáé ãéá óýíïëï ïíôïôÞôùí åßôå ãéá óýíïëï óõó÷åôßóåùí, ç
áíôéìåôþðéóç åßíáé ðáñüìïéá. Óôç óõíÝ÷åéá èá åîåôÜóïõìå ìßá óåéñÜ êáíüíùí
ìåôáôñïðÞò. Êáô’ áñ÷Þí, äéáôõðþíïõìå êáíüíåò ãéá ôéò áðëïýóôåñåò ðåñéðôþóåéò
êáé êáôüðéí ãéá ôéò åéäéêüôåñåò ðåñéðôþóåéò.

6.4.1 ÌåôáôñïðÞ Óõíüëùí ÏíôïôÞôùí êáé Óõó÷åôßóåùí óå Ðßíáêåò


ÐñïêåéìÝíïõ íá ðñïóåããßóïõìå ìå óáöÞ ìåèïäïëïãßá ôç äçìéïõñãßá ðéíÜêùí
áðü óýíïëá ïíôïôÞôùí êáé óýíïëá óõó÷åôßóåùí, èá åîåôÜóïõìå ôé óõìâáßíåé êáôÜ
óåéñÜ áíáëüãùò ìå ôïí ôýðï ôçò óõó÷Ýôéóçò (äçëáäÞ, áí åßíáé 1:1, 1:Í, Í:Ì) êáé
óå óõíÜñôçóç ìå ôçí õðï÷ñåùôéêÞ Þ ü÷é óõììåôï÷Þ ôùí óõíüëùí ïíôïôÞôùí óôç
óõó÷Ýôéóç.

• Óõó÷åôßóåéò ôýðïõ 1:1. Áí ç óõó÷Ýôéóç åßíáé ôýðïõ 1:1, áëëÜ Ýíá áðü ôá
äýï óýíïëá ïíôïôÞôùí äåí óõììåôÝ÷åé õðï÷ñåùôéêÜ óôç óõó÷Ýôéóç, ôüôå åß-
íáé áðáñáßôçôïé äýï ðßíáêåò. Ïé äýï ðßíáêåò áõôïß áíôéóôïé÷ïýí óôéò äýï
144 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

ïíôüôçôåò, ïðüôå ï êÜèå ðßíáêáò èá ðåñéÝ÷åé ùò óôÞëåò ôá áíôßóôïé÷á ÷áñá-


êôçñéóôéêÜ. ÅðéðëÝïí, ôï êëåéäß ôçò ïíôüôçôáò ðïõ äåí óõììåôÝ÷åé õðï÷ñå-
ùôéêÜ óôç óõó÷Ýôéóç èá ðñÝðåé íá õðÜñ÷åé êáé óôïí ðßíáêá ôçò ïíôüôçôáò
ðïõ óõììåôÝ÷åé õðï÷ñåùôéêÜ. Óôïí ßäéï ðßíáêá èá ôåèïýí êáé ùò óôÞëåò ôá
÷áñáêôçñéóôéêÜ ôçò óõó÷Ýôéóçò (áí õðÜñ÷ïõí). ÐáñáôçñÞóôå, üôé óôïí ðß-
íáêá ðïõ áöïñÜ óôçí ïíôüôçôá ðïõ óõììåôÝ÷åé õðï÷ñåùôéêÜ ôïðïèåôïýìå
ôï ðñùôåýïí êëåéäß ôçò Üëëçò ïíôüôçôáò. Áõôü óõìâáßíåé ãéá íá áðïöý-
ãïõìå êåíÝò ôéìÝò (NULL) óôïí ðßíáêá.
Áí ç óõó÷Ýôéóç åßíáé ôýðïõ 1:1, áëëÜ êáíÝíá áðü ôá äýï óýíïëá ïíôïôÞ-
ôùí äåí óõììåôÝ÷åé õðï÷ñåùôéêÜ óôç óõó÷Ýôéóç, ôüôå ãéá íá áðïöýãïõìå
ôç ÷ñÞóç êåíþí ôéìþí åßíáé áðáñáßôçôïé ôñåéò ðßíáêåò. Êáô’ áñ÷Þí, ïé äýï
ðßíáêåò áíôéóôïé÷ïýí óôéò äýï ïíôüôçôåò êáé èá ðåñéÝ÷ïõí ùò óôÞëåò ôá
áíôßóôïé÷á ÷áñáêôçñéóôéêÜ. ÅðéðëÝïí, ï ôñßôïò ðßíáêáò èá ðåñéÝ÷åé óôÞëåò
ðïõ èá áíôéóôïé÷ïýí óôá äýï ðñùôåýïíôá êëåéäéÜ ôùí äýï ïíôïôÞôùí êáé
èá äçëþíïõí áõôÞ-êáè’ åáõôÞ ôç óõó÷Ýôéóç. ÅðéðëÝïí, áí ç óõó÷Ýôéóç Ý÷åé
äéêÜ ôçò ÷áñáêôçñéóôéêÜ, ôüôå áõôÜ èá ôåèïýí ùò óôÞëåò óôïí ôåëåõôáßï
ðßíáêá. Óå ðåñßðôùóç ðïõ ç ÷ñÞóç êåíþí ôéìþí äåí äçìéïõñãåß ðñüâëçìá,
ôüôå áñêïýí äýï ðßíáêåò ãéá ôç ìåôáôñïðÞ, üðùò óôçí ðñïçãïýìåíç ðåñß-
ðôùóç ðïõ åîåôÜóáìå.
Áò åîåôÜóïõìå ôÝëïò ôï áðëïýóôåñï åíäå÷üìåíï, üðïõ ç óõó÷Ýôéóç åßíáé
ôýðïõ 1:1, åíþ êáé ôá äýï óýíïëá ïíôïôÞôùí óõììåôÝ÷ïõí óôç óõó÷Ýôéóç
õðï÷ñåùôéêÜ. Óôçí ðåñßðôùóç áõôÞ ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå Ýíáí
ðßíáêá üðïõ ôßèåíôáé ùò óôÞëåò üëá ôá ÷áñáêôçñéóôéêÜ êáé ôùí äýï ïíôïôÞ-
ôùí, áëëÜ êáé ôá ÷áñáêôçñéóôéêÜ ôçò óõó÷Ýôéóçò (áí õðÜñ÷ïõí ôÝôïéá). Óå
ìßá ôÝôïéá ðåñßðôùóç ïðïéïäÞðïôå ðñùôåýïí êëåéäß áðü ôéò äýï ïíôüôçôåò
ìðïñåß íá èåùñçèåß ùò ðñùôåýïí êëåéäß ôçò ó÷Ýóçò.

• Óõó÷åôßóåéò ôýðïõ 1:Í. Áí ç óõó÷Ýôéóç åßíáé ôýðïõ 1:Í Þ Í:1, åíþ óõììåôÝ-
÷åé õðï÷ñåùôéêÜ ôï óýíïëï ïíôïôÞôùí áðü ôçí ðëåõñÜ Í ôçò óõó÷Ýôéóçò,
ôüôå åßíáé áðáñáßôçôïé äýï ðßíáêåò. ÊáôÜ ôá ðñïçãïýìåíá, ïé äýï ðßíáêåò
áõôïß áíôéóôïé÷ïýí óôéò äýï ïíôüôçôåò, êáé ðåñéÝ÷ïõí ùò óôÞëåò ôá áíôß-
óôïé÷á ÷áñáêôçñéóôéêÜ. ÅðéðëÝïí, ôï êëåéäß ôçò ïíôüôçôáò áðü ôçí ðëåõñÜ
1 ôçò óõó÷Ýôéóçò, èá ôåèåß êáé óôïí ðßíáêá ôçò Üëëçò ïíôüôçôáò (áðü ôçí
ðëåõñÜ Í) ìáæß ìå ôá ÷áñáêôçñéóôéêÜ ôçò óõó÷Ýôéóçò (áí õðÜñ÷ïõí).
Áí ç óõó÷Ýôéóç åßíáé ôýðïõ 1:Í Þ Í:1, áëëÜ äåí óõììåôÝ÷åé õðï÷ñåùôéêÜ
ôï óýíïëá ïíôïôÞôùí áðü ôçí ðëåõñÜ Í ôçò óõó÷Ýôéóçò, ôüôå ãéá íá áðï-
öýãïõìå ôç ÷ñÞóç êåíþí ôéìþí åßíáé áðáñáßôçôïé ôñåéò ðßíáêåò. ÊáôÜ ôá
ðñïçãïýìåíá, ïé äýï ðßíáêåò áíôéóôïé÷ïýí óôéò äýï ïíôüôçôåò, êáé ðåñéÝ-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 145

÷ïõí ùò óôÞëåò ôá áíôßóôïé÷á ÷áñáêôçñéóôéêÜ. ÅðéðëÝïí, ï ôñßôïò ðßíáêáò


áíôéóôïé÷åß óôç óõó÷Ýôéóç êáé ðåñéÝ÷åé ùò êëåéäéÜ ôá ðñùôåýïíôá êëåéäéÜ
ôùí äýï ïíôïôÞôùí êáé ôá ÷áñáêôçñéóôéêÜ ôçò óõó÷Ýôéóçò (áí õðÜñ÷ïõí).
Óå ðåñßðôùóç ðïõ ç ÷ñÞóç êåíþí ôéìþí äåí äçìéïõñãåß ðñüâëçìá, ôüôå
áñêïýí äýï ðßíáêåò ãéá ôç ìåôáôñïðÞ, üðùò óôçí ðñïçãïýìåíç ðåñßðôùóç
ðïõ åîåôÜóáìå.
Áðü ôï äéÜãñáììá ÏÓ ôïõ Ó÷Þìáôïò 4.1 áò èåùñÞóïõìå ôï óýíïëï óõ-
ó÷åôßóåùí ÁíÞêåé, ôï ïðïßï åßíáé ôýðïõ Í:1. Áõôü óçìáßíåé üôé ôï êÜèå
Üñèñï ìðïñåß íá áíÞêåé ìüíï óå ìßá ãíùóôéêÞ ðåñéï÷Þ. ÅðïìÝíùò, ìðï-
ñïýìå ìÝóá óôïí ðßíáêá ¢ñèñï íá ðñïóèÝóïõìå Ýíá áêüìç ÷áñáêôçñé-
óôéêü ðïõ èá Ý÷åé ðåäßï ïñéóìïý ôï óýíïëï ôùí êùäéêþí ôùí ãíùóôéêþí
ðåñéï÷þí ðïõ åßíáé êáôá÷ùñéóìÝíåò óôç ÂÄ. ¸ôóé, ãíùñßæïíôáò ôï Üñèñï
ìðïñïýìå áð’ åõèåßáò íá ðñïóäéïñßóïõìå ôç ãíùóôéêÞ ðåñéï÷Þ üðïõ áõôü
áíÞêåé. Ìå ðáñüìïéïõò óõëëïãéóìïýò, óôïí ðßíáêá ¢ñèñï èá ðñïóôåèïýí
äýï áêüìç ÷áñáêôçñéóôéêÜ ðïõ óõìâïëßæïõí ôïí êùäéêü ôùí ðñáêôéêþí
óõíåäñßïõ êáé ôïõ ðåñéïäéêïý üðïõ Ý÷åé äçìïóéåõèåß Ýíá Üñèñï. Áõôü
óõìâáßíåé äéüôé ôá óýíïëá óõó÷åôßóåùí Äçìïóßåõóç Ðñáêôéêþí êáé Äçìïóß-
åõóç Ðåñéïäéêïý åßíáé åðßóçò ôýðïõ Í:1. Åðßóçò, ôá ÷áñáêôçñéóôéêÜ ôùí
óõíüëùí óõó÷åôßóåùí ðñÝðåé êáé áõôÜ íá áðïèçêåõèïýí óôïí ðßíáêá ¢ñ-
èñï. Ç ôåëéêÞ ìïñöÞ ðïõ èá Ý÷åé ï ðßíáêáò ðáñïõóéÜæåôáé óôï Ó÷Þìá 6.4.
ÐáñáôçñÞóôå üôé ïé ôñåéò ðñþôåò óôÞëåò áðïôåëïýí ÷áñáêôçñéóôéêÜ áðü ôï
óýíïëï ïíôïôÞôùí ¢ñèñï, ïé åðüìåíåò ôñåéò áðïôåëïýí îÝíá êëåéäéÜ áðü
ôá óýíïëá ïíôïôÞôùí ÃíùóôéêÞ Ðåñéï÷Þ, ÐñáêôéêÜ Óõíåäñßïõ, Ðåñéïäéêü,
ïé åðüìåíåò äýï áðïôåëïýí ÷áñáêôçñéóôéêÜ áðü ôï óýíïëï ïíôïôÞôùí Äç-
ìïóßåõóç Ðñáêôéêþí, êáé ïé ôÝóóåñéò ôåëåõôáßåò áðïôåëïýí ÷áñáêôçñéóôéêÜ
áðü ôï óýíïëï óõó÷åôßóåùí Äçìïóßåõóç Ðåñéïäéêïý.
Ά ρ θ ρ ο

κ ω δ ι κ ό ς κ ω δ ι κ ό ς α ρ χ ι κ ή τ ε λ ι κ ή α ρ χ ι κ ή τ ε λ ι κ ή

κ ω δ ι κ ό ς τ ε ύ χ ο ς τ ό  ο ς

κ ω δ ι κ ό ς τ ί τ λ ο ς P D F γ ν ω σ τ ι κ ή ς π ρ α κ τ ι κ ω ν σ ε λ ί δ α σ ε λ ί δ α σ ε λ ί δ α σ ε λ ί δ α

π ε ρ ι ο δ ι κ ο ύ π ε ρ ι ο δ ι κ ο ύ π ε ρ ι ο δ ι κ ο ύ

π ε ρ ι ο χ ή ς σ υ ν ε δ ρ ί ο υ π ρ α κ τ ι κ ώ ν π ρ α κ τ ι κ ώ ν π ε ρ ι ο δ ι κ ο ύ π ε ρ ι ο δ ι κ ο ύ

Ξ έ ν α κ λ ε ι δ ι ά α π ό τ α σ ύ ν ο λ α Χ α ρ α κ τ η ρ ι σ τ ι κ ά

Χ α ρ α κ τ η ρ ι σ τ ι κ ά

Χ α ρ α κ τ η ρ ι σ τ ι κ ά σ υ ν ό λ ο υ σ υ σ χ ε τ ι σ < ώ ν

ο ν τ ο τ ή τ ω ν Γ σ υ ν ό λ ο υ σ υ σ χ ε τ ι σ < ώ ν
σ υ ν ό λ ο υ ο ν τ ο τ ή τ ω ν

ν ω σ τ ι κ ή Π ε ρ ι ο χ ή ,

> η η

 ο σ ί ε υ σ σ ε Π ε ρ ι ο δ ι κ ό

κ α ι > η η

Π ρ α κ τ ι κ ά Σ υ ν ε δ ρ ί ο υ  ο σ ί ε υ σ σ ε

ρ θ ρ ο

Π ε ρ ι ο δ ι κ ό Π ρ α κ τ ι κ ά

Ó÷Þìá 6.4: Ðßíáêáò ¢ñèñï ìåôÜ ôï ìåôáó÷çìáôéóìü.

• Óõó÷åôßóåéò ôýðïõ Ì:Í. Áí ç óõó÷Ýôéóç åßíáé ôýðïõ Ì:Í, ôüôå åßíáé áðá-
ñáßôçôïé ôñåéò ðßíáêåò. ÊáôÜ ôá ðñïçãïýìåíá, ïé äýï ðßíáêåò áíôéóôïé÷ïýí
146 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

óôéò ïíôüôçôåò êáé ðåñéÝ÷ïõí ôéò ó÷åôéêÝò óôÞëåò, åíþ ï ôñßôïò ðßíáêáò
áíôéóôïé÷åß óôç óõó÷Ýôéóç êáé ðåñéÝ÷åé ùò óôÞëåò ôá ðñùôåýïíôá êëåéäéÜ
ôùí äýï ïíôïôÞôùí êáé ôá ÷áñáêôçñéóôéêÜ ôçò óõó÷Ýôéóçò (áí õðÜñ÷ïõí).
Ðáñáôçñïýìå, üôé óôçí ðåñßðôùóç áõôÞ, äåí ôßèåôáé èÝìá õðï÷ñåùôéêÞò Þ
ìç óõììåôï÷Þò êáèþò ôï ðñüâëçìá êáëýðôåôáé ìå ôçí ýðáñîç ôïõ ôñßôïõ
ðßíáêá.
Ãéá ðáñÜäåéãìá, áðü ôï äéÜãñáììá ÏÓ ôïõ Ó÷Þìáôïò 4.1 áò èåùñÞóïõìå
ôï óýíïëï óõó÷åôßóåùí ÓõíäñïìÞ, ôï ïðïßï åßíáé ôýðïõ Í:Ì êáé äçëþíåé
üôé Ýíáò óõíäñïìçôÞò ìðïñåß íá åßíáé êáôá÷ùñéóìÝíïò óå ðïëëÝò ãíùóôéêÝò
ðåñéï÷Ýò êáé ìßá ãíùóôéêÞ ðåñéï÷Þ ìðïñåß íá Ý÷åé ðïëëïýò óõíäñïìçôÝò.
Óå ìßá ôÝôïéá ðåñßðôùóç ðñÝðåé íá äçìéïõñãçèïýí ôñåéò ðßíáêåò ìå äïìÞ
ðïõ ðáñïõóéÜæåôáé óôï Ó÷Þìá 6.2.

Åßíáé óýíçèåò êáôÜ ôç ìåôáôñïðÞ ôïõ ìïíôÝëïõ ÏÓ óå ó÷åóéáêü, íá áðáé-


ôåßôáé áëëáãÞ óôçí ïíïìáôïëïãßá ôùí ÷áñáêôçñéóôéêþí åíüò óõíüëïõ ïíôïôÞôùí.
Ãéá ðáñÜäåéãìá, êáôÜ ôï ìåôáó÷çìáôéóìü ôïõ óõíüëïõ ïíôïôÞôùí ¢ñèñï óå ðß-
íáêá (âë. Ó÷Þìá 6.4) ðáñáôçñÞóôå üôé ÷ñçóéìïðïéÞèçêáí äéáöïñåôéêÜ ïíüìáôá
ãéá ôçí ðåñéãñáöÞ ôùí îÝíùí êëåéäéþí. Áõôü åßíáé áðáñáßôçôï, äéüôé êáé ôá äýï
êëåéäéÜ Ý÷ïõí ôï ßäéï üíïìá óôçí áíôßóôïé÷ç ó÷Ýóç. Áí êáé åðéôñÝðåôáé äýï ÷á-
ñáêôçñéóôéêÜ ðïõ áíÞêïõí óå äéáöïñåôéêÝò ó÷Ýóåéò íá Ý÷ïõí ôï ßäéï üíïìá, áõôü
áðáãïñåýåôáé üôáí ðñüêåéôáé ãéá ÷áñáêôçñéóôéêÜ ôçò ßäéáò ó÷Ýóçò. ÅðïìÝíùò,
ðñÝðåé íá ÷ñçóéìïðïéçèïýí äéáöïñåôéêÜ ïíüìáôá. ×ñåéÜæåôáé éäéáßôåñç ðñïóï÷Þ
êáôÜ ôçí áëëáãÞ ôçò ïíïìáôïëïãßáò, Ýôóé þóôå íá ÷ñçóéìïðïéïýíôáé ïíüìáôá ðïõ
íá áðïäßäïõí ôï íüçìá ôïõ êÜèå óõãêåêñéìÝíïõ ÷áñáêôçñéóôéêïý.
Óôç óõíÝ÷åéá óõíïøßæïíôáé ïé ðñïçãïýìåíåò ðåñéðôþóåéò þóôå Ýíá äéÜãñáììá
ÏÓ íá ìåôáôñáðåß óå ðéíáêïåéäÞ áíáðáñÜóôáóç:

1. ÂáóéêÜ, ãéá êÜèå óýíïëï ïíôïôÞôùí ôïõ ìïíôÝëïõ ÏÓ äçìéïõñãåßôáé Ýíáò


ðßíáêáò (óõíÞèùò ìå ôï ßäéï üíïìá) ðïõ ðåñéÝ÷åé ôá áíôßóôïé÷á ÷áñáêôçñé-
óôéêÜ êáé Ý÷åé ãéá ðñùôåýïí êëåéäß ôï áíôßóôïé÷ï êëåéäß ôïõ óõíüëïõ ïíôïôÞ-
ôùí. Óôçí åéäéêÞ ðåñßðôùóç óõíüëùí óõó÷Ýôéóçò äõáäéêïý âáèìïý êáé ôý-
ðïõ 1:1 ìå õðï÷ñåùôéêÞ óõììåôï÷Þ ôùí óõíüëùí ïíôïôÞôùí, Ýíáò ðßíáêáò
áñêåß.

2. Óå ðåñßðôùóç ðïõ ôï óýíïëï óõó÷åôßóåùí óõíäÝåé äýï óýíïëá ïíôïôÞôùí


êáé åßíáé ôýðïõ 1:1 Þ 1:Í Þ Í:1, äåí áðáéôåßôáé ç äçìéïõñãßá îå÷ùñéóôïý
ðßíáêá ãéá ôç óõó÷Ýôéóç. Ôï óýíïëï ïíôïôÞôùí ðïõ óõììåôÝ÷åé ìå ðëçèéêü
áñéèìü 1 ìðïñåß íá äå÷èåß ôï êëåéäß ôïõ Üëëïõ óõíüëïõ ïíôïôÞôùí êáé ôá
÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ óõó÷åôßóåùí (áí õðÜñ÷ïõí).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 147

3. Áí ôï óýíïëï óõó÷Ýôéóçò ðïõ óõíäÝåé äýï óýíïëá ïíôïôÞôùí åßíáé ôýðïõ


Í:Ì, ôüôå åéäéêÜ ãéá ôï óýíïëï óõó÷Ýôéóçò äçìéïõñãåßôáé Ýíáò îå÷ùñéóôüò
ðßíáêáò ðïõ ðåñéÝ÷åé ùò ÷áñáêôçñéóôéêÜ ôá êëåéäéÜ ôùí óõíüëùí ïíôïôÞ-
ôùí êáé ôá ÷áñáêôçñéóôéêÜ ðïõ åíäÝ÷åôáé íá Ý÷åé ôï óýíïëï óõó÷åôßóåùí.
Óôçí ðåñßðôùóç áõôÞ ôï êëåéäß ôïõ ðáñáãüìåíïõ ðßíáêá åßíáé óýíèåôï êáé
áðïôåëåßôáé áðü ôá êëåéäéÜ ôùí áíôßóôïé÷ùí óõíüëùí ïíôïôÞôùí ðïõ óõì-
ìåôÝ÷ïõí.

Ìå âÜóç ôá üóá Ý÷ïõí áíáöåñèåß, óôï Ó÷Þìá 6.5 ðáñáèÝôïõìå ôï ó÷åóéáêü


ìïíôÝëï üðùò ðñïêýðôåé áðü ôï ìåôáó÷çìáôéóìü ôïõ äéáãñÜììáôïò ÏÓ ôïõ Ó÷Þ-
ìáôïò 4.1.

ÓõíäñïìçôÞò (êùäéêüò, üíïìá, ïäüò, áñéèìüò, ÔÊ, ðüëç, ÷þñá, ÁÐÊ)


ÔçëÝöùíï ÓõíäñïìçôÞ (êùäéêüò óõíäñïìçôÞ, áñéèìüò ôçëåöþíïõ)
ÃíùóôéêÞ Ðåñéï÷Þ (êùäéêüò, ôßôëïò, áñéèìüò óõíäñïìçôþí)
ÓõíäñïìÞ (êùäéêüò óõíäñïìçôÞ, êùäéêüò ãíùóôéêÞò ðåñéï÷Þò, áðü, Ýùò)
ÓõããñáöÝáò (êùäéêüò, üíïìá, ïäüò, áñéèìüò, ÔÊ, ðüëç, ÷þñá, óýíïëï Üñèñùí)
ÔçëÝöùíï ÓõããñáöÝá (êùäéêüò óõããñáöÝá, áñéèìüò ôçëåöþíïõ)
¢ñèñï (êùäéêüò, ôßôëïò, PDF, êùäéêüò ãíùóôéêÞò ðåñéï÷Þò, êùäéêüò óõíåäñßïõ,
êùäéêüò ðåñéïäéêïý, áñ÷éêÞ óåëßäá ðñáêôéêþí, ôåëéêÞ óåëßäá ðñáêôéêþí,
ôåý÷ïò, ôüìïò, áñ÷éêÞ óåëßäá ðåñéïäéêïý, ôåëéêÞ óåëßäá ðåñéïäéêïý)
ÓõããñáöÞ ¢ñèñïõ (êùäéêüò óõããñáöÝá, êùäéêüò Üñèñïõ)
Åêäïôéêüò Ïßêïò (êùäéêüò, üíïìá, ïäüò, áñéèìüò, ÔÊ, ðüëç, ÷þñá)
ÔçëÝöùíï Åêäïôéêïý Ïßêïõ (êùäéêüò åêäïôéêïý ïßêïõ, áñéèìüò ôçëåöþíïõ)
Ðåñéïäéêü (êùäéêüò, ôßôëïò, êùäéêüò åêäïôéêïý ïßêïõ)
ÐñáêôéêÜ Óõíåäñßïõ (êùäéêüò, óõíÝäñéï, ðüëç, ÷þñá, çìåñïìçíßá,
êùäéêüò åêäïôéêïý ïßêïõ)

Ó÷Þìá 6.5: Ó÷åóéáêü ó÷Þìá ôçò ÂÄ ôïõ Ó÷Þìáôïò 4.1 ìåôÜ ôç ìåôáôñïðÞ.

6.4.2 ¢ëëåò Ðåñéðôþóåéò Ìåôáôñïðþí


Ôá áíùôÝñù éó÷ýïõí óôéò ðåñéðôþóåéò äõáäéêþí óõó÷åôßóåùí üðïõ óõììåôÝ÷ïõí
óýíïëá éó÷õñþí ïíôïôÞôùí. Ùóôüóï, óôï ðñïçãïýìåíï êåöÜëáéï ìåëåôÞóáìå
ìßá óåéñÜ åîåéäéêåõìÝíùí åííïéþí ðïõ õðåéóÝñ÷ïíôáé óôï ó÷åäéáóìü ôçò ÂÜóçò
ÄåäïìÝíùí óýìöùíá ìå ôï ìïíôÝëï ÏÓ. ÁõôÝò ôéò Ýííïéåò èá åðáíåîåôÜóïõìå
äéáäï÷éêÜ óôç óõíÝ÷åéá.

• Óõó÷åôßóåéò áíþôåñïõ âáèìïý. Áí ï âáèìüò åíüò óõíüëïõ óõó÷åôßóåùí


åßíáé ìåãáëýôåñïò áðü äýï, ôüôå áêïëïõèåßôáé ðáñüìïéá äéáäéêáóßá. Ãéá
148 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

ðáñÜäåéãìá, áí ç óõó÷Ýôéóç åßíáé ôñéáäéêÞ, ôüôå áðáéôïýíôáé ôÝóóåñéò ðß-


íáêåò (ôñåéò ãéá ôá óýíïëá ïíôïôÞôùí êáé Ýíáò ãéá ôï óýíïëï óõó÷Ýôéóçò).
Áí ç óõó÷Ýôéóç åßíáé ôåôñáäéêÞ, ôüôå áðáéôïýíôáé ðÝíôå ðßíáêåò (ôÝóóå-
ñéò ãéá ôá óýíïëá ïíôïôÞôùí êáé Ýíáò ãéá ôï óýíïëï óõó÷åôßóåùí) ê.ï.ê.
Ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá ðïõ ðñïêýðôåé áðü ôï óýíïëï óõó÷åôß-
óåùí áðïôåëåßôáé áðü üëá ôá ðñùôåýïíôá êëåéäéÜ ôùí óõíüëùí ïíôïôÞôùí
ðïõ óõíäÝïíôáé ìå ôç óõó÷Ýôéóç. Ùóôüóï, áí êÜðïéá óýíïëá ïíôïôÞôùí
óõììåôÝ÷ïõí óôç óõó÷Ýôéóç ìå ðëçèéêüôçôá 1, ôüôå ôá ðñùôåýïíôá êëåéäéÜ
áõôþí äåí óõììåôÝ÷ïõí óôï ó÷çìáôéóìü ôïõ ðñùôåýïíôïò êëåéäéïý.

κ ω δ ι κ ό ς ό ν ο  α κ ω δ ι κ ό ς ό ν ο  α

Τ ρ α γ ο υ δ ι σ τ ή ς M Σ υ ν ε ρ γ α σ ί α Σ ύ  β ο υ λ ο ς

ι σ κ ο γ ρ α φ ι κ ή

κ ω δ ι κ ό ς ό ν ο  α

Ε τ α ι ρ ε ί α

( α )

κ ω δ ι κ ό ς ό ν ο  α κ ω δ ι κ ό ς τ ί τ λ ο ς

Θ ε α τ ρ ι κ ή

Θ ί α σ ο ς M Έ ρ γ ο

Π α ρ ά σ τ α σ η

η  ε ρ / ν ί α

κ ω δ ι κ ό ς Π ρ ε  ι έ ρ α

τ ό π ο ς

( β )

Ó÷Þìá 6.6: Óýíïëá óõó÷åôßóåùí ðïõ óõíäÝïõí ðåñéóóüôåñá áðü äýï óýíïëá
ïíôïôÞôùí.

¸óôù ôï äéÜãñáììá ÏÓ ðïõ áðåéêïíßæåôáé óôï Ó÷Þìá 6.6á, üðïõ ôï óý-


íïëï óõó÷åôßóåùí Óõíåñãáóßá åßíáé ôñéáäéêïý âáèìïý, êáèþò óõììåôÝ÷ïõí
ïé ïíôüôçôåò ÔñáãïõäéóôÞò, Óýìâïõëïò êáé ÄéóêïãñáöéêÞ åôáéñåßá. Óôçí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 149

ðåñßðôùóç áõôÞ, ðñÝðåé ïðùóäÞðïôå íá äçìéïõñãçèïýí ôÝóóåñéò ðßíáêåò


áíåîáñôÞôùò õðï÷ñåùôéêÞò Þ ìç óõììåôï÷Þò ôùí óõíüëùí ïíôïôÞôùí êáé
áíåîáñôÞôùò ôïõ ðëçèéêïý ëüãïõ ôùí óõíüëùí ïíôïôÞôùí, äçëáäÞ áí óõì-
ìåôÝ÷ïõí ìå ðëçèéêüôçôá 1 Þ Í.
Áò ðáñáôçñÞóïõìå óôç óõíÝ÷åéá ôï äéÜãñáììá ôïõ Ó÷Þìáôïò 6.6â. Ôï óý-
íïëï ïíôïôÞôùí ÐñåìéÝñá óõììåôÝ÷åé ìå ðëçèéêü áñéèìü 1. ÅðïìÝíùò, ôï
ðñùôåýïí êëåéäß ôïõ ðßíáêá ðïõ ðñïêýðôåé áðü ôï óýíïëï óõó÷åôßóåùí Èå-
áôñéêÞ ÐáñÜóôáóç äåí èá ðåñéÝ÷åé ôï ðñùôåýïí êëåéäß ôïõ óõíüëïõ ïíôïôÞ-
ôùí ÐñåìéÝñá.
• ×áñáêôçñéóôéêÜ ðïëëáðëÞò ôéìÞò. ÅéäéêÞ áíôéìåôþðéóç ðñÝðåé íá ãßíåé
êáé ãéá ôá ÷áñáêôçñéóôéêÜ ðïëëáðëÞò ôéìÞò, üðùò ôï ÷áñáêôçñéóôéêü ôçëÝ-
öùíï ðïõ áðåéêïíßæåôáé ìå äéðëÞ Ýëëåéøç óôï Ó÷Þìá 4.1. ÃåíéêÜ, áõôïý
ôïõ åßäïõò ôá ÷áñáêôçñéóôéêÜ áðáéôïýí ôç äçìéïõñãßá îå÷ùñéóôïý ðßíáêá,
üðïõ óôéò óôÞëåò ôïõ ðßíáêá óõìðåñéëáìâÜíåôáé ôï óõãêåêñéìÝíï ÷áñá-
êôçñéóôéêü êáèþò åðßóçò êáé ôï ðñùôåýïí êëåéäß ôçò áíôßóôïé÷çò ó÷Ýóçò
(áðëü Þ óýíèåôï). ¸ôóé, óôïí ðßíáêá ðïõ ðñïêýðôåé ãéá ôï ÷áñáêôçñé-
óôéêü ôçëÝöùíï èá áíôéóôïé÷åß ìßá ðëåéÜäá óå êÜèå ôçëåöùíéêÞ óýíäåóç.
ÐáñáôçñÞóôå üôé ïé ôçëåöùíéêÝò óõíäÝóåéò ôùí óõíäñïìçôþí áðïèçêåýï-
íôáé óôïí ðßíáêá ÔçëÝöùíï ÓõíäñïìçôÞ. Ï ðßíáêáò áõôüò áðïôåëåßôáé áðü
äýï ÷áñáêôçñéóôéêÜ (óôÞëåò) êùäéêüò óõíäñïìçôÞ êáé áñéèìüò ôçëåöþíïõ.
Ôá äýï áõôÜ ÷áñáêôçñéóôéêÜ óõíèÝôïõí ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá
(ãéáôß;). Ôï ßäéï óêåðôéêü Ý÷åé ÷ñçóéìïðïéçèåß êáé ãéá ôç äçìéïõñãßá ôùí
ðéíÜêùí ÔçëÝöùíï ÓõããñáöÝá êáé ÔçëÝöùíï Åêäïôéêïý Ïßêïõ (âë. Ó÷Þìá
6.5).
• Óýíïëá áäýíáìùí ïíôïôÞôùí. Åßäáìå üôé ôá óýíïëá áäýíáìùí ïíôïôÞ-
ôùí åîáñôþíôáé áðü óýíïëá éó÷õñþí ïíôïôÞôùí. ¸ôóé, ãéá ôç ìåôáôñïðÞ
åíüò óõíüëïõ áäýíáìçò ïíôüôçôáò óå ðßíáêá èåùñïýìå ôï äéáêñéôéêü (Þ
ìåñéêü êëåéäß) ôçò, ôï ïðïßï áðü êïéíïý ìå ôï ðñùôåýïí êëåéäß ôïõ óõíüëïõ
ôçò éó÷õñÞò ïíôüôçôáò óõíáðïôåëïýí ôï ðñùôåýïí êëåéäß ôïõ óõíüëïõ ôçò
áäýíáìçò ïíôüôçôáò. Ìå Üëëá ëüãéá, ï ðßíáêáò ðïõ äçìéïõñãåßôáé áðü
Ýíá óýíïëï áäýíáìçò ïíôüôçôáò ðåñéëáìâÜíåé üëá ôá ÷áñáêôçñéóôéêÜ ôçò
êáèþò êáé ôï êýñéï êëåéäß ôçò áíôßóôïé÷çò éó÷õñÞò ïíôüôçôáò.
• Åîåéäßêåõóç/ãåíßêåõóç. Éäéáßôåñç áíôéìåôþðéóç áðáéôåßôáé êáé ãéá ôçí ðåñß-
ðôùóç ôçò åîåéäßêåõóçò/ãåíßêåõóçò. Óôï Ó÷Þìá 4.11 ðáñïõóéÜóèçêå Ýíá
ðáñÜäåéãìá üðïõ ìßá õðåñêëÜóç (ç ïíôüôçôá ü÷çìá) åîåéäéêåýåôáé óå äýï
õðïêëÜóåéò (ôéò ïíôüôçôåò åðéâáôéêü áõôïêßíçôï êáé öïñôçãü). Óôç óõãêå-
êñéìÝíç ðåñßðôùóç áðáéôïýíôáé ôñåéò ðßíáêåò ìå ôï åîÞò óêåðôéêü. Ãéá
150 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

ôçí õðåñêëÜóç áðáéôåßôáé Ýíáò ðßíáêáò ìå óôÞëåò ðïõ áíôéóôïé÷ïýí ìßá-


ðñïò-ìßá óôá ÷áñáêôçñéóôéêÜ ôçò ïíôüôçôáò, åíþ ãéá ôéò äýï õðïêëÜóåéò
áðáéôïýíôáé äýï ðßíáêåò ìå óôÞëåò ðïõ áíôéóôïé÷ïýí óôá ÷áñáêôçñéóôéêÜ
ôçò êÜèå õðïêëÜóçò áðü êïéíïý ìå ôïí êùäéêü ôçò õðåñêëÜóçò.
Ôá áíùôÝñù éó÷ýïõí ãåíéêþò. Ùóôüóï, áí äåí õðÜñ÷åé åðéêÜëõøç, ôüôå
ìðïñåß íá åöáñìïóèåß êáé ìßá åíáëëáêôéêÞ ðñïóÝããéóç. ÄçëáäÞ, áíôß ôñåéò
ðßíáêåò íá äçìéïõñãÞóïõìå äýï ðßíáêåò êáèþò ï ðßíáêáò ôçò õðåñêëÜóçò
åßíáé äõíáôüí íá "áðïññïöçèåß" áðü ôïõò ðßíáêåò ôùí õðïêëÜóåùí. Ìå
Üëëá ëüãéá, ôá ÷áñáêôçñéóôéêÜ ôçò õðåñêëÜóçò èá êëçñïíïìçèïýí óôïõò
ðßíáêåò ôùí õðïêëÜóåùí.
• ÓõóóùìÜôùóç. ÔÝëïò, áðïìÝíåé ç åéäéêÞ ðåñßðôùóç ôçò óõóóùìÜôùóçò.
Áò èåùñÞóïõìå êáé ðÜëé ôï Ó÷Þìá 4.12. ÁõôÞ ç ðåñßðôùóç ôåëéêÜ áíôé-
ìåôùðßæåôáé åýêïëá. ÄçëáäÞ, áðü ôç óõó÷Ýôéóç ÊáôáãñáöÞ äçìéïõñãåßôáé
Ýíáò ðßíáêáò ìå óôÞëåò ðïõ áðáñôßæïíôáé áðü ôá ðñùôåýïíôá êëåéäéÜ êùäé-
êüò óõíäñïìçôÞ êáé êùäéêüò ãíùóôéêÞò ðåñéï÷Þò ôùí äýï óõíüëùí ïíôïôÞ-
ôùí ÓõíäñïìçôÞò êáé ÃíùóôéêÞ Ðåñéï÷Þ, êáé üóá ÷áñáêôçñéóôéêÜ Ý÷åé ç
óõãêåêñéìÝíç óõó÷Ýôéóç (çìåñïìçíßá óõíáëëáãÞò).

6.5 ¼øåéò
ÊáôÜ ôçí ðåñéãñáöÞ ôçò áñ÷éôåêôïíéêÞò ôñéþí åðéðÝäùí (ANSI-SPARC) ïñßóáìå
ùò åîùôåñéêü åðßðåäï ôïí ôñüðï ìå ôïí ïðïßï ïé äéÜöïñïé ÷ñÞóôåò ôïõ óõóôÞìáôïò
áíôéëáìâÜíïíôáé ôá äåäïìÝíá ôçò ÂÄ. ÊÜèå ÷ñÞóôçò Ý÷åé ìßá äéáöïñåôéêÞ üøç
ôùí äåäïìÝíùí. Óôï ó÷åóéáêü ìïíôÝëï ç Ýííïéá ôçò üøçò (view) åßíáé äéáöïñå-
ôéêÞ. Ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí åðéôñÝðåé ôïí ïñéóìü äéáöïñåôéêþí üøåùí
ãéá ôï ßäéï óýíïëï äåäïìÝíùí. Ìßá üøç åßíáé ìßá åéêïíéêÞ (virtual) Þ áëëéþò
ðáñáãüìåíç (derived) ó÷Ýóç. Áõôü óçìáßíåé üôé óå áíôßèåóç ìå ìßá ó÷Ýóç âÜ-
óçò (base relation) ìßá üøç äåí Ý÷åé öõóéêÞ õðüóôáóç, ôï ïðïßï óçìáßíåé üôé äåí
õðÜñ÷ïõí ðëåéÜäåò ðïõ íá áíÞêïõí öõóéêÜ óå áõôÞí (âë. Ó÷Þìá 6.7). Ïé ðëåéÜ-
äåò ôçò üøçò áíÞêïõí óå ìßá Þ ðåñéóóüôåñåò ó÷Ýóåéò âÜóçò. ÊÜèå ó÷Ýóç âÜóçò
Ý÷åé öõóéêÞ õðüóôáóç. ÅéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò óôçí üøç ðñïêá-
ëïýí áíôßóôïé÷åò åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò óôéò ó÷Ýóåéò âÜóçò üðïõ
óôçñßæåôáé ç üøç. Ùóôüóï, õðÜñ÷ïõí ðåñéðôþóåéò üðïõ äåí åðéôñÝðïíôáé ôÝôïéïõ
åßäïõò ëåéôïõñãßåò óôçí üøç, ðáñÜ ìüíï ëåéôïõñãßåò áíÜãíùóçò (read only).
Ïé üøåéò ðáñÝ÷ïõí ìßá óåéñÜ áðü åíäéáöÝñïíôá ÷áñáêôçñéóôéêÜ ðïõ óõíïøß-
æïíôáé óôá åîÞò:
• Áðïôåëïýí Ýíáí áðëü áëëÜ éó÷õñü ìç÷áíéóìü áðüêñõøçò äåäïìÝíùí áðü
óõãêåêñéìÝíïõò ÷ñÞóôåò Þ åöáñìïãÝò,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 151

Ό ψ
η

Σ χ έ σ η Β ά σ η ς

Σ χ έ σ η Β ά σ η ς

Σ χ έ σ η Β ά σ η ς

Ó÷Þìá 6.7: Ïñéóìüò üøçò áðü ó÷Ýóåéò âÜóçò.

• Ôï ßäéï óýíïëï äåäïìÝíùí ìðïñåß íá äßíåôáé óôïõò ÷ñÞóôåò ìå äéáöïñåôéêü


ôñüðï, áíáëüãùò ìå ôïí ïñéóìü ôçò üøçò,

• Áðëïðïéåßôáé óçìáíôéêÜ ï ôñüðïò äéáôýðùóçò ôùí åñùôçìÜôùí, êáèþò åß-


íáé äõíáôüí ðïëýðëïêåò óõíäÝóåéò ìåôáîý ôùí ó÷Ýóåùí íá ïìáäïðïéçèïýí
ìÝóá óôïí ïñéóìü ôçò üøçò (âë. ÊåöÜëáéï 9).

Áò åîåôÜóïõìå óôç óõíÝ÷åéá Ýíá áðëü ðáñÜäåéãìá áðüêñõøçò äåäïìÝíùí ìå


÷ñÞóç üøçò. ÈåùñÞóôå ôç ó÷Ýóç ¢ñèñï, ç ïðïßá áðåéêïíßæåôáé óôï Ó÷Þìá 6.8.
Ôï ÷áñáêôçñéóôéêü PDF ôçò ó÷Ýóçò ðåñéÝ÷åé ôï Üñèñï óå çëåêôñïíéêÞ ìïñöÞ (áñ-
÷åßï PDF). Ç ðñüóâáóç óôçí çëåêôñïíéêÞ ìïñöÞ åíüò Üñèñïõ åðéôñÝðåôáé ìüíï
åö’ üóïí ï åíäéáöåñüìåíïò ÷ñÞóôçò Ý÷åé ðëçñþóåé óõíäñïìÞ ãéá ôç ãíùóôéêÞ
ðåñéï÷Þ üðïõ áíÞêåé ôï óõãêåêñéìÝíï Üñèñï. Ãéá ðáñÜäåéãìá, óôï Ó÷Þìá 6.8â ï
óõãêåêñéìÝíïò ÷ñÞóôçò Ý÷åé ðñüóâáóç ìüíï óôá áñ÷åßá PDF ôçò ãíùóôéêÞò ðå-
ñéï÷Þò ìå êùäéêü 1. Óôï Ó÷Þìá 6.8ã ï ÷ñÞóôçò Ý÷åé äéêáßùìá ðñüóâáóçò óå üëá
ôá Üñèñá, äéüôé åßíáé óõíäñïìçôÞò êáé ôùí äýï ãíùóôéêþí ðåñéï÷þí. ÁíôéèÝôùò,
óôï Ó÷Þìá 6.8á ðáñáôçñïýìå üôé Ýíáò ÷ñÞóôçò ðïõ äåí åßíáé áêüìç óõíäñïìçôÞò
äåí Ý÷åé äéêáßùìá ðñüóâáóçò óôç óôÞëç PDF ôïõ ðßíáêá. Ï ôñüðïò êáôáóêåõÞò
êáé ÷ñÞóçò ôùí üøåùí èá ãßíåé ðåñéóóüôåñï êáôáíïçôüò êáôÜ ôçí ðåñéãñáöÞ ôçò
ãëþóóáò ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí SQL.
Óçìåéþíåôáé üôé õðÜñ÷åé ìßá êáôçãïñßá üøåùí ðïõ Ý÷ïõí öõóéêÞ õðüóôáóç.
Óôçí ðåñßðôùóç áõôÞ ç üøç êáëåßôáé õëïðïéçìÝíç (materialized). Ïé üøåéò ôÝ-
152 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

êùäéêüò
êùäéêüò ôßôëïò ãíùóôéêÞò PDF
ðåñéï÷Þò
1 R-trees Have Grown Everywhere 1 NULL
2 Similarity Query Processing 1 NULL
3 Design of ATM Networks 2 NULL

êùäéêüò
êùäéêüò ôßôëïò ãíùóôéêÞò PDF
ðåñéï÷Þò
1 R-trees Have Grown Everywhere 1 1.pdf
2 Similarity Query Processing 1 2.pdf
3 Design of ATM Networks 2 NULL

êùäéêüò
êùäéêüò ôßôëïò ãíùóôéêÞò PDF
ðåñéï÷Þò
1 R-trees Have Grown Everywhere 1 1.pdf
2 Similarity Query Processing 1 2.pdf
3 Design of ATM Networks 2 3.pdf

Ó÷Þìá 6.8: ÄéáöïñåôéêÝò üøåéò ÷ñçóôþí ôçò ó÷Ýóçò ’Áñèñï.

ôïéïõ ôýðïõ ÷ñçóéìïðïéïýíôáé êõñßùò ãéá ëüãïõò ôá÷ýôçôáò óôçí åðåîåñãáóßá


ôùí äåäïìÝíùí. Ç ðñïóðÝëáóç ôùí äåäïìÝíùí ìÝóù áðëÞò üøçò åìðåñéÝ÷åé ôçí
åêôÝëåóç äéáöüñùí ëåéôïõñãéþí Ýôóé þóôå íá ðñïóðåëáóèïýí ôá äåäïìÝíá ðïõ
åßíáé áðïèçêåõìÝíá óôéò ó÷Ýóåéò âÜóçò. Ï ÷ñüíïò ðñïóðÝëáóçò ôùí äåäïìÝ-
íùí êáé ç ðáñïõóßáóç áõôþí óôï ÷ñÞóôç åîáñôÜôáé áðü ôçí ðïëõðëïêüôçôá ôçò
üøçò. Ç õëïðïéçìÝíç üøç áðáéôåß ðåñéóóüôåñï ÷ñüíï ãéá ôçí åíçìÝñùóÞ ôçò
áëëÜ ðñïóöÝñåé óçìáíôéêÜ êáëýôåñïõò ÷ñüíïõò ðñïóðÝëáóçò ôùí äåäïìÝíùí
äéüôé äåí áðáéôåßôáé ç ðñïóðÝëáóç ôùí ó÷Ýóåùí âÜóçò. Åðßóçò, êÜèå öïñÜ ðïõ
ðñáãìáôïðïéïýíôáé áëëáãÝò (åéóáãùãÝò, äéáãñáöÝò, åíçìåñþóåéò) óôá äåäïìÝíá
ôùí ó÷Ýóåùí âÜóçò, ïé ïðïßåò óõììåôÝ÷ïõí óôçí üøç, ðñÝðåé íá åíçìåñþíïíôáé
áíáëüãùò êáé ôá äåäïìÝíá ôçò üøçò. Áí ïé áëëáãÝò åßíáé óõ÷íÝò, ôüôå áðáéôåßôáé
óçìáíôéêüò ÷ñüíïò ãéá ôçí åíçìÝñùóç ôçò õëïðïéçìÝíçò üøçò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 153

6.6 Óýíïøç
Ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí áíáðôý÷èçêå áðü ôïí Codd ôï 1970 [Codd 1970]
êáé ÷áñáêôçñßæåôáé áðü ôçí áðëüôçôÜ ôïõ êáé ôç ìáèçìáôéêÞ ôïõ ðåñéãñáöÞ. Ôá
äýï áõôÜ ÷áñáêôçñéóôéêÜ ïäÞãçóáí óôç ìåãÜëç ôïõ áðÞ÷çóç ìå áðïôÝëåóìá ïé
êáôáóêåõáóôÝò ÓÄÂÄ íá ôï õéïèåôÞóïõí. Ôï ó÷åóéáêü ìïíôÝëï ÷ñçóéìïðïéåß ðß-
íáêåò (Þ áëëéþò ó÷Ýóåéò) ãéá ôçí áíáðáñÜóôáóç ôùí äåäïìÝíùí. Ï êÜèå ðßíáêáò
áðïôåëåßôáé áðü Ýíá óýíïëï óôçëþí (Þ ÷áñáêôçñéóôéêþí). ¸íá Þ ðåñéóóüôåñá
÷áñáêôçñéóôéêÜ ïñßæïõí ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá. Äýï ãñáììÝò ôïõ ðß-
íáêá äåí ìðïñïýí íá óõìöùíïýí óôçí ôéìÞ ôïõ êëåéäéïý. ÊÜèå óôÞëç ôïõ ðßíáêá
ìðïñåß íá ëáìâÜíåé ôéìÝò áðü êÜðïéï ðåäßï ïñéóìïý ìå áôïìéêÝò ôéìÝò.
×ñçóéìïðïéþíôáò ðåñéïñéóìïýò áêåñáéüôçôáò äéáôçñåßôáé ç óõíåðÞò êáôÜ-
óôáóç ôùí äåäïìÝíùí ìåôÜ áðü åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò. Ïé óç-
ìáíôéêüôåñïé ðåñéïñéóìïß åßíáé: ðåñéïñéóìüò ÷ñÞóçò êåíþí ôéìþí, ðåñéïñéóìïß
áêåñáéüôçôáò ïíôïôÞôùí êáé ðåñéïñéóìïß áíáöïñþí. Ôá ó÷åóéáêÜ ÓÄÂÄ åðéôñÝ-
ðïõí ôç äçìéïõñãßá ðåñéïñéóìþí áêåñáéüôçôáò ïñéæüìåíùí áðü ôï ÷ñÞóôç ãéá
ìåãáëýôåñç åõåëéîßá.
Ïé üøåéò áðïôåëïýí Ýíáí ðïëý éó÷õñü ìç÷áíéóìü áðüêñõøçò äåäïìÝíùí êáé
áðëïðïßçóçò ôùí åñùôçìÜôùí, êáé õðïóôçñßæïíôáé áðü ðïëëÜ ó÷åóéáêÜ ÓÄÂÄ.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


6.1. Íá óçìåéùèåß ç äéáöïñÜ ìåôáîý ó÷Þìáôïò ó÷Ýóçò êáé óôéãìéüôõðïõ ó÷Ýóçò.
Íá äþóåôå Ýíá ðáñÜäåéãìá.

6.2. Ðüôå Ýíá êëåéäß êáëåßôáé óýíèåôï; Íá äþóåôå Ýíá ðáñÜäåéãìá ðßíáêá ìå
óýíèåôï êëåéäß.

6.3. Íá áíáöåñèïýí ïé ðåñéðôþóåéò üðïõ êáôÜ ôç ìåôáôñïðÞ åíüò äéáãñÜììáôïò


ÏÓ óå ðßíáêåò ðñÝðåé ïðùóäÞðïôå íá äçìéïõñãÞóïõìå îå÷ùñéóôü ðßíáêá ãéá Ýíá
óýíïëï óõó÷Ýôéóçò. Íá äþóåôå äýï ôÝôïéá ðáñáäåßãìáôá.

6.4. Íá ðåñéãñáöïýí ïé ðåñéïñéóìïß áêåñáéüôçôáò êáé íá äéêáéïëïãçèåß ç ÷ñç-


óéìüôçôÜ ôïõò. Íá äþóåôå Ýíá ðáñÜäåéãìá üðïõ ç ÷ñÞóç êåíþí ôéìþí (NULL)
äçìéïõñãåß ðñüâëçìá.

6.5. Íá äþóåôå ðáñáäåßãìáôá üðïõ ç ÷ñÞóç êåíþí ôéìþí (NULL) äåí äçìéïõñãåß
ðñüâëçìá.
154 ÊåöÜëáéï 6. Ó÷åóéáêü ÌïíôÝëï ÄåäïìÝíùí

6.6. Íá äþóåôå äýï ðáñáäåßãìáôá áðü ðñáãìáôéêÝò åöáñìïãÝò, üðïõ èá ðñÝ-


ðåé íá åöáñìïóèïýí ðåñéïñéóìïß ìå âÜóç ôç óçìáóéïëïãßá ôùí ÷áñáêôçñéóôéêþí.

6.7. ÈåùñÞóôå ôá óýíïëá ïíôïôÞôùí êáèçãçôÞò êáé ìÜèçìá, ðïõ óõììåôÝ÷ïõí


óôç óõó÷Ýôéóç äéäÜóêåé. Íá èåùñÞóåôå åðßóçò üëåò ôéò äõíáôÝò ðåñéðôþóåéò
õðï÷ñåùôéêÞò Þ ìç óõììåôï÷Þò ôùí
ïíôïôÞôùí êáé íá áíáöÝñáôå óåíÜñéá áðü ôïí ðñáãìáôéêü êüóìï (äçëáäÞ,
ðüôå êÜðïéï ìÜèçìá äéäÜóêåôáé Þ ü÷é, êáé ðüôå êÜðïéïò êáèçãçôÞò äéäÜóêåé êÜ-
ðïéï ìÜèçìá Þ ü÷é) åöáñìüæïíôáò ôç èåùñßá ãéá ôï ìïíôÝëï ÏÓ êáé ôç ìåôáôñïðÞ
óå ðßíáêåò. Íá äïèïýí Ýãêõñá óôéãìéüôõðá.

6.8. Íá ðåñéãñÜøåôå Ýíá ðáñÜäåéãìá áðü ôïí ðñáãìáôéêü êüóìï, üðïõ íá


õðåéóÝñ÷åôáé ìßá óõó÷Ýôéóç ôñéáäéêïý âáèìïý. Íá åîåôáóèåß ç óçìåéïëïãßá ìå
ôçí ïðïßá èá ìáò åðéôñåðüôáí íá ðáñáóôÞóïõìå ôç óõó÷Ýôéóç áõôÞ ìå áðëïýóôå-
ñåò óõó÷åôßóåéò äõáäéêïý âáèìïý. Óå êÜèå ðåñßðôùóç íá äïèïýí ïé ðßíáêåò ðïõ
èá áíôéóôïé÷ïýí óôá óýíïëá ïíôïôÞôùí êáé óõó÷åôßóåùí.

6.9. ÈåùñÞóôå Ýíá ðñáãìáôéêü ðáñÜäåéãìá åîåéäßêåõóçò/ãåíßêåõóçò ìå ôñåéò


õðïêëÜóåéò. Íá êÜíåôå êáé ôéò äýï õðïèÝóåéò ùò ðñïò ôçí åðéêÜëõøç êáé íá äç-
ìéïõñãÞóåôå ôïõò ó÷åôéêïýò ðßíáêåò ðïõ áíôéóôïé÷ïýí óå üëá ôá óýíïëá ïíôïôÞ-
ôùí ôïõ ðáñáäåßãìáôïò.

6.10. Íá ðåñéãñÜøåôå Ýíá ðñáãìáôéêü ðáñÜäåéãìá óõóóùìÜôùóçò, êáèþò åðß-


óçò êáé íá ðåñéãñÜøåôå ôá áíôßóôïé÷ïõò ó÷åäéáóìïýò ÷ùñßò ôç ÷ñÞóç ôçò Ýííïéáò
áõôÞò. Õðü ðïßåò óçìáóéïëïãéêÝò õðïèÝóåéò èá ìðïñïýóå íá åöáñìïóèåß ç êÜèå
ìßá; Íá äçìéïõñãÞóåôå ôïõò ó÷åôéêïýò ðßíáêåò ðïõ áíôéóôïé÷ïýí óå üëá ôá óý-
íïëá ïíôïôÞôùí êáé óõó÷åôßóåùí ôïõ ðáñáäåßãìáôïò.

6.11. Íá ðåñéãñáöåß ç ÷ñçóéìüôçôá ôùí üøåùí. Íá äþóåôå Ýíá ðáñÜäåéãìá üøçò


ðïõ íá ðñïÝñ÷åôáé áðü ìßá ó÷Ýóç âÜóçò êáé Ýíá ðáñÜäåéãìá ðïõ íá ðñïÝñ÷åôáé
áðü äýï âÜóåéò ó÷Ýóçò.

6.12. Óôï åðüìåíï ó÷Þìá ðáñïõóéÜæïíôáé äýï ó÷Ýóåéò âÜóçò. ¸óôù üôé áðü ôéò
ó÷Ýóåéò áõôÝò ðñÝðåé íá äçìéïõñãçèåß ç üøç R(A,B,C). Íá õëïðïéçèåß ç üøç êáé
íá ó÷ïëéáóèåß áí ôï óýóôçìá èá ðñÝðåé íá åðéôñÝðåé äéáãñáöÞ áðü ôçí üøç.

6.13. ÊáôáóêåõÜóôå ôï äéÜãñáììá ÏÓ ãéá ìßá ÂÜóç ÄåäïìÝíùí öïéôçôþí, ç


ïðïßá ÷ñçóéìïðïéåßôáé áðü ôï ÐáíåðéóôÞìéï. Óôç óõíÝ÷åéá ìåôáôñÝøôå ôï ìï-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 155

A B B C
a1 b b c1
a2 b b c2

íôÝëï ÏÓ óå ó÷åóéáêü ìïíôÝëï êáé ðáñáèÝóôå ôéò ó÷Ýóåéò ðïõ ðñïêýðôïõí êáé
ôá ÷áñáêôçñéóôéêÜ ôïõò.

6.14. ÊáôáóêåõÜóôå ôï äéÜãñáììá ÏÓ ãéá ìßá ÂÜóç ÄåäïìÝíùí, ç ïðïßá èá


÷ñçóéìïðïéçèåß áðü Ýíá êáôÜóôçìá video club. Óôç óõíÝ÷åéá ìåôáôñÝøôå ôï ìï-
íôÝëï ÏÓ óå ó÷åóéáêü ìïíôÝëï êáé ðáñáèÝóôå ôéò ó÷Ýóåéò ðïõ ðñïêýðôïõí êáé
ôá ÷áñáêôçñéóôéêÜ ôïõò.

6.15.
κ ω δ ι κ ό ς ό ν ο  α κ ω δ ι κ ό ς ό ν ο  α

Τ ρ α γ ο υ δ ι σ τ ή ς M Σ υ ν ε ρ γ α σ ί α Σ ύ  β ο υ λ ο ς

ι σ κ ο γ ρ α φ ι κ ή

κ ω δ ι κ ό ς ό ν ο  α

Ε τ α ι ρ ε ί α

( α )

κ ω δ ι κ ό ς ό ν ο  α κ ω δ ι κ ό ς τ ί τ λ ο ς

Θ ε α τ ρ ι κ ή

Θ ί α σ ο ς M Έ ρ γ ο

Π α ρ ά σ τ α σ η

η  ε ρ / ν ί α

κ ω δ ι κ ό ς Π ρ ε  ι έ ρ α

τ ό π ο ς

( β )

ÈåùñÞóôå ôá äéáãñÜììáôá ÏÓ (á) êáé (â) ôïõ ðñïçãïýìåíïõ ó÷Þìáôïò. Æç-


ôïýíôáé ôá åîÞò:
• Íá ìåôáôñáðåß ôï êÜèå äéÜãñáììá ÏÓ óå ðßíáêåò åîçãþíôáò ôá åðéìÝñïõò
âÞìáôá ðïõ áêïëïõèÞèçêáí.
• ÐïéÜ åßíáé ôá ðñùôåýïíôá êëåéäéÜ ôùí ðéíÜêùí ðïõ ðñïêýðôïõí;
7
Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò
Ëïãéóìüò

Ç ó÷åóéáêÞ Üëãåâñá (relational algebra) êáé ï ó÷åóéáêüò ëïãéóìüò (relational


calculus) áðïôåëïýí äýï äéáöïñåôéêÝò ðñïóåããßóåéò ìå ôéò ïðïßåò ìðïñïýìå íá
åêôåëïýìå ðñÜîåéò óå Ýíá óýíïëï ó÷Ýóåùí. Ç ÷ñçóéìüôçôá ôùí äýï áõôþí ìá-
èçìáôéêþí åñãáëåßùí åßíáé ôåñÜóôéá, äéüôé áö’ åíüò åßíáé ç áöåôçñßá ãéá ôçí
êáôáóêåõÞ ãëùóóþí ÂÜóåùí ÄåäïìÝíùí êáé áö’ åôÝñïõ ðñïóöÝñïõí Ýíáí áðëü
ìáèçìáôéêü öïñìáëéóìü ãéá íá ïñßæïõìå ðñÜîåéò óôéò ó÷Ýóåéò ôïõ ó÷åóéáêïý ìï-
íôÝëïõ êáé íá ëÜâïõìå ùò áðïôÝëåóìá íÝåò ó÷Ýóåéò Þ õðïóýíïëá áõôþí. Áñ÷éêÜ
ðåñéãñÜöïõìå áíáëõôéêÜ ôç ó÷åóéáêÞ Üëãåâñá êáé óôç óõíÝ÷åéá ôï ó÷åóéáêü ëï-
ãéóìü. Ç ó÷åóéáêÞ Üëãåâñá êáé ï ó÷åóéáêüò ëïãéóìüò ìåëåôþíôáé äéåîïäéêÜ óå
ðïëëÜ âéâëßá ÂÜóåùí ÄåäïìÝíùí üðùò óôá äéäáêôéêÜ åã÷åéñßäéá [Connolly 2002,
Date 2003, Elmasri 2000, Molina 2002, Silberschatz 2002, Ramakrisnan 2003].

7.1 Ó÷åóéáêÞ ¢ëãåâñá


Ç ó÷åóéáêÞ Üëãåâñá ïñßæåé Ýíá óýíïëï ðñÜîåùí ðïõ åöáñìüæïíôáé óå ìßá Þ
óå ðåñéóóüôåñåò ó÷Ýóåéò. Ìßá ðñÜîç ðïõ åöáñìüæåôáé óå ìßá ó÷Ýóç êáëåßôáé

157
158 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

ìïíáäéáßá (unary), åíþ áí åöáñìüæåôáé óå äýï ó÷Ýóåéò êáëåßôáé äõáäéêÞ (binary).


Ôï âáóéêü ÷áñáêôçñéóôéêü ôùí ðñÜîåùí áõôþí åßíáé üôé åðéóôñÝöïõí ìßá ó÷Ýóç
ðïõ åßôå åßíáé õðïóýíïëï ôùí ó÷Ýóåùí ðïõ Þäç õðÜñ÷ïõí, åßôå åßíáé ìßá íÝá
ó÷Ýóç ðïõ ðñïêýðôåé ìå åðéëïãÞ ÷áñáêôçñéóôéêþí áðü ôéò õðüëïéðåò. ÊÜèå ó÷Ýóç
èåùñåßôáé Ýíá óýíïëï ðëåéÜäùí, ïðüôå ç óåéñÜ åìöÜíéóçò ôùí ðëåéÜäùí äåí
Ý÷åé óçìáóßá. Ãéá ôçí áíÜëõóç ôùí åííïéþí ÷ñçóéìïðïéåßôáé Ýíá óôéãìéüôõðï
áðü Ýíá õðïóýíïëï ôçò âÜóçò ôïõ Ó÷Þìáôïò 4.1, ðïõ áðåéêïíßæåôáé óôï Ó÷Þìá
7.1. Åðßóçò, üðïõ õðÜñ÷åé áíÜãêç èá ÷ñçóéìïðïéïýíôáé áðëïýóôåñïé ðßíáêåò ìå
ëéãüôåñá ÷áñáêôçñéóôéêÜ ãéá ôç êáëýôåñç êáôáíüçóç ôùí åííïéþí. Ï Ðßíáêáò
7.1 óõíïøßæåé ôéò ðñÜîåéò ôçò ó÷åóéáêÞò Üëãåâñáò, ïé ïðïßåò áíáëýïíôáé óôç
óõíÝ÷åéá.

êùäéêüò üíïìá ôçëÝöùíï äéåýèõíóç ÁÐÊ


12 Ãéþñãïò 6977333222 Ð. ÊïñïìçëÜ 12 12345
44 Ìáñßá 6945123456 Â. ¼ëãáò 13 54321
55 ÁëÝîáíäñïò 6937222999 Ã. ËáìðñÜêç 11111

êùäéêüò ôßôëïò áñéèìüò óõíäñïìçôþí


100 Äßêôõá Ôçëåðéêïéíùíéþí 1
101 ÂÜóåéò ÄåäïìÝíùí 2
103 ÊâáíôéêÞ ÖõóéêÞ 2

êùäéêüòÁ êùäéêüòÂ áðü Ýùò


12 100 1/1/2003 31/12/2003
44 101 21/9/2002 30/6/2003
44 103 21/9/2002 30/6/2003
55 101 30/9/2002 5/2/2003
55 103 1/1/1999 31/12/2003

Ó÷Þìá 7.1: Ðßíáêåò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé ÓõíäñïìÞ.

7.1.1 Èåìåëéþäåéò ÐñÜîåéò


Ïé èåìåëéþäåéò ðñÜîåéò ôçò ó÷åóéáêÞò Üëãåâñáò åßíáé êáé ïé áðëïýóôåñåò. Ïé
ðñÜîåéò áõôÝò ÷ñçóéìïðïéïýíôáé áðü Üëëåò ðïëõðëïêüôåñåò ëåéôïõñãßåò. Ðïë-
ëÝò ðñÜîåéò ìðïñåß íá äéáäÝ÷ïíôáé ç ìßá ôçí Üëëç, üðïõ ç ìßá íá åöáñìüæåôáé
óôï áðïôÝëåóìá ôçò ðñïçãïýìåíçò. ¸ôóé ìðïñïýìå íá ïñßóïõìå ðïëýðëïêåò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 159

ÐñÜîç Ôýðïò ×ñÞóç


åðéëïãÞ ìïíáäéáßá ó θ (R)
ðñïâïëÞ ìïíáäéáßá Ð á,â,ã (R)
êáñôåóéáíü ãéíüìåíï äõáäéêÞ R1 × R2
ìåôïíïìáóßá ìïíáäéáßá ρ
Ýíùóç äõáäéêÞ R1 ∪ R2
äéáöïñÜ äõáäéêÞ R1 − R2
ôïìÞ äõáäéêÞ R1 ∩ R2
öõóéêÞ óýíäåóç äõáäéêÞ R1 1 R2
äéáßñåóç äõáäéêÞ R1 ÷ R2
óýíäåóç-θ äõáäéêÞ R1 1θ R2
áñéóôåñÞ åîùôåñéêÞ óýíäåóç äõáäéêÞ R1 o R2
äåîéÜ åîùôåñéêÞ óýíäåóç äõáäéêÞ R1 n R2
áñéóôåñÞ çìéóýíäåóç äõáäéêÞ R1 ¤θ R2
äåîéÜ çìéóýíäåóç äõáäéêÞ R1 ¢θ R2
åê÷þñçóç ìïíáäéáßá X←A

Ðßíáêáò 7.1: ÐñÜîåéò ó÷åóéáêÞò Üëãåâñáò.

ëåéôïõñãßåò ôï áðïôÝëåóìá ôùí ïðïßùí åßíáé ìßá Þ ðåñéóóüôåñåò ó÷Ýóåéò ðïõ ðå-
ñéÝ÷ïõí ðëçñïöïñßá ìç Üìåóá ïñáôÞ ìå áðëÞ ðáñáôÞñçóç ôùí äåäïìÝíùí ôçò
ÂÄ.

ÅðéëïãÞ
Ç ðñÜîç ôçò åðéëïãÞò (select) ÷ñçóéìïðïéåßôáé ãéá ôçí åðéëïãÞ ôùí ðëåéÜäùí ðïõ
éêáíïðïéïýí ìßá ëïãéêÞ óõíèÞêç. Ç ðñÜîç óõìâïëßæåôáé ìå ôï ãñÜììá "ó", ìå ôï
üíïìá ôïõ ðßíáêá íá áêïëïõèåß óå ðáñåíèÝóåéò, åíþ ç ëïãéêÞ óõíèÞêç áíáãñÜ-
öåôáé ùò äåßêôçò óôçí ðñÜîç. Ãéá ðáñÜäåéãìá, Ýóôù üôé èÝëïõìå íá ëÜâïõìå ùò
áðÜíôçóç ôá óôïé÷åßá ôïõ óõíäñïìçôÞ üðïõ êùäéêüò = 12. Ç áíôßóôïé÷ç Ýêöñáóç
ôçò ó÷åóéáêÞò Üëãåâñáò åßíáé ç åîÞò:

ó êùäéêüò=12 (ÓõíäñïìçôÞò)

Óôç ëïãéêÞ Ýêöñáóç ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôïõò ôåëåóôÝò óýãêñéóçò,


ïé ïðïßïé ðáñïõóéÜæïíôáé óôïí Ðßíáêá 7.2. Ç ëïãéêÞ Ýêöñáóç ìðïñåß íá åßíáé
áðëÞ Þ óýíèåôç. Óôç äåýôåñç ðåñßðôùóç ðïëëÝò áðëÝò åêöñÜóåéò óõíäõÜæïíôáé
ìå ôïõò ëïãéêïýò ôåëåóôÝò ∧ (ëïãéêü ÊÁÉ), ∨ (ëïãéêü Ç) êáé ôïí ôåëåóôÞ Üñíçóçò
¬. Åðßóçò ãéá íá ïñßóïõìå ôï åðéèõìçôü áðïôÝëåóìá ÷ñçóéìïðïéïýìå ðáñåíèÝ-
óåéò, þóôå íá äéáöïñïðïéçèåß ç ðñïôåñáéüôçôá ôùí ôåëåóôþí. Ãéá ðáñÜäåéãìá,
160 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

Ëïãéêüò ÔåëåóôÞò ÐåñéãñáöÞ


= ßóï ìå
< ìéêñüôåñï áðü
> ìåãáëýôåñï áðü
≤ ìéêñüôåñï Þ ßóï áðü
≥ ìåãáëýôåñï Þ ßóï áðü
6= äéÜöïñï ôïõ

Ðßíáêáò 7.2: Ëïãéêïß ôåëåóôÝò óýãêñéóçò.

áí åíäéáöåñüìáóôå ãéá ôéò ãíùóôéêÝò ðåñéï÷Ýò ðïõ Ý÷ïõí ëéãüôåñïõò áðü 5 óõí-
äñïìçôÝò Þ ðåñéóóüôåñïõò áðü 50, ôüôå èá ÷ñçóéìïðïéÞóïõìå ôçí åîÞò ðñÜîç:

ó áñéèìüò óõíäñïìçôþí<5 ∨ áñéèìüò óõíäñïìçôþí>50 (ÃíùóôéêÞ Ðåñéï÷Þ)

¼ðùò Ý÷åé áíáöåñèåß, ôï áðïôÝëåóìá ìßáò ðñÜîçò ôçò ó÷åóéáêÞò Üëãåâñáò


åßíáé åðßóçò ìßá ó÷Ýóç. ÅðïìÝíùò, ìðïñïýìå íá ôñïöïäïôÞóïõìå ìßá ðñÜîç
åðéëïãÞò ìå ôï áðïôÝëåóìá ìßáò Üëëçò. ÈåùñÞóôå ôçí ðñÜîç ôçò ó÷åóéáêÞò Üë-
ãåâñáò, ç ïðïßá åðéóôñÝöåé ôéò ðëåéÜäåò ôïõ ðßíáêá ÐñáêôéêÜ Óõíåäñßïõ ãéá
ôéò ïðïßåò èÝëïõìå ç çìåñïìçíßá íá åßíáé ìåãáëýôåñç ôçò "1/1/2000" êáé ç ÷þñá
üðïõ ðñáãìáôïðïéÞèçêå ôï óõíÝäñéï íá åßíáé ç ÅëëÜäá. Ðáñáôçñïýìå üôé ðñÝ-
ðåé ôáõôü÷ñïíá íá éó÷ýïõí äýï ðåñéïñéóìïß ðïõ áíáöÝñïíôáé óå äéáöïñåôéêÜ
÷áñáêôçñéóôéêÜ ôïõ ðßíáêá. Åäþ Ý÷ïõìå äýï åíáëëáêôéêÝò ëýóåéò ãéá íá åêöñÜ-
óïõìå ôï ðñïçãïýìåíï åñþôçìá ìå ó÷åóéáêÞ Üëãåâñá. Óôçí ðñþôç ðåñßðôùóç
êÜíïõìå ÷ñÞóç ôïõ ëïãéêïý ôåëåóôÞ ∧ (ëïãéêü ÊÁÉ) ùò åîÞò:

ó çìåñïìçíßá>‘1/1/2000’ ∧ ÷þñá=‘ÅëëÜäá’ (ÐñáêôéêÜ Óõíåäñßïõ)

Ç äåýôåñç åíáëëáêôéêÞ ëýóç ðïõ Ý÷ïõìå åßíáé íá ÷ñçóéìïðïéÞóïõìå äýï äéáäï-


÷éêÝò ðñÜîåéò åðéëïãÞò ùò åîÞò:

ó çìåñïìçíßá>‘1/1/2000’ ( ó ÷þñá=‘ÅëëÜäá’ (ÐñáêôéêÜ Óõíåäñßïõ))

Óçìåéþíåôáé üôé åðåéäÞ ïé äýï ëýóåéò äßíïõí ôï ßäéï áðïôÝëåóìá, èåùñïýíôáé


éóïäýíáìåò áðü èåùñçôéêÞò ðëåõñÜò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 161

ÐñïâïëÞ
Ìå ôçí ðñÜîç ôçò ðñïâïëÞò (project) ìðïñïýìå íá áðïìïíþóïõìå óõãêåêñéìÝíåò
óôÞëåò åíüò ðßíáêá. Ç ðñÜîç óõìâïëßæåôáé ìå ôï ãñÜììá "Ð". Ãéá ðáñÜäåéãìá,
ç åðüìåíç ðñÜîç ðñïâïëÞò åðéóôñÝöåé ôá ÷áñáêôçñéóôéêÜ üíïìá êáé ôçëÝöùíï
ãéá üëåò ôéò ãñáììÝò ôïõ ðßíáêá ÓõíäñïìçôÞò.

Ð üíïìá, ôçëÝöùíï (ÓõíäñïìçôÞò)

Áí äåí åíäéáöåñüìáóôå ãéá üëåò ôéò ãñáììÝò ôïõ ðßíáêá, ôüôå ìðïñïýìå íá ÷ñçóé-
ìïðïéÞóïõìå ìßá ðñÜîç åðéëïãÞò ôï áðïôÝëåóìá ôçò ïðïßáò ÷ñçóéìïðïéåßôáé ãéá
ôçí ðñÜîç ôçò ðñïâïëÞò. Ç åðüìåíç ðñÜîç åðéóôñÝöåé ôï üíïìá êáé ôï ôçëÝöùíï
ôùí óõíäñïìçôþí ôùí ïðïßùí ï êùäéêüò åßíáé ìåãáëýôåñïò áðü 20 (âë. Ó÷Þìá
7.2).

Ð üíïìá, ôçëÝöùíï (ó êùäéêüò > 20 (ÓõíäñïìçôÞò))

üíïìá ôçëÝöùíï
Ìáñßá 6945123456
ÁëÝîáíäñïò 6937222999

Ó÷Þìá 7.2: ÁðïôÝëåóìá ôçò ðñÜîçò Ð üíïìá, ôçëÝöùíï (ó êùäéêüò>20 (ÓõíäñïìçôÞò)).

Ôïíßæåôáé üôé áí óôç ëßóôá ôùí åðéëåãüìåíùí ÷áñáêôçñéóôéêþí äåí óõìðåñé-


ëáìâÜíåôáé êÜðïéï êëåéäß ôïõ ðßíáêá, ôüôå õðÜñ÷åé ðåñßðôùóç äýï Þ ðåñéóóüôå-
ñåò ãñáììÝò ôïõ ðáñáãüìåíïõ ðßíáêá íá åßíáé ßäéåò. ÅðåéäÞ üìùò êÜèå ðßíáêáò
èåùñåßôáé óýíïëï ðëåéÜäùí, ç êÜèå ãñáììÞ èá ðåñéëáìâÜíåôáé ìßá ìüíï öïñÜ
óôï ôåëéêü áðïôÝëåóìá. Ç ëåéôïõñãßá áõôÞ êáëåßôáé áðáëïéöÞ äéðëïôýðùí (du-
plicate elimination).

Êáñôåóéáíü Ãéíüìåíï
Ç ðñÜîåéò åðéëïãÞ êáé ðñïâïëÞ ÷ñçóéìïðïéïýí Ýíáí ðßíáêá. Ôï êáñôåóéáíü ãé-
íüìåíï (cartesian product) óõìâïëßæåôáé ìå ôï óýìâïëï × êáé åöáñìüæåôáé óå äýï
ðßíáêåò. Ôï áðïôÝëåóìá ôïõ êáñôåóéáíïý ãéíïìÝíïõ åßíáé üëïé ïé äõíáôïß óõí-
äõáóìïß ãñáììþí ôùí äýï ðéíÜêùí. Ðéï óõãêåêñéìÝíá: R1 (a, b, c)×R2 (x, y, z) =
R(a, b, c, x, y, z).
Áí ïé äýï ðßíáêåò Ý÷ïõí ÷áñáêôçñéóôéêÜ ìå äéáöïñåôéêÜ ïíüìáôá, ôüôå äåí
õðÜñ÷åé êáíÝíá ðñüâëçìá. Áí üìùò êÜðïéï ÷áñáêôçñéóôéêü åìöáíßæåôáé êáé
162 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

óôïõò äýï ðßíáêåò, ôüôå ðñÝðåé êÜðïéï áðü ôá äýï íá ìåôïíïìáóèåß (ç ðñÜîç
ôçò ìåôïíïìáóßáò ðåñéãñÜöåôáé óôç óõíÝ÷åéá). Ãéá íá ìçí õðÜñ÷åé óýã÷õóç óôçí
ïíïìáôïëïãßá ôùí ÷áñáêôçñéóôéêþí, ÷ñçóéìïðïéïýìå ôï óõìâïëéóìü R.á ãéá íá
äçëþóïõìå üôé áíáöåñüìáóôå óôï ÷áñáêôçñéóôéêü á ôïõ ðßíáêá R.
ÈåùñÞóôå ôïõò ðßíáêåò ÓõíäñïìçôÞò êáé ÃíùóôéêÞ Ðåñéï÷Þ. ÈÝëïõìå íá ðñïó-
äéïñßóïõìå üëïõò ôïõò äõíáôïýò óõíäõáóìïýò ìåôáîý óõíäñïìçôþí êáé ãíùóôé-
êþí ðåñéï÷þí. Åðßóçò, õðÜñ÷åé ç áíÜãêç ï ôåëéêüò ðßíáêáò ðïõ èá ðñïêýøåé íá
Ý÷åé ùò ÷áñáêôçñéóôéêÜ ôá êëåéäéÜ ôùí ðéíÜêùí, üíïìá ôïõ óõíäñïìçôÞ êáé ôïí
ôßôëï ôçò ãíùóôéêÞò ðåñéï÷Þò. Ç ëýóç óôï ðñüâëçìá äßíåôáé ÷ñçóéìïðïéþíôáò
ôçí ðñÜîç ôçò ðñïâïëÞò óôï êáñôåóéáíü ãéíüìåíï ôùí ðéíÜêùí ÓõíäñïìçôÞò êáé
ÃíùóôéêÞ Ðåñéï÷Þ (âë. Ó÷Þìá 7.3):

Ð ÓõíäñïìçôÞò.êùäéêüò, ÃíùóôéêÞ Ðåñéï÷Þ.êùäéêüò, üíïìá, ôßôëïò (ÓõíäñïìçôÞò × ÃíùóôéêÞ Ðå-


ñéï÷Þ)

ÓõíäñïìçôÞò. ÃíùóôéêÞ ðåñéï÷Þ.


êùäéêüò üíïìá êùäéêüò ôßôëïò
12 Ãéþñãïò 100 Äßêôõá Ôçëåðéêïéíùíéþí
44 Ìáñßá 100 Äßêôõá Ôçëåðéêïéíùíéþí
55 ÁëÝîáíäñïò 100 Äßêôõá Ôçëåðéêïéíùíéþí
12 Ãéþñãïò 101 ÂÜóåéò ÄåäïìÝíùí
44 Ìáñßá 101 ÂÜóåéò ÄåäïìÝíùí
55 ÁëÝîáíäñïò 101 ÂÜóåéò ÄåäïìÝíùí
12 Ãéþñãïò 103 ÊâáíôéêÞ ÖõóéêÞ
44 Ìáñßá 103 ÊâáíôéêÞ ÖõóéêÞ
55 ÁëÝîáíäñïò 103 ÊâáíôéêÞ ÖõóéêÞ

Ó÷Þìá 7.3: ÁðïôÝëåóìá ðñïâïëÞò óôï êáñôåóéáíü ãéíüìåíï ôùí ðéíÜêùí Óõí-
äñïìçôÞò êáé ÃíùóôéêÞ Ðåñéï÷Þ.

Ìåôïíïìáóßá
Ôá áðïôåëÝóìáôá ôùí ðñÜîåùí ôçò ó÷åóéáêÞò Üëãåâñáò äåí Ý÷ïõí üíïìá, óå
áíôßèåóç ìå ôïõò ðßíáêåò. Ç ïíïìáóßá ôùí áðïôåëåóìÜôùí èåùñåßôáé ÷ñÞóéìç
åðåéäÞ äßíåé ôç äõíáôüôçôá íá ÷ñçóéìïðïéÞóïõìå Ýíá áðïôÝëåóìá óå êÜðïéá åðü-
ìåíç ðñÜîç. Ç ðñÜîç ôçò ìåôïíïìáóßáò (rename) äçëþíåôáé ìå ôï óýìâïëï "ñ"
êáé ëáìâÜíåé ùò üñéóìá ìßá Ýêöñáóç ó÷åóéáêÞò Üëãåâñáò. Ç ðñÜîç óõíáíôÜôáé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 163

óå äýï ìïñöÝò:

1. ñ÷ (E), üðïõ ç Ýêöñáóç E åðéóôñÝöåôáé ìå üíïìá ÷, êáé

2. ñ÷(á,â,ã) (E), üðïõ ç Ýêöñáóç E åðéóôñÝöåôáé ìå üíïìá ÷ êáé ôá ÷áñáêôçñé-


óôéêÜ ïíïìáôßæïíôáé á, â êáé ã áíôéóôïß÷ùò (ìðïñåß íá õðÜñ÷ïõí ðåñéóóü-
ôåñá ÷áñáêôçñéóôéêÜ).

¸íùóç
Ç ðñÜîç ôçò Ýíùóçò (union) åßíáé ãíùóôÞ áðü ôç Èåùñßá Óõíüëùí. Ç Ýíùóç
äýï ðéíÜêùí óõìâïëßæåôáé ìå ∪ êáé ï ðáñáãüìåíïò ðßíáêáò ðåñéÝ÷åé ôéò ãñáììÝò
ôùí äýï ðéíÜêùí. Ãéá íá Ý÷åé íüçìá ç ðñÜîç ôçò Ýíùóçò ðñÝðåé ïðùóäÞðïôå íá
éó÷ýïõí ïé åîÞò äýï ðñïûðïèÝóåéò óõìâáôüôçôáò:

1. Ôï ðëÞèïò ôùí ÷áñáêôçñéóôéêþí ôùí äýï ðéíÜêùí ðñÝðåé íá åßíáé ßäéïò,


êáé

2. Ôá ðåäßá ïñéóìïý ôùí áíôßóôïé÷ùí ÷áñáêôçñéóôéêþí ôùí äýï ðéíÜêùí ðñÝ-


ðåé íá åßíáé ßäéá.

¸óôù üôé åíäéáöåñüìáóôå ãéá ôéò ãíùóôéêÝò ðåñéï÷Ýò, ôùí ïðïßùí ï áñéèìüò
óõíäñïìçôþí åßíáé ìéêñüôåñïò áðü 5 Þ ìåãáëýôåñïò áðü 50. ÐñïçãïõìÝíùò äü-
èçêå ìßá ëýóç óôï ðñüâëçìá áõôü ÷ñçóéìïðïéþíôáò ôçí ðñÜîç ôçò åðéëïãÞò:

ó áñéèìüò óõíäñïìçôþí<5 ∨ áñéèìüò óõíäñïìçôþí>50 (ÃíùóôéêÞ Ðåñéï÷Þ)

Ôï ßäéï áðïôÝëåóìá ëáìâÜíïõìå êáé ìå ôçí åöáñìïãÞ ôçò Ýíùóçò ðéíÜêùí:

ó áñéèìüò óõíäñïìçôþí<5 (ÃíùóôéêÞ Ðåñéï÷Þ) ∪


ó áñéèìüò óõíäñïìçôþí>50 (ÃíùóôéêÞ Ðåñéï÷Þ)

ÈåùñÞóôå üôé åíäéáöåñüìáóôå ãéá ôá ïíüìáôá ôùí óõíåäñßùí êáé ôùí ðå-
ñéïäéêþí ðïõ õðÜñ÷ïõí êáôá÷ùñéóìÝíá óôç ÂÄ ôçò çëåêôñïíéêÞò âéâëéïèÞêçò.
Ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôçí ðñÜîç ôçò Ýíùóçò óôïõò ðßíáêåò ÐñáêôéêÜ-
Óõíåäñßïõ êáé Ðåñéïäéêü ìå ÷ñÞóç ôçò ðñÜîçò ðñïâïëÞò óôïí ôßôëï ôïõ óõíåäñßïõ
êáé óôïí ôßôëï ôïõ ðåñéïäéêïý áíôéóôïß÷ùò:

Ð ôßôëïò (ÐñáêôéêÜ Óõíåäñßïõ) ∪ Ð ôßôëïò (Ðåñéïäéêü)


164 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

ÄéáöïñÜ Óõíüëùí
Ç ðñÜîç ôçò äéáöïñÜò óõíüëùí (set difference) ÷ñçóéìïðïéåßôáé ãéá íá áðïìï-
íþóåé ôéò ãñáììÝò åíüò ðßíáêá, ïé ïðïßåò äåí áíÞêïõí óå êÜðïéïí Üëëï ðßíáêá.
Ç ðñÜîç åßíáé áêñéâþò ßäéá ìå ôç äéáöïñÜ óõíüëùí êáé óõìâïëßæåôáé ìå ôï óÞìá
ôçò áöáßñåóçò −. Ãéá ôçí ðñÜîç áõôÞ ðñÝðåé íá éó÷ýïõí ïé ßäéåò ðñïûðïèÝóåéò
óõìâáôüôçôáò ðïõ éó÷ýïõí êáé ãéá ôçí ðñÜîç ôçò Ýíùóçò.

7.1.2 ¢ëëåò ÐñÜîåéò


Ïé ðñïáíáöåñèåßóåò ðñÜîåéò ôçò ó÷åóéáêÞò Üëãåâñáò èåùñïýíôáé èåìåëéþäåéò
åðåéäÞ ðñïóäßäïõí åêöñáóôéêÞ éó÷ý (expressive power). Åêôüò áðü ôéò èåìå-
ëéþäåéò ðñÜîåéò õðÜñ÷ïõí êáé ìåñéêÝò áêüìç ïé ïðïßåò áí êáé äåí ðñïóöÝñïõí
åêöñáóôéêÞ éó÷ý óôçí Üëãåâñá, åíôïýôïéò èåùñïýíôáé óçìáíôéêÝò, äéüôé ïìáäï-
ðïéïýí ìßá óåéñÜ ðñÜîåùí êáé äéåõêïëýíïõí ôç äéáôýðùóç åñùôçìÜôùí.

ÔïìÞ ÐéíÜêùí
Ç ôïìÞ (intersection) äýï ðéíÜêùí óõìâïëßæåôáé ìå ∩ êáé åðéóôñÝöåé Ýíá óýíïëï
ðëåéÜäùí ðïõ õðÜñ÷ïõí êáé óôïõò äýï ðßíáêåò. Êáé óôçí ðåñßðôùóç áõôÞ ðñÝðåé
íá éó÷ýïõí ïé ßäéåò ðñïûðïèÝóåéò óõìâáôüôçôáò, üðùò óôçí ðñÜîç ôçò Ýíùóçò.
Ãéá ðáñÜäåéãìá, Ýóôù üôé èÝëïõìå íá áíáæçôÞóïõìå êïéíÜ ïíüìáôá óõããñáöÝùí
êáé óõíäñïìçôþí, ÷ùñßò áõôü íá óçìáßíåé êáô’ áíÜãêç üôé åßíáé êáé ôï ßäéï ðñü-
óùðï. ×ñçóéìïðïéþíôáò ðñïâïëÞ êáé êáôüðéí ôïìÞ ðéíÜêùí Ý÷ïõìå:

Ð üíïìá (ÓõããñáöÝáò) ∩ Ð üíïìá (ÓõíäñïìçôÞò)

Ôï ãåãïíüò üôé ç ðñÜîç ôçò ôïìÞò äåí ðñïóöÝñåé åêöñáóôéêÞ éó÷ý óôçí Üëãå-
âñá áðïäåéêíýåôáé áðëïýóôáôá êáèþò åßíáé éóïäýíáìç ìå ôç äéáäï÷éêÞ åöáñìïãÞ
ôçò ðñÜîçò ôçò äéáöïñÜò ùò åîÞò:

R1 ∩ R2 = R1 − (R1 − R2 )

ÖõóéêÞ Óýíäåóç
Ôï êáñôåóéáíü ãéíüìåíï äýï ðéíÜêùí R1 êáé R2 åðéóôñÝöåé üëïõò ôïõò äõíáôïýò
óõíäõáóìïýò ôùí ðëåéÜäùí ôùí ðéíÜêùí. Óå ðïëëÝò ðåñéðôþóåéò åíäéáöåñüìáóôå
ìüíï ãéá Ýíá õðïóýíïëï ôïõ êáñôåóéáíïý ãéíïìÝíïõ, áíáëüãùò ìå ôçí ôéìÞ ðïõ
Ý÷ïõí êÜðïéá ÷áñáêôçñéóôéêÜ ôùí ðéíÜêùí. Ãéá ôï óêïðü áõôü õðÜñ÷åé ç ðñÜîç
ôçò öõóéêÞò óýíäåóçò (natural join), ç ïðïßá óõìâïëßæåôáé ìå 1.
ÈåùñÞóôå ôïõò ðßíáêåò R1 (a, b, c) êáé R2 (a, d). ÐáñáôçñÞóôå üôé ôï ÷áñáêôç-
ñéóôéêü a âñßóêåôáé êáé óôïõò äýï ðßíáêåò. Óôï Ó÷Þìá 7.4 äßíåôáé Ýíá óôéãìéüôõðï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 165

a b c a d
a b c d
1 10 100 1 123
1 10 100 123
2 20 200 2 321
2 20 200 321
3 30 300 3 111
3 30 300 111
4 40 400 5 222
R1 1 R2
R1 R2

Ó÷Þìá 7.4: ÁðïôÝëåóìá öõóéêÞò óýíäåóçò.

ôùí äýï ðéíÜêùí, êáèþò êáé ôï áðïôÝëåóìá ôçò ìåôáîý ôïõò öõóéêÞò óýíäåóçò.
Ç ðñÜîç ôçò óýíäåóçò åðéóôñÝöåé ôéò ãñáììÝò ôùí äýï ðéíÜêùí, ïé ïðïßåò Ý÷ïõí
ôçí ßäéá ôéìÞ óôá êïéíÜ ÷áñáêôçñéóôéêÜ. Óôçí ðåñßðôùóÞ ìáò, ôï ìïíáäéêü êïéíü
÷áñáêôçñéóôéêü åßíáé ôï a, ïðüôå åðéóôñÝöïíôáé ïé ãñáììÝò ãéá ôéò ïðïßåò éó÷ýåé
üôé ç ôéìÞ ôïõ a óôïí ðßíáêá R1 éóïýôáé ìå ôçí ôéìÞ ôïõ a óôïí ðßíáêá R2 . Áí
óôï áðïôÝëåóìá ÷ñåéáæüìáóôå ìüíï ôá ÷áñáêôçñéóôéêÜ a, b êáé d ôüôå ãñÜöïõìå:

Ð a,b,d (R1 1 R2 )

Óôï ßäéï áðïôÝëåóìá êáôáëÞãïõìå áí ÷ñçóéìïðïéÞóïõìå ðñÜîåéò åðéëïãÞò, ðñï-


âïëÞò êáé êáñôåóéáíïý ãéíïìÝíïõ ùò åîÞò:

Ð a,b,d (ó R1 .a=R2 .a (R1 × R2 ))

Óçìåéþíåôáé üôé áí ïé äýï ðßíáêåò äåí Ý÷ïõí êïéíÜ ÷áñáêôçñéóôéêÜ, ôüôå ôï


áðïôÝëåóìá ôçò öõóéêÞò óýíäåóçò êáé ôïõ êáñôåóéáíïý ãéíïìÝíïõ ôáõôßæïíôáé:
R1 1 R2 = R1 × R2 .

Óýíäåóç-θ

Ç ðñÜîç ôçò öõóéêÞò óýíäåóçò ÷ñçóéìïðïéåß áõôüìáôá ôïí ôåëåóôÞ éóüôçôáò ãéá
ôïí ðñïóäéïñéóìü ôùí ðëåéÜäùí ðïõ èá óõìðåñéëçöèïýí óôï áðïôÝëåóìá ôçò
ðñÜîçò. Ç ðñÜîçò ôçò óýíäåóçò-θ (θ-Join) (óõìâïëßæåôáé ìå 1θ ) åðéôñÝðåé ìå-
ãáëýôåñç åõåëéîßá, êáèþò ìðïñïýìå íá ïñßóïõìå ôç óõíèÞêç (θ) ôçò óýíäåóçò
áíáëüãùò ìå ôï åðéèõìçôü áðïôÝëåóìá. Óôï Ó÷Þìá 7.5 ðáñïõóéÜæåôáé ôï áðïôÝ-
ëåóìá ôçò óýíäåóçò θ, üðïõ θ åßíáé ç óõíèÞêç: R1 .a < R2 .x.
166 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

a b c x y
a b c x y 1 10 100 2 321
1 10 100 3 111
1 10 100 1 123
1 10 100 5 222
2 20 200 2 321
2 20 200 3 111
3 30 300 3 111
2 20 200 5 222
4 40 400 5 222
3 30 300 5 222
R1 R2 4 40 400 5 222
R1 1R1 .a<R2 .x R2

Ó÷Þìá 7.5: ÁðïôÝëåóìá óýíäåóçò-θ.

ÅîùôåñéêÞ Óýíäåóç
Ç ðñÜîç ôçò öõóéêÞò óýíäåóçò äßíåé óôçí Ýîïäï ôïõò óõíäõáóìïýò ãñáììþí ôùí
äýï ðéíÜêùí áí ïé ôéìÝò óôá êïéíÜ ÷áñáêôçñéóôéêÜ ôùí ðéíÜêùí ôáõôßæïíôáé. Ç
åîùôåñéêÞ óýíäåóç (outer join) äßíåé óôçí Ýîïäï üëåò ôéò ãñáììÝò ôïõ áñéóôåñïý Þ
ôïõ äåîéïý ðßíáêá, ÷ùñßò êáô’ áíÜãêç íá õðÜñ÷åé ôáýôéóç ôùí ôéìþí ôùí êïéíþí
÷áñáêôçñéóôéêþí. ÅðïìÝíùò, ç åîùôåñéêÞ óýíäåóç ìðïñåß íá åßíáé áñéóôåñÞ
åîùôåñéêÞ óýíäåóç (left outer join) Þ äåîéÜ åîùôåñéêÞ óýíäåóç (right outer join).
Ç áñéóôåñÞ åîùôåñéêÞ óýíäåóç óõìâïëßæåôáé ìå o êáé ç äåîéÜ ìå n. Óôï Ó÷Þìá
7.6 ðáñïõóéÜæåôáé ôï áðïôÝëåóìá ôùí äýï ôýðùí óýíäåóçò ãéá ôïõò ðßíáêåò R1
êáé R2 ôïõ Ó÷Þìáôïò 7.4.

a b c d
a b c d a b c d
1 10 100 123
1 10 100 123 1 10 100 123
2 20 200 321
2 20 200 321 2 20 200 321
3 30 300 111
3 30 300 111 3 30 300 111
4 40 400 NULL
4 40 400 NULL 5 NULL NULL 222
5 NULL NULL 222
ÁñéóôåñÞ ÄåîéÜ
ÐëÞñçò

Ó÷Þìá 7.6: ÁðïôÝëåóìá áñéóôåñÞò, äåîéÜò êáé ðëÞñïõò åîùôåñéêÞò óýíäåóçò.

Ðáñáôçñïýìå üôé áðü ôïí ïñéóìü ôçò åîùôåñéêÞò óýíäåóçò èá õðÜñ÷ïõí (óôç
ãåíéêÞ ðåñßðôùóç) ãñáììÝò ôïõ åíüò ðßíáêá, ïé ïðïßåò äåí áíôéóôïé÷ïýí óå ãñáì-
ìÝò ôïõ Üëëïõ ðßíáêá. Ùóôüóï, åðåéäÞ üëåò ïé ãñáììÝò ôïõ åíüò åê ôùí äýï
ðéíÜêùí ðñÝðåé íá åìöáíéóèïýí óôï áðïôÝëåóìá, ïé ôéìÝò ðïõ ëåßðïõí óõìðëç-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 167

ñþíïíôáé ìå NULL.
Óçìåéþíåôáé üôé õðÜñ÷åé êáé Ýíáò áêüìç ôýðïò åîùôåñéêÞò óýíäåóçò, ï ïðïßïò
êáëåßôáé ðëÞñçò åîùôåñéêÞ óýíäåóç (full outer join) êáé áðïôåëåß óõíäõáóìü ôçò
áñéóôåñÞò êáé ôçò äåîéÜò åîùôåñéêÞò óýíäåóçò. Óôï áðïôÝëåóìá ôçò ðñÜîçò áõôÞò
óõììåôÝ÷ïõí ïé ðëåéÜäåò êáé ôùí äýï ó÷Ýóåùí, åíþ áí äåí õðÜñ÷åé áíôéóôïé÷ßá ìå-
ôáîý ôùí ðëåéÜäùí, ôüôå ïé ôéìÝò óõìðëçñþíïíôáé ìå NULL. Ç åîùôåñéêÞ óýíäåóç
ìðïñåß íá ÷ñçóéìïðïéçèåß êáé ìå êÜðïéá óõíèÞêç θ, åíäå÷ïìÝíùò äéáöïñåôéêÞ
áðü ôç óõíèÞêç éóüôçôáò ðïõ éó÷ýåé óôç öõóéêÞ óýíäåóç.

Çìéóýíäåóç
Ç çìéóýíäåóç (semijoin) Ý÷åé ôçí ßäéá ëåéôïõñãéêüôçôá ìå ôç óýíäåóç-θ, ìå ôç
äéáöïñÜ üôé ç ó÷Ýóç ðïõ ðáñÜãåôáé Ý÷åé ôá ßäéá ÷áñáêôçñéóôéêÜ ìå ôç ìßá áðü
ôéò äýï ó÷Ýóåéò ðïõ ÷ñçóéìïðïéïýíôáé ãéá ôçí åêôÝëåóç ôçò ðñÜîçò. Áíáëüãùò
áí äéáôçñåßôáé ôï ó÷Þìá ôçò áñéóôåñÞò Þ ôçò äåîéÜò ó÷Ýóçò Ý÷ïõìå áñéóôåñÞ
çìéóýíäåóç (left semijoin) êáé äåîéÜ çìéóýíäåóç (right semijoin), ïé ïðïßåò óõì-
âïëßæïíôáé ìå ¤θ êáé ¢θ , áíôéóôïß÷ùò. ÅðïìÝíùò ãéá äýï ó÷Ýóåéò R1 êáé R2 êáé
ãéá ìßá óõíèÞêç θ, ç áñéóôåñÞ êáé ç äåîéÜ çìéóýíäåóç ãñÜöïíôáé: R1 ¤θ R2 êáé
R1 ¢θ R2 , áíôéóôïß÷ùò. Óôï Ó÷Þìá 7.7 äßíåôáé Ýíá ðáñÜäåéãìá áñéóôåñÞò êáé
äåîéÜò çìéóýíäåóçò, üðïõ ç óõíèÞêç-θ åßíáé R1 .a = R2 .a, üðïõ êáé ðÜëé R1 , R2
åßíáé ðßíáêåò ôïõ Ó÷Þìáôïò 7.4.

a b c a d
1 10 100 1 123
2 20 200 2 321
3 30 300 3 111
ÁñéóôåñÞ ÄåîéÜ

Ó÷Þìá 7.7: ÁðïôÝëåóìá áñéóôåñÞò êáé äåîéÜò çìéóýíäåóçò.

Åê÷þñçóç
Áí ôá åñùôÞìáôá åßíáé áðëÜ, ôüôå áðáéôïýí ëßãåò ó÷åôéêÜ ðñÜîåéò ó÷åóéáêÞò Üë-
ãåâñáò ãéá íá ëÜâïõìå ôï åðéèõìçôü áðïôÝëåóìá. ¼óï áõîÜíåôáé ç ðïëõðëïêü-
ôçôá ôïõ åñùôÞìáôïò, ôüóï ôï ðëÞèïò ôùí ðñÜîåùí áõîÜíåé óçìáíôéêÜ. Ç ðñÜîç
ôçò åê÷þñçóçò (assignment) åðéôñÝðåé ôç ÷ñÞóç ìåôáâëçôþí ãéá ôçí áðïèÞêåõóç
ôùí åíäéÜìåóùí áðïôåëåóìÜôùí ôùí ðñÜîåùí. Ïé ìåôáâëçôÝò ìðïñïýí íá ÷ñçóé-
ìïðïéçèïýí ùò ïñßóìáôá óå åðüìåíåò ðñÜîåéò. ¸óôù üôé æçôïýìå ôéò ãñáììÝò ôïõ
ðßíáêá ÐñáêôéêÜ Óõíåäñßïõ, ïé ïðïßåò éêáíïðïéïýí ôç óõíèÞêç: ÷þñá=‘ÅëëÜäá’
168 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

êáé çìåñïìçíßá>‘1/1/2000’. Óôçí ðåñéãñáöÞ ôçò ðñÜîçò ôçò åðéëïãÞò äüèçêå ç


åîÞò ëýóç:

ó çìåñïìçíßá>‘1/1/2000’ ( ó ÷þñá=‘ÅëëÜäá’ (ÐñáêôéêÜ Óõíåäñßïõ))

×ñçóéìïðïéþíôáò ìßá ìåôáâëçôÞ ãéá ôçí ðñïóùñéíÞ áðïèÞêåõóç ôçò åóùôåñéêÞò


ðñÜîçò åðéëïãÞò, ôï åñþôçìá ìðïñåß íá áðáíôçèåß êáé ùò åîÞò:

X ← ó ÷þñá=‘ÅëëÜäá’ (ÐñáêôéêÜ Óõíåäñßïõ)


ó çìåñïìçíßá>‘1/1/2000’ (X)

Äéáßñåóç
Ç ðñÜîç ôçò äéáßñåóçò (division) óõìâïëßæåôáé ìå ÷ êáé ÷ñçóéìïðïéåßôáé óõíÞèùò
óå ðåñéðôþóåéò üðïõ óôï åñþôçìá ðåñéÝ÷åôáé ç Ýêöñáóç "ãéá êÜèå" Þ "óå êÜèå".
ÈåùñÞóôå äýï ó÷Ýóåéò R êáé S, üðïõ ç ó÷Ýóç R áðïôåëåßôáé áðü ôï óýíïëï
÷áñáêôçñéóôéêþí X, ç ó÷Ýóç S áðïôåëåßôáé áðü ôï óýíïëï ÷áñáêôçñéóôéêþí Y ,
åíþ éó÷ýåé Y ⊆ X. ¸óôù Z ôï óýíïëï ôùí ÷áñáêôçñéóôéêþí ðïõ ïñßæåôáé áðü
ôç ó÷Ýóç Z = X − Y (äçëáäÞ, ôï Z áðïôåëåßôáé áðü ôá ÷áñáêôçñéóôéêÜ ðïõ áíÞ-
êïõí óôï X áëëÜ ü÷é óôï Y ). Ôï áðïôÝëåóìá ôçò ðñÜîçò R ÷ S åßíáé ìßá ó÷Ýóç
ðïõ Ý÷åé ôá ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ C êáé ïñßæåôáé óýìöùíá ìå ôçí Ýêöñáóç:

T 1 ← ΠZ (R)
T 2 ← ΠZ ((S × T 1) − R)
R ÷ S ← T1 − T2

Ãéá ðáñÜäåéãìá, èåùñÞóôå ôéò ó÷Ýóåéò R êáé S ôïõ Ó÷Þìáôïò 7.8, üðïõ ôï
óýíïëï X áðïôåëåßôáé áðü ôá ÷áñáêôçñéóôéêÜ A1, A2, A3, A4, A5 êáé ôï óýíïëï
Y áðïôåëåßôáé áðü ôá ÷áñáêôçñéóôéêÜ A1, A2, A3. ÅðïìÝíùò, C = {A4, A5}.
Ôï áðïôÝëåóìá ôçò ðñÜîçò R ÷ S öáßíåôáé óôá äåîéÜ ôïõ Ó÷Þìáôïò 7.8.

A1 A2 A3 A4 A5
1 1 2 3 3 A1 A2 A3
A4 A5
2 2 2 2 2 1 1 2
3 3
4 2 8 8 8 4 2 8
4 2 8 3 3 R÷S
S
R

Ó÷Þìá 7.8: ÁðïôÝëåóìá äéáßñåóçò.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 169

7.2 Ó÷åóéáêüò Ëïãéóìüò


Ï ó÷åóéáêüò ëïãéóìüò (relational calculus) åßíáé ìßá ãëþóóá ðïõ ìðïñåß íá ÷ñç-
óéìïðïéçèåß åíáëëáêôéêÜ óå ó÷Ýóç ìå ôç ó÷åóéáêÞ Üëãåâñá. ¸÷åé áðïäåé÷èåß üôé
ïé äýï ãëþóóåò åßíáé éóïäýíáìåò ìå ôçí Ýííïéá üôé ôá åñùôÞìáôá ðïõ áðáíôþíôáé
áðü ôçí ðñþôç ãëþóóá ìðïñïýí íá áðáíôçèïýí êáé áðü ôç äåýôåñç, êáé áíôéóôñü-
öùò. Ï ó÷åóéáêüò ëïãéóìüò óõíáíôÜôáé óôç âéâëéïãñáößá óå äýï åíáëëáêôéêÝò
ìïñöÝò: ó÷åóéáêüò ëïãéóìüò ðëåéÜäùí (tuple relational calculus) êáé ó÷åóéáêüò
ëïãéóìüò ðåäßïõ (domain relational calculus). Ïé äýï áõôÝò ìïñöÝò åîåôÜæïíôáé
óôç óõíÝ÷åéá.

7.2.1 Ó÷åóéáêüò Ëïãéóìüò ÐëåéÜäùí


¸íá åñþôçìá óôï ó÷åóéáêü ëïãéóìü ðëåéÜäùí åêöñÜæåôáé ùò:

{t | E(t)}

üðïõ t åßíáé ìßá ðëåéÜäá êáé E(t) åßíáé ìßá ëïãéêÞ Ýêöñáóç ðïõ åßôå åßíáé áëçèÞò
(true) åßôå øåõäÞò (false). Èá ÷ñçóéìïðïéÞóïõìå ôïõò åîÞò óõìâïëéóìïýò:

• t[x] äçëþíåé ôçí ôéìÞ ðïõ Ý÷åé ôï ÷áñáêôçñéóôéêü x ôçò ðëåéÜäáò t,

• t ∈ R äçëþíåé üôé ç ðëåéÜäá t áíÞêåé óôïí ðßíáêá (ó÷Ýóç) R.

ÊÜèå ìåôáâëçôÞ ðïõ åìöáíßæåôáé óôç ëïãéêÞ Ýêöñáóç E(t) áíáöÝñåôáé óå


ðëåéÜäåò. Ìßá ìåôáâëçôÞ ìðïñåß íá åßíáé åßôå åëåýèåñç åßôå äåóìåõìÝíç. Óôç
äåýôåñç ðåñßðôùóç ç ìåôáâëçôÞ ðïóïôéêïðïéåßôáé ìå Ýíáí áðü ôïõò ðïóïôéêïýò
ôåëåóôÝò ∀ Þ ∃. Ìßá Ýêöñáóç (formula) ó÷åóéáêïý ëïãéóìïý áðáñôßæåôáé áðü
áôïìéêÝò ìïíÜäåò (atoms), ïé ïðïßåò ìðïñåß íá åßíáé:

• t ∈ R, üðïõ t åßíáé ìåôáâëçôÞ ðëåéÜäáò êáé R ìßá ó÷Ýóç. Ôïíßæåôáé üôé ï


ôåëåóôÞò ∈
/ äåí åðéôñÝðåôáé.

• s[x] ~ t[y], üðïõ s êáé t åßíáé ìåôáâëçôÝò ðëåéÜäáò, x êáé y åßíáé ÷áñáêôç-
ñéóôéêÜ êáé ~ åßíáé Ýíáò áðü ôïõò ôåëåóôÝò óýãêñéóçò ðïõ åìöáíßæïíôáé
óôïí Ðßíáêá 7.2.

• t[x] ~ C, üðïõ C åßíáé ìßá óôáèåñÜ ìå ôéìÞ ðïõ áíÞêåé óôï ðåäßï ïñéóìïý
ôïõ ÷áñáêôçñéóôéêïý x.

Ìßá Ýêöñáóç ó÷åóéáêïý ëïãéóìïý ðëåéÜäùí äçìéïõñãåßôáé ÷ñçóéìïðïéþíôáò


ôïõò åîÞò êáíüíåò:
170 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

• ÊÜèå áôïìéêÞ ìïíÜäá åßíáé Ýêöñáóç.

• Áí E åßíáé ìßá Ýêöñáóç, ôüôå åêöñÜóåéò åßíáé êáé ïé: ¬E êáé (E).

• Áí E1 , E2 åßíáé åêöñÜóåéò, ôüôå åêöñÜóåéò åßíáé êáé ïé: E1 ∪ E2 , E1 ∩


E2 , E1 ⇒ E2 .

• Áí E(t) åßíáé ìßá Ýêöñáóç êáé t åßíáé ìßá åëåýèåñç ìåôáâëçôÞ ðëåéÜäáò,
ôüôå åêöñÜóåéò åßíáé êáé ïé: ∃s ∈ R(E(s)) êáé ∀s ∈ R(E(s)).

Ç Ýêöñáóç ∃s ∈ R(E(s)) óçìáßíåé: "õðÜñ÷åé ìßá ðëåéÜäá s óôç ó÷Ýóç R ãéá


ôçí ïðïßá ç óõíèÞêç E(s) åßíáé áëçèÞò". Ïìïßùò, ç Ýêöñáóç ∀s ∈ R(E(s))
óçìáßíåé: "üëåò ïé ðëåéÜäåò s ôçò ó÷Ýóçò R éêáíïðïéïýí ôç óõíèÞêç E(s)".
Ãéá ôéò åêöñÜóåéò ó÷åóéáêïý ëïãéóìïý ðëåéÜäùí éó÷ýïõí ïé åîÞò ôáõôüôçôåò:

• E1 ∧ E2 = ¬(¬E1 ∨ ¬E2 )

• ∀s ∈ r(P (s)) = ¬∃s ∈ r(¬P (s))

• E1 ⇒ E2 = ¬E1 ∨ E2

Óôç óõíÝ÷åéá äßíïõìå ìåñéêÜ ðáñáäåßãìáôá åñùôçìÜôùí êáé ôïí ôñüðï ÷ñÞ-
óçò ôïõ ó÷åóéáêïý ëïãéóìïý ðëåéÜäùí ãéá ôçí ÝêöñáóÞ ôïõò:

Åñþôçìá 1: "Íá âñåèïýí ïé ãíùóôéêÝò ðåñéï÷Ýò ðïõ Ý÷ïõí ôïõëÜ÷éóôïí Ýíá óõí-
äñïìçôÞ".

¸óôù t ìßá ìåôáâëçôÞ ðëåéÜäáò. Ìðïñïýìå íá äéáôõðþóïõìå ôï åñþôçìá ìå ôçí


åîÞò Ýêöñáóç ó÷åóéáêïý ëïãéóìïý:

{t | t ∈ ÃíùóôéêÞ Ðåñéï÷Þ ∧t [áñéèìüò óõíäñïìçôþí] ≥ 1}

Ç Ýêöñáóç áõôÞ èá åðéóôñÝøåé üëá ôá ÷áñáêôçñéóôéêÜ ôïõ ðßíáêá ÃíùóôéêÞ Ðåñé-


ï÷Þ. Óå ðåñßðôùóç ðïõ èÝëïõìå ìüíï ôïí êùäéêü ôçò ãíùóôéêÞò ðåñéï÷Þò, ôï åñþ-
ôçìá ðñÝðåé íá äéáôõðùèåß ùò åîÞò:

{t | ∃s ∈ ÃíùóôéêÞ Ðåñéï÷Þ (t[êùäéêüò] = s[êùäéêüò] ∧s[áñéèìüò óõíäñïìçôþí]


≥ 1)}

Ç Ýêöñáóç áõôÞ ìðïñåß íá äéáâáóèåß ùò åîÞò: "ôï óýíïëï ôùí ðëåéÜäùí t Ýôóé
þóôå íá õðÜñ÷åé óôç ó÷Ýóç ÃíùóôéêÞ Ðåñéï÷Þ ìßá ðëåéÜäá s ãéá ôç ïðïßá ïé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 171

êùäéêïß ôùí ðëåéÜäùí t êáé s íá åßíáé ßóïé êáé ç ôéìÞ ôïõ ÷áñáêôçñéóôéêïý áñéè-
ìüò óõíäñïìçôþí ôçò ðëåéÜäáò s íá åßíáé ôïõëÜ÷éóôïí 1."

Åñþôçìá 2: "Íá âñåèïýí ôá Üñèñá ðïõ Ý÷ïõí äçìïóéåõèåß óôï óõíÝäñéï ìå êù-
äéêü 1 Þ óôï óõíÝäñéï ìå êùäéêü 2".

¸óôù t ìßá ìåôáâëçôÞ ðëåéÜäáò. Ôï åñþôçìá äéáôõðþíåôáé óå ó÷åóéáêü ëïãéóìü


ðëåéÜäùí ùò åîÞò:

{t | t ∈ ¢ñèñï ∧(t[êùäéêüò óõíåäñßïõ]=1 ∨t[êùäéêüò óõíåäñßïõ]=2) }

Åñþôçìá 3: "Íá âñåèïýí ôá Üñèñá ðïõ Ý÷ïõí äçìïóéåõèåß êáé óå ðåñéïäéêü êáé
óå ðñáêôéêÜ óõíåäñßïõ".

Áí Ýíá Üñèñï Ý÷åé äçìïóéåõèåß óå êÜðïéï ðåñéïäéêü, ôüôå ç ôéìÞ ôïõ ÷áñáêôçñé-
óôéêïý êùäéêüò ðåñéïäéêïý èá ðåñéÝ÷åé ìßá ôéìÞ äéáöïñåôéêÞ áðü ôçí êåíÞ ôéìÞ
(NULL). Ôï ßäéï éó÷ýåé êáé ãéá ôçí ôéìÞ ôïõ ÷áñáêôçñéóôéêïý êùäéêüò óõíåäñßïõ.
ÅðïìÝíùò, ãéá íá áðáíôÞóïõìå óôï åñþôçìá áñêåß íá ãßíåé Ýëåã÷ïò ôùí äýï ÷á-
ñáêôçñéóôéêþí ôïõ ðßíáêá ¢ñèñï. Ôï åñþôçìá åêöñÜæåôáé ùò åîÞò:

{t | t ∈ ¢ñèñï ∧(t[êùäéêüò ðåñéïäéêïý] 6= NULL ∧t[êùäéêüò óõíåäñßïõ] 6= NULL)


}

Åñþôçìá 4: "Íá âñåèïýí ïé óõíäñïìçôÝò ðïõ Ý÷ïõí óõíäñïìÞ óôç ãíùóôéêÞ ðå-
ñéï÷Þ ÂÜóåéò ÄåäïìÝíùí Þ óôç ãíùóôéêÞ ðåñéï÷Þ ÊâáíôéêÞ ÖõóéêÞ".

Ãéá ôç äéáôýðùóç ôïõ åñùôÞìáôïò èá ÷ñçóéìïðïéÞóïõìå ôñåéò ìåôáâëçôÝò ðëåéÜ-


äáò t, s, êáé u ãéá ôïõò ðßíáêåò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ êáé ÓõíäñïìÞ
áíôéóôïß÷ùò. Ôï åñþôçìá åêöñÜæåôáé ùò åîÞò:

{t | ∃s ∈ ÃíùóôéêÞ Ðåñéï÷Þ(s[ôßôëïò]=‘ÂÜóåéò ÄåäïìÝíùí’ ∨ s[ôßôëïò]=‘ÊâáíôéêÞ


ÖõóéêÞ’) ∧ ∃u ∈ ÓõíäñïìÞ (t[êùäéêüò]=u[êùäéêüò óõíäñïìçôÞ] ∧
u[êùäéêüò ãíùóôéêÞò ðåñéï÷Þò] = s[êùäéêüò] )}

7.2.2 Ó÷åóéáêüò Ëïãéóìüò Ðåäßïõ


Óå áíôßèåóç ìå ôï ó÷åóéáêü ëïãéóìü ðëåéÜäùí ï ó÷åóéáêüò ëïãéóìüò ðåäßïõ ÷ñç-
óéìïðïéåß ìåôáâëçôÝò ðåäßïõ (domain variables), ïé ïðïßåò ëáìâÜíïõí ôéìÝò áðü
172 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

Ýíá óõãêåêñéìÝíï ðåäßï ïñéóìïý. ¸íá åñþôçìá åêöñÜæåôáé ùò åîÞò:

{hx1 , x2 , . . . , xn i | E(x1 , x2 , . . . , xn )}

üðïõ xi (ãéá 1 ≤ i ≤ n) åßíáé ìßá ìåôáâëçôÞ ðåäßïõ êáé E ìßá ëïãéêÞ Ýêöñáóç.
¼ðùò êáé óôçí ðåñßðôùóç ôïõ ëïãéóìïý ðëåéÜäùí, ìßá Ýêöñáóç áðïôåëåßôáé
áðü áôïìéêÝò ìïíÜäåò. Ìßá áôïìéêÞ ìïíÜäá ìðïñåß íá åßíáé Ýíá áðü ôá åîÞò:

• hx1 , x2 , . . . , xn i ∈ R, üðïõ R åßíáé ìßá ó÷Ýóç ìå n ÷áñáêôçñéóôéêÜ êáé


êÜèå xi (üðïõ 1 ≤ i ≤ n) åßíáé ìßá ìåôáâëçôÞ ðåäßïõ Þ ìßá óôáèåñÜ ìå
ôéìÞ áðü ôï óõãêåêñéìÝíï ðåäßï ïñéóìïý.

• x~y, üðïõ x, y åßíáé ìåôáâëçôÝò ðåäßïõ êáé ~ åßíáé Ýíáò áðü ôïõò ôåëåóôÝò
óýãêñéóçò ôïõ Ðßíáêá 7.2.

• x ~ C, üðïõ C åßíáé ìßá óôáèåñÜ ìå ôéìÞ áðü ôï ðåäßï ïñéóìïý ôçò ìåôá-
âëçôÞò x.

Ìßá Ýêöñáóç ó÷åóéáêïý ëïãéóìïý ðåäßïõ äçìéïõñãåßôáé ìå âÜóç ôïõò åîÞò


êáíüíåò:

• ÊÜèå áôïìéêÞ ìïíÜäá åßíáé Ýêöñáóç.

• Áí E åßíáé ìßá Ýêöñáóç, ôüôå åêöñÜóåéò åßíáé êáé ïé: ¬E êáé (E).

• Áí E1 , E2 åßíáé åêöñÜóåéò, ôüôå åêöñÜóåéò åßíáé êáé ïé: E1 ∪ E2 , E1 ∩


E2 , E1 ⇒ E2 .

• Áí E(x) åßíáé ìßá Ýêöñáóç êáé x åßíáé ìßá ìåôáâëçôÞ ðåäßïõ, ôüôå åêöñÜ-
óåéò åßíáé êáé ïé: ∃x ∈ r(E(x)) êáé ∀x ∈ r(E(x)).

Ï ôñüðïò äéáôýðùóçò åñùôçìÜôùí åßíáé ðáñüìïéïò ìå ôï ó÷åóéáêü ëïãéóìü


ðëåéÜäùí. Óôç óõíÝ÷åéá äßíåôáé ç äéáôýðùóç ìå ó÷åóéáêü ëïãéóìü ðåäßïõ ôùí
åñùôçìÜôùí ðïõ ðåñéãñÜöçêáí ðñïçãïõìÝíùò, áëëÜ ðëÝïí ìå ôç âïÞèåéá ôïõ
ó÷åóéáêïý ëïãéóìïý ðëåéÜäùí.

Åñþôçìá 1: "Íá âñåèïýí ïé ãíùóôéêÝò ðåñéï÷Ýò ðïõ Ý÷ïõí ôïõëÜ÷éóôïí Ýíá óõí-
äñïìçôÞ".

¸óôùóáí a, b, c ìåôáâëçôÝò ðåäßïõ, ïé ïðïßåò ëáìâÜíïõí ôéìÝò áðü ôá ðåäßá ïñé-


óìïý ôùí ÷áñáêôçñéóôéêþí êùäéêüò, ôßôëïò êáé áñéèìüò óõíäñïìçôþí, áíôéóôïß-
÷ùò. Ìðïñïýìå íá äéáôõðþóïõìå ôï åñþôçìá ìå ôçí åîÞò Ýêöñáóç ó÷åóéáêïý
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 173

ëïãéóìïý ðåäßïõ:

{ha, b, ci | ha, b, ci ∈ ÃíùóôéêÞ Ðåñéï÷Þ ∧ c ≥ 1}

Áí èÝëïõìå ìüíï ôïõò ôßôëïõò ôùí ãíùóôéêþí ðåñéï÷þí, ôüôå ôï åñþôçìá äéáôõ-
ðþíåôáé ùò åîÞò:

{hbi | ∃ha, b, ci(ha, b, ci ∈ ÃíùóôéêÞ Ðåñéï÷Þ ∧ c ≥ 1) }

Åñþôçìá 2: "Íá âñåèïýí ôá Üñèñá ðïõ Ý÷ïõí äçìïóéåõèåß óôï óõíÝäñéï ìå êù-
äéêü 1 Þ óôï óõíÝäñéï ìå êùäéêü 2".

¸óôù x1 , . . . , x12 ìåôáâëçôÝò ðåäßïõ, ïé ïðïßåò ëáìâÜíïõí ôéìÝò áðü ôá ðåäßá


ïñéóìïý ôùí ÷áñáêôçñéóôéêþí ôçò ó÷Ýóçò ¢ñèñï ìå ôç óåéñÜ ðïõ áíáãñÜöïíôáé
óôï ó÷Þìá ôçò ó÷Ýóçò (x1 = êùäéêüò, x2 = ôßôëïò, ê.ï.ê.). Ôï åñþôçìá äéáôõðþ-
íåôáé ùò åîÞò:

{hx1 , . . . , x12 i | hx1 , . . . , x12 i ∈ ¢ñèñï ∧ (x1 = 1 ∨ x2 = 2)}

Åñþôçìá 3: "Íá âñåèïýí ôá Üñèñá ðïõ Ý÷ïõí äçìïóéåõèåß êáé óå ðåñéïäéêü êáé
óå ðñáêôéêÜ óõíåäñßïõ".

¸óôùóáí x1 , . . . , x12 ìåôáâëçôÝò ðåäßïõ ïé ïðïßåò ëáìâÜíïõí ôéìÝò áðü ôá ðåäßá


ïñéóìïý ôùí ÷áñáêôçñéóôéêþí ôçò ó÷Ýóçò ¢ñèñï ìå ôç óåéñÜ ðïõ áíáãñÜöïíôáé
óôï ó÷Þìá ôçò ó÷Ýóçò (x1 = êùäéêüò, x2 = ôßôëïò, ê.ë.ð). Ôï åñþôçìá åêöñÜæåôáé
ùò åîÞò:

{hx1 , . . . , x12 i | hx1 , . . . , x12 i ∈ ¢ñèñï ∧ (x5 6= NULL ∧ x6 6= NULL) }

Åñþôçìá 4: "Íá âñåèïýí ïé óõíäñïìçôÝò ðïõ Ý÷ïõí óõíäñïìÞ óôç ãíùóôéêÞ ðå-
ñéï÷Þ ÂÜóåéò ÄåäïìÝíùí Þ óôç ãíùóôéêÞ ðåñéï÷Þ ÊâáíôéêÞ ÖõóéêÞ".

Ãéá ôç äéáôýðùóç ôïõ åñùôÞìáôïò èá ÷ñçóéìïðïéÞóïõìå ôñßá äéáöïñåôéêÜ óýíïëá


ìåôáâëçôþí ðåäßïõ, ãéá êÜèå ìßá áðü ôéò ó÷Ýóåéò ÓõíäñïìçôÞò, ÃíùóôéêÞ Ðåñéï÷Þ
êáé ÓõíäñïìÞ. Ïé ìåôáâëçôÝò ðåäßïõ hx1 , . . . , x8 i ëáìâÜíïõí ôéìÝò áðü ôá ÷áñá-
êôçñéóôéêÜ ôïõ ðßíáêá ÓõíäñïìçôÞò, ïé ìåôáâëçôÝò hy1 , y2 , y3 i áðü ôá ÷áñáêôçñé-
óôéêÜ ôïõ ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ, êáé ôÝëïò ïé ìåôáâëçôÝò hz1 , z2 , z3 , z4 i áðü
ôá ÷áñáêôçñéóôéêÜ ôïõ ðßíáêá ÓõíäñïìÞ. Óýìöùíá ìå ôá ðñïçãïýìåíá, ôï åñþ-
174 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

ôçìá åêöñÜæåôáé ùò åîÞò:

{hx1 , . . . , x8 i | ∃hy1 , y2 , y3 i ∈ ÃíùóôéêÞ Ðåñéï÷Þ (y2 =‘ÂÜóåéò ÄåäïìÝíùí’ ∨ y2 =


‘ÊâáíôéêÞ ÖõóéêÞ’) ∧ ∃hz1 , z2 , z3 , z4 i ∈ ÓõíäñïìÞ (x1 = z1 ∧ z2 = y1 )}

7.2.3 Áóöáëåßò ÅêöñÜóåéò


ÕðÜñ÷ïõí ðåñéðôþóåéò åêöñÜóåùí ó÷åóéáêïý ëïãéóìïý, ïé ïðïßåò åðéóôñÝöïõí
Ýíá Üðåéñï óýíïëï áðáíôÞóåùí. Ãéá ðáñÜäåéãìá, èåùñÞóôå ôçí Ýêöñáóç: {t | t
¬(t ∈ ÓõããñáöÝáò)}. ¼ðùò åßíáé ðñïöáíÝò õðÜñ÷åé Ýíá Üðåéñï ðëÞèïò ðëåéÜ-
äùí ðïõ äåí áíÞêïõí óôïí ðßíáêá ÓõããñáöÝáò. ÅêöñÜóåéò ôÝôïéïõ ôýðïõ êá-
ëïýíôáé ìç-áóöáëåßò (unsafe) êáé ðñÝðåé íá áðïöåýãïíôáé åðåéäÞ ðñïêáëïýí
ðñïâëÞìáôá. Ìßá Ýêöñáóç ðïõ åðéóôñÝöåé ðåðåñáóìÝíï óýíïëï óôçí áðÜíôçóç
êáëåßôáé áóöáëÞò (safe).
ÊáôÜ ôç äéáôýðùóç åêöñÜóåùí ó÷åóéáêïý ëïãéóìïý ðñÝðåé íá åßìáóôå éäéáß-
ôåñá ðñïóåêôéêïß ãéá ôçí áðïöõãÞ ôùí ìç-áóöáëþí åêöñÜóåùí. Ïé åêöñÜóåéò
ðïõ ÷ñçóéìïðïéïýìå ðñÝðåé íá åßíáé áóöáëåßò. Ï ïñéóìüò áóöáëþí åêöñÜóåùí
ìðïñåß íá ãßíåé ÷ñçóéìïðïéþíôáò ôçí Ýííïéá ôïõ ðåäßïõ ïñéóìïý ôùí åêöñÜóåùí.
Áí E åßíáé ìßá Ýêöñáóç ó÷åóéáêïý ëïãéóìïý ðëåéÜäùí, ôüôå ôï ðåäßï ôçò Ýê-
öñáóçò ðïõ óõìâïëßæåôáé ìå domain(E) áðïôåëåßôáé áðü ôéò óôáèåñÝò ôéìÝò ðïõ
åìöáíßæïíôáé óôçí Ýêöñáóç êáé ôéò ðëåéÜäåò üëùí ôùí ó÷Ýóåùí ðïõ åìöáíßæï-
íôáé óôçí Ýêöñáóç. Ãéá ðáñÜäåéãìá, ôï ðåäßï ïñéóìïý ôçò Ýêöñáóçò {t | t¬(t ∈
ÓõããñáöÝáò)} áðïôåëåßôáé áðü üëåò ôéò ôéìÝò ÷áñáêôçñéóôéêþí ôùí ðëåéÜäùí ðïõ
áíÞêïõí óôïí ðßíáêá ÓõããñáöÝáò. ÅðéâÜëëïíôáò óå ìßá Ýêöñáóç íá ëáìâÜíåé
ôéìÝò ìüíï áðü ôï ðåäßï ïñéóìïý ôçò, åîáóöáëßæåôáé ôï ãåãïíüò üôé ç Ýêöñáóç èá
åßíáé áóöáëÞò. Áðü ôç óôéãìÞ ðïõ ç ðñïçãïýìåíç Ýêöñáóç äåí ëáìâÜíåé ôéìÝò
áðü ôï ðåäßï ïñéóìïý ôçò ÷áñáêôçñßæåôáé ìç-áóöáëÞò.
Áóöáëåßò êáé ìç-áóöáëåßò åêöñÜóåéò õðÜñ÷ïõí êáé óôçí ðåñßðôùóç ôïõ ó÷å-
óéáêïý ëïãéóìïý ðåäßïõ, êáé ïñßæïíôáé ìå ðáñüìïéï ôñüðï.

7.3 Óýíïøç
Ç ó÷åóéáêÞ Üëãåâñá êáé ï ó÷åóéáêüò ëïãéóìüò áðïôåëïýí éó÷õñÜ ìáèçìáôéêÜ
åñãáëåßá ìå ôá ïðïßá ìðïñïýìå íá åêôåëïýìå ðñÜîåéò óå Ýíá óýíïëï ó÷Ýóåùí.
Ç ó÷åóéáêÞ Üëãåâñá ïñßæåé Ýíá óýíïëï ðñÜîåùí ðïõ åöáñìüæïíôáé óå ìßá Þ
ðåñéóóüôåñåò ó÷Ýóåéò. Ïé èåìåëéþäåéò ðñÜîåéò ôçò ó÷åóéáêÞò Üëãåâñáò åßíáé
ïé: åðéëïãÞ, ðñïâïëÞ, êáñôåóéáíü ãéíüìåíï, ìåôïíïìáóßá, Ýíùóç êáé äéáöïñÜ.
ÅðéðëÝïí, ïñßæïíôáé êáé óõìðëçñùìáôéêÝò ðñÜîåéò ðïõ üìùò ìðïñïýí íá åê-
öñáóèïýí ìå âÜóç ôéò ðñïçãïýìåíåò. Ïé ðñÜîåéò áõôÝò åßíáé ïé: ôïìÞ, öõóéêÞ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 175

óýíäåóç, óýíäåóç-θ, áñéóôåñÞ åîùôåñéêÞ óýíäåóç, äåîéÜ åîùôåñéêÞ óýíäåóç, áñé-


óôåñÞ çìéóýíäåóç, äåîéÜ çìéóýíäåóç êáé åê÷þñçóç.
Ï ó÷åóéáêüò ëïãéóìüò áðïôåëåß ìßá ãëþóóá ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß
åíáëëáêôéêÜ ôçò ó÷åóéáêÞò Üëãåâñáò. ¸÷åé áðïäåé÷èåß üôé ïé äýï ãëþóóåò åß-
íáé éóïäýíáìåò, ìå ôçí Ýííïéá üôé ôá åñùôÞìáôá ðïõ áðáíôþíôáé áðü ôçí ðñþôç
ãëþóóá ìðïñïýí íá áðáíôçèïýí êáé ìå ôç äåýôåñç, êáé áíôéóôñüöùò. Ï ó÷å-
óéáêüò ëïãéóìüò Ý÷åé äýï åêäï÷Ýò: ó÷åóéáêüò ëïãéóìüò ðëåéÜäùí êáé ó÷åóéáêüò
ëïãéóìüò ðåäßïõ.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


7.1. Ãéáôß äåí åßíáé ôáîéíïìçìÝíåò ïé ðëåéÜäåò ìßáò ó÷Ýóçò;

7.2. Ãéáôß äåí åðéôñÝðïíôáé äéðëüôõðåò ðëåéÜäåò óå ìßá ó÷Ýóç;

7.3. Íá áíáöåñèïýí ïé ðÝíôå èåìåëéþäåéò ðñÜîåéò ôçò ó÷åóéáêÞò Üëãåâñáò. Íá


åêöñáóèïýí ïé ðñÜîåéò ôçò öõóéêÞò óýíäåóçò, ôçò ôïìÞò êáé ôçò äéáßñåóçò ìå
âÜóç ôéò èåìåëéþäåéò ðñÜîåéò.

7.4. Íá áíáöåñèïýí ïé äéáöïñÝò ìåôáîý ôùí ðñÜîåùí óýíäåóçò: öõóéêÞ óýí-


äåóç, óýíäåóç-θ, åîùôåñéêÞ óýíäåóç êáé çìéóýíäåóç.

7.5. ¸óôùóáí ïé ó÷Ýóåéò R1 , R2 ìå N1 , N 2 ðëåéÜäåò áíôéóôïß÷ùò, üðïõ N1 >


N2 > 0. Ãéá üóåò âáóéêÝò êáé óõìðëçñùìáôéêÝò ðñÜîåéò ôçò ó÷åóéáêÞò Üëãå-
âñáò åßíáé äõíáôüí, íá äïèïýí ôá üñéá ôïõ ìåãÝèïõò ôçò ðñïêýðôïõóáò ó÷Ýóåéò,
äçëáäÞ ï åëÜ÷éóôïò êáé ìÝãéóôïò áñéèìüò ðëåéÜäùí. Ãéá ôï óêïðü áõôü ðñÝðåé
íá êÜíåôå ôéò áðáñáßôçôåò õðïèÝóåéò åñãáóßáò.

7.6. Óôï åðüìåíï ó÷Þìá äßíïíôáé äýï óôéãìéüôõðá ó÷Ýóåùí R(A1, A2, A3) êáé
S(A4, A5, A6) êáé äþóôå ôï áðïôÝëåóìá ôùí åîÞò ðñÜîåùí:
• R 1R.A1=S.A4 S
• R 1R.A2=S.A5 S
• R 1R.A2=S.A5AN DR.A3=S.A6 S
• R∪S
7.7. Ãéá ôá áíùôÝñù óôéãìéüôõðá äþóôå ôï áðïôÝëåóìá ôçò áñéóôåñÞò åîùôåñéêÞò
óýíäåóçò êáé ôçò äåîéÜò åîùôåñéêÞò óýíäåóçò.
176 ÊåöÜëáéï 7. Ó÷åóéáêÞ ¢ëãåâñá êáé Ó÷åóéáêüò Ëïãéóìüò

A1 A2 A3 A4 A5 A6
1 10 100 1 20 300
2 20 200 3 30 400
3 10 300 1 20 100

7.8. Óõãêñßíåôå ôï ó÷åóéáêü ëïãéóìü ðëåéÜäùí êáé ôï ó÷åóéáêü ëïãéóìü ðåäßïõ.


ÓõãêåêñéìÝíá, íá óçìåéùèïýí ïé äéáöïñÝò ìåôáîý ìåôáâëçôþí ðëåéÜäáò êáé ìå-
ôáâëçôþí ðåäßïõ.

7.9. Äßíåôáé ôï åðüìåíï ó÷Þìá ìßáò ÂÜóçò ÄåäïìÝíùí:

ÕðÜëëçëïò(üíïìá õðáëëÞëïõ, ôçëÝöùíï, ðüëç)


ÅñãÜæåôáé(üíïìá õðáëëÞëïõ, üíïìá åôáéñåßáò, ìéóèüò)
Åôáéñåßá(üíïìá åôáéñåßáò, ðüëç)
ÐñïúóôÜìåíïò(üíïìá õðáëëÞëïõ, üíïìá ðñïúóôáìÝíïõ)

Ãéá êÜèå Ýíá áðü ôá åðüìåíá åñùôÞìáôá íá äïèïýí åêöñÜóåéò ôçò ó÷åóéáêÞò
Üëãåâñáò:

• Íá âñåèïýí ôá ïíüìáôá ôùí õðáëëÞëùí ðïõ åñãÜæïíôáé óôçí åôáéñåßá


"COMPANY S.A."

• Íá âñåèïýí ôá ïíüìáôá êáé ïé ðüëåéò äéáìïíÞò ôùí õðáëëÞëùí ôçò "COM-


PANY S.A."

• Íá âñåèïýí ôá ïíüìáôá, ôá ôçëÝöùíá êáé ïé ðüëåéò äéáìïíÞò ôùí õðáë-


ëÞëùí ôçò "COMPANY S.A.", ôùí ïðïßùí ï ìéóèüò åßíáé ìåãáëýôåñïò áðü
1000 åõñþ.

• Íá âñåèïýí ôá ïíüìáôá ôùí õðáëëÞëùí ðïõ äéáìÝíïõí óôçí ßäéá ðüëç üðïõ
âñßóêåôáé êáé ç åôáéñåßá üðïõ åñãÜæïíôáé.

7.10. Íá åðéëõèåß ç ðñïçãïýìåíç Üóêçóç ãéá ôï ßäéï ó÷Þìá êáé åñùôÞìáôá áëëÜ
óå ó÷åóéáêü ëïãéóìü ðëåéÜäáò êáé ó÷åóéáêü ëïãéóìü ðåäßïõ.

7.11. ×ñçóéìïðïéþíôáò ôç ó÷åóéáêÞ Üëãåâñá íá ïñéóèåß ìßá üøç óôç ÂÜóç Äå-
äïìÝíùí ôçò ðñïçãïýìåíçò Üóêçóçò, ç ïðïßá íá äßíåé ôï üíïìá ôïõ õðáëëÞëïõ,
ôçí ðüëç äéáìïíÞò ôïõ, êáé ôï üíïìá ôçò åôáéñåßáò üðïõ åñãÜæåôáé.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 177

7.12. Ç ðñÜîç ôçò Ýíùóçò Ý÷åé íüçìá üôáí éó÷ýïõí ïé ðñïûðïèÝóåéò óõìâáôüôç-
ôáò. ¼ôáí õðÜñ÷åé ìåñéêÞ óõìâáôüôçôá (partial compatibility), äçëáäÞ õðÜñ÷ïõí
ìüíï ìåñéêÝò óôÞëåò ìå ßäéá ðåäßá ïñéóìïý ìåôáîý ôùí ïðïßùí êáé ôï ðñùôåýïí
êëåéäß, ôüôå ïñßæåôáé ç ðñÜîç ôçò åîùôåñéêÞò Ýíùóçò (outer union) êáô’ áíáëïãßá
ðñïò ôçí åîùôåñéêÞ óýíäåóç. Íá äïèïýí ðáñáäåßãìáôá Ý÷ïíôáò õð’ üøç ôéò ðå-
ñéðôþóåéò ôçò åîùôåñéêÞò óýíäåóçò.

7.13. Äßíïíôáé ïé ó÷Ýóåéò R(A, B, C) êáé S(D, E, F ). Íá äïèïýí óå ó÷åóéáêü


ëïãéóìü ðëåéÜäùí åêöñÜóåéò éóïäýíáìåò ðñïò ôéò:

• ΠB (R)

• σA=143 (R)

• S×R

• ΠC,D (σA=F (S × R))

7.14. Íá åðéëõèåß ç ðñïçãïýìåíç Üóêçóç ãéá åêöñÜóåéò óå ó÷åóéáêü ëïãéóìü


ðåäßïõ.

7.15. Ðüôå ìßá Ýêöñáóç ó÷åóéáêïý ëïãéóìïý êáëåßôáé ìç-áóöáëÞò; Ãéá ðïéü
ëüãï ôÝôïéïõ åßäïõò åêöñÜóåéò äåí åßíáé åðéèõìçôÝò; Íá äþóåôå Ýíá ðáñÜäåéãìá
áóöáëïýò êáé ìç-áóöáëïýò Ýêöñáóçò ó÷åóéáêïý ëïãéóìïý ðëåéÜäùí.
8
ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé
Êáíïíéêïðïßçóç

Ç êáíïíéêïðïßçóç (normalization) áðïôåëåß Ýíá ðïëý óçìáíôéêü âÞìá êáôÜ ôï


ó÷åäéáóìü ìßáò ÂÜóçò ÄåäïìÝíùí. Ïé ðßíáêåò ðïõ ðñïêýðôïõí ìåôÜ ôç ìå-
ôáôñïðÞ ôïõ ìïíôÝëïõ ÏÓ óå ó÷åóéáêü óõíÞèùò ðåñéÝ÷ïõí åðáíáëáìâáíüìåíç
ðëçñïöïñßá. Ãéá ðáñÜäåéãìá, ç ýðáñîç åíüò ÷áñáêôçñéóôéêïý ðïëëáðëþí ôé-
ìþí åíüò óõíüëïõ ïíôïôÞôùí Ý÷åé ùò áðïôÝëåóìá íá áðïèçêåõèïýí ðïëëáðëÝò
ãñáììÝò óôïí áíôßóôïé÷ï ðßíáêá. Ç êáíïíéêïðïßçóç ó÷Ýóåùí ïõóéáóôéêÜ åß-
íáé ìßá áðëïðïßçóç ôùí ó÷Ýóåùí ìå óôü÷ï ôçí åîÜëåéøç ôïõ ðëåïíáóìïý ôùí
äåäïìÝíùí, ï ïðïßïò, üðùò èá åîåôÜóïõìå óôç óõíÝ÷åéá, äçìéïõñãåß ìåñéêÜ óï-
âáñÜ ðñïâëÞìáôá. Ìßá åêôåíÞò ìåëÝôç ôçò äéáäéêáóßáò ôçò êáíïíéêïðïßçóçò
äåäïìÝíùí ðåñéëáìâÜíåôáé óôç âéâëéïãñáöéêÞ áíáöïñÜ [Dutka 1989] êáèþò êáé
óå ðïëëÜ Üëëá åðéóôçìïíéêÜ óõããñÜììáôá.
Óôï Ó÷Þìá 8.1 ðáñïõóéÜæåôáé Ýíá ðáñÜäåéãìá åíüò ìïíôÝëïõ ÏÓ êáé óôï
Ó÷Þìá 8.2 Ýíá áíôßóôïé÷ï óôéãìéüôõðï ôçò ÂÜóçò ÄåäïìÝíùí. Ôï ÷áñáêôçñéóôéêü
ôçëÝöùíï åßíáé äõíáôü íá ðÜñåé ðïëëÝò ôéìÝò, åðåéäÞ Ýíáò ðåëÜôçò ìðïñåß íá
äéáèÝôåé ðåñéóóüôåñïõò áðü Ýíáí ôçëåöùíéêïýò áñéèìïýò. Áõôü óçìáßíåé üôé
áí Ýíáò ðåëÜôçò Ý÷åé ðïëëïýò ôçëåöùíéêïýò áñéèìïýò èá ðñÝðåé íá åìöáíßæåôáé

179
180 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

ðïëëÝò öïñÝò óôïí ðßíáêá ÐåëÜôçò, ìå áðïôÝëåóìá êÜðïéá äåäïìÝíá íá áðï-


èçêåýïíôáé ðïëëÝò öïñÝò. Ôï ðñùôåýïí êëåéäß ôïõ óõíüëïõ ïíôïôÞôùí ÐåëÜôçò
åßíáé ôï ÷áñáêôçñéóôéêü ÁÖÌ. ÌåôÜ ôç ìåôáôñïðÞ ôïõ ìïíôÝëïõ ÏÓ óå ó÷åóéáêü,
ôï êëåéäß ôïõ ðßíáêá åßíáé óýíèåôï êáé áðïôåëåßôáé áðü ôá ÷áñáêôçñéóôéêÜ ÁÖÌ
êáé ôçëÝöùíï.
ό ν ο α δ ι ε ύ θ υ ν σ η

η λ έ φ ω ν ο

Α Φ Μ

Π ε λ ά τ η ς

Ó÷Þìá 8.1: Ôï óýíïëï ïíôïôÞôùí ÐåëÜôçò.

ÁÖÌ üíïìá äéåýèõíóç ôçëÝöùíï


044231211 Ãåþñ. Âáóéëåßïõ Â. ¼ëãáò 12 2310888888
044231211 Ãåþñ. Âáóéëåßïõ Â. ¼ëãáò 12 6977111222
044231211 Ãåþñ. Âáóéëåßïõ Â. ¼ëãáò 12 2310888999

Ó÷Þìá 8.2: Ðëåïíáóìüò äåäïìÝíùí óôïí ðßíáêá ÐåëÜôçò.

Åßíáé ðñïöáíÝò üôé ðïëëÜ äåäïìÝíá åðáíáëáìâÜíïíôáé ÷ùñßò íá ðñïóöÝñïõí


ðñüóèåôç ðëçñïöïñßá. Ãéá ðïéü ëüãï üìùò ï ðëåïíáóìüò äåäïìÝíùí åßíáé áíå-
ðéèýìçôïò; ÐåñéãñÜöïõìå ôñßá âáóéêÜ ðñïâëÞìáôá ðïõ åðéöÝñåé ï ðëåïíáóìüò
ôùí äåäïìÝíùí:
• Ðñüâëçìá ÅíçìÝñùóçò ÄåäïìÝíùí. Óå ðåñßðôùóç ðïõ áðáéôçèåß áëëáãÞ
êÜðïéùí åðáíáëáìâáíüìåíùí äåäïìÝíùí, ôüôå ç åíçìÝñùóç ðñÝðåé íá ãß-
íåé óå üëåò ôéò åìöáíßóåéò. Ãéá ðáñÜäåéãìá, ç áëëáãÞ ôçò äéåýèõíóçò ïäçãåß
óå åíçìÝñùóç êáé ôùí ôñéþí ãñáììþí ôïõ ðßíáêá ÐåëÜôçò. Ïé ðïëëáðëÝò
åíçìåñþóåéò áö’ åíüò äçìéïõñãïýí êáèõóôåñÞóåéò êáé áö’ åôÝñïõ åßíáé
åðéêßíäõíåò, äéüôé áí Ýóôù êáé ìßá ãñáììÞ äåí åíçìåñùèåß, ôüôå ðñïêýðôåé
áóõíÝðåéá äåäïìÝíùí.

• Ðñüâëçìá ÄéáãñáöÞò ÄåäïìÝíùí. ÈåùñÞóôå üôé Ýíáò ðåëÜôçò êáôáñãåß


üëïõò ôïõò ôçëåöùíéêïýò áñéèìïýò ðïõ äéáèÝôåé. Áðü ôéò åíáëëáêôéêÝò
ëýóåéò ðïõ äéáèÝôïõìå êáìßá äåí ìðïñåß íá åöáñìïóèåß, üðùò ãéá ðáñÜ-
äåéãìá: 1) íá èÝóïõìå NULL óå üëåò ôéò ôéìÝò ôçò óôÞëçò ôçëÝöùíï, êÜôé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 181

ôï ïðïßï áðïññßðôåôáé åðåéäÞ ç óôÞëç óõììåôÝ÷åé óôï ðñùôåýïí êëåéäß ôïõ


ðßíáêá, êáé 2) íá äéáãñÜøïõìå ôéò ãñáììÝò ôïõ ðßíáêá, ðïõ åðßóçò áðïññß-
ðôåôáé åðåéäÞ èá ÷Üóïõìå ôéò õðüëïéðåò ðëçñïöïñßåò ãéá ôï óõãêåêñéìÝíï
ðåëÜôç.

• Ðñüâëçìá ÅéóáãùãÞò ÄåäïìÝíùí. ÊÜèå öïñÜ ðïõ åéóÜãïõìå Ýíá íÝï


ðåëÜôç, ðñÝðåé õðï÷ñåùôéêÜ íá åéóÜãïõìå êáé ôïí áíôßóôïé÷ï áñéèìü ôç-
ëåöþíïõ, êÜôé ôï ïðïßï ìðïñåß íá ìçí åßíáé åöéêôü ôç äåäïìÝíç ÷ñïíéêÞ
óôéãìÞ.

Ç ëýóç ðïõ õðÜñ÷åé ãéá ôçí åðßëõóç ôùí ðñïâëçìÜôùí áõôþí åßíáé ç êá-
ôáóêåõÞ äýï äéáöïñåôéêþí ðéíÜêùí. Ç íÝá ìïñöÞ ôçò ÂÜóçò ÄåäïìÝíùí ðïõ
ðñïêýðôåé ðáñïõóéÜæåôáé óôï Ó÷Þìá 8.3. Ôá óôïé÷åßá áðïèçêåýïíôáé ìßá ìüíï
öïñÜ óôïí ðßíáêá ÐåëÜôçò, åíþ üëïé ïé ôçëåöùíéêïß áñéèìïß áðïèçêåýïíôáé óôïí
îå÷ùñéóôü ðßíáêá ÔçëÝöùíï. ¸ôóé ìðïñïýìå íá áðïèçêåýóïõìå ðïëëïýò ôçëå-
öùíéêïýò áñéèìïýò ãéá Ýíáí ðåëÜôç, ÷ùñßò ðëåïíáóìü äåäïìÝíùí.

ÁÖÌ áñéèìüò
ÁÖÌ üíïìá äéåýèõíóç 044231211 2310888888
044231211 Ãåþñ. Âáóéëåßïõ Â. ¼ëãáò 12 044231211 6977111222
044231211 2310888999

Ó÷Þìá 8.3: ÊáôáóêåõÞ äýï ðéíÜêùí ÐåëÜôçò êáé ÔçëÝöùíï ãéá áðïöõãÞ ðëåï-
íáóìïý.

Áðü ôï ðñïçãïýìåíï ðáñÜäåéãìá åßíáé óáöÝò üôé ç äéÜóðáóç ôùí ðéíÜêùí


åðéëýåé ôá ðñïâëÞìáôá ðïõ ðáñïõóéÜæïíôáé üôáí ôá ßäéá äåäïìÝíá áðïèçêåýï-
íôáé ðïëëÝò öïñÝò. Ï âáóéêüò óôü÷ïò ôçò èåùñßáò ôçò êáíïíéêïðïßçóçò åßíáé
ï ðñïóäéïñéóìüò åíüò êáôÜëëçëïõ óõíüëïõ ðéíÜêùí ìå óôü÷ï ôçí åëá÷éóôïðïß-
çóç ôïõ ðëåïíáóìïý äåäïìÝíùí. Ç èåùñßá ôçò êáíïíéêïðïßçóçò óôçñßæåôáé óôéò
óõíáñôçóéáêÝò åîáñôÞóåéò (functional dependencies).

8.1 ÓõíáñôçóéáêÝò ÅîáñôÞóåéò


ÕðïèÝôïõìå üôé ç ÂÜóç ÄåäïìÝíùí ðåñéãñÜöåôáé áðü Ýíáí ðßíáêá R ìå ÷áñá-
êôçñéóôéêÜ A1 , A2 , . . . , An . ¸óôùóáí X êáé Y äýï óýíïëá ÷áñáêôçñéóôéêþí.
Ìßá óõíáñôçóéáêÞ åîÜñôçóç ìåôáîý X êáé Y óõìâïëßæåôáé ìå X → Y êáé ïñßæåé
Ýíáí ðåñéïñéóìü ùò ðñïò ôéò ôéìÝò ôùí ÷áñáêôçñéóôéêþí. ¸óôùóáí t1 êáé t2 äýï
ðëåéÜäåò ôïõ ðßíáêá R. Ç óõíáñôçóéáêÞ åîÜñôçóç X → Y ïñßæåé üôé áí ïé äýï
182 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

ãñáììÝò t1 êáé t2 Ý÷ïõí êïéíÝò ôéìÝò óôá ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ X, ôüôå
èá Ý÷ïõí ßäéåò ôéìÝò êáé óôá ÷áñáêôçñéóôéêÜ ôïõ óõíüëïõ Y . Óôçí ðåñßðôùóç
áõôÞ ëÝãåôáé üôé ôï óýíïëï ÷áñáêôçñéóôéêþí Y åßíáé óõíáñôçóéáêÜ åîáñôþìåíï
(functionally dependent) áðü ôï óýíïëï X. Ãéá íá äçëþóïõìå üôé ôï óýíïëï Y
äåí åßíáé óõíáñôçóéáêÜ åîáñôþìåíï áðü ôï X ÷ñçóéìïðïéïýìå ôï óõìâïëéóìü
X 9 Y . Ãéá ðáñÜäåéãìá, ãéá ôá ÷áñáêôçñéóôéêÜ ôùí ðéíÜêùí ôïõ Ó÷Þìáôïò 8.3
éó÷ýåé: ÁÖÌ → ¼íïìá, êáèþò êáé: ÁÖÌ 9 ÔçëÝöùíï.
Óå êÜèå ðßíáêá éó÷ýïõí ïé ëåãüìåíåò ôåôñéììÝíåò (trivial) óõíáñôçóéáêÝò
åîáñôÞóåéò. Ìßá åîÜñôçóç ëÝãåôáé ôåôñéììÝíç áí êáé ìüíï áí ôï äåîéü óêÝëïò
ôçò åßíáé õðïóýíïëï ôïõ áñéóôåñïý óêÝëïõò ôçò åîÜñôçóçò, üðùò ãéá ðáñÜäåéãìá
ç ðåñßðôùóç: ÁÖÌ, ¼íïìá → ¼íïìá.
Ïé óõíáñôçóéáêÝò åîáñôÞóåéò ïöåßëïíôáé óôéò óçìáóéïëïãéêÝò éäéüôçôåò (se-
mantics) ðïõ Ý÷ïõí ôá ÷áñáêôçñéóôéêÜ ôùí ïíôïôÞôùí. Ïé ó÷åäéáóôÝò ôùí ÂÜóåùí
ÄåäïìÝíùí ðñÝðåé íá åßíáé óå èÝóç íá áíáãíùñßæïõí áõôÝò ôéò åîáñôÞóåéò êáé
íá ôéò åéóÜãïõí óôï óýóôçìá ìå ôç ìïñöÞ ðåñéïñéóìþí (constraints). ÁëëáãÝò
óôéò ïíôüôçôåò ôïõ ðñáãìáôéêïý êüóìïõ ìðïñïýí íá åðéöÝñïõí áëëáãÝò êáé óôéò
óõíáñôçóéáêÝò åîáñôÞóåéò ìåôáîý ôùí ÷áñáêôçñéóôéêþí.

8.1.1 Êáíüíåò ÐáñáãùãÞò Óõíáñôçóéáêþí ÅîáñôÞóåùí


¸óôù F ôï óýíïëï ôùí óõíáñôçóéáêþí åîáñôÞóåùí ðïõ ïñßæåé ï ó÷åäéáóôÞò ôçò
ÂÜóçò ÄåäïìÝíùí. Åêôüò áðü áõôÝò ôéò óõíáñôçóéáêÝò åîáñôÞóåéò, õðÜñ÷ïõí êáé
Üëëåò ðïõ ìðïñåß íá ìçí åßíáé ôüóï ðñïöáíåßò, ùóôüóï üìùò éó÷ýïõí. Ïé ìç ðñï-
öáíåßò óõíáñôçóéáêÝò åîáñôÞóåéò ìðïñïýí íá åîá÷èïýí áðü ôï óýíïëï F ÷ñçóé-
ìïðïéþíôáò êÜðïéïõò êáíüíåò. Ôï óýíïëï üëùí ôùí óõíáñôçóéáêþí åîáñôÞóåùí
ðïõ ìðïñïýí íá ðñïêýøïõí áðü ôï óýíïëï F êáëåßôáé êëåéóôüôçôá (closure) êáé
óõìâïëßæåôáé ìå F + . ¸íá óýíïëï G óõíáñôçóéáêþí åîáñôÞóåùí êáëýðôåôáé
áðü (is covered by) Ýíá Üëëï óýíïëï óõíáñôçóéáêþí åîáñôÞóåùí F üôáí êÜèå
åîÜñôçóç ðïõ áíÞêåé óôï G áíÞêåé êáé óôï F + . Äýï óýíïëá óõíáñôçóéáêþí
åîáñôÞóåùí F êáé G êáëïýíôáé éóïäýíáìá (equivalent) áí éó÷ýåé F + = G+ .
¸÷ïõí äéáôõðùèåß ðïëëïß êáíüíåò ðáñáãùãÞò óõíáñôçóéáêþí åîáñôÞóåùí.
Ïé åðüìåíïé ôñåéò êáíüíåò åßíáé ãíùóôïß ùò áîéþìáôá Armstrong ðñïò ôéìÞí ôïõ
åñåõíçôÞ ðïõ ôá äéáôýðùóå óôçí åñãáóßá [Armstrong 1974]:
1. áíáêëáóôéêüò êáíüíáò (reflexive rule): áí Y ⊆ X ôüôå X → Y .
2. åðáõîçôéêüò êáíüíáò (augmentation rule): áí X → Y ôüôå XZ → Y Z.
3. ìåôáâáôéêüò êáíüíáò (transitive rule): áí X → Y êáé Y → Z ôüôå X → Z.
Ï áíáêëáóôéêüò êáíüíáò ïñßæåé üôé Ýíá óýíïëï ÷áñáêôçñéóôéêþí ðÜíôá ðñïó-
äéïñßæåé ôïí åáõôü ôïõ Þ Ýíá õðïóýíïëï áõôïý. Ï êáíüíáò ôçò åðáýîçóçò ïñßæåé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 183

üôé ðñïóáñôþíôáò ôï ßäéï óýíïëï ÷áñáêôçñéóôéêþí óôï áñéóôåñü êáé äåîéü ìÝ-
ñïò ìßáò óõíáñôçóéáêÞò åîÜñôçóçò ëáìâÜíïõìå ìßá íÝá åîÜñôçóç. Óýìöùíá ìå
ôï ìåôáâáôéêü êáíüíá, ïé óõíáñôçóéáêÝò åîáñôÞóåéò õðáêïýïõí óôç ìåôáâáôéêÞ
éäéüôçôá.
Áí êáé ïé êáíüíåò áõôïß ïíïìÜæïíôáé "áîéþìáôá", åíôïýôïéò ç ïñèüôçôÜ ôïõò
ìðïñåß íá áðïäåé÷èåß ìå ôç ìÝèïäï ôçò áðáãùãÞò óå Üôïðï. Ïé êáíüíåò áõôïß
åßíáé ïñèïß êáé ðëÞñåéò (sound and complete) ãéáôß (á) äåí ðáñÜãïõí ìç ïñèÝò
óõíáñôçóéáêÝò åîáñôÞóåéò, êáé (â) áñêïýí ãéá íá ðáñá÷èåß ôï óýíïëï F + . Ìï-
ëïíüôé åßíáé äõíáôüí íá ðáñá÷èåß ôï óýíïëï F + ìå ôç âïÞèåéá ôùí áîéùìÜôùí
Armstrong êáé ìüíï, ùóôüóï ç ÷ñÞóç ôùí åðïìÝíùí êáíüíùí äéåõêïëýíåé ôç
äéáäéêáóßá ðáñáãùãÞò ôïõ F + .

1. êáíüíáò äéÜóðáóçò (decomposition rule): áí X → Y Z ôüôå X → Y êáé


X → Z.

2. êáíüíáò Ýíùóçò (union rule): áí X → Y êáé X → Z ôüôå X → Y Z.

3. øåõäï-ìåôáâáôéêüò êáíüíáò (pseudotransitive rule): áí X → Y êáé W Y →


Z ôüôå W X → Z.

4. óõóóùñåõôéêüò êáíüíáò (accumulation rule): áí X → Y Z êáé Z → BW


ôüôå X → Y ZB.

5. ãåíéêüò åíïðïéçôéêüò êáíüíáò (general unification rule): áí X → Y êáé


Z → W ôüôå X ∪ (Z − Y ) → Y W .

Ç áëÞèåéá ôùí ðñïôÜóåùí áõôþí åßíáé äõíáôüí íá áðïäåé÷èåß ìå ôç âïÞèåéá ôùí


ôñéþí áîéùìÜôùí Armstrong. Åéäéêüôåñá óå ó÷Ýóç ìå ôïõò êáíüíåò áõôïýò óç-
ìåéþíïõìå ôá åîÞò. Ï êáíüíáò ôçò äéÜóðáóçò ïñßæåé üôé Ý÷ïõìå ôç äõíáôüôçôá íá
áöáéñïýìå óýíïëá ÷áñáêôçñéóôéêþí áðü ôï äåîéü ìÝñïò ìßáò åîÜñôçóçò. Åöáñ-
ìüæïíôáò åðáíáëçðôéêÜ ôïí êáíüíá óôç óõíáñôçóéáêÞ åîÜñôçóç X → A1 A2 ...An
ëáìâÜíïõìå ôï óýíïëï ôùí åîáñôÞóåùí {X → A1 , X → A2 , . . . , X → An }, åíþ
ìå ôïí êáíüíá ôçò Ýíùóçò åêôåëïýìå ôï áíôßóôñïöï. Ï øåõäï-ìåôáâáôéêüò êá-
íüíáò åðåêôåßíåé ôï ìåôáâáôéêü êáíüíá, åíþ ï óõóóùñåõôéêüò êáíüíáò åßíáé ìßá
áêüìç åêäï÷Þ ôïõ êáíüíá ôçò Ýíùóçò. ÔÝëïò, ìå ôï ãåíéêü åíïðïéçôéêü êáíüíá,
üëïé ïé ðñïçãïýìåíïé êáíüíåò (ðëçí ôïõ êáíüíá ôçò äéÜóðáóçò) ìðïñïýí íá
èåùñçèïýí ùò åéäéêÝò ðåñéðôþóåéò.
Ãéá ðáñÜäåéãìá, Ýóôù ôï óýíïëï F ìå ôá ÷áñáêôçñéóôéêÜ W, U, V, X, Y, Z
êáé ôéò åîÞò óõíáñôçóéáêÝò åîáñôÞóåéò: W → U V, U → Y, V X → Y Z. Áðü
ôéò åîáñôÞóåéò áõôÝò ìðïñåß íá ðáñá÷èåß Ýíá ðëÞèïò íÝùí åîáñôÞóåùí, ôï ïðïßï
åí ôÝëåé èá áðïôåëÝóåé ôï óýíïëï F + . Óôï óçìåßï áõôü äåí èá äçìéïõñãÞóïõìå
184 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

ôï óýíïëï F + áëëÜ áðëþò èá áðïäåßîïõìå üôé ç åîÜñôçóç W X → Z ðñÜãìáôé


éó÷ýåé êáé ìðïñåß íá ðñïêýøåé áðü ôéò ðñïçãïýìåíåò åîáñôÞóåéò. Äßíåôáé, ëïéðüí,
üôé éó÷ýåé W → U V . Ìå âÜóç ôïí êáíüíá ôçò äéÜóðáóçò ðñïêýðôåé üôé W → V ,
áðü üðïõ ìå âÜóç ôïí êáíüíá ôçò åðáýîçóçò éó÷ýåé W X → V X. ×ñçóéìïðïéþ-
íôáò ôï ìåôáâáôéêü êáíüíá, áðü ôçí ôåëåõôáßá áõôÞ åîÜñôçóç óå óõíäõáóìü ìå
ôçí áñ÷éêÞ åîÜñôçóç V X → Y Z ðñïêýðôåé W X → Y Z, áðü üðïõ ìå âÜóç ôïí
êáíüíá ôçò äéÜóðáóçò ðáñÜãåôáé ç æçôïýìåíç åîÜñôçóç W X → Z.

8.1.2 Êëåéóôüôçôá Óõíüëïõ ×áñáêôçñéóôéêþí


Óôçí ðñÜîç ï ðñïóäéïñéóìüò ôïõ óõíüëïõ êëåéóôüôçôáò F + åßíáé äáðáíçñüò
áêüìç êáé ãéá Ýíá ìéêñü óýíïëï åîáñôÞóåùí F . Ìå Üëëá ëüãéá, äåí õðÜñ÷åé êÜ-
ðïéïò áðïôåëåóìáôéêüò (ðïëõùíõìéêüò) áëãüñéèìïò ãéá ôïí õðïëïãéóìü ôïõ F + .
ÁíôéèÝôùò, ìðïñïýìå åýêïëá íá äéáðéóôþóïõìå ìå ôç âïÞèåéá åíüò ðïëõùíõìé-
êïý áëãïñßèìïõ áí ìßá óõíáñôçóéáêÞ åîÜñôçóç A → B áíÞêåé óôï óýíïëï F + ,
÷ùñßò áðáñáéôÞôùò íá äçìéïõñãÞóïõìå ôï óýíïëï áõôü ðñïçãïõìÝíùò.
Ìå ôïí üñï êëåéóôüôçôá ôïõ óõíüëïõ ÷áñáêôçñéóôéêþí X (attribute closure),
ùò ðñïò ôï óýíïëï ôùí óõíáñôçóéáêþí åîáñôÞóåùí F , äçëþíïõìå ôï óýíïëï ôùí
÷áñáêôçñéóôéêþí ðïõ åßíáé óõíáñôçóéáêÜ åîáñôþìåíá áðü ôï óýíïëï X êáé ôï
óõìâïëßæïõìå ìå X + . ÄåäïìÝíçò ôçò åîÜñôçóçò A → B, ãéá ôïí õðïëïãéóìü ôçò
êëåéóôüôçôáò ôïõ ÷áñáêôçñéóôéêïý A, ï áëãüñéèìïò ðñï÷ùñÜ ìå ôá âÞìáôá ðïõ
ðáñïõóéÜæïíôáé óôï Ó÷Þìá 8.4.

1. ÈÝôïõìå X = A.
2. Ìåôáîý ôùí óõíáñôçóéáêþí åîáñôÞóåùí ôïõ F áíáæçôïýìå åîáñôÞóåéò
C → D, üðïõ C ⊆ X. Áí âñåèåß ôÝôïéá åîÜñôçóç, ôüôå ðñïóáñôïýìå
ôï D óôï X.
3. ÅðáíáëáìâÜíïõìå ôï ÂÞìá 2 Ýùò üôïõ äåí ìðïñïýìå íá ðñïóáñôÞóïõìå
åðéðëÝïí ÷áñáêôçñéóôéêÜ óôï X.
4. Áí ôï ÷áñáêôçñéóôéêü B ∈ X, ôüôå ç óõíáñôçóéáêÞ åîÜñôçóç A → B
áíÞêåé óôï F + êáé åßíáé ðåñéôôÞ.

Ó÷Þìá 8.4: Áëãüñéèìïò õðïëïãéóìïý êëåéóôüôçôáò.

Áò åîåôÜóïõìå Ýíá åêôåôáìÝíï ðáñÜäåéãìá. Äßíåôáé ôï óýíïëï ôùí åîáñôÞ-


óåùí F :
V → Y Z, V Z → W, W → Y, V Y → W
Åöáñìüæïíôáò ôïí êáíüíá ôçò äéÜóðáóçò ðñïêýðôåé:
V → Y, V → Z, V Z → W, W → Y, V Y → W
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 185

Óôç óõíÝ÷åéá ðñÝðåé íá åîåôÜóïõìå Ýíá ðñïò Ýíá ôá áñéóôåñÜ óêÝëç áõôþí ôùí
åîáñôÞóåùí ìå óêïðü íá âñïýìå ôçí êëåéóôüôçôÜ ôïõò. Áí áðïäåé÷èåß üôé ôï äå-
îéü ôïõò óêÝëïò áíÞêåé óôçí êëåéóôüôçôÜ ôïõò, ôüôå áõôÝò èá åßíáé ðåñéôôÝò áðü
ôï óýíïëï F , êáèþò èá ìðïñïýí íá ðáñá÷èïýí áðü ôéò õðüëïéðåò åîáñôÞóåéò ôïõ
F ìå âÜóç ôïõò êáíüíåò ðïõ áíáöÝñèçêáí ðñïçãïõìÝíùò.

Áñ÷éêÜ èåùñïýìå ôçí åîÜñôçóç V → Y . Áêïëïõèþíôáò ôá âÞìáôá ôïõ ðñïç-


ãïýìåíïõ áëãïñßèìïõ Ý÷ïõìå:
ÂÞìá 1ï: X = V .
ÂÞìá 2ï: X = V Z ëüãù ôçò V → Z.
ÂÞìá 3ï: X = V ZW ëüãù ôçò V Z → W .
ÂÞìá 3ï: X = V ZW Y ëüãù ôçò W → Y .
ÂÞìá 3ï: Äåí ìðïñïýí íá ãßíïõí Üëëåò åðáíáëÞøåéò.
ÂÞìá 4ï: Y ⊆ V ZW Y , óõíåðþò ç åîÜñôçóç V → Y ∈ (F − {V → Y })+ êáé
åßíáé ðåñéôôÞ.

Èåùñïýìå ôçí åîÜñôçóç V → Z êáé áêïëïõèïýìå ôá âÞìáôá ôïõ áëãïñßèìïõ:


ÂÞìá 1ï: X = V .
ÂÞìá 2ï: X = V Y ëüãù ôçò V → Y .
ÂÞìá 3ï: X = V Y W ëüãù ôçò V Y → W .
ÂÞìá 3ï: Äåí ìðïñïýí íá ãßíïõí Üëëåò åðáíáëÞøåéò.
ÂÞìá 4ï: Z * V Y W , óõíåðþò ç åîÜñôçóç V → Z 6∈ (F − {V → Z})+ êáé äåí
åßíáé ðåñéôôÞ.

Ìå ôïí ßäéï ôñüðï ðñïêýðôåé üôé ç åîÜñôçóç V Z → W åßíáé ðåñéôôÞ, ç


W → Y äåí åßíáé ðåñéôôÞ, åíþ ç V Y → W åßíáé ðåñéôôÞ. Óôï óçìåßï áõôü
÷ñåéÜæåôáé ðñïóï÷Þ. Ç êÜèå ìßá áðü ôéò ðåñéôôÝò ðñïçãïýìåíåò åîáñôÞóåéò, åßíáé
ðåñéôôÞ ùò ðñïò üëåò ôéò õðüëïéðåò. Áõôü óçìáßíåé üôé áí áãíïÞóïõìå ôáõôü÷ñïíá
êáé ôéò ôñåéò ðåñéôôÝò åîáñôÞóåéò, ôüôå èá êáôáëÞîïõìå óå Ýíá óýíïëï åîáñôÞóåùí
F 0 (áðïôåëïýìåíï áðü ôéò V → Z êáé W → Y ), ôï ïðïßï äåí èá åßíáé éóïäýíáìï
ìå ôï áñ÷éêü F .

Ãéá íá äéáðéóôþóïõìå ôï óýíïëï ôùí ðåñéôôþí åîáñôÞóåùí, ôéò ïðïßåò áí


áãíïÞóïõìå èá ìåßíïõìå ìå Ýíá éóïäýíáìï óýíïëï åîáñôÞóåùí, ðñÝðåé üôáí
âñßóêïõìå ìßá ðåñéôôÞ åîÜñôçóç íá ôçí åîáéñïýìå áðü ôï óýíïëï F êáôÜ ôïí
Ýëåã÷ï ôùí åðüìåíùí åîáñôÞóåùí. ¸ôóé, ãéá ðáñÜäåéãìá, áí åîáéñÝóïõìå áðü
ôï óýíïëï F ôéò åîáñôÞóåéò V → Y êáé ôçí V Z → W , ôüôå äåí èá ðñïêýøåé
üôé ç V Y → W åßíáé ðåñéôôÞ. Óõíåðþò, ôï áñ÷éêü óýíïëï åîáñôÞóåùí F åßíáé
éóïäýíáìï ìå ôï óýíïëï: V → Z, W → Y êáé V Y → W .
186 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

8.1.3 ÅëÜ÷éóôá Óýíïëá Óõíáñôçóéáêþí ÅîáñôÞóåùí


¸íá ÷áñáêôçñéóôéêü ìßáò óõíáñôçóéáêÞò åîÜñôçóçò ïíïìÜæåôáé Üó÷åôï (extra-
neous) áí åßíáé äõíáôüí íá áðáëåéöèåß ÷ùñßò íá áëëÜîåé ç êëåéóôüôçôá ôïõ óõíü-
ëïõ ôùí åîáñôÞóåùí. Óýìöùíá ìå Ýíáí ôõðéêü ïñéóìü, äåäïìÝíçò ôçò åîÜñôçóçò
X → Y ôïõ óõíüëïõ F ïñßæïõìå üôé Ýíá ÷áñáêôçñéóôéêü A åßíáé Üó÷åôï áí:

• A ⊂ X êáé ôï óýíïëï F åßíáé éóïäýíáìï ìå ôï (F − {X → Y }) ∪


{(X − A) → Y }, Þ

• A ⊂ Y êáé ôï óýíïëï (F − {X → Y }) ∪ {X → (Y − A)} åßíáé éóïäýíáìï


ìå ôï F .

¸íá óýíïëï åîáñôÞóåùí F êáëåßôáé åëÜ÷éóôï (minimal) Þ áíÜãùãï (irre-


ducible) áí éó÷ýïõí ïé åîÞò óõíèÞêåò:

• ÊÜèå óõíáñôçóéáêÞ åîÜñôçóç ôïõ F Ý÷åé ìüíï Ýíá ÷áñáêôçñéóôéêü óôï


äåîéü ìÝñïò.

• Äåí ìðïñïýìå íá áíôéêáôáóôÞóïõìå ìßá åîÜñôçóç X → Y ìå ìßá Üëëç


åîÜñôçóç Z → Y üðïõ ôï Z ⊂ X (äçëáäÞ ôï X − Z íá åßíáé Üó÷åôï).

• Äåí ìðïñïýìå íá áöáéñÝóïõìå êÜðïéá óõíáñôçóéáêÞ åîÜñôçóç áðü ôï F


êáé íá óõíå÷ßóåé íá éó÷ýåé ç éóïäõíáìßá ìå ôï óýíïëï F .

¸íá óýíïëï óõíáñôçóéáêþí åîáñôÞóåùí Fmin êáëåßôáé åëÜ÷éóôç êÜëõøç


(minimal cover) Þ êáíïíéêÞ êÜëõøç (canonical cover) ôïõ F üôáí ôï Fmin åßíáé
åëÜ÷éóôï êáé éóïäýíáìï ìå ôï F . ÃåíéêÜ õðÜñ÷ïõí ðïëëÜ óýíïëá óõíáñôçóéáêþí
åîáñôÞóåùí ðïõ áðïôåëïýí åëÜ÷éóôç êÜëõøç ôïõ F . ×ñçóéìïðïéþíôáò ôïí áë-
ãüñéèìï ðïõ ðáñïõóéÜæåôáé óôï Ó÷Þìá 8.5 ìðïñïýìå ðÜíôá íá ðñïóäéïñßóïõìå
ôïõëÜ÷éóôïí ìßá åëÜ÷éóôç êÜëõøç Fmin åíüò óõíüëïõ óõíáñôçóéáêþí åîáñôÞóåùí
F.

8.2 ÊáíïíéêÝò ÌïñöÝò


Óôçí áñ÷Þ ôïõ êåöáëáßïõ áíáöÝñèçêå ç áíÜãêç ôçò êáíïíéêïðïßçóçò ôùí ó÷Ý-
óåùí. Åäþ èá ìåëåôÞóïõìå ôéò äéáöïñåôéêÝò êáíïíéêÝò ìïñöÝò (normal forms)
ðïõ õðÜñ÷ïõí êáé ôç ìåèïäïëïãßá ðïõ áêïëïõèåßôáé ãéá ôç ìåôÜâáóç áðü ìßá
êáíïíéêÞ ìïñöÞ óå Üëëç. Êáèþò ðñï÷ùñÜ ç äéáäéêáóßá ôçò êáíïíéêïðïßçóçò,
ïé ðßíáêåò áðïêôïýí ïëïÝíá êáé ðéï ðåñéïñéóìÝíç ìïñöïðïßçóç, åíþ ðáñÜëëçëá
áðïêôïýí ìåãáëýôåñç áíôï÷Þ óå ðñïâëçìáôéêÝò êáôáóôÜóåéò ðïõ ðñïêýðôïõí áðü
ôéò ìåôáâïëÝò ôùí äåäïìÝíùí ôçò âÜóçò. Ôïíßæåôáé üôé ìüíï ç ðñþôç êáíïíéêÞ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 187

1. Fmin = F .
2. Áíôéêáèéóôïýìå êÜèå åîÜñôçóç X → {A1 , A2 , . . . , An } ôïõ Fmin
ìå ôï óýíïëï ôùí åîáñôÞóåùí {X → A1 , X → A2 , . . . , X → An }.
3. Ãéá êÜèå åîÜñôçóç X → Y ôïõ Fmin
ãéá êÜèå ÷áñáêôçñéóôéêü B ∈ X, áí ôï óýíïëï
(Fmin − {X → Y }) ∪ ({X − B} → Y ) åßíáé éóïäýíáìï
ôïõ Fmin , ôüôå áíôéêáèéóôïýìå ôï X → Y ìå ôï {X − B} → Y
4. Ãéá ôéò õðüëïéðåò åîáñôÞóåéò X → Y ôïõ Fmin ,
áí ôï óýíïëï Fmin − {X → Y }, åßíáé éóïäýíáìï ôïõ Fmin ,
ôüôå äéáãñÜöïõìå ôçí åîÜñôçóç X → Y áðü ôï Fmin .

Ó÷Þìá 8.5: Áëãüñéèìïò åýñåóçò åëÜ÷éóôçò êÜëõøçò óõíüëïõ óõíáñôçóéáêþí


åîáñôÞóåùí.

ìïñöÞ åßíáé êñßóéìç ãéá ôï ó÷åóéáêü ìïíôÝëï, åíþ ïé õðüëïéðåò åßíáé ðñïáéñå-
ôéêÝò. Óôï Ó÷Þìá 8.6 áðåéêïíßæåôáé ç ó÷Ýóç ìåôáîý ôùí êáíïíéêþí ìïñöþí. Áí
Ýíáò ðßíáêáò âñßóêåôáé óå ìßá êáíïíéêÞ ìïñöÞ, ôüôå âñßóêåôáé êáé óå üëåò ôéò
ðñïçãïýìåíåò.
' $
' $
' $
' $
' $
¶ ³
1NF 2NF 3NF BCNF 4NF 5NF
µ ´
& %
& %
& %
& %
& %

Ó÷Þìá 8.6: ÊáíïíéêÝò ìïñöÝò.

Ïé ôñåéò ðñþôåò êáíïíéêÝò ìïñöÝò ðáñïõóéÜóèçêáí óôçí åñãáóßá [Codd 1970],


åíþ ç êáíïíéêÞ ìïñöÞ Boyce-Codd óôçí åñãáóßá [Codd 1972]. Ïé áíþôåñåò êá-
íïíéêÝò ìïñöÝò áíáëýïíôáé óôéò åñãáóßåò [Zaniolo 1976, Fagin 1977, Fagin 1979,
Fagin 1981]. Óôï âéâëßï ôïõ Maier [Maier 1983] ðáñïõóéÜæåôáé áíáëõôéêÜ ç èå-
ùñßá ó÷åäéáóìïý ó÷åóéáêþí ÂÜóåùí ÄåäïìÝíùí.
188 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

8.2.1 Ðñþôç ÊáíïíéêÞ ÌïñöÞ (1NF)


¸íáò ðßíáêáò âñßóêåôáé óôçí ðñþôç êáíïíéêÞ ìïñöÞ áí ç ôéìÞ ðïõ ëáìâÜíåé
êÜèå êåëß ôïõ ðßíáêá åßíáé áôïìéêÞ. ÅðïìÝíùò, ç ðñþôç êáíïíéêÞ ìïñöÞ áðá-
ãïñåýåé ôçí ýðáñîç óôçëþí ìå ÷áñáêôçñéóôéêÜ ðïëëáðëÞò ôéìÞò. ÕðÜñ÷ïõí äýï
ôñüðïé ãéá íá ìåôáó÷çìáôßóïõìå Ýíáí ðßíáêá ìå ÷áñáêôçñéóôéêÜ ðïëëáðëþí ôé-
ìþí óôçí ðñþôç êáíïíéêÞ ìïñöÞ. Ï ðñþôïò ôñüðïò åßíáé íá åðáíáëÜâïõìå ôá
äåäïìÝíá ðïëëÝò öïñÝò, Ýôóé þóôå ï ðßíáêáò ðïõ èá ðñïêýøåé ôåëéêÜ íá ðåñéÝ÷åé
óôá êåëéÜ ôïõ ìüíï áôïìéêÝò ôéìÝò. Ï äåýôåñïò ôñüðïò åßíáé íá ÷ñçóéìïðïéÞóïõìå
Ýíáí îå÷ùñéóôü ðßíáêá ãéá ôá ÷áñáêôçñéóôéêÜ ðïëëáðëþí ôéìþí. Êáé ïé äýï ôñü-
ðïé èåùñïýíôáé óùóôïß, üìùò ï äåýôåñïò ìåéþíåé óçìáíôéêÜ ôïí ðëåïíáóìü ôùí
äåäïìÝíùí. Óå ðåñßðôùóç ÷ñÞóçò ôïõ ðñþôïõ ôñüðïõ, ï ðëåïíáóìüò ôùí äåäïìÝ-
íùí ðïõ èá õðÜñ÷åé ìðïñåß íá åîáëåéöèåß áñãüôåñá, üôáí èá ðñï÷ùñÞóïõìå óå
áíþôåñåò êáíïíéêÝò ìïñöÝò. Ùóôüóï, áí áñêåß ç ðñþôç êáíïíéêÞ ìïñöÞ êáé
åíäéáöåñüìáóôå ãéá ôçí åëá÷éóôïðïßçóç ôïõ ðëåïíáóìïý ôùí äåäïìÝíùí, ôüôå
ðñÝðåé íá ÷ñçóéìïðïéçèåß ï äåýôåñïò ôñüðïò. Óôï Ó÷Þìá 8.2 êáé óôï Ó÷Þìá
8.3 ðáñïõóéÜæåôáé ç ðñþôç êáíïíéêÞ ìïñöÞ ãéá ôïí ðñþôï êáé äåýôåñï ôñüðï
áíôéóôïß÷ùò, üðïõ ôï ÷áñáêôçñéóôéêü ôçëÝöùíï ëáìâÜíåé ðïëëáðëÝò ôéìÝò.
Ãéá ôçí ðáñïõóßáóç ôùí áíþôåñùí êáíïíéêþí ìïñöþí èá ÷ñçóéìïðïéÞóïõìå
Ýíá ðáñÜäåéãìá ìßáò ÂÜóçò ÄåäïìÝíùí ó÷åôéêÜ ìå ôçí ïñãÜíùóç ôùí ìáèçìÜ-
ôùí åíüò ðáíåðéóôçìßïõ. Ï áñ÷éêüò ðßíáêáò êáëåßôáé ÄéÜëåîç êáé ðåñéÝ÷åé ðëç-
ñïöïñßåò ó÷åôéêÜ ìå ôïõò öïéôçôÝò êáé ôá ìáèÞìáôá ðïõ ðáñáêïëïõèïýí. Ôï
ó÷åóéáêü ó÷Þìá Ý÷åé ùò åîÞò:

ÄéÜëåîç (ÁÅÌ, áñéè ìáèÞìáôïò, üíïìá öïéôçôÞ, þñá ìáèÞìáôïò, áñéè êôéñßïõ,
üíïìá êôéñßïõ)

Ç õðïãñÜììéóç óôï ó÷Þìá áõôü õðïäçëþíåé üôé ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá
ÄéÜëåîç åßíáé óýíèåôï êáé áðïôåëåßôáé áðü ôá ÷áñáêôçñéóôéêÜ ÁÅÌ (Áñéèìüò
Åéäéêïý Ìçôñþïõ) êáé áñéè ìáèÞìáôïò. Ôï ðñüâëçìá ðïõ õðÜñ÷åé ìå ôïí ðß-
íáêá åßíáé üôé ÷áñáêôçñéóôéêÜ ðïõ äåí åßíáé êëåéäéÜ åîáñôþíôáé áðü ôìÞìá ôïõ
ðñùôåýïíôïò êëåéäéïý. Áíáëõôéêüôåñá:

• éó÷ýåé ÁÅÌ → üíïìá öïéôçôÞ áëëÜ áñéè ìáèÞìáôïò 9 üíïìá öïéôçôÞ

• éó÷ýåé áñéè ìáèÞìáôïò → þñá ìáèÞìáôïò áëëÜ ÁÅÌ 9 þñá ìáèÞìáôïò

• éó÷ýåé áñéè ìáèÞìáôïò → áñéè êôéñßïõ áëëÜ ÁÅÌ 9 áñéè êôéñßïõ

Åßíáé ðñïöáíÝò üôé ï ðßíáêáò âñßóêåôáé Þäç óå ðñþôç êáíïíéêÞ ìïñöÞ, êáèþò
üëá ôá ÷áñáêôçñéóôéêÜ ëáìâÜíïõí áôïìéêÝò ôéìÝò. Ùóôüóï åìöáíßæïíôáé ìåñéêÜ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 189

ðñïâëÞìáôá, üðùò:
• Ãéá íá ìðïñÝóïõìå íá êáôá÷ùñßóïõìå ôá óôïé÷åßá åíüò öïéôçôÞ èá ðñÝ-
ðåé áõôüò íá ðáñáêïëïõèåß ôïõëÜ÷éóôïí Ýíá ìÜèçìá åðåéäÞ ç ÷ñÞóç êåíÞò
ôéìÞò óôï ÷áñáêôçñéóôéêü áñéè ìáèÞìáôïò áðáãïñåýåôáé êáèþò ôï ÷áñá-
êôçñéóôéêü áõôü óõììåôÝ÷åé óôï ðñùôåýïí êëåéäß ôïõ ðßíáêá.
• Ç þñá åíüò ìáèÞìáôïò êáé ôï êôßñéï üðïõ èá äéåîá÷èåß ôï ìÜèçìá äåí
ìðïñïýí íá êáôá÷ùñéóèïýí áí äåí õðÜñ÷åé Ýóôù êáé Ýíáò öïéôçôÞò ðïõ íá
ðáñáêïëïõèåß ôï ìÜèçìá.
Ãéá ôçí åðßëõóç ôùí ðñïâëçìÜôùí áõôþí ðïõ åìöáíßæïíôáé êáôÜ ôéò åéóáãùãÝò
êáé äéáãñáöÝò ðñÝðåé íá ðñï÷ùñÞóïõìå óå áíþôåñåò êáíïíéêÝò ìïñöÝò.

8.2.2 Äåýôåñç ÊáíïíéêÞ ÌïñöÞ (2NF)


Ç äåýôåñç êáíïíéêÞ ìïñöÞ óôçñßæåôáé óôçí Ýííïéá ôçò ðëÞñïõò óõíáñôçóéáêÞò
åîÜñôçóçò. Ìßá óõíáñôçóéáêÞ åîÜñôçóç X → Y êáëåßôáé ðëÞñçò áí ç äéá-
ãñáöÞ ïðïéïõäÞðïôå ÷áñáêôçñéóôéêïý A áðü ôï óýíïëï X Ý÷åé ùò áðïôÝëåóìá
íá ìçí éó÷ýåé ðëÝïí ç åîÜñôçóç. Áíôéóôïß÷ùò, ç åîÜñôçóç X → Y êáëåßôáé ìå-
ñéêÞ óõíáñôçóéáêÞ åîÜñôçóç üôáí õðÜñ÷åé ôïõëÜ÷éóôïí Ýíá ÷áñáêôçñéóôéêü ôïõ
óõíüëïõ X, ôï ïðïßï áí äéáãñáöåß, ôüôå ç åîÜñôçóç óõíå÷ßæåé íá éó÷ýåé.
¸íáò ðßíáêáò âñßóêåôáé óôç äåýôåñç êáíïíéêÞ ìïñöÞ áí åßíáé óôçí ðñþôç
êáíïíéêÞ ìïñöÞ êáé åðéðëÝïí êÜèå ÷áñáêôçñéóôéêü ðïõ äåí åßíáé êëåéäß åßíáé
ðëÞñùò óõíáñôçóéáêÜ åîáñôþìåíï áðü ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá. Ï ìåôá-
ó÷çìáôéóìüò åíüò ðßíáêá óôç äåýôåñç êáíïíéêÞ ìïñöÞ ðñáãìáôïðïéåßôáé èåùñþ-
íôáò ôéò êáôÜëëçëåò óõíáñôçóéáêÝò åîáñôÞóåéò. Ãéá êÜèå ìåñéêÞ óõíáñôçóéáêÞ
åîÜñôçóç, ëïéðüí, ôá åîáñôþìåíá ÷áñáêôçñéóôéêÜ áöáéñïýíôáé áðü ôïí ðßíáêá
êáé ðñïóáñôþíôáé óå Ýíáí Üëëï ðßíáêá ìáæß ìå ôá ÷áñáêôçñéóôéêÜ áðü ôá ïðïßá
åîáñôþíôáé.
¸íáò ðßíáêáò ðïõ åßíáé Þäç óôçí ðñþôç êáíïíéêÞ ìïñöÞ åßíáé åðßóçò óôç
äåýôåñç êáíïíéêÞ ìïñöÞ üôáí éó÷ýåé ïðïéïäÞðïôå áðü ôá åîÞò:
1. Ôï ðñùôåýïí êëåéäß áðïôåëåßôáé áðü Ýíá êáé ìüíï ÷áñáêôçñéóôéêü.
2. Ï ðßíáêáò äåí Ý÷åé ÷áñáêôçñéóôéêÜ ðïõ äåí áðïôåëïýí êëåéäß.
3. ÊÜèå ÷áñáêôçñéóôéêü ðïõ äåí åßíáé êëåéäß åßíáé óõíáñôçóéáêÜ åîáñôþìåíï
áðü ôï óýíïëï ôùí ÷áñáêôçñéóôéêþí ðïõ áðïôåëïýí ôï ðñùôåýïí êëåéäß.
Óýìöùíá ìå ôá áíùôÝñù, áíôß ôïõ ðßíáêá ÄéÜëåîç ìðïñïýìå íá ÷ñçóéìïðïéÞ-
óïõìå ôïõò åîÞò ðßíáêåò ðïõ âñßóêïíôáé óôç äåýôåñç êáíïíéêÞ ìïñöÞ:
190 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

ÖïéôçôÞò (ÁÅÌ, üíïìá öïéôçôÞ)


ÔÜîç (áñéè ìáèÞìáôïò, þñá ìáèÞìáôïò, áñéè êôéñßïõ, üíïìá êôéñßïõ)
ÖïéôçôÞò ÔÜîç (ÁÅÌ, áñéè ìáèÞìáôïò)

Åßíáé ðñïöáíÝò üôé ïé ðßíáêåò âñßóêïíôáé óôç äåýôåñç êáíïíéêÞ ìïñöÞ óýì-
öùíá ìå ôá üóá áíáöÝñèçêáí ðñïçãïõìÝíùò. Ôï ðñùôåýïí êëåéäß ôùí ðéíÜêùí
ÖïéôçôÞò êáé ÔÜîç áðïôåëåßôáé ìüíï áðü Ýíá ÷áñáêôçñéóôéêü, åíþ ï ðßíáêáò Öïé-
ôçôÞò ÔÜîç ðåñéÝ÷åé äýï ÷áñáêôçñéóôéêÜ ðïõ áðïôåëïýí áðü êïéíïý ôï ðñùôåýïí
êëåéäß ôïõ ðßíáêá. ×ñçóéìïðïéþíôáò ôïõò ôñåéò íÝïõò ðßíáêåò áíôß ôïõ ðßíáêá
ÄéÜëåîç Ý÷ïõìå ôá åîÞò ðëåïíåêôÞìáôá:

• Ôá äåäïìÝíá ðïõ áöïñïýí óôïõò öïéôçôÝò ìðïñïýí íá êáôá÷ùñéóèïýí óôïí


ðßíáêá ÖïéôçôÞò ÷ùñßò íá åßíáé áðáñáßôçôç ç åããñáöÞ ôïõò óå êÜðïéï
ìÜèçìá.

• Ôá äåäïìÝíá ðïõ áöïñïýí óå ìßá ôÜîç ìðïñïýí íá êáôá÷ùñéóèïýí óôïí


ðßíáêá ÔÜîç ÷ùñßò íá áðáéôåßôáé ç ýðáñîç öïéôçôþí ãéá ôçí ôÜîç áõôÞ.

• Ç äéáãñáöÞ üëùí ôùí öïéôçôþí ìßáò ôÜîçò äåí óõíåðÜãåôáé ôç äéáãñáöÞ


ôùí äåäïìÝíùí ôùí öïéôçôþí Þ ôùí ôÜîåùí.

• Ç äéáãñáöÞ ôùí äåäïìÝíùí ìßáò ôÜîçò äåí åðéöÝñåé ôç äéáãñáöÞ ôùí äå-
äïìÝíùí ôùí öïéôçôþí.

Áí êáé ç äåýôåñç êáíïíéêÞ ìïñöÞ ðåñéïñßæåé óçìáíôéêÜ ôïí ðëåïíáóìü ôùí


äåäïìÝíùí, åíôïýôïéò äåí ôïí åîáëåßöåé åíôåëþò. ÐáñáôçñÞóôå üôé ç ïíïìáóßá
ôïõ êôéñßïõ ðïõ áðïèçêåýåôáé óôï ÷áñáêôçñéóôéêü üíïìá êôéñßïõ åðáíáëáìâÜíå-
ôáé êÜèå öïñÜ ðïõ Ýíá ìÜèçìá äéåîÜãåôáé óôï óõãêåêñéìÝíï êôßñéï. ÏðïéáäÞðïôå
áëëáãÞ ôçò ïíïìáóßáò ôïõ êôéñßïõ ðñÝðåé íá ðñáãìáôïðïéçèåß óå ðïëëÝò ãñáììÝò
ôïõ ðßíáêá ÔÜîç.

8.2.3 Ôñßôç ÊáíïíéêÞ ÌïñöÞ (3NF)


Ãéá ôçí êáôÜñãçóç ôïõ ðëåïíáóìïý ðïõ åìöáíßæåôáé óôïí ðßíáêá ÔÜîç èá ðñÝðåé
íá ðñï÷ùñÞóïõìå óôçí ôñßôç êáíïíéêÞ ìïñöÞ. Ç ôñßôç êáíïíéêÞ ìïñöÞ êáôáñãåß
ôïí ðëåïíáóìü ðïõ ïöåßëåôáé óå ìåôáâáôéêÝò åîáñôÞóåéò (transitive dependen-
cies). ¸óôùóáí ïé åîáñôÞóåéò X → Y êáé Y → Z, üðïõ ôï óýíïëï Y äåí
áðïôåëåß ðñùôåýïí êëåéäß ïýôå õðïóýíïëï ôïõ ðñùôåýïíôïò êëåéäéïý. Óå ìßá ôÝ-
ôïéá ðåñßðôùóç ôï óýíïëï Z åßíáé ìåôáâáôéêþò åîáñôþìåíï áðü ôï X, ëüãù ôçò
ìåôáâáôéêÞò éäéüôçôáò ðïõ éó÷ýåé óôéò óõíáñôçóéáêÝò åîáñôÞóåéò. ¸íáò ðßíáêáò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 191

âñßóêåôáé óôçí ôñßôç êáíïíéêÞ ìïñöÞ üôáí êÜèå ÷áñáêôçñéóôéêü ðïõ äåí áðïôå-
ëåß ìÝñïò ôïõ ðñùôåýïíôïò êëåéäéïý äåí åßíáé ìåôáâáôéêþò åîáñôþìåíï áðü ôï
ðñùôåýïí êëåéäß ôïõ ðßíáêá.
Ïé óõíáñôçóéáêÝò åîáñôÞóåéò ðïõ éó÷ýïõí ãéá ôï ó÷Þìá ôçò âÜóçò üðùò Ý÷åé
äéáìïñöùèåß óôç äåýôåñç êáíïíéêÞ ìïñöÞ åßíáé ïé åîÞò:

ÁÅÌ → üíïìá öïéôçôÞ


áñéè ìáèÞìáôïò → þñá ìáèÞìáôïò
áñéè ìáèÞìáôïò → üíïìá êôéñßïõ
áñéè ìáèÞìáôïò → áñéè êôéñßïõ
áñéè êôéñßïõ → üíïìá êôéñßïõ

ÐáñáôçñÞóôå üôé ïé äýï ôåëåõôáßåò åîáñôÞóåéò ïñßæïõí üôé ôï ÷áñáêôçñéóôéêü


üíïìá êôéñßïõ åßíáé ìåôáâáôéêþò åîáñôþìåíï áðü ôï ÷áñáêôçñéóôéêü áñéè ìáèÞ-
ìáôïò ìÝóù ôïõ ÷áñáêôçñéóôéêïý áñéè êôéñßïõ. Åäþ áêñéâþò ïöåßëåôáé ôï ðñü-
âëçìá ôïõ ðëåïíáóìïý äåäïìÝíùí. Ç ôñßôç êáíïíéêÞ ìïñöÞ êáôáñãåß ôéò ìåôá-
âáôéêÝò åîáñôÞóåéò äçìéïõñãþíôáò Ýíáí îå÷ùñéóôü ðßíáêá ãéá êÜèå ìåôáâáôéêÞ
åîÜñôçóç ðïõ õðÜñ÷åé. ¸ôóé, ôï íÝï ó÷Þìá ôçò âÜóçò ðïõ ðñïêýðôåé åßíáé ôï
åîÞò:

ÖïéôçôÞò (ÁÅÌ, üíïìá öïéôçôÞ)


ÔÜîç (áñéè ìáèÞìáôïò, þñá ìáèÞìáôïò, áñéè êôéñßïõ)
Êôßñéï (áñéè êôéñßïõ, üíïìá êôéñßïõ)
ÖïéôçôÞò ÔÜîç (ÁÅÌ, áñéè ìáèÞìáôïò)

8.2.4 ÊáíïíéêÞ ÌïñöÞ Boyce-Codd (BCNF)


Ç äåýôåñç êáé ç ôñßôç êáíïíéêÞ ìïñöÞ üðùò ïñßóèçêáí ðñïçãïõìÝíùò êáôáñãïýí
óå ðïëý ìåãÜëï âáèìü ôïí ðëåïíáóìü äåäïìÝíùí. Ï ïñéóìüò ôïõò âáóßóèçêå óôï
ðñùôåýïí êëåéäß ôïõ ðßíáêá. Ç êáíïíéêÞ ìïñöÞ Boyce-Codd ðñï÷ùñÜ Ýíá âÞìá
ðåñéóóüôåñï åðéâÜëëïíôáò óå êÜèå åîÜñôçóç X → Y ôï óýíïëï X íá áðïôåëåß
åßôå ðñùôåýïí êëåéäß åßôå åíáëëáêôéêü êëåéäß ãéá ôïí ðßíáêá. ÅðïìÝíùò, ãéá
íá ðñïóäéïñßóïõìå áí Ýíáò ðßíáêáò âñßóêåôáé óôçí êáíïíéêÞ ìïñöÞ Boyce-Codd
áñêåß íá åîåôÜóïõìå üëåò ôéò óõíáñôçóéáêÝò åîáñôÞóåéò X → Y åëÝã÷ïíôáò áí ôï
X áðïôåëåß êÜðïéï êëåéäß (ðñùôåýïí Þ åíáëëáêôéêü) ôïõ ðßíáêá. Óå äéáöïñåôéêÞ
ðåñßðôùóç èá ðñÝðåé íá ðñï÷ùñÞóïõìå óå äéÜóðáóç ôïõ ðßíáêá Ýôóé þóôå íá
éêáíïðïéçèåß ç óõíèÞêç ôçò êáíïíéêÞò ìïñöÞò Boyce-Codd.
Óýìöùíá ìå ôïí ðñïçãïýìåíï ïñéóìü ôï ó÷Þìá ôçò âÜóçò ÖïéôçôÞò, ÔÜîç,
Êôßñéï êáé ÖïéôçôÞò ÔÜîç âñßóêåôáé Þäç óôçí êáíïíéêÞ ìïñöÞ Boyce-Codd. Áò
192 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

åîåôÜóïõìå Ýíá Üëëï ðáñÜäåéãìá ðßíáêá ðïõ äåí éêáíïðïéåß ôçí êáíïíéêÞ ìïñöÞ
Boyce-Codd. ¸óôù, ëïéðüí, ôï åðüìåíï ó÷Þìá:

R(üíïìá öïéôçôÞ, áñéè ìáèÞìáôïò, äéäÜóêùí)

üðïõ õðïèÝôïõìå üôé êÜèå äéäÜóêùí äéäÜóêåé ìüíï Ýíá ìÜèçìá, áëëÜ Ýíá ìÜèçìá
ìðïñåß íá äéäá÷èåß áðü ðåñéóóüôåñïõò ôïõ åíüò äéäÜóêïíôåò, åíþ áêüìç óå êÜèå
ìÜèçìá Ýíáò öïéôçôÞò ðáñáêïëïõèåß ôéò äéáëÝîåéò åíüò ìüíï äéäÜóêïíôá. ¸ôóé
ðñïêýðôåé üôé éó÷ýåé ç óõíáñôçóéáêÞ åîÜñôçóç üíïìá öïéôçôÞ, áñéè ìáèÞìáôïò
→ äéäÜóêùí, üðïõ ôï áñéóôåñü óêÝëïò ôçò åîÜñôçóçò åßíáé ôï êëåéäß ôçò ó÷Ýóçò.
ÓçìáóéïëïãéêÜ ðáñáôçñïýìå üôé éó÷ýåé êáé ç åîÜñôçóç äéäÜóêùí → áñéè ìá-
èÞìáôïò, üðïõ ôï áñéóôåñü óêÝëïò äåí åßíáé êëåéäß (ðñùôåýïí Þ åíáëëáêôéêü).
¢ñá, ï ðßíáêáò äåí âñßóêåôáé óôçí êáíïíéêÞ ìïñöÞ Boyce-Codd áí êáé âñßóêå-
ôáé óôçí ôñßôç êáíïíéêÞ ìïñöÞ. ¸ôóé êáé óôçí ðåñßðôùóç áõôÞ ðñÝðåé íá áíôéìå-
ôùðßóïõìå ôá ãíùóôÜ ðñïâëÞìáôá ôùí áíùìáëéþí êáôÜ ôçí åéóáãùãÞ, äéáãñáöÞ
êáé åíçìÝñùóç ôùí äåäïìÝíùí. Ãéá ðáñÜäåéãìá, áí èÝëïõìå íá äéáãñÜøïõìå
ôçí ðëçñïöïñßá üôé Ýíáò öïéôçôÞò ðáñáêïëïõèåß Ýíá ìÜèçìá, ôüôå èá áðùëÝ-
óïõìå êáé ôçí ðëçñïöïñßá üôé ï áíôßóôïé÷ïò äéäÜóêùí äéäÜóêåé ôï óõãêåêñéìÝíï
ìÜèçìá. Ïìïßùò, ãéá íá åéóáãÜãïõìå ôçí ðëçñïöïñßá üôé Ýíáò äéäÜóêùí äéäÜ-
óêåé êÜðïéï ìÜèçìá, èá ðñÝðåé ïðùóäÞðïôå íá åéóá÷èåß êáé ç ðëçñïöïñßá åíüò
ôïõëÜ÷éóôïí öïéôçôÞ. Óõíåðþò, ðñÝðåé ï ðßíáêáò R íá äéáóðáóèåß óå äýï ðßíá-
êåò. Ïé åíáëëáêôéêÝò ëýóåéò ãéá ôç äéÜóðáóç ôïõ ðßíáêá R åßíáé ïé åîÞò ôñåéò:

R1(üíïìá öïéôçôÞ, áñéè ìáèÞìáôïò) R2(üíïìá öïéôçôÞ, äéäÜóêùí)


R1(áñéè ìáèÞìáôïò, üíïìá öïéôçôÞ) R2(áñéè ìáèÞìáôïò, äéäÜóêùí)
R1(äéäÜóêùí, áñéè ìáèÞìáôïò) R2(äéäÜóêùí, üíïìá öïéôçôÞ)

Êáé ïé ôñåéò äéáóðÜóåéò ðÜó÷ïõí áðü ôï ßäéï ðñüâëçìá, äçëáäÞ ÷Üíïõí ôçí
åîÜñôçóç üíïìá öïéôçôÞ, áñéè ìáèÞìáôïò → äéäÜóêùí. Ç êáëýôåñç áðü ôéò ôñåéò
åíáëëáêôéêÝò ëýóåéò åßíáé ç ôñßôç ãéáôß ëüãïõò ðïõ èá åîçãçèïýí áìÝóùò óôçí
åðüìåíç ðáñÜãñáöï.

8.2.5 Ó÷Þìáôá ×ùñßò Áðþëåéåò


Åßíáé äõíáôüí êáôÜ ôç äéÜóðáóç åíüò ðßíáêá óå äýï áðëïýóôåñïõò íá ÷áèåß
ðëçñïöïñßá. Áõôü ìðïñåß íá äéáðéóôùèåß ìüíï áí ïé äýï áðëïýóôåñïé ðßíáêåò
óõíäõáóèïýí þóôå íá ðáñá÷èåß ç áñ÷éêÞ óýíäåóç. Ãéá ðáñÜäåéãìá, Ýóôù ï ðßíá-
êáò R(X, Y, Z) ôïõ Ó÷Þìáôïò 8.7, ï ïðïßïò äéáóðÜôáé óå äýï ðßíáêåò R1(X, Y )
êáé R2(Y, Z).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 193

X Y Z X Y
Y Z
x1 y1 z1 x1 y1
y1 z1
x2 y1 z1 x2 y1
y1 z2
x3 y1 z2 x3 y1

Ó÷Þìá 8.7: Áñ÷éêÞ ó÷Ýóç êáé äýï ðáñáãüìåíåò.

Áí ôþñá ëÜâïõìå ôç öõóéêÞ óýíäåóç ôùí äýï ó÷Ýóåùí R1 êáé R2, ôüôå äåí
èá ðñïêýøåé ç áñ÷éêÞ óýíäåóç ó÷Ýóç áëëÜ ìßá ó÷Ýóç ìå åðéðëÝïí ðëåéÜäåò áðü
ôçí áñ÷éêÞ (ïé ôñåéò ôåëåõôáßåò ðëåéÜäåò óôïí ðßíáêá ôïõ Ó÷Þìáôïò 8.8). Ôï
ãåãïíüò üôé åìöáíßæïíôáé åðéðëÝïí ðëåéÜäåò äåí óçìáßíåé êÝñäïò áëëÜ áðþëåéá
ðëçñïöïñßáò. ÅðïìÝíùò ðñÝðåé íá õðÜñîåé ôñüðïò åëÝã÷ïõ áí ìßá äéÜóðáóç
åíüò ðßíáêá óå äýï Þ áðëïýóôåñïõò ðßíáêåò åðéôõã÷Üíåôáé ÷ùñßò áðþëåéåò. Óå
ìßá ôÝôïéá ðåñßðôùóç ëÝãåôáé üôé ðñïêýðôïõí ó÷Þìáôá ÷ùñßò áðþëåéåò (lossless
schemas) Þ üôé Ý÷ïõìå ìßá äéÜóðáóç ÷ùñßò áðþëåéåò êáôÜ ôç óýíäåóç (lossless-
join decomposition).

X Y Z
x1 y1 z1
x2 y1 z1
x3 y1 z2
x1 y1 z2
x2 y1 z2
x3 y1 z1

Ó÷Þìá 8.8: ÁðïôÝëåóìá öõóéêÞò óýíäåóçò áðü ôéò äýï ðáñáãüìåíåò.

Ç ìÝèïäïò ðïõ èá ðáñïõóéÜóïõìå óôç óõíÝ÷åéá åöáñìüæåôáé óôçí ðåñßðôùóç


üðïõ ï áñ÷éêüò ðßíáêáò R äéáóðÜôáé óå äýï áðëïýóôåñïõò R1 êáé R2, åíþ
áðáñáéôÞôùò ðñÝðåé íá äßíåôáé ôï óýíïëï F ôùí óõíáñôçóéáêþí åîáñôÞóåùí ðïõ
éó÷ýïõí. Ç äéÜóðáóç åßíáé ÷ùñßò áðþëåéåò áí ôïõëÜ÷éóôïí ìßá áðü ôéò åðüìåíåò
äýï óõíáñôçóéáêÝò åîáñôÞóåéò áíÞêåé óôçí êëåéóôüôçôá F + :
• R1 ∩ R2 → R1 − R2
• R1 ∩ R2 → R2 − R1
Áí ãéá ôï ðñïçãïýìåíï ðáñÜäåéãìá éó÷ýåé üôé ôï óýíïëï ôùí óõíáñôçóéáêþí
åîáñôÞóåùí F åßíáé: X → Y , ôüôå åöáñìüæïíôáò ôéò áíùôÝñù ó÷Ýóåéò ðñïêýðôåé:
194 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

• XY ∩ Y Z → XY − Y Z ⇒ Y → X

• XY ∩ Y Z → Y Z − XY ⇒ Y → Z

Ùóôüóï, êáìßá áðü ôéò äýï áõôÝò åîáñôÞóåéò äåí áíÞêåé óôçí êëåéóôüôçôá F +
êáé óõíåðþò ôá ðáñáãüìåíá ó÷Þìáôá Ý÷ïõí áðþëåéåò. Ìðïñåß íá áðïäåé÷èåß ìå
âÜóç ôç ìÝèïäï áõôÞ üôé óùóôÞ äéÜóðáóç åßíáé ç åîÞò: R1(X, Y ) êáé R2(X, Z).
Áí ï áñ÷éêüò ðßíáêáò R, ãéá ôïí ïðïßï éó÷ýåé Ýíá óýíïëï åîáñôÞóåùí F ,
Ý÷åé äéáóðáóèåß óå k > 2 õðïðßíáêåò, R1 , R2 , . . . , Rk , ôüôå ÷ñçóéìïðïéåßôáé ç
ëåãüìåíç ìÝèïäïò ôïõ tableau ãéá íá äéáðéóôùèåß áí ç äéÜóðáóç Ý÷åé ãßíåé ÷ùñßò
áðþëåéåò [Aho 1979b]. Äçìéïõñãïýìå Ýíá äéóäéÜóôáôï ðßíáêá (ôáìðëþ), üðïõ ïé
óôÞëåò áíôéóôïé÷ïýí óôï óýíïëï ôùí ÷áñáêôçñéóôéêþí A1 , A2 , . . . , An ôçò ó÷Ýóçò
R, åíþ ïé ãñáììÝò áíôéóôïé÷ïýí óôéò ó÷Ýóåéò R1 , R2 , . . . , Rk . H èÝóç (i, j) ôïõ
ôáìðëþ ëáìâÜíåé ôçí ôéìÞ aj áí ôï ÷áñáêôçñéóôéêü Aj áíÞêåé óôç ó÷Ýóç Ri ,
áëëéþò ëáìâÜíåé ôçí ôéìÞ bij . Óôç óõíÝ÷åéá èåùñïýìå êõêëéêÜ ìßá-ðñïò-ìßá üëåò
ôéò åîáñôÞóåéò ìÝ÷ñé íá ìç ìðïñïýí íá ãßíïõí áëëáãÝò óôá ðåñéå÷üìåíá ôïõ
ôáìðëþ. ÄåäïìÝíçò ìßáò åîÜñôçóçò X → Y , áí ôáõôßæïíôáé ïé ôéìÝò óå êÜðïéá
êåëéÜ ôçò óôÞëçò X, ôüôå èá ðñÝðåé íá ôáõôßæïíôáé êáé ïé ôéìÝò ôùí áíôßóôïé÷ùí
êåëéþí óôç óôÞëç Y . ¸ôóé ðñïóðáèïýìå íá áíôéêáôáóôÞóïõìå ôéò ôéìÝò ôùí bij
ìå ai . Áí óôï ôÝëïò ôçò äéáäéêáóßáò õðÜñ÷åé Ýóôù êáé ìßá ãñáììÞ üðïõ üëá ôá
êåëéÜ Ý÷ïõí ôéìÝò aj (ãéá 1 ≤ j ≤ n), ôüôå ç äéÜóðáóç Ý÷åé ãßíåé ÷ùñßò áðþëåéåò.
Ãéá ðáñÜäåéãìá, Ýóôù ç ó÷Ýóç R(X, Y, Z, W ) êáé ôï óýíïëï ôùí åîáñôÞ-
óåùí F : X → Z, Y → Z, Z → W . Ç ó÷Ýóç R äéáóðÜôáé óôéò ó÷Ýóåéò:
R1(X, Y ), R2(Y, W ), R3(X, Y, Z). Ôï ôáìðëþ ðïõ ðñïêýðôåé óýìöùíá ìå ôçí

X Y Z W X Y Z W
R1(X, Y ) a1 a2 b13 b14 R1(X, Y ) a1 a2 a3 b14
R2(Y, W ) b21 a2 b23 a4 R2(Y, W ) b21 a2 b23 a4
R3(X, Y, Z) a1 a2 a3 b34 R3(X, Y, Z) a1 a2 a3 b34
(á) (â)

X Y Z W X Y Z W
R1(X, Y ) a1 a2 a3 b14 R1(X, Y ) a1 a2 a3 a4
R2(Y, W ) b21 a2 a3 a4 R2(Y, W ) b21 a2 a3 a4
R3(X, Y, Z) a1 a2 a3 b34 R3(X, Y, Z) a1 a2 a3 a4
(ã) (ä)

Ó÷Þìá 8.9: Äéáäéêáóßá ìåôáó÷çìáôéóìïý ôáìðëþ.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 195

ðñïçãïýìåíç äéáäéêáóßá áðåéêïíßæåôáé óôï óôéãìéüôõðï ôïõ Ó÷Þìáôïò 8.9á. Èå-


ùñïýìå ôçí åîÜñôçóç X → Z. Åö’ üóïí óôç óôÞëç X õðÜñ÷åé ôáýôéóç ôéìþí óôï
ðñþôï êáé óôï ôñßôï êåëß, ðñÝðåé íá õðÜñîåé ôáýôéóç ôéìþí êáé óôá áíôßóôïé÷á
êåëéÜ ôçò óôÞëçò Y . ¸ôóé ðñïêýðôåé ôï óôéãìéüôõðï ôïõ Ó÷Þìáôïò 8.9â. Óôç
óõíÝ÷åéá èåùñïýìå ôçí åîÜñôçóç Y → Z. Åö’ üóïí õðÜñ÷åé ôáýôéóç ôéìþí óå
üëá ôá êåëéÜ ôçò óôÞëçò Y , èá ðñÝðåé íá õðÜñ÷åé áíôéóôïß÷ùò ôáýôéóç óå üëá ôá
êåëéÜ ôçò óôÞëçò Z. ¸ôóé ðñïêýðôåé ôï óôéãìéüôõðï ôïõ Ó÷Þìáôïò 8.9ã. ÔÝëïò,
èåùñïýìå ôçí åîÜñôçóç Z → W . Åö’ üóïí õðÜñ÷åé ôáýôéóç ôéìþí óå üëá ôá
êåëéÜ ôçò óôÞëçò Z, èá ðñÝðåé íá õðÜñ÷åé áíôéóôïß÷ùò ôáýôéóç óå üëá ôá êåëéÜ
ôçò óôÞëçò W , ïðüôå ðñïêýðôåé ôï óôéãìéüôõðï ôïõ Ó÷Þìáôïò 8.9ä. Óôï óôéãìéü-
ôõðï áõôü ðáñáôçñïýìå üôé ç ðñþôç êáé ç ôñßôç ãñáììÞ ðåñéÝ÷ïõí ìüíï ôéìÝò aj ,
åðïìÝíùò ç äéÜóðáóç åßíáé ÷ùñßò áðþëåéåò.

8.3 Áíþôåñåò ÊáíïíéêÝò ÌïñöÝò


Áí êáé ç êáíïíéêïðïßçóç ìÝ÷ñé ôïí ôýðï Boyce-Codd ëýíåé ðïëëÜ ðñïâëÞìáôá
ðïõ áíáöýïíôáé üôáí õðÜñ÷ïõí ðåñéôôÜ äåäïìÝíá, ùóôüóï áíáöÝñïíôáé êáé áíþ-
ôåñåò ìïñöÝò êáíïíéêïðïßçóçò óôéò ïðïßåò ðñï÷ùñïýìå ãéáôß ðñÝðåé íá åðéëý-
óïõìå ðñïâëÞìáôá ðïõ ðñïêýðôïõí áðü åîáñôÞóåéò, ðïõ äåí åßíáé óõíáñôç-
óéáêÝò. Áíáëõôéêüôåñç ðáñïõóßáóç ó÷åôéêÜ ìå ôéò áíþôåñåò êáíïíéêÝò ìïñöÝò
ìðïñåß íá âñåèåß óôï âéâëßï [Teorey 1994].

8.3.1 Ðëåéïíüôéìåò ÅîáñôÞóåéò


Óõ÷íÜ óôçí ðñÜîç óõíáíôþíôáé óýíèåôåò ðåñéðôþóåéò ðïõ äåí ìðïñïýí íá ìïíôå-
ëïðïéçèïýí ìå ôç âïÞèåéá ôùí óõíáñôçóéáêþí åîáñôÞóåùí. ¸íá ôÝôïéï ðáñÜ-
äåéãìá åßíáé ôá ðáéäéÜ åíüò ðáôÝñá (ìßáò ìçôÝñáò) Þ ôá ìáèÞìáôá ðïõ ðñïóöÝ-
ñåé Ýíá ôìÞìá. Ðñïöáíþò ãéá ôéò ðåñéðôþóåéò áõôÝò äåí éó÷ýåé ç óõíáñôçóéáêÞ
åîÜñôçóç ðáôÝñáò → ðáéäß, ïýôå ôìÞìá → ìÜèçìá. Ùóôüóï õðÜñ÷åé ìßá åããåíÞò
åîÜñôçóç, ðïõ ïíïìÜæïõìå ðëåéïíüôéìç (multivalued) êáé áðåéêïíßæïõìå ìå äé-
ðëü âÝëïò, äçëáäÞ ðáôÝñáò ³ ðáéäß. Óýìöùíá ìå Ýíáí ôõðéêü ïñéóìü, äïèåßóçò
ôçò ó÷Ýóçò R êáé ôñéþí áõèáßñåôùí óõíüëùí ÷áñáêôçñéóôéêþí A, B, C (õðïóõ-
íüëùí ôïõ R), ëÝãåôáé üôé éó÷ýåé A ³ B áí êáé ìüíï áí ôï óýíïëï ôùí ôéìþí
ðïõ ëáìâÜíåé ôï óýíïëï ÷áñáêôçñéóôéêþí B åîáñôÜôáé áðü ôçí ôéìÞ ôïõ óõíü-
ëïõ ÷áñáêôçñéóôéêþí A êáé ü÷é ôïõ óõíüëïõ ÷áñáêôçñéóôéêþí C. ÌÜëéóôá Ý÷åé
áðïäåé÷èåß üôé óôçí ðåñßðôùóç áõôÞ éó÷ýåé êáé ç åîÜñôçóç A ³ C [Fagin 1977].
Ôï ðñüâëçìá, ëïéðüí, ðñïêýðôåé áðü ôç óôéãìÞ ðïõ ç ðñþôç êáíïíéêÞ ìïñöÞ
äåí åðéôñÝðåé óå Ýíá ÷áñáêôçñéóôéêü íá ëáìâÜíåé ðïëëáðëÝò ôéìÝò (ìç áôïìéêÝò).
Óõíåðþò, ÷ñåéáæüìáóôå Ýíá íÝï èåùñçôéêü ðëáßóéï ãéá ôçí áíôéìåôþðéóç ôùí
ðëåéïíüôéìùí åîáñôÞóåùí. ¼ðùò êáé óôéò óõíáñôçóéáêÝò åîáñôÞóåéò, Ýôóé êáé
196 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

óôéò ðëåéïíüôéìåò éó÷ýåé Ýíá óýíïëï êáíüíùí ãéá ôçí ðáñáãùãÞ íÝùí ðëåéïíüôé-
ìùí åîáñôÞóåùí. ¸ôóé, áíáöÝñïíôáé ïé åîÞò êáíüíåò:

1. áíáêëáóôéêüò êáíüíáò (reflexive rule): éó÷ýåé X ³ X.

2. åðáõîçôéêüò êáíüíáò (augmentation rule): áí X ³ Y êáé Z ⊆ W ôüôå


W X ³ Y Z.

3. ìåôáâáôéêüò êáíüíáò (transitive rule): áí X ³ Y êáé Y ³ Z ôüôå X ³


Z −Y.

4. êáíüíáò äéÜóðáóçò (decomposition rule): áí X ³ Y êáé X ³ Z ôüôå


X ³ Y ∩ Z êáé X ³ Y − Z êáé X ³ Z − Y .

5. êáíüíáò Ýíùóçò (union rule): áí X ³ Y êáé X ³ Z ôüôå X ³ Y Z.

6. øåõäï-ìåôáâáôéêüò êáíüíáò (pseudotransitive rule): áí X ³ Y êáé W Y ³


Z ôüôå W X ³ Z − (Y W ).

7. óõìðëçñùìáôéêüò êáíüíáò (complementation rule): áí X ³ Y ôüôå X →


R − (XY ).

8. óõãêïëëçôéêüò êáíüíáò (coalescence rule): áí X ³ Y , Z ⊆ Y êáé õðÜñ÷åé


êÜðïéï ÷áñáêôçñéóôéêü W ôÝôïéï þóôå W ∩ Y = ∅ êáé W → Z, ôüôå
X → Z.

9. áíôéãñáöéêüò êáíüíáò (replication rule): áí X → Y ôüôå X ³ Y .

Ðáñáôçñïýìå üôé ðïëëïß áðü áõôïýò ôïõò êáíüíåò áðïôåëïýí Üìåóç ìåôáöïñÜ
áðü ôçí ðåñßðôùóç ôùí óõíáñôçóéáêþí åîáñôÞóåùí. Ùóôüóï, õðÜñ÷ïõí êáé ðïë-
ëïß äéáöïñåôéêïß êáíüíåò. Åðßóçò, èåùñïýíôáé ôåôñéììÝíïé ï áíáêëáóôéêüò, ï
óõãêïëëçôéêüò êáé ï óõìðëçñùìáôéêüò êáíüíáò.

8.3.2 ÔÝôáñôç ÊáíïíéêÞ ÌïñöÞ (4NF)


ÈåùñÞóôå ôïí ðßíáêá Ðñïóüíôá ôïõ Ó÷Þìáôïò 8.10, ï ïðïßïò áðåéêïíßæåé Ýíá óôéã-
ìéüôõðï ìå ôá ÷áñáêôçñéóôéêÜ êùäéêüò åñãáæïìÝíïõ, ãëþóóá ðñïãñáììáôéóìïý
êáé îÝíç ãëþóóá. Ðáñáôçñïýìå üôé ï ðßíáêáò áõôüò óõíäõÜæåé äýï äéáöïñåôéêÜ
óýíïëá óõó÷åôßóåùí Ýíá-ðñïò-ðïëëÜ, áöïý áðïèçêåýåé ðëçñïöïñßåò ó÷åôéêÜ ìå
ôïõò åñãáæüìåíïõò êáé ôéò ãëþóóåò ðñïãñáììáôéóìïý ðïõ ÷ñçóéìïðïéïýí (óõì-
âïëßæåôáé ìå êùäéêüò åñãáæïìÝíïõ ³ ãëþóóá ðñïãñáììáôéóìïý), êáèþò åðßóçò
êáé ðëçñïöïñßåò ó÷åôéêÜ ìå ôïõò åñãáæïìÝíïõò êáé ôéò îÝíåò ãëþóóåò ðïõ ïìéëïýí
(êùäéêüò åñãáæïìÝíïõ ³ îÝíç ãëþóóá). ÅðåéäÞ äåí õðÜñ÷åé óõó÷Ýôéóç ìåôáîý
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 197

êùäéêüò ãëþóóåò
åñãáæüìåíïõ ðñïãñáììáôéóìïý îÝíåò ãëþóóåò
1 C ÁããëéêÜ
1 C++ ÁããëéêÜ
1 C ÃáëëéêÜ
1 C++ ÃáëëéêÜ
2 Pascal ÉôáëéêÜ
2 Fortran ÉôáëéêÜ
3 Ada ÁããëéêÜ
3 Java ÁããëéêÜ
3 Cobol ÁããëéêÜ
3 C++ ÁããëéêÜ

Ó÷Þìá 8.10: Óôéãìéüôõðï ðßíáêá Ðñïóüíôá ìå ðëåéïíüôéìåò åîáñôÞóåéò.

ôùí ãëùóóþí ðñïãñáììáôéóìïý êáé ôùí îÝíùí ãëùóóþí, èá ðñÝðåé íá áðïèç-


êåýóïõìå üëïõò ôïõò äõíáôïýò óõíäõáóìïýò ãéá êÜèå åñãáæüìåíï.
Ç ôÝôáñôç êáíïíéêÞ ìïñöÞ êáôáñãåß ôéò ðëåéïíüôéìåò åîáñôÞóåéò. ¸íáò ðßíá-
êáò âñßóêåôáé óôçí ôÝôáñôç êáíïíéêÞ ìïñöÞ üôáí âñßóêåôáé óôçí êáíïíéêÞ ìïñöÞ
Boyce-Codd êáé åðéðëÝïí äåí ðåñéÝ÷åé ðëåéïíüôéìåò åîáñôÞóåéò. Ãéá ôï ìåôáó÷ç-
ìáôéóìü åíüò ðßíáêá óôçí ôÝôáñôç êáíïíéêÞ ìïñöÞ èá ðñÝðåé íá êáôáóêåõáóèåß
îå÷ùñéóôüò ðßíáêáò Ýôóé þóôå íá êáôáñãçèïýí ïé ðëåéïíüôéìåò åîáñôÞóåéò. Óôï
Ó÷Þìá 8.11 äßíåôáé ôï óôéãìéüôõðï ôçò ÂÜóçò ÄåäïìÝíùí ìåôÜ áðü äéÜóðáóç
ôïõ ðßíáêá Ðñïóüíôá óôïõò ðßíáêåò Ðñïóüíôá Ðñïãñáììáôéóìïý êáé Ðñïóü-
íôá ÎÝíùí Ãëùóóþí.
Ç ìÝèïäïò ðïõ ðáñïõóéÜóèçêå ðñïçãïõìÝíùò ãéá ôç äéáðßóôùóç áí ç äéÜ-
óðáóç ìßáò ó÷Ýóçò óå äýï áðëïýóôåñåò åßíáé ÷ùñßò áðþëåéåò, äåäïìÝíùí êÜðïéùí
óõíáñôçóéáêþí åîáñôÞóåùí, éó÷ýåé êáé üôáí ïé åîáñôÞóåéò åßíáé ðëåéïíüôéìåò.
¸ôóé, ëïéðüí, ëÝãåôáé üôé ìßá äéÜóðáóç åßíáé ÷ùñßò áðþëåéåò áí ôïõëÜ÷éóôïí ìßá
áðü ôéò åðüìåíåò äýï ðëåéïíüôéìåò åîáñôÞóåéò áíÞêåé óôçí êëåéóôüôçôá F + :

• R1 ∩ R2 ³ R1 − R2

• R1 ∩ R2 ³ R2 − R1

Ç åðáëÞèåõóç ôçò ìåèüäïõ ãéá ôï ðñïçãïýìåíï ðáñÜäåéãìá åßíáé ðñïöáíÞò.


198 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

êùäéêüò ãëþóóåò
åñãáæüìåíïõ ðñïãñáììáôéóìïý
êùäéêüò îÝíåò
1 C åñãáæüìåíïõ ãëþóóåò
1 C++
1 ÁããëéêÜ
2 Pascal
1 ÃáëëéêÜ
2 Fortran
1 ÃáëëéêÜ
3 Ada
2 ÉôáëéêÜ
3 Java
3 ÁããëéêÜ
3 Cobol
3 C++

Ó÷Þìá 8.11: Óôéãìéüôõðá ðéíÜêùí Ðñïóüíôá Ðñïãñáììáôéóìïý êáé Ðñïóüíôá ÎÝ-


íùí Ãëùóóþí óå ôÝôáñôç êáíïíéêÞ ìïñöÞ.

8.3.3 ÐÝìðôç ÊáíïíéêÞ ÌïñöÞ (5NF)


¼ðùò åßäáìå ðñïçãïõìÝíùò, üôáí äéáóðÜôáé Ýíáò ðßíáêáò óå äýï äéáöïñåôéêïýò
ðßíáêåò, ðñÝðåé ç äéÜóðáóç áõôÞ íá ãßíåôáé ÷ùñßò áðþëåéåò. ÄçëáäÞ, áí óôïõò
ðáñáãüìåíïõò ðßíáêåò åöáñìïóèåß ìßá öõóéêÞ óýíäåóç, ôüôå èá ðñÝðåé íá ðñï-
êýøåé ç áñ÷éêÞ ó÷Ýóç. Ùóôüóï, õðÜñ÷ïõí ðåñéðôþóåéò üðïõ Ýíáò ðßíáêáò ðñÝðåé
íá äéáóðáóèåß óå ðåñéóóüôåñïõò áðü äýï ðßíáêåò. Ïé ðåñéðôþóåéò áõôÝò, áí êáé
åßíáé óðÜíéåò, êáëýðôïíôáé áðü ôçí ðÝìðôç êáíïíéêÞ ìïñöÞ êáé ôéò åîáñôÞóåéò
óýíäåóçò (join dependencies).
¸óôù Ýíáò ðßíáêáò R êáé R1 , R2 , . . . , Rn õðïóýíïëá ôùí ÷áñáêôçñéóôéêþí
ôïõ R, Ýôóé þóôå R = R1 ∪ R2 ∪ . . . ∪ Rn . Ï ðßíáêáò R ðåñéÝ÷åé ìßá åîÜñôçóç
óýíäåóçò üôáí êÜèå ãñáììÞ ôïõ ðßíáêá éóïýôáé ìå ôç óýíäåóç ôùí ðñïâïëþí
óôá ÷áñáêôçñéóôéêÜ ôùí õðïóõíüëùí R1 , R2 , . . . , Rn . Ðñïöáíþò, ìßá ðëåéïíü-
ôéìç åîÜñôçóç åßíáé ìåñéêÞ ðåñßðôùóç ôçò åîÜñôçóçò óýíäåóçò. Ôõðéêüôåñá, ï
ðßíáêáò R ðåñéÝ÷åé åîÜñôçóç óýíäåóçò üôáí éó÷ýåé ç åîÞò ó÷Ýóç:

R = ΠR1 (R) 1 ΠR2 (R) 1 . . . 1 ΠRn (R)

¸íáò ðßíáêáò âñßóêåôáé óôçí ðÝìðôç êáíïíéêÞ ìïñöÞ Þ êáíïíéêÞ ìïñöÞ


ðñïâïëÞò-óýíäåóçò (project-join normal form, PJNF) áí äåí ðåñéÝ÷åé êÜðïéá
åîÜñôçóç óýíäåóçò. Ãéá ôçí êáôÜñãçóç ôçò åîÜñôçóçò óýíäåóçò ï áñ÷éêüò ðßíá-
êáò ðñÝðåé íá äéáóðáóèåß. Ç öõóéêÞ óýíäåóç üëùí ôùí ðéíÜêùí ðïõ ðñïêýðôïõí
áðü ôç äéÜóðáóç äßíåé ùò áðïôÝëåóìá ôïí áñ÷éêü ðßíáêá.
Ôï Ó÷Þìá 8.12 ðáñïõóéÜæåé Ýíá ðáñÜäåéãìá åíüò ðßíáêá R ìå äåäïìÝíá ó÷å-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 199

äéäÜóêùí ìÜèçìá öïéôçôÞò


Ìáíùëüðïõëïò ÂÜóåéò ÄåäïìÝíùí Âáóéëåßïõ
Ìáíùëüðïõëïò ÂÜóåéò ÄåäïìÝíùí ÂáóéëåéÜäçò
Ìáíùëüðïõëïò Åîüñõîç ÄåäïìÝíùí ÂáóéëåéÜäçò
Íáíüðïõëïò ÄïìÝò ÄåäïìÝíùí ÂáóéëåéÜäçò
Íáíüðïõëïò Åîüñõîç ÄåäïìÝíùí Âáóéëåßïõ
Ðáðáäüðïõëïò ÂÜóåéò ÄåäïìÝíùí ÂáóéëÜêçò
Ðáðáäüðïõëïò ÄïìÝò ÄåäïìÝíùí Âáóéëåßïõ
Ðáðáäüðïõëïò ÄïìÝò ÄåäïìÝíùí ÂáóéëÜêçò

Ó÷Þìá 8.12: Ó÷Ýóç óå ôÝôáñôç êáíïíéêÞ ìïñöÞ.

ôéêÜ ìå ôá ìáèÞìáôá ðïõ ðñïóöÝñïõí êÜðïéïé äéäÜóêïíôåò êáé êÜðïéïõò öïéôçôÝò


ðïõ ôá ðáñáêïëïõèïýí. ÕðïèÝôïõìå üôé Ýíáò äéäÜóêùí ìðïñåß íá ðñïóöÝñåé
ðåñéóóüôåñá ôïõ åíüò ìáèÞìáôá êáé êÜèå ìÜèçìá ìðïñåß íá ðñïóöÝñåôáé áðü
ðåñéóóüôåñïõò ôïõ åíüò äéäÜóêïíôåò óå ðáñÜëëçëåò ôÜîåéò. Ðñïöáíþò, åðßóçò
õðïèÝôïõìå üôé Ýíáò öïéôçôÞò ðáñáêïëïõèåß Ýíá ìüíï äéäÜóêïíôá ãéá êÜèå ìÜ-
èçìá ðïõ äçëþíåé. Ï ðßíáêáò áõôüò äåí ðåñéÝ÷åé ðëåéïíüôéìåò åîáñôÞóåéò, áëëÜ
ðåñéÝ÷åé ìßá åîÜñôçóç óýíäåóçò.

äéäÜóêùí ìÜèçìá äéäÜóêùí öïéôçôÞò


Ìáíùëüðïõëïò ÂÜóåéò ÄåäïìÝíùí Ìáíùëüðïõëïò Âáóéëåßïõ
Ìáíùëüðïõëïò Åîüñõîç ÄåäïìÝíùí Ìáíùëüðïõëïò ÂáóéëåéÜäçò
Íáíüðïõëïò ÄïìÝò ÄåäïìÝíùí Íáíüðïõëïò ÂáóéëåéÜäçò
Íáíüðïõëïò Åîüñõîç ÄåäïìÝíùí Íáíüðïõëïò Âáóéëåßïõ
Ðáðáäüðïõëïò ÂÜóåéò ÄåäïìÝíùí Ðáðáäüðïõëïò ÂáóéëÜêçò
Ðáðáäüðïõëïò ÄïìÝò ÄåäïìÝíùí Ðáðáäüðïõëïò Âáóéëåßïõ

ìÜèçìá öïéôçôÞò
ÂÜóåéò ÄåäïìÝíùí Âáóéëåßïõ
ÂÜóåéò ÄåäïìÝíùí ÂáóéëåéÜäçò
Åîüñõîç ÄåäïìÝíùí ÂáóéëåéÜäçò
ÄïìÝò ÄåäïìÝíùí ÂáóéëåéÜäçò
Åîüñõîç ÄåäïìÝíùí Âáóéëåßïõ
ÂÜóåéò ÄåäïìÝíùí ÂáóéëÜêçò
ÄïìÝò ÄåäïìÝíùí Âáóéëåßïõ
ÄïìÝò ÄåäïìÝíùí ÂáóéëÜêçò

Ó÷Þìá 8.13: Ó÷Ýóåéò óå ðÝìðôç êáíïíéêÞ ìïñöÞ.

Óôï Ó÷Þìá 8.13 ðáñïõóéÜæïíôáé ïé ðßíáêåò R1(äéäÜóêùí, ìÜèçìá), R2(äéäÜ-


200 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

óêùí, öïéôçôÞò) êáé R3(ìÜèçìá, öïéôçôÞò), ïé ïðïßïé ðñïêýðôïõí ìåôÜ ôï ìå-


ôáó÷çìáôéóìü óôçí ðÝìðôç êáíïíéêÞ ìïñöÞ. Ç áñ÷éêÞ ó÷Ýóç ðñïêýðôåé ìå ôçí
ðñÜîç ôçò äéðëÞò óýíäåóçò:

R = ΠäéäÜóêùí, ìÜèçìá(R) 1 ΠäéäÜóêùí, öïéôçôÞò(R) 1 ΠìÜèçìá, öïéôçôÞò(R)

8.4 Óýíïøç
Ç êáíïíéêïðïßçóç ôïõ ó÷Þìáôïò ôçò ÂÜóçò ÄåäïìÝíùí áðïôåëåß âáóéêü âÞìá
êáôÜ ôï ó÷åäéáóìü ìßáò âÜóçò. Êýñéïò óôü÷ïò ôçò êáíïíéêïðïßçóçò åßíáé ç
êáôÜñãçóç ôïõ ðëåïíáóìïý ôùí äåäïìÝíùí, ï ïðïßïò äçìéïõñãåß ðñïâëÞìáôá
êáôÜ ôéò åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò äåäïìÝíùí. ÅðéðëÝïí, áðáéôåß-
ôáé ðåñéóóüôåñïò ÷þñïò ãéá ôçí áðïèÞêåõóç ôùí äåäïìÝíùí.
Ç êáíïíéêïðïßçóç óôçñßæåôáé óôç èåùñßá óõíáñôçóéáêþí åîáñôÞóåùí. Ìßá
óõíáñôçóéáêÞ åîÜñôçóç óõìâïëßæåôáé ìå X → Y êáé äçëþíåé üôé ôï óýíïëï ÷áñá-
êôçñéóôéêþí Y åßíáé óõíáñôçóéáêÜ åîáñôþìåíï áðü ôï óýíïëï ÷áñáêôçñéóôéêþí
X. Áõôü óçìáßíåé üôé áí äýï ãñáììÝò ôïõ ðßíáêá Ý÷ïõí ßäéåò ôéìÝò ãéá ôá ÷á-
ñáêôçñéóôéêÜ ôïõ X, ôüôå ðñÝðåé íá Ý÷ïõí ßäéåò ôéìÝò êáé ãéá ôá ÷áñáêôçñéóôéêÜ
ôïõ Y . Ìå ôç âïÞèåéá ôùí êáíüíùí ðáñáãùãÞò óõíáñôçóéáêþí åîáñôÞóåùí
ìðïñïýìå íá ðáñÜãïõìå íÝåò óõíáñôçóéáêÝò åîáñôÞóåéò. Ôï óýíïëï üëùí ôùí
óõíáñôçóéáêþí åîáñôÞóåùí ðïõ ðáñÜãïíôáé áðü Ýíá áñ÷éêü óýíïëï åîáñôÞóåùí
F , ÷ñçóéìïðïéþíôáò ôïõò êáíüíåò ðáñáãùãÞò, óõìâïëßæåôáé ìå F + êáé êáëåßôáé
êëåéóôüôçôá ôùí óõíáñôçóéáêþí åîáñôÞóåùí. Ç äçìéïõñãßá ôçò êëåéóôüôçôáò
áõôÞò äåí åßíáé ðñáêôéêÜ åöéêôÞ. Ùóôüóï, ìðïñåß íá äéáðéóôùèåß ó÷åôéêÜ åýêïëá
áí ìßá åîÜñôçóç áíÞêåé óôï óýíïëï ôçò êëåéóôüôçôáò ìå ôç âïÞèåéá ôïõ óõíüëïõ
ôçò êëåéóôüôçôáò ôùí ÷áñáêôçñéóôéêþí.
Ïé êáíïíéêÝò ìïñöÝò ðñïêýðôïõí ìå äéáäï÷éêÝò äéáóðÜóåéò ôùí ðéíÜêùí ôçò
âÜóçò óå áðëïýóôåñïõò. Ç áðëïýóôåñç êáíïíéêÞ ìïñöÞ åßíáé ç ðñþôç êáíïíéêÞ
ìïñöÞ (1NF), åíþ ç ðÝìðôç êáíïíéêÞ ìïñöÞ (5NF) åßíáé ç ðëÝïí ðåñéïñéóôéêÞ.
Óôçí ðñÜîç, ïé ðßíáêåò êáíïíéêïðïéïýíôáé óõíÞèùò ìÝ÷ñé ôçí êáíïíéêÞ ìïñöÞ
Boyce-Codd (BCNF), åíþ ëéãüôåñï óõ÷íÜ áðáéôåßôáé ç êáíïíéêïðïßçóç óå áíþ-
ôåñåò êáíïíéêÝò ìïñöÝò ëüãù ýðáñîçò ðëåéïíüôéìùí åîáñôÞóåùí (ðïõ óõìâïëß-
æïíôáé ìå X ³ Y ) êáé åîáñôÞóåùí óýíäåóçò.
ÊáôÜ ôç äéÜóðáóç ôùí ó÷Ýóåùí óå áðëïýóôåñåò ìðïñåß íá áðùëåóèïýí óõ-
íáñôçóéáêÝò åîáñôÞóåéò. Ùóôüóï, ôï óçìáíôéêüôåñï åßíáé íá ìçí áðùëåóèïýí
äåäïìÝíá. Ãéá ôï óêïðü áõôü åöáñìüæïíôáé ìÝèïäïé ðáñáãùãÞò ó÷çìÜôùí ÷ùñßò
áðþëåéåò. ÔÝëïò, óçìåéþíåôáé üôé ç õðåñ-êáíïíéêïðïßçóç Ý÷åé ôï ìåéïíÝêôçìá üôé
óõ÷íÜ óå ðåñéðôþóåéò óýíèåôùí åñùôçìÜôùí ðñÝðåé íá åêôåëåóèïýí ÷ñïíïâüñåò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 201

óõíäÝóåéò.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


8.1. Íá áðïäåé÷èåß áí ïé åðüìåíåò ðñïôÜóåéò åßíáé áëçèåßò Þ ü÷é.

• XY → Z, Z → X ⇒ Z → Y

• X → Y, Y → Z ⇒ X → Y Z

• F = {X → Y, Y → Z, XY → Z, X → Y Z} êáé
G = {X → Y, Y → Z} ⇒ {G ⇒ F }

8.2. Äßíïíôáé ïé óõíáñôçóéáêÝò åîáñôÞóåéò: X → Y, XY → V, XY Z → W .


Ìå ôç âïÞèåéá ôùí åðáãùãéêþí êáíüíùí íá áðïäåé÷èåß áí éó÷ýïõí ïé åîáñôÞ-
óåéò: Y Z → W, X → W .

8.3. Äßíåôáé ôï óýíïëï F ôùí åîÞò óõíáñôçóéáêþí åîáñôÞóåùí: X → Y Z, Y →


U V, XY → W, V → XY . Íá áðïäåé÷èåß áí ç åîÜñôçóç V → W ðñïêýðôåé
áðü ôï óýíïëï F ìå âÜóç ôçí êëåéóôüôçôá ôùí ÷áñáêôçñéóôéêþí.

8.4. Äßíïíôáé ïé åîÞò óõíáñôçóéáêÝò åîáñôÞóåéò: X → Z, Y V → W, Y →


V, Y → W, Z → XV . Íá âñåèïýí ôá ðåñéôôÜ ÷áñáêôçñéóôéêÜ êáé ïé ðåñéôôÝò
åîáñôÞóåéò. Áéôéïëïãåßóôå ôçí áðÜíôçóÞ óáò.

8.5. ÐïéÝò êáíïíéêÝò ìïñöÝò ãíùñßæåôå; ÐåñéãñÜøôå ôçí êáíïíéêÞ ìïñöÞ BCNF
êáé äþóôå Ýíá ðáñÜäåéãìá.

8.6. ÈåùñÞóôå ôá åîÞò ÷áñáêôçñéóôéêÜ:

ÁÁÔ: áñéèìüò áóôõíïìéêÞò ôáõôüôçôáò


åîåéäßêåõóç: ôïìÝáò åîåéäßêåõóçò
âáèìüò: âáèìüò ðôõ÷ßïõ
êùäéêüò ó÷ïëåßïõ: êùäéêüò ôïõ ó÷ïëåßïõ
üíïìá ó÷ïëåßïõ: üíïìá ôïõ ó÷ïëåßïõ

¸óôù üôé éó÷ýïõí ïé åðüìåíåò óõíáñôçóéáêÝò åîáñôÞóåéò:


ÁÁÔ, åîåéäßêåõóç, âáèìüò → êùäéêüò ó÷ïëåßïõ
êùäéêüò ó÷ïëåßïõ → üíïìá ó÷ïëåßïõ
202 ÊåöÜëáéï 8. ÓõíáñôçóéáêÝò ÅîáñôÞóåéò êáé Êáíïíéêïðïßçóç

¸óôù åðßóçò üôé Ý÷ïõìå ôéò åîÞò ó÷Ýóåéò ðïõ âñßóêïíôáé óôçí ôñßôç êáíïíéêÞ
ìïñöÞ:
R1(ÁÁÔ, åîåéäßêåõóç, âáèìüò, êùäéêüò ó÷ïëåßïõ)
R2(ÁÁÔ, åîåéäßêåõóç, âáèìüò, üíïìá ó÷ïëåßïõ)

ÁðáíôÞóôå óôá åñùôÞìáôá äßíïíôáò êáé ðáñáäåßãìáôá:

• Ôß ðñïâëÞìáôá åíçìÝñùóçò äåäïìÝíùí åìöáíßæïíôáé ÷ñçóéìïðïéþíôáò ôéò


ó÷Ýóåéò áõôÝò;

• Ðñïôåßíåôå Ýíáí ôñüðï äéÜóðáóçò ôïõò, þóôå íá áðïöåõ÷èïýí ôá ãíùóôÜ


ðñïâëÞìáôá.

8.7. Äßíåôáé ç ó÷Ýóç R(X, Y ) êáé ïé óõíáñôçóéáêÝò åîáñôÞóåéò X → Y êáé


Y → X. ÁðáíôÞóôå óôá åðüìåíá ìå ôçí êáôÜëëçëç áéôéïëüãçóç:

• Åßíáé ôï X õðïøÞöéï êëåéäß ôçò ó÷Ýóçò;

• Åßíáé ôï Y õðïøÞöéï êëåéäß ôçò ó÷Ýóçò;

• Âñßóêåôáé ç ó÷Ýóç R óôçí ôñßôç êáíïíéêÞ ìïñöÞ;

8.8. Äßíåôáé ç ó÷Ýóç R(X, Y, Z, W ) êáé ç óõíáñôçóéáêÞ åîÜñôçóç Y Z → W .


Âñßóêåôáé ç ó÷Ýóç óôçí ôñßôç êáíïíéêÞ ìïñöÞ; ÁéôéïëïãÞóôå ôçí áðÜíôçóÞ óáò.

8.9. Äßíåôáé ç ó÷Ýóç R(X, Y , Z, W ) êáé ç óõíáñôçóéáêÞ åîÜñôçóç ZW → Y .


Âñßóêåôáé ç ó÷Ýóç óôçí ôñßôç êáíïíéêÞ ìïñöÞ; ÁéôéïëïãÞóôå ôçí áðÜíôçóÞ óáò.

8.10. Äßíåôáé ç ó÷Ýóç R(X, Y, Z, W ) êáé ç óõíáñôçóéáêÞ åîÜñôçóç Y → Z. Ãéá


ôï åðüìåíï óôéãìéüôõðï íá áðáíôÞóåôå óôá åîÞò åñùôÞìáôá ìå ôçí êáôÜëëçëç
áéôéïëüãçóç:

X Y Z W
1 1 1 1
2 1 1 1
3 2 2 2
4 3 2 3
5 4 3 3
6 4 3 4
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 203

• Åßíáé ôï ðñïçãïýìåíï óôéãìéüôõðï óùóôü;

• Ç ó÷Ýóç âñßóêåôáé óôçí ôñßôç êáíïíéêÞ ìïñöÞ;

• Ç ó÷Ýóç âñßóêåôáé óôçí êáíïíéêÞ ìïñöÞ Boyce-Codd;

8.11. Äßíåôáé ç ó÷Ýóç R(X, Y, Z, U, V, W ) êáé ôï óýíïëï F ôùí åîáñôÞóåùí:


X ³ Y, X ³ Z, Z → W, XY Z → U, U → V . Íá åöáñìïóèåß óôáäéáêÜ ç
äéáäéêáóßá ôçò êáíïíéêïðïßçóçò þóôå íá ðñïêýøïõí ïé áíôßóôïé÷åò ó÷Ýóåéò óå
äåýôåñç, ôñßôç, BCNF, ôÝôáñôç êáé ðÝìðôç êáíïíéêÞ ìïñöÞ.

8.12. Äßíåôáé ç ó÷Ýóç R(X, Y, Z) êáé ïé óõíáñôçóéáêÝò åîáñôÞóåéò XY → Z êáé


Z → X. Íá áðïäåé÷èåß ìå äýï ôñüðïõò áí åßíáé óùóôÞ ç äéÜóðáóç ôçò ó÷Ýóçò
R óå R1(X, Y ) êáé R2(X, Z).

8.13. Äßíåôáé ç ó÷Ýóç R(X, Y, Z, U, V, W ) êáé ïé óõíáñôçóéáêÝò åîáñôÞóåéò


X → Y êáé W → V . Íá áðïäåé÷èåß üôé åßíáé óùóôÞ ç äéÜóðáóç ôçò ó÷Ý-
óçò R óå R1(X, Y, U, V ), R2(X, Z, U, W ) êáé R3(Y, Z, V, W ).

8.14. Äßíåôáé ç ó÷Ýóç R(X, Y, Z, U, V ) êáé ôï êáôùôÝñù óôéãìéüôõðï. Íá åëåã÷èåß


áí éó÷ýïõí ïé ðëåéïíüôéìåò åîáñôÞóåéò X ³ Y Z êáé ZU ³ Y V .

X Y Z U V
a1 b1 c1 d1 e1
a1 b2 c1 d2 e1
a2 b1 c1 d1 e2

8.15. ÈåùñÞóôå ôá óôéãìéüôõðá ôùí ó÷Ýóåùí ôïõ Ó÷Þìáôïò 8.11. Åßíáé äõíáôüí ìå
óýíäåóç äýï äñüìùí íá äçìéïõñãÞóïõìå ìßá ó÷Ýóç ìå ôá ôñßá ÷áñáêôçñéóôéêÜ
ôïõ óôéãìéüôõðïõ ôïõ Ó÷Þìáôïò 8.10. ÁõôÞ ç óýíäåóç äýï äñüìùí ìðïñåß íá
õëïðïéçèåß ìå ôñåéò ôñüðïõò, äçëáäÞ ëáìâÜíïíôáò ôéò ôñåéò ó÷Ýóåéò áíÜ äýï. Íá
áðïäåé÷èåß üôé áõôïß ïé ôñåéò ôñüðïé èá äçìéïõñãÞóïõí åðéðëÝïí ðëåéÜäåò óå
ó÷Ýóç ìå ôï áñ÷éêü óôéãìéüôõðï.
9
Ç Ãëþóóá SQL

Ç äïìçìÝíç ãëþóóá åñùôçìÜôùí (Structured Query Language - SQL) ÷ñçóéìï-


ðïéåßôáé áðü ôïõò ÷ñÞóôåò ôïõ ÓÄÂÄ ãéá ôç äçìéïõñãßá, ôñïðïðïßçóç êáé åíçìÝ-
ñùóç äåäïìÝíùí êáé ôç äéáôýðùóç åñùôçìÜôùí. Ç áñ÷éêÞ Ýêäïóç ôçò ãëþóóáò
ïíïìÜóèçêå SEQUEL (Structured English Query Language) êáé ó÷åäéÜóèçêå áðü
åñåõíçôéêÞ ïìÜäá ôçò IBM. Ç åôáéñåßá Oracle ÷ñçóéìïðïßçóå ãéá ðñþôç öïñÜ ôç
ãëþóóá óå åìðïñéêü ÓÄÂÄ ôï 1979. Ôï 1986, ôï Áìåñéêáíéêü Åèíéêü Éíóôéôïýôï
Ðñïôýðùí (American National Standards Institute, ANSI) êáé ôï 1987 ï ÄéåèíÞò
Ïñãáíéóìüò Ðñïôýðùí (International Standards Organization, ISO) ðñï÷þñçóáí
óôçí ðñïôõðïðïßçóç ôçò ãëþóóáò SQL ìå ïíïìáóßá SQL-86, Ýôóé þóôå íá õðÜñ-
÷åé Ýíá óýíïëï êáíüíùí ðïõ ðñÝðåé íá áêïëïõèïýíôáé áðü ôïõò êáôáóêåõáóôÝò
ãéá ôçí õðïóôÞñéîç ôçò SQL [ANSI 1986]. Ôï 1989 äçìïóéåýèçêå Ýíá ðéï åìðëïõ-
ôéóìÝíï ðñüôõðï ôçò ãëþóóáò ìå ïíïìáóßá SQL-89 [ANSI 1989] Þ SQL1. Ôñßá
÷ñüíéá áñãüôåñá (1992), êáé áöïý ç ãëþóóá ïäçãÞèçêå óå ìßá ó÷åôéêÞ ùñß-
ìáíóç, ôï ANSI ðñï÷þñçóå óå ìßá íÝá ðñïôõðïðïßçóç ôçò SQL ìå ïíïìáóßá
SQL-92 Þ SQL2 [ANSI 1992]. Ðñüóöáôá, ïé ó÷åäéáóôÝò ãëùóóþí óõìöþíçóáí
óå åðÝêôáóç ôçò ãëþóóáò SQL ìå áðïôÝëåóìá íá äçìéïõñãçèåß ôï ðñüôõðï ìå
ïíïìáóßá SQL:1999 Þ SQL3. Ùóôüóï, ìåñéêÝò ìüíï áðü ôéò äõíáôüôçôåò ôçò SQL3

205
206 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

õðïóôçñßæïíôáé áðü ôá óýã÷ñïíá åìðïñéêÜ ÓÄÂÄ. ÅêôåíÞò áíáöïñÜ óôçí SQL3


èá ãßíåé óôï êåöÜëáéï 19.
Ç ãëþóóá SQL ÷áñáêôçñßæåôáé áðü óçìáíôéêÜ ðëåïíåêôÞìáôá, åê ôùí ïðïßùí
ôá âáóéêüôåñá åßíáé:

• ÊÜèå ó÷åóéáêü óýóôçìá õðïóôçñßæåé ôçí SQL, ïðüôå ç äéáôýðùóç ôùí åñù-
ôçìÜôùí åßíáé áíåîÜñôçôç áðü ôï ÷ñçóéìïðïéïýìåíï ÓÄÂÄ.

• Ç ãëþóóá ÷ñçóéìïðïéåßôáé ãéá üëåò ôéò ëåéôïõñãßåò ôïõ ÓÄÂÄ.

• ÐïëëÝò ãëþóóåò ðñïãñáììáôéóìïý Ý÷ïõí ôñïðïðïéçèåß, þóôå íá õðïóôçñß-


æïõí äéáôýðùóç åñùôçìÜôùí óå SQL.

• Ç SQL Ý÷åé áðëÞ óýíôáîç êáé áðïäåóìåýåé ôï ÷ñÞóôç áðü ëåðôïìÝñåéåò


õëïðïßçóçò.

Ç ãëþóóá SQL áðïôåëåß õëïðïßçóç ôçò ó÷åóéáêÞò Üëãåâñáò êáé ôïõ ó÷å-
óéáêïý ëïãéóìïý ðëåéÜäùí. Ôá äýï áõôÜ ìáèçìáôéêÜ åñãáëåßá Ý÷ïõí ìåëåôçèåß
óå ðñïçãïýìåíï êåöÜëáéï (âë. ÊåöÜëáéï 7). ¼ðùò êÜèå ãëþóóá ÂÜóåùí Äå-
äïìÝíùí (âë. ÊåöÜëáéï 3), ç SQL õðïäéáéñåßôáé óå äýï îå÷ùñéóôÝò ãëþóóåò: á)
ôç ãëþóóá ïñéóìïý äåäïìÝíùí (DDL), êáé â) ôç ãëþóóá ÷åéñéóìïý äåäïìÝíùí
(DML). Ç ðñþôç ÷ñçóéìïðïéåßôáé ãéá ôïí ïñéóìü ôïõ ó÷Þìáôïò ôçò ÂÄ, åíþ ç
äåýôåñç ãéá ôçí åéóáãùãÞ, äéáãñáöÞ, åíçìÝñùóç äåäïìÝíùí êáé äéáôýðùóç åñù-
ôçìÜôùí. Óôç óõíÝ÷åéá ðåñéãñÜöïõìå áíáëõôéêÜ ôç óýíôáîç êáé ÷ñÞóç ôçò SQL
DDL êáé ôçò SQL DML óýìöùíá ìå ôï ðñüôõðï SQL-92.
Ç SQL ÷ñçóéìïðïéåß ôïõò üñïõò ðßíáêáò (table), ãñáììÞ (row), êáé óôÞëç
(column), ïé ïðïßïé áíôéðñïóùðåýïõí ôéò Ýííïéåò ó÷Ýóç, ðëåéÜäá, êáé ÷áñáêôç-
ñéóôéêü áíôéóôïß÷ùò. Óçìåéþíåôáé üôé áí êáé ç SQL äåí äéá÷ùñßæåé ìåôáîý ðåæþí
êáé êåöáëáßùí ãñáììÜôùí, ÷ñçóéìïðïéïýìå êåöáëáßá ãñÜììáôá ãéá íá äéá÷ùñß-
óïõìå ôéò äåóìåõìÝíåò ëÝîåéò ôçò ãëþóóáò áðü ôá õðüëïéðá óôïé÷åßá. Ãéá ôá
ïíüìáôá ôùí ðéíÜêùí ÷ñçóéìïðïéïýìå ðëÜãéá ãñÜììáôá, ìå êåöáëáßï ôï ðñþôï
ãñÜììá, åíþ ãéá ôá ïíüìáôá ôùí óôçëþí ÷ñçóéìïðïéïýìå ðåæÜ ðëÜãéá ãñÜììáôá.
ÐïëëÜ áðü ôá ðáñáäåßãìáôá ðïõ ðáñïõóéÜæïíôáé, óôçñßæïíôáé óôï ó÷åóéáêü
ó÷Þìá ôçò ÂÄ ðïõ áöïñÜ óôçí çëåêôñïíéêÞ âéâëéïèÞêç ðïõ áíáðôý÷èçêå óôá
ÊåöÜëáéá 4 êáé 6. Ãéá ëüãïõò êáèáñÜ äéåõêüëõíóçò, ôï ó÷åóéáêü ó÷Þìá áðåé-
êïíßæåôáé óôï Ó÷Þìá 9.1.

9.1 Ôýðïé ÄåäïìÝíùí ôçò SQL


¼ðùò Ý÷åé áíáöåñèåß, ìßá óôÞëç åíüò ðßíáêá ëáìâÜíåé ôéìÝò áðü Ýíá óõãêå-
êñéìÝíï ðåäßï ïñéóìïý. Ç SQL-92 õðïóôçñßæåé äéÜöïñïõò âáóéêïýò ôýðïõò ðåäßùí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 207

ÓõíäñïìçôÞò (êùäéêüò, üíïìá, ïäüò, áñéèìüò, ÔÊ, ðüëç, ÷þñá, ÁÐÊ)


ÔçëÝöùíï ÓõíäñïìçôÞ (êùäéêüò óõíäñïìçôÞ, áñéèìüò ôçëåöþíïõ)
ÃíùóôéêÞ Ðåñéï÷Þ (êùäéêüò, ôßôëïò, áñéèìüò óõíäñïìçôþí)
ÓõíäñïìÞ (êùäéêüò óõíäñïìçôÞ, êùäéêüò ãíùóôéêÞò ðåñéï÷Þò, áðü, Ýùò)
ÓõããñáöÝáò (êùäéêüò, üíïìá, ïäüò, áñéèìüò, ÔÊ, ðüëç, ÷þñá, óýíïëï Üñèñùí)
ÔçëÝöùíï ÓõããñáöÝá (êùäéêüò óõããñáöÝá, áñéèìüò ôçëåöþíïõ)
¢ñèñï (êùäéêüò, ôßôëïò, PDF, êùäéêüò ãíùóôéêÞò ðåñéï÷Þò, êùäéêüò óõíåäñßïõ,
êùäéêüò ðåñéïäéêïý, áñ÷éêÞ óåëßäá ðñáêôéêþí, ôåëéêÞ óåëßäá ðñáêôéêþí,
ôåý÷ïò, ôüìïò, áñ÷éêÞ óåëßäá ðåñéïäéêïý, ôåëéêÞ óåëßäá ðåñéïäéêïý)
ÓõããñáöÞ ¢ñèñïõ (êùäéêüò óõããñáöÝá, êùäéêüò Üñèñïõ)
Åêäïôéêüò Ïßêïò (êùäéêüò, üíïìá, ïäüò, áñéèìüò, ÔÊ, ðüëç, ÷þñá)
ÔçëÝöùíï Åêäïôéêïý Ïßêïõ (êùäéêüò åêäïôéêïý ïßêïõ, áñéèìüò ôçëåöþíïõ)
Ðåñéïäéêü (êùäéêüò, ôßôëïò, êùäéêüò åêäïôéêïý ïßêïõ)
ÐñáêôéêÜ Óõíåäñßïõ (êùäéêüò, óõíÝäñéï, ðüëç, ÷þñá, çìåñïìçíßá,
êùäéêüò åêäïôéêïý ïßêïõ)

Ó÷Þìá 9.1: Ó÷åóéáêü ó÷Þìá ôçò ÂÄ ôïõ Ó÷Þìáôïò 4.1 ìåôÜ ôç ìåôáôñïðÞ.

ïñéóìïý, ïé ïðïßïé óõíïøßæïíôáé óôïí Ðßíáêá 9.1 êáé ðåñéãñÜöïíôáé óôç óõíÝ-
÷åéá.

Ôýðïé ÄåäïìÝíùí Äçëþóåéò


ëïãéêüò BOOLEAN
÷áñáêôÞñáò CHARACTER, CHARACTER VARYING
äõáäéêü øçößï BIT, BIT VARYING
áêñéâÞò áñéèìçôéêüò NUMERIC, DECIMAL, INTEGER, SMALLINT
ðñïóåããéóôéêüò áñéèìçôéêüò FLOAT, REAL, DOUBLE PRECISION
çìåñïìçíßá êáé þñá DATE, TIME, TIMESTAMP
äéÜóôçìá INTERVAL

Ðßíáêáò 9.1: Ôýðïé äåäïìÝíùí ôçò SQL-92.

Ìßá ëïãéêÞ (BOOLEAN) ôéìÞ ìðïñåß íá åßíáé åßôå áëçèÞò (TRUE) åßôå øåõäÞò
(FALSE). Ç ôéìÞ ðïõ ÷ñçóéìïðïéåßôáé ãéá ôï TRUE åßíáé ìåãáëýôåñç ôçò ôéìÞò
ðïõ ÷ñçóéìïðïéåßôáé ãéá ôï FALSE, ïðüôå üëåò ïé ìåôáâëçôÝò ôýðïõ BOOLEAN
ìðïñïýí íá óõììåôÝ÷ïõí óå ôåëåóôÝò óýãêñéóçò.
Ôá äåäïìÝíá ÷áñáêôÞñùí (character data) áðïôåëïýíôáé áðü ìßá óåéñÜ ÷áñá-
êôÞñùí (string). Ï ôñüðïò äçìéïõñãßáò ôùí óåéñþí ÷áñáêôÞñùí åîáñôÜôáé áðü
ôï åêÜóôïôå ÓÄÂÄ. ÓõíÞèùò ïé ÷áñáêôÞñåò åßíáé ôýðïõ ASCII Þ EBCDIC. Ï
208 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

ôýðïò ÷áñáêôÞñáò Ý÷åé ôçí åîÞò óýíôáîç:

CHARACTER [VARYING] [ìÞêïò]

Ç ëÝîç CHARACTER ìðïñåß íá áíôéêáôáóôáèåß ìå ôç ëÝîç CHAR, åíþ ï ôýðïò


CHARACTER VARYING ãñÜöåôáé óõíïðôéêüôåñá ùò VARCHAR. Ôï ìÞêïò äçëþíåé
ôï ìÝãéóôï ìÝãåèïò ðïõ ìðïñåß íá Ý÷åé ç óåéñÜ ÷áñáêôÞñùí. Óå ðåñßðôùóç
ðïõ ç óåéñÜ ÷áñáêôÞñùí åßíáé óôáèåñïý ìÞêïõò (ïðüôå äåí ÷ñçóéìïðïéåßôáé ï
ðñïóäéïñéóìüò VARYING) êáé ÷ñçóéìïðïéÞóïõìå ëéãüôåñïõò ÷áñáêôÞñåò áðü ôï
ìÝãéóôï ìÞêïò, ôüôå ïé õðüëïéðåò èÝóåéò óõìðëçñþíïíôáé ìå êåíïýò ÷áñáêôÞñåò.
ÁíôéèÝôùò, óôéò óåéñÝò ÷áñáêôÞñùí ìåôáâëçôïý ìÞêïõò ÷ñçóéìïðïéåßôáé áêñéâþò
ï áðáéôïýìåíïò ÷þñïò, ìå áðïôÝëåóìá íá åîïéêïíïìåßôáé ÷þñïò áðïèÞêåõóçò.
Ïé ôýðïé äåäïìÝíùí BIT êáé BIT VARYING (Þ VARBIT) ÷ñçóéìïðïéïýíôáé
ãéá ôçí áðïèÞêåõóç óåéñþí äõáäéêþí øçößùí (bits). Ôï êÜèå äõáäéêü øçößï
ìðïñåß íá åßíáé 1 Þ 0. ×ñçóéìïðïéåßôáé ç óýíôáîç:

BIT [VARYING] [ìÞêïò]

¼ðùò êáé óôçí ðåñßðôùóç ôçò óåéñÜò ÷áñáêôÞñùí, õðÜñ÷åé ç äéÜêñéóç ìåôáîý
óåéñþí äõáäéêþí øçößùí óôáèåñïý êáé ìåôáâëçôïý ìÞêïõò.
Ï áñéèìçôéêüò ôýðïò äåäïìÝíùí ÷ñçóéìïðïéåßôáé ãéá ôïí ïñéóìü áñéèìþí.
×áñáêôçñßæåôáé áðü ôçí áêñßâåéá êáé ôçí êëßìáêá. Ç áêñßâåéá äßíåé ôï óõíïëéêü
ðëÞèïò ôùí øçößùí (ðñéí êáé ìåôÜ ôçí õðïäéáóôïëÞ). Ç êëßìáêá ïñßæåé ôï ðëÞèïò
ôùí øçößùí ìåôÜ ôçí õðïäéáóôïëÞ. Ï áêÝñáéïò ôýðïò äåäïìÝíùí åßíáé åéäéêÞ
ðåñßðôùóç ôïõ áñéèìçôéêïý ôýðïõ. Ç óýíôáîç Ý÷åé ùò åîÞò:

NUMERIC Þ NUMERIC(áêñßâåéá) Þ NUMERIC(áêñßâåéá,êëßìáêá)


DECIMAL Þ DECIMAL(áêñßâåéá) Þ DECIMAL(áêñßâåéá,êëßìáêá)
INTEGER Þ INT
SMALLINT

Ïé ôýðïé NUMERIC êáé DECIMAL (Þ DEC) áðïèçêåýïõí áñéèìïýò óå äåêáäéêÞ


áíáðáñÜóôáóç, ÷ñçóéìïðïéþíôáò êëßìáêá 0, áí áõôÞ äåí äßíåôáé. Êáé ïé äýï
ôýðïé äåäïìÝíùí ÷ñçóéìïðïéïýí (ðñïáéñåôéêÜ) äýï ðáñáìÝôñïõò áêñßâåéá êáé
êëßìáêá. Ç áêñßâåéá äçëþíåé ôï ìÝãéóôï áñéèìü ôùí øçößùí ðïõ ìðïñåß íá
Ý÷åé Ýíáò áñéèìüò, åíþ ç êëßìáêá äçëþíåé ôï ìÝãéóôï áñéèìü øçößùí ìåôÜ ôçí
õðïäéáóôïëÞ. Ãéá ðáñÜäåéãìá, ï áñéèìüò 123.45 Ý÷åé áêñßâåéá 5 êáé êëßìáêá 2.
Ç äéáöïñÜ ìåôáîý ôùí ôýðùí NUMERIC êáé DECIMAL åßíáé üôé óôçí ðåñßðôùóç
ôïõ NUMERIC ôï óýóôçìá èá äçìéïõñãÞóåé áêñéâþò ôïí ôýðï äåäïìÝíùí ðïõ
ïñßæïõìå, åíþ óôçí ðåñßðôùóç ôïõ DECIMAL ôï óýóôçìá ìðïñåß íá äåóìåýóåé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 209

ðåñéóóüôåñá øçößá áðü áõôÜ ðïõ ïñßæïõìå, ÷ñçóéìïðïéþíôáò ôç ìÝãéóôç äõíáôÞ


ðñïóöåñüìåíç áêñßâåéá. Óå ðïëëÝò õëïðïéÞóåéò ïé äýï ôýðïé áíôéìåôùðßæïíôáé
éóïäýíáìá.
Ï ôýðïò INTEGER ÷ñçóéìïðïéåßôáé ãéá ìåãÜëïõò áêÝñáéïõò áñéèìïýò (èå-
ôéêïýò Þ áñíçôéêïýò), åíþ ï SMALLINT ãéá ìéêñüôåñïõò áêÝñáéïõò áñéèìïýò
(ìÝ÷ñé 32.767).
Ï ðñïóåããéóôéêüò áñéèìçôéêüò ôýðïò äåäïìÝíùí (êéíçôÞò õðïäéáóôïëÞò) äåí
Ý÷åé ìßá óõãêåêñéìÝíç áíáðáñÜóôáóç üðùò ï åðáêñéâÞò áñéèìçôéêüò. Ìßá ôéìÞ
êéíçôÞò õðïäéáóôïëÞò áðïôåëåßôáé áðü äýï ôìÞìáôá, ôç ìáíôßóóá (mantissa) êáé
ôïí åêèÝôç (exponent) (ð.÷., 0.2Å−2 , 0.314Å16 ). Ç áêñßâåéá ðñïóäéïñßæåé ôï ðüóá
øçößá ìðïñåß íá Ý÷åé ç ìáíôßóóá. Ç áêñßâåéá ôùí ôýðùí REAL êáé DOUBLE
PRECISION åîáñôÜôáé áðü ôçí õëïðïßçóç. Ãéá ôïí ïñéóìü åíüò áñéèìïý êéíçôÞò
õðïäéáóôïëÞò ÷ñçóéìïðïéåßôáé ç óýíôáîç:
FLOAT [(áêñßâåéá)]
REAL
DOUBLE PRECISION

Ï ôýðïò DATE ÷ñçóéìïðïéåßôáé ãéá íá ïñßæïõìå çìåñïìçíßåò êáé áðïèçêåýåé


ôï Ýôïò (YEAR), ôï ìÞíá (MONTH) êáé ôçí çìÝñá (DAY). Ôï Ýôïò êáôáëáìâÜíåé
ôÝóóåñá øçößá êáé ìðïñåß íá ðÜñåé ôéìÝò áðü 0001 Ýùò êáé 9999. Ï ìÞíáò êáôá-
ëáìâÜíåé äýï øçößá êáé ìðïñåß íá ðÜñåé ôéìÝò ìåôáîý 01 êáé 12. ÔÝëïò, ç çìÝñá
êáôáëáìâÜíåé åðßóçò äýï øçößá êáé ìðïñåß íá ëÜâåé ôéìÝò ìåôáîý 01 êáé 31. Ï
ôýðïò TIME ÷ñçóéìïðïéåßôáé ãéá íá ïñßóïõìå ÷ñïíéêÝò óôéãìÝò êáé áðïèçêåýåé
ôçí þñá (HOUR), ôá ëåðôÜ (MINUTE) êáé ôá äåõôåñüëåðôá (SECOND). Ç þñá
êáôáëáìâÜíåé äýï øçößá êáé ëáìâÜíåé ôéìÝò ìåôáîý 00 êáé 23. Ãéá ôá ëåðôÜ ÷ñç-
óéìïðïéïýíôáé äýï øçößá, åíþ ïé áíôßóôïé÷åò ôéìÝò åßíáé ìåôáîý 00 êáé 59. ÔÝëïò,
ãéá ôá äåõôåñüëåðôá ÷ñçóéìïðïéïýíôáé åðßóçò äýï øçößá ðïõ ëáìâÜíïõí ôéìÝò
ìåôáîý 00 êáé 59. Ï ôýðïò TIME ìðïñåß íá ÷ñçóéìïðïéçèåß ìå êÜðïéá áêñßâåéá
ðïõ äçëþíåé ôïí áñéèìü ôùí ÷ñçóéìïðïéïýìåíùí øçößùí ãéá ôçí áðïèÞêåõóç ôùí
äåõôåñïëÝðôùí. Ãéá ôïí ïñéóìü çìåñïìçíßáò êáé þñáò ÷ñçóéìïðïéåßôáé ï ôýðïò
TIMESTAMP, ï ïðïßïò áðïèçêåýåé ôçí ðëçñïöïñßá ôçò çìåñïìçíßáò êáé ôçí ðëç-
ñïöïñßá ôçò þñáò. Ìå ôïõò ôýðïõò TIME êáé TIMESTAMP ìðïñïýìå íá ÷ñçóé-
ìïðïéÞóïõìå ôçí åðéëïãÞ WITH TIME ZONE, ç ïðïßá åðéôñÝðåé ôçí áðïèÞêåõóç
äýï åðéðëÝïí ðåäßùí TIMEZONE HOUR êáé TIMEZONE MINUTE ðïõ äçëþíïõí
ôç äéáöïñÜ ôçò þñáò áðü ôçí þñá UTC (coordinated universal time). Ç óýíôáîç
ôùí ôýðùí DATE, TIME êáé TIMESTAMP Ý÷åé ùò åîÞò:
DATE
TIME [(áêñßâåéá)] [WITH TIME ZONE]
TIMESTAMP [(áêñßâåéá)] [WITH TIME ZONE]
210 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

Ï ôýðïò äéáóôÞìáôïò ÷ñçóéìïðïéåßôáé ãéá ôçí áíáðáñÜóôáóç ÷ñïíéêþí äéá-


óôçìÜôùí. ÊÜèå ôýðïò äéáóôÞìáôïò áðïôåëåßôáé áðü ôá ðåäßá YEAR, MONTH,
DAY, HOUR, MINUTE, SECOND. ÕðÜñ÷ïõí äýï êáôçãïñßåò äéáóôÞìáôïò: á) ôï
äéÜóôçìá Ýôïõò-ìÞíá êáé â) ôï äéÜóôçìá çìÝñáò-þñáò. Ôï ðñþôï ÷ñçóéìïðïéåß
ôï Ýôïò Þ êáé ôï ìÞíá, åíþ ôï äåýôåñï ÷ñçóéìïðïéåß ôçí çìÝñá, ôçí þñá, ôï ëåðôü
êáé ôï äåõôåñüëåðôï. Áí êáé äåí åßíáé õðï÷ñåùôéêÞ ç ÷ñÞóç üëùí ôùí ðåäßùí,
áõôÜ ðïõ ÷ñçóéìïðïéïýíôáé ðñÝðåé íá åßíáé óõíå÷üìåíá. Ç óýíôáîç Ý÷åé ùò åîÞò:

INTERVAL {{áñ÷Þ TO ôÝëïò} çìåñïìçíßá}


áñ÷Þ = YEAR | MONTH | DAY | HOUR
| MINUTE [(áêñßâåéá-áñ÷Þò)]
ôÝëïò = YEAR | MONTH | DAY | HOUR
| MINUTE | SECOND [(áêñßâåéá-äåõôåñïëÝðôùí)]
çìåñïìçíßá = áñ÷Þ | SECONDS
[(áêñßâåéá-áñ÷Þò[, áêñßâåéá-äåõôåñïëÝðôùí])]

9.2 Ïñéóìüò ÄåäïìÝíùí


Óôï ôÝëïò ôçò äéáäéêáóßáò ó÷åäéáóìïý ìßáò ÂÄ, Ý÷ïõìå Ýíá óýíïëï ðéíÜêùí êáé
Ýíá óýíïëï ðåñéïñéóìþí ãéá ôïõò ðßíáêåò. Èá ðñÝðåé ôï ó÷Þìá ôçò ÂÄ íá õëï-
ðïéçèåß óôï åêÜóôïôå ÷ñçóéìïðïéïýìåíï ÓÄÂÄ êáé íá áêïëïõèÞóåé ç äéáäéêáóßá
åéóáãùãÞò óôïé÷åßùí, þóôå íá åßìáóôå óå èÝóç íá äéáôõðþíïõìå åñùôÞìáôá ðñïò
ôï ÓÄÂÄ. Ïé åíôïëÝò ïñéóìïý äåäïìÝíùí ôçò SQL åßíáé ïé CREATE, ALTER êáé
DROP, ïé ïðïßåò óõíôÜóóïíôáé ìå äéáöïñåôéêü ôñüðï áíáëüãùò ìå ôï áíôéêåßìåíï
ðïõ äçìéïõñãåßôáé.

9.2.1 Ïñéóìüò Ó÷Þìáôïò ÂÜóçò


Ç SQL åðéôñÝðåé ôç äçìéïõñãßá åíüò íÝïõ ó÷Þìáôïò ìå ôç ÷ñÞóç ôçò åíôïëÞò:

CREATE SCHEMA íÝï-ó÷Þìá AUTHORIZATION üíïìá-÷ñÞóôç;

Ìå ôçí åíôïëÞ áõôÞ äçëþíïõìå üôé õðåýèõíïò ãéá ôç äéá÷åßñéóç ôïõ íÝïõ ó÷Þìáôïò
âÜóçò åßíáé ï ÷ñÞóôçò ðïõ áêïëïõèåß ôïí ðñïóäéïñéóìü AUTHORIZATION. Ãéá
ôçí êáôáóôñïöÞ åíüò ó÷Þìáôïò ÷ñçóéìïðïéåßôáé ç åíôïëÞ DROP SCHEMA üíïìá-
ó÷Þìáôïò. Ìå ôç ÷ñÞóç äéáöïñåôéêþí ó÷çìÜôùí, Ý÷ïõìå ôç äõíáôüôçôá íá
äéá÷ùñßóïõìå ôá äåäïìÝíá ôçò ÂÄ áíáëüãùò ìå ôï åßäïò ôùí äåäïìÝíùí ðïõ
áðïèçêåýïíôáé êáé áíáëüãùò ìå ôçí åöáñìïãÞ ðïõ ôá ÷ñçóéìïðïéåß.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 211

9.2.2 Ïñéóìüò Ðßíáêá


¸íáò íÝïò ðßíáêáò äçìéïõñãåßôáé ìå ôç ÷ñÞóç ôçò åíôïëÞò CREATE TABLE, ç
óýíôáîç ôçò ïðïßáò Ý÷åé ùò åîÞò:

CREATE TABLE íÝïò-ðßíáêáò


(óôÞëç1 ôýðïò-äåäïìÝíùí,
óôÞëç2 ôýðïò-äåäïìÝíùí,
...
óôÞëçN ôýðïò-äåäïìÝíùí,
ðåñéïñéóìüò-áêåñáéüôçôáò-1,
ðåñéïñéóìüò-áêåñáéüôçôáò-2,
...
ðåñéïñéóìüò-áêåñáéüôçôáò-Ì);

Ãéá êÜèå ìßá áðü ôéò óôÞëåò ôïõ ðßíáêá ðñÝðåé íá ðñïóäéïñéóèåß Ýíá üíïìá êáé
Ýíá ðåäßï ïñéóìïý áðü üðïõ ç óôÞëç ìðïñåß íá ëáìâÜíåé ôéìÝò. Äýï óôÞëåò ðñÝðåé
íá Ý÷ïõí äéáöïñåôéêÜ ïíüìáôá, åíþ ìðïñåß íá Ý÷ïõí ßäéï ðåäßï ïñéóìïý. Åðßóçò,
ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ðåñéïñéóìïýò áêåñáéüôçôáò, ïé ïðïßïé åíéó÷ýïõí
ôçí ðïéüôçôá ôùí äåäïìÝíùí ôçò ÂÄ üðùò Ý÷åé ðåñéãñáöåß óôï ÊåöÜëáéï 6. Ç
êáôáóôñïöÞ ôïõ ðßíáêá ðñáãìáôïðïéåßôáé ìå ôçí åíôïëÞ DROP TABLE Ðßíáêáò.
Áò åîåôÜóïõìå ôçí åíôïëÞ êáôáóêåõÞò ôïõ ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ.

CREATE TABLE ÃíùóôéêÞ_Ðåñéï÷Þ


(êùäéêüò INTEGER NOT NULL,
ôßôëïò CHAR(50) NOT NULL,
áñéèìüò_óõíäñïìçôþí INTEGER DEFAULT 0,
PRIMARY KEY (êùäéêüò),
UNIQUE (ôßôëïò),
CHECK (áñéèìüò_óõíäñïìçôþí>=0));

ÐáñáôçñÞóôå üôé ìå ôç ÷ñÞóç ôïõ ðñïóäéïñéóôÞ NOT NULL åðéâÜëëïõìå ïé óôÞ-


ëåò êùäéêüò êáé ôßôëïò íá ìçí Ý÷ïõí êåíÝò ôéìÝò, . Óôç äÞëùóç áõôÞ ÷ñçóéìï-
ðïéÞèçêáí äýï ðåñéïñéóìïß áêåñáéüôçôáò. Ï ðñþôïò áöïñÜ óôïí ïñéóìü ôïõ
ðñùôåýïíôïò êëåéäéïý ôïõ ðßíáêá, ôï ïðïßï äçëþíåôáé ìå PRIMARY KEY (êù-
äéêüò), åíþ ï äåýôåñïò áöïñÜ óôï üôé ïé ôéìÝò ôçò óôÞëçò áñéèìüò óõíäñïìçôþí
ðñÝðåé íá Ý÷ïõí èåôéêÝò áêÝñáéåò ôéìÝò, ôï ïðïßï äçëþíåôáé ìå CHECK (áñéè-
ìüò óõíäñïìçôþí>=0). Ç ðñüôáóç UNIQUE ÷ñçóéìïðïéåßôáé ãéá ôï ïñéóìü
åíáëëáêôéêþí êëåéäéþí ãéá ôïí ðßíáêá. Óôï ðáñÜäåéãìá, ç ÷ñÞóç ôïõ UNIQUE
(ôßôëïò) äçëþíåé üôé äåí åðéôñÝðåôáé óå äýï ãíùóôéêÝò ðåñéï÷Ýò íá Ý÷ïõí ôïí
ßäéï ôßôëï. Ç ëÝîç DEFAULT ðñïóäéïñßæåé ôçí ôéìÞ áñ÷éêïðïßçóçò ôçò óõãêå-
êñéìÝíçò óôÞëçò, áí äåí äïèåß êÜðïéá ôéìÞ êáôÜ ôçí åéóáãùãÞ óôïé÷åßùí.
212 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôïí ôñüðï êáôáóêåõÞò ôïõ ðßíáêá ÐñáêôéêÜ Óõ-
íåäñßïõ, ï ïðïßïò ÷ñçóéìïðïéåß êáé Üëëïõò ðåñéïñéóìïýò áêåñáéüôçôáò.

CREATE TABLE ÐñáêôéêÜ_Óõíåäñßïõ


(êùäéêüò INTEGER NOT NULL,
óõíÝäñéï VARCHAR(100) NOT NULL,
çìåñïìçíßá DATE NOT NULL,
÷þñá CHAR(20),
êùäéêüò_åêäïôéêïý_ïßêïõ INTEGER NOT NULL,
PRIMARY KEY (êùäéêüò),
FOREIGN KEY (êùäéêüò_åêäïôéêïý_ïßêïõ)
REFERENCES Åêäïôéêüò_Ïßêïò (êùäéêüò)
ON DELETE CASCADE
ON UPDATE CASCADE);

Õðåíèõìßæåôáé üôé áðü ôç ìåôáôñïðÞ ôïõ ìïíôÝëïõ ÏÓ ôçò çëåêôñïíéêÞò âéâëéïèÞ-


êçò óå ó÷åóéáêü ìïíôÝëï, ôï êëåéäß ôïõ ðßíáêá Åêäïôéêüò-Ïßêïò ðåñéëáìâÜíåôáé
ùò óôÞëç óôïí ðßíáêá ÐñáêôéêÜ Óõíåäñßïõ. Áõôü óçìáßíåé üôé ç óôÞëç êùäé-
êüò åêäïôéêïý ïßêïõ åßíáé îÝíï êëåéäß ðïõ ðñïÝñ÷åôáé áðü ôïí ðßíáêá Åêäï-
ôéêüò Ïßêïò êáé áöïñÜ óôç óôÞëç êùäéêüò. Áõôü äçëþíåôáé ìå ôçí ðñüôáóç
FOREIGN KEY (êùäéêüò åêäïôéêïý ïßêïõ) REFERENCES Åêäïôéêüò
Ïßêïò (êùäéêüò). Ïé ðñïôÜóåéò ON DELETE CASCADE êáé ON UPDATE
CASCADE ðñïóäéïñßæïõí ôçí åíÝñãåéá ðïõ èá åêôåëåóèåß áí ôï îÝíï êëåéäß áë-
ëÜîåé ôéìÞ óôïí áñ÷éêü ðßíáêá Þ äéáãñáöåß ç ãñáììÞ óôïí áñ÷éêü ðßíáêá Åêäï-
ôéêüò Ïßêïò. Óôï ðáñÜäåéãìá êáé óôéò äýï ðåñéðôþóåéò ç áíôßóôïé÷ç áëëáãÞ èá
ðñáãìáôïðïéçèåß êáé óôïí ðßíáêá ÐñáêôéêÜ Óõíåäñßïõ, êáé áõôü äçëþíåôáé ìå
ôç ÷ñÞóç ôïõ CASCADE. Ìðïñïýìå íá ïñßóïõìå êáé Üëëåò åðéèõìçôÝò åíÝñãåéåò
ðïõ èá ìðïñïýóáí íá ëÜâïõí ÷þñá, äßíïíôáò ïëüêëçñåò åêöñÜóåéò SQL áìÝ-
óùò ìåôÜ ôï ON DELETE êáé ON UPDATE. Ôïíßæåôáé üôé èá ðñÝðåé íá õðÜñ÷ïõí
äéáöïñåôéêÝò åêöñÜóåéò ON DELETE êáé ON UPDATE ãéá êÜèå îÝíï êëåéäß ðïõ
äçëþíåôáé óå Ýíáí ðßíáêá.
Ï ïñéóìüò åíüò ðßíáêá ìðïñåß íá ìåôáâëçèåß óôçí ðïñåßá, áíáëüãùò ìå ôéò
áðáéôÞóåéò. Ç SQL ðñïóöÝñåé ôçí åíôïëÞ ALTER TABLE, ìå ôçí ïðïßá åðéôñÝ-
ðïíôáé íá ãßíïõí óõãêåêñéìÝíåò áëëáãÝò óôïí ðßíáêá:

• ðñïóèÞêç íÝáò óôÞëçò óôïí ðßíáêá,

• äéáãñáöÞ õðÜñ÷ïõóáò óôÞëçò,

• áëëáãÞ ðåäßïõ ïñéóìïý ìßáò óôÞëçò,

• åéóáãùãÞ íÝïõ ðåñéïñéóìïý,


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 213

• êáôÜñãçóç ðåñéïñéóìïý,

• áëëáãÞ ôçò åî ïñéóìïý (default) ôéìÞò óôÞëçò,

• êáôÜñãçóç áñ÷éêÞò ôéìÞò óôÞëçò.

Ãéá ðáñÜäåéãìá, èåùñÞóôå üôé áðáéôåßôáé ç åéóáãùãÞ ôçò óôÞëçò ìå üíïìá


çìåñ/íßá ãÝííçóçò óôïí ðßíáêá ÓõíäñïìçôÞò. Ç áíôßóôïé÷ç åíôïëÞ ALTER TABLE
Ý÷åé ùò åîÞò:

ALTER TABLE ÓõíäñïìçôÞò


ADD COLUMN çìåñ/íßá_ãÝííçóçò DATE NOT NULL;

Ãéá ôçí êáôÜñãçóç ôçò óôÞëçò çìåñ/íßá ãÝííçóçò Ý÷ïõìå:

ALTER TABLE ÓõíäñïìçôÞò


DROP COLUMN çìåñ/íßá_ãÝííçóçò;

Ãéá ôçí êáôÜñãçóç åíüò ðßíáêá ÷ñçóéìïðïéåßôáé ç åíôïëÞ DROP TABLE. Ãéá ðáñÜ-
äåéãìá:

DROP TABLE ÓõíäñïìçôÞò RESTRICT;


DROP TABLE ÓõíäñïìçôÞò CASCADE;

Óôçí ðñþôç ðåñßðôùóç ï ðßíáêáò äåí èá êáôáóôñáöåß áí ÷ñçóéìïðïéåßôáé óå


ðåñéïñéóìïýò óôïõò ïñéóìïýò Üëëùí ðéíÜêùí (ð.÷., ðåñéïñéóìïß áíáöïñþí îÝíïõ
êëåéäéïý). Óôç äåýôåñç ðåñßðôùóç, ï ðßíáêáò êáôáóôñÝöåôáé êáé êáôáóôñÝöïíôáé
åðßóçò êáé ïé ðåñéïñéóìïß ðïõ ôïí ÷ñçóéìïðïéïýí.

9.2.3 Ïñéóìüò Ðåäßïõ Ïñéóìïý


Ç SQL äßíåé ôç äõíáôüôçôá íá äçìéïõñãçèïýí íÝá ðåäßá ïñéóìïý áðü üðïõ
ëáìâÜíïõí ôéìÝò ïé óôÞëåò åíüò ðßíáêá. Ç äçìéïõñãßá åíüò íÝïõ ðåäßïõ ïñé-
óìïý áêïëïõèåß ôç óýíôáîç:

CREATE DOMAIN üíïìá-ðåäßïõ-ïñéóìïý


[AS] ôýðïò-äåäïìÝíùí
[DEFAULT ôéìÞ]
[CHECK (óõíèÞêç)];

Ãéá ðáñÜäåéãìá, ìðïñïýìå íá ïñßóïõìå Ýíá íÝï ðåäßï ïñéóìïý ìå üíïìá Öýëï,
ôï ïðïßï íá äÝ÷åôáé ìüíï ôéò ôéìÝò "Á" (Üíäñáò) Þ "Ã" (ãõíáßêá).
214 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

CREATE DOMAIN Öýëï AS CHAR


DEFAULT ‘Ã’
CHECK (VALUE IN (‘A’, ‘Ã’));

Éóïäýíáìá, èá ìðïñïýóáìå íá ïñßóïõìå ôïõò ðñïçãïýìåíïõò ðåñéïñéóìïýò óôïí


ðßíáêá ðïõ åìöáíßæåôáé ç äéÜêñéóç ìåôáîý ôùí äýï öýëùí. Ôé ãßíåôáé üìùò
óôçí ðåñßðôùóç üðïõ ç áðïèÞêåõóç ôïõ öýëïõ áðáéôåßôáé óå ðåñéóóüôåñïõò ðß-
íáêåò; Ï ïñéóìüò åíüò íÝïõ ðåäßïõ ïñéóìïý üðùò ðñïçãïõìÝíùò äéåõêïëýíåé
ôçí êáôáóêåõÞ ôùí ðéíÜêùí, äéüôé ïé ðåñéïñéóìïß ðïõ éó÷ýïõí ãéá ôéò ôéìÝò åßíáé
óõãêåíôñùìÝíåò óå Ýíá ìüíï ïñéóìü êáé äåí åßíáé äéÜóðáñôåò ìÝóá óôéò äéÜöï-
ñåò åíôïëÝò CREATE TABLE. ÈåùñÞóôå Ýíá áêüìç ðáñÜäåéãìá ðïõ áöïñÜ óôïí
ïñéóìü åíüò ðåäßïõ ïñéóìïý ãéá ÷ñþìáôá.

CREATE DOMAIN ×ñþìá AS CHAR (20)


DEFAULT ‘ðñÜóéíï’
CHECK (VALUE IN (‘ðñÜóéíï’, ‘êüêêéíï’, ‘êßôñéíï’));

Ìå ôç äçìéïõñãßá åíüò íÝïõ ðåäßïõ ïñéóìïý ãéá ÷ñþìáôá, Ý÷ïõìå ôï ðëåïíÝêôçìá


üôé ìðïñïýìå íá ìåôáâÜëëïõìå ôïí ïñéóìü ôïõ, þóôå íá óõìðåñéëçöèïýí êáé Üëëá
÷ñþìáôá. Áí ïé ðåñéïñéóìïß åðáíáëáìâÜíïíôáé óå êÜèå ðßíáêá ðïõ áðáéôåß
áðïèÞêåõóç ÷ñþìáôïò, èá ðñÝðåé êÜèå öïñÜ ðïõ Ý÷ïõìå áëëáãÝò ùò ðñïò ôï
óýíïëï ôùí åðéôñåðôþí ÷ñùìÜôùí, íá åíçìåñþíïíôáé ïé ïñéóìïß ôùí ó÷åôéêþí
ðéíÜêùí. Ôï íÝï ðåäßï ïñéóìïý ìðïñåß íá óõììåôÝ÷åé ùò íÝïò ôýðïò äåäïìÝíùí
êáôÜ ôç äçìéïõñãßá ðßíáêá:

CREATE TABLE Ëïõëïýäé


(êùäéêüò INTEGER NOT NULL,
áðü÷ñùóç ×ñþìá,
PRIMARY KEY (êùäéêüò));

Ãéá ôçí êáôÜñãçóç åíüò ðåäßïõ ïñéóìïý ÷ñçóéìïðïéåßôáé ç åíôïëÞ DROP DO-
MAIN ùò åîÞò:

DROP DOMAIN Öýëï RESTRICT;


DROP DOMAIN ×ñþìá CASCADE;

Óôçí ðñþôç ðåñßðôùóç, áí ÷ñçóéìïðïéåßôáé ôï ðåäßï ïñéóìïý Öýëï óå êÜðïéïí


ðßíáêá ôçò ÂÄ, ôüôå ç êáôÜñãçóç äåí èá ðñáãìáôïðïéçèåß. Óôç äåýôåñç ðåñß-
ðôùóç, ôï ðåäßï ïñéóìïý ×ñþìá äéáãñÜöåôáé êáé óôÞëåò ðïõ Ý÷ïõí ïñéóèåß íá
ëáìâÜíïõí ôéìÝò áðü ôï ðåäßï ïñéóìïý ×ñþìá áíáðñïóáñìüæïíôáé áõôïìÜôùò
þóôå íá ëáìâÜíïõí ôéìÝò áðü ôïí ôýðï äåäïìÝíùí CHAR(20).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 215

9.3 ×åéñéóìüò ÄåäïìÝíùí


Óôéò ðñïçãïýìåíåò ðáñáãñÜöïõò åîåôÜóáìå ôï ôìÞìá ôçò SQL ìå ôï ïðïßï ìðï-
ñïýìå íá ïñßóïõìå ôï ó÷Þìá ôçò ÂÄ, íá äçìéïõñãÞóïõìå ðßíáêåò êáé íá ïñßóïõìå
ðåñéïñéóìïýò áêåñáéüôçôáò ãéá ôá äåäïìÝíá. Óôç óõíÝ÷åéá åîåôÜæïõìå ôï ôìÞìá
ôçò SQL ìå ôï ïðïßï ðñáãìáôïðïéåßôáé ï ÷åéñéóìüò ôùí äåäïìÝíùí (data manip-
ulation). Ç SQL ðñïóöÝñåé ôéò åîÞò åíôïëÝò:

• SELECT, ãéá äéáôýðùóç åñùôçìÜôùí,

• INSERT, ãéá åéóáãùãÞ íÝùí äåäïìÝíùí,

• UPDATE, ãéá åíçìÝñùóç äåäïìÝíùí, êáé

• DELETE, ãéá äéáãñáöÞ äåäïìÝíùí áðü ôç ÂÄ,

9.3.1 Äéáôýðùóç ÅñùôçìÜôùí


Ç âáóéêüôåñç êáé óõ÷íüôåñá ÷ñçóéìïðïéïýìåíç åíôïëÞ ãéá ôç äéáôýðùóç åñù-
ôçìÜôùí åßíáé ç åíôïëÞ SELECT, ç ãåíéêÞ óýíôáîç ôçò ïðïßáò åßíáé:

SELECT [DISTINCT] <ëßóôá óôçëþí>


FROM <ëßóôá ðéíÜêùí>
[WHERE óõíèÞêç]
[GROUP BY <ëßóôá óôçëþí>]
[HAVING óõíèÞêç]
[ORDER BY <ëßóôá óôçëþí> [ASCENDING | DESCENDING]];

Äßðëá áðü ôç ëÝîç SELECT áíáãñÜöïíôáé ïé óôÞëåò, ïé ôéìÝò ôùí ïðïßùí èá


óõìðåñéëçöèïýí óôï áðïôÝëåóìá ôïõ åñùôÞìáôïò1 . Ç ëÝîç DISTINCT áìÝóùò
ìåôÜ ôï SELECT äçëþíåé üôé êÜèå ãñáììÞ ôïõ ðßíáêá ôïõ áðïôåëÝóìáôïò èá
óõìðåñéëçöèåß ìßá ìüíï öïñÜ. ÌåôÜ ôï FROM áêïëïõèåß ç ëßóôá ìå ôá ïíüìáôá
ðéíÜêùí áðü üðïõ èá áíôëçèïýí ôá äåäïìÝíá. Ôá äåäïìÝíá ôïõ áðïôåëÝóìá-
ôïò ðñÝðåé íá ðëçñïýí ôç óõíèÞêç ðïõ áêïëïõèåß ôï WHERE. Ç ëÝîç GROUP BY
ðñïóäéïñßæåé ôéò óôÞëåò ìå ôéò ïðïßåò èá ðñáãìáôïðïéçèåß ïìáäïðïßçóç (group-
ing) ôùí äåäïìÝíùí. Ôï ìåñéêü áðïôÝëåóìá ôïõ åñùôÞìáôïò ãéá êÜèå ïìÜäá
ðñÝðåé íá éêáíïðïéåß ôç óõíèÞêç ðïõ áêïëïõèåß ôç ëÝîç HAVING. ÔÝëïò, ç SQL
õðïóôçñßæåé ôáîéíüìçóç ôùí áðïôåëåóìÜôùí ùò ðñïò ìßá Þ ðåñéóóüôåñåò óôÞëåò,
åðéôñÝðïíôáò íá ëÜâïõìå ôá áðïôåëÝóìáôá êáôÜ áýîïõóá Þ öèßíïõóá äéÜôáîç.
Ãéá ôçí ôáîéíüìçóç ÷ñçóéìïðïéåßôáé ç åíôïëÞ ORDER BY, ç ïðïßá áêïëïõèåßôáé
1
Ç åíôïëÞ SELECT ôçò SQL éóïäõíáìåß ìå ôçí ðñÜîç ôçò ðñïâïëÞò (Ð) ôçò ó÷åóéáêÞò Üëãå-
âñáò, êáé ü÷é ìå ôçí ðñÜîç ôçò åðéëïãÞò (ó).
216 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

ìå ASCENDING (Þ ASC) ãéá áýîïõóá äéÜôáîç Þ DESCENDING (Þ DESC) ãéá


öèßíïõóá.
¸íá âáóéêü ÷áñáêôçñéóôéêü ôçò SQL åßíáé üôé ç áðÜíôçóç óå Ýíá åñþôçìá
åßíáé ðßíáêáò. Áõôü ôï ÷áñáêôçñéóôéêü èõìßæåé ôç ó÷åóéáêÞ Üëãåâñá óôçí ïðïßá
ç áðÜíôçóç óå Ýíá åñþôçìá åßíáé ó÷Ýóç. Ïé óôÞëåò ôïõ ðßíáêá ôçò áðÜíôçóçò
êáèïñßæïíôáé áðü ôçí Ýêöñáóç SELECT, åíþ ïé ãñáììÝò ôïõ ðßíáêá áðÜíôçóçò
èá ðñÝðåé íá éêáíïðïéïýí üëåò ôéò óõíèÞêåò ðïõ èÝôåé ôï åñþôçìá.
Óôç óõíÝ÷åéá ðáñáèÝôïõìå ìåñéêÜ åñùôÞìáôá êáé ðáñïõóéÜæïõìå ôïí ôñüðï
äéáôýðùóçò óå SQL. ÅðåéäÞ Ýíá üíïìá óôÞëçò ìðïñåß íá åìöáíßæåôáé óå ðïë-
ëïýò ðßíáêåò (ð.÷., êùäéêüò) óôçí SQL ÷ñçóéìïðïéåßôáé ï óõìâïëéóìüò üíïìá-
ðßíáêá.üíïìá-óôÞëçò ãéá ôï äéá÷ùñéóìü.

ÁðëÜ ÅñùôÞìáôá
×áñáêôçñßæïõìå Ýíá åñþôçìá ùò áðëü, áí áðáéôåßôáé íá ÷ñçóéìïðïéçèåß ìüíï
Ýíáò ðßíáêáò ãéá íá áðáíôçèåß. Óôç óõíÝ÷åéá äßíïíôáé ìåñéêÜ áðëÜ ðáñáäåßãìáôá
ìÝóù ôùí ïðïßùí ðáñïõóéÜæïíôáé ôá âáóéêÜ óôïé÷åßá ôçò äéáôýðùóçò åñùôçìÜ-
ôùí.

Åñþôçìá 1: "Íá åðéóôñáöïýí üëåò ïé ãñáììÝò ôïõ ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ."

SELECT *
FROM ÃíùóôéêÞ Ðåñéï÷Þ;
Þ
SELECT êùäéêüò, ôßôëïò, áñéèìüò óõíäñïìçôþí
FROM ÃíùóôéêÞ Ðåñéï÷Þ;

Ìå ôï óýìâïëï "*" Þ ìå ôç ëÝîç ALL äçëþíïõìå üôé èÝëïõìå óôï áðïôÝëåóìá üëåò
ôéò óôÞëåò ôïõ ðßíáêá. ÅíáëëáêôéêÜ ìðïñïýìå íá ðáñáèÝóïõìå üëåò ôéò óôÞëåò,
êÜôé ðïõ äåí åßíáé éäéáßôåñá âïëéêü üôáí ï áñéèìüò ôùí óôçëþí åßíáé ìåãÜëïò.

Åñþôçìá 2: "Íá âñåèïýí üëïé ïé ôßôëïé ôùí ãíùóôéêþí ðåñéï÷þí ðïõ åßíáé áðï-
èçêåõìÝíïé óôç ÂÄ."

SELECT ôßôëïò
FROM ÃíùóôéêÞ Ðåñéï÷Þ;

Åñþôçìá 3: "Íá âñåèïýí ôá äéáöïñåôéêÜ ïíüìáôá ôùí óõíäñïìçôþí."


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 217

SELECT DISTINCT üíïìá


FROM ÓõíäñïìçôÞò;

Åñþôçìá 4: "Íá âñåèïýí ïé êùäéêïß, ôá ïíüìáôá êáé ïé áñéèìïß ðéóôùôéêþí


êáñôþí ôùí óõíäñïìçôþí ðïõ âñßóêïíôáé óôçí ÅëëÜäá, êáé ôá áðïôåëÝóìáôá
íá ôáîéíïìçèïýí áëöáâçôéêÜ ùò ðñïò ôï üíïìá, êáé óôç óõíÝ÷åéá ùò ðñïò ôïí
áñéèìü ðéóôùôéêÞò êÜñôáò."

SELECT êùäéêüò,üíïìá,ÁÐÊ
FROM ÓõíäñïìçôÞò
WHERE ÷þñá=‘ÅëëÜäá’
ORDER BY üíïìá, ÁÐÊ;

Åñþôçìá 5: "Íá âñåèïýí ïé êùäéêïß êáé ïé ôßôëïé ôùí Üñèñùí ðïõ Ý÷ïõí äçìï-
óéåõèåß êáé óå ðåñéïäéêü êáé óå ðñáêôéêÜ óõíåäñßïõ."

SELECT êùäéêüò,ôßôëïò
FROM ¢ñèñï
WHERE êùäéêüò_ðåñéïäéêïý IS NOT NULL AND
êùäéêüò_ðñáêôéêþí_óõíåäñßïõ IS NOT NULL;

Óôï ôåëåõôáßï åñþôçìá ðñïóÝîôå ôç ÷ñÞóç ôïõ IS NOT NULL. Áõôüò åßíáé
Ýíáò Ýîõðíïò ôñüðïò ãéá íá äéáðéóôþóïõìå áí ç ôéìÞ ìßáò óôÞëçò åßíáé NULL
Þ ü÷é. Ôïíßæåôáé üôé äåí ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôïõò ðáñáäïóéáêïýò
ôåëåóôÝò óýãêñéóçò óå ìßá ôéìÞ NULL (ð.÷., x = NULL, x <> NULL).

ÅñùôÞìáôá Óýíäåóçò
¼ðùò åßíáé ãíùóôü áðü ôç ó÷åóéáêÞ Üëãåâñá (âë. ÊåöÜëáéï 7), ç óýíäåóç
áöïñÜ óôï óõíäõáóìü äýï Þ ðåñéóóïôÝñùí ðéíÜêùí þóôå íá åîá÷èåß ôï æçôïý-
ìåíï áðïôÝëåóìá. Ôá åñùôÞìáôá ðïõ ðåñéÝ÷ïõí óýíäåóç åìöáíßæïíôáé ðïëý óõ-
÷íÜ, êáé áõôü óõìâáßíåé åðåéäÞ ìåôÜ ôç äéáäéêáóßá ôçò ìåôáôñïðÞò ôïõ ìïíôÝëïõ
ÏÓ óå ó÷åóéáêü (âë. ÊåöÜëáéï 5) êáé ôç äéáäéêáóßá ôçò êáíïíéêïðïßçóçò (âë.
ÊåöÜëáéï 8), ôá äåäïìÝíá âñßóêïíôáé äéÜóðáñôá óå ðïëëïýò ðßíáêåò ôçò ÂÄ.
Ôï åßäïò ôçò óýíäåóçò ïñßæåôáé óôï ôìÞìá WHERE2 ôïõ åñùôÞìáôïò, óôï ïðïßï
äçëþíïíôáé ïé óõíèÞêåò ðïõ ðñÝðåé íá éêáíïðïéïýíôáé.

Åñþôçìá 6: "Íá âñåèïýí ïé êùäéêïß êáé ôá ïíüìáôá ôùí óõíäñïìçôþí êáé ïé


ôßôëïé ôùí ãíùóôéêþí ðåñéï÷þí ãéá ôéò ïðïßåò áõôïß Ý÷ïõí ðëçñþóåé óõíäñïìÞ."
2
Óôç óõíÝ÷åéá ôïõ êåöáëáßïõ èá åîåôÜóïõìå êÜðïéïõò ôýðïõò óýíäåóçò ðïõ ïñßæïíôáé óôï ôìÞìá
FROM ôïõ åñùôÞìáôïò SQL.
218 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

SELECT ÓõíäñïìçôÞò.êùäéêüò,üíïìá,ôßôëïò
FROM ÓõíäñïìçôÞò,ÃíùóôéêÞ_Ðåñéï÷Þ,ÓõíäñïìÞ
WHERE ÓõíäñïìçôÞò.êùäéêüò=êùäéêüò_óõíäñïìçôÞ AND
êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò=ÃíùóôéêÞ_Ðåñéï÷Þ.êùäéêüò;

Åäþ Ý÷ïõìå Ýíá ðáñÜäåéãìá ÷ñÞóçò ôñéþí ðéíÜêùí ãéá íá ðñïóðåëÜóïõìå ôá


æçôïýìåíá äåäïìÝíá. ÐáñáôçñÞóôå üôé ï êùäéêüò êáé ôï üíïìá ôïõ óõíäñïìçôÞ
âñßóêïíôáé óôïí ðßíáêá ÓõíäñïìçôÞò, åíþ ï ôßôëïò ôçò ãíùóôéêÞò ðåñéï÷Þò âñß-
óêåôáé óôïí ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ. Áðáéôåßôáé ç ÷ñÞóç ôïõ ðßíáêá ÓõíäñïìÞ,
ï ïðïßïò óõíäõÜæåé ôïõò êùäéêïýò ôùí äýï ðéíÜêùí. ÐáñáôçñÞóôå, üôé ãéá ôéò
óôÞëåò êùäéêüò óõíäñïìçôÞ êáé êùäéêüò ãíùóôéêÞò ðåñéï÷Þò äåí áðáéôåßôáé íá
ðñïóäéïñßóïõìå ôïí ðßíáêá ÓõíäñïìÞ äéüôé ôá ïíüìáôá ôùí óôçëþí áõôþí äåí
åìöáíßæïíôáé óôïõò Üëëïõò ðßíáêåò ðïõ ÷ñçóéìïðïéåß ôï åñþôçìá. Ôï ßäéï éó÷ýåé
êáé ãéá ôéò óôÞëåò üíïìá êáé ôßôëïò ïé ïðïßåò ðñïÝñ÷ïíôáé áðü ôïõò ðßíáêåò Óõí-
äñïìçôÞò êáé ÃíùóôéêÞ Ðåñéï÷Þ áíôéóôïß÷ùò.

Åñþôçìá 7: "Íá âñåèïýí ïé ôßôëïé ôùí Üñèñùí êáé ôá ïíüìáôá ôùí óõããñáöÝùí
ðïõ ôá Ý÷ïõí óõããñÜøåé. Ôï áðïôÝëåóìá íá ôáîéíïìçèåß áëöáâçôéêÜ ùò ðñïò
ôïõò ôßôëïõò ôùí Üñèñùí"

SELECT ¢ñèñï.ôßôëïò,ÓõããñáöÝáò.üíïìá
FROM ¢ñèñï, ÓõããñáöÝáò, ÓõããñáöÞ_¢ñèñïõ
WHERE ¢ñèñï.êùäéêüò=ÓõããñáöÞ_¢ñèñïõ.êùäéêüò_Üñèñïõ AND
ÓõããñáöÞ_¢ñèñïõ.êùäéêüò_óõããñáöÝá=ÓõããñáöÝáò.êùäéêüò
ORDER BY ¢ñèñï.ôßôëïò;

Åñþôçìá 8: "Íá ðñïóäéïñéóèåß ï ôßôëïò êÜèå Üñèñïõ êáé ï ôßôëïò ôçò ãíùóôéêÞò
ðåñéï÷Þò üðïõ áíÞêåé."

Ç SQL äßíåé ôç äõíáôüôçôá íá äéáôõðþóïõìå ôï åñþôçìá áõôü ìå äéáöïñåôéêïýò


ôñüðïõò. ÐáñáôçñÞóôå üôé óýìöùíá ìå ôç ó÷åóéáêÞ Üëãåâñá, ôï ðñïçãïýìåíï
åñþôçìá åìðåñéÝ÷åé ôçí ðñÜîç ôçò öõóéêÞò óýíäåóçò. Ïé åðüìåíåò åíôïëÝò SQL
åðéóôñÝöïõí ôï ßäéï áðïôÝëåóìá:

SELECT ¢ñèñï.ôßôëïò,ÃíùóôéêÞ_Ðåñéï÷Þ.ôßôëïò
FROM ¢ñèñï,ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE ÃíùóôéêÞ_Ðåñéï÷Þ.êùäéêüò=êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò;

SELECT ¢ñèñï.ôßôëïò,ÃíùóôéêÞ_Ðåñéï÷Þ.ôßôëïò
FROM ¢ñèñï JOIN ÃíùóôéêÞ_Ðåñéï÷Þ
ON ÃíùóôéêÞ_Ðåñéï÷Þ.êùäéêüò=êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò;
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 219

Óôç äåýôåñç äéáôýðùóç ãßíåôáé ÷ñÞóç ôçò åíôïëÞò ... JOIN ... ON ..., ç ïðïßá
åðéóôñÝöåé ùò áðïôÝëåóìá ôç öõóéêÞ óýíäåóç ôùí äýï ðéíÜêùí ùò ðñïò ôïí
êùäéêü ôçò ãíùóôéêÞò ðåñéï÷Þò. Óôç óõíÝ÷åéá, ôï ôìÞìá SELECT åðéëÝãåé ôéò
æçôïýìåíåò óôÞëåò. Áêüìç, ç SQL ðñïóöÝñåé ôéò åîÞò ôñåéò åíôïëÝò ãéá ôïí
õðïëïãéóìü ôçò åîùôåñéêÞò óýíäåóçò äýï ðéíÜêùí:

• R1 LEFT JOIN R2 ON R1.a=R2.b (áñéóôåñÞ åîùôåñéêÞ óýíäåóç)

• R1 RIGHT JOIN R2 ON R1.a=R2.b (äåîéÜ åîùôåñéêÞ óýíäåóç)

• R1 FULL JOIN R2 ON R1.a=R2.b (ðëÞñçò åîùôåñéêÞ óýíäåóç)

¸íùóç, ÄéáöïñÜ êáé ÔïìÞ


Ç SQL ðáñÝ÷åé åéäéêÝò åíôïëÝò ãéá ôçí õðïóôÞñéîç ôùí ðñÜîåùí ôçò ó÷åóéáêÞò
Üëãåâñáò ðïõ áíáöÝñïíôáé óôçí Ýíùóç, äéáöïñÜ êáé ôïìÞ ðéíÜêùí. Ïé ðñÜîåéò
áõôÝò õëïðïéïýíôáé óôçí SQL ìå ôéò åíôïëÝò UNION, EXCEPT êáé INTERSECT,
áíôéóôïß÷ùò.

Åñþôçìá 9: "Íá ðñïóäéïñéóèïýí ïé ôßôëïé ôùí óõíåäñßùí êáé ïé ôßôëïé ôùí ðåñéï-
äéêþí."

SELECT óõíÝäñéï
FROM ÐñáêôéêÜ_Óõíåäñßïõ
UNION
SELECT ôßôëïò
FROM Ðåñéïäéêü;

Ôï ðñþôï õðïåñþôçìá åðéëÝãåé ôïõò ôßôëïõò ôùí óõíåäñßùí, åíþ ôï äåýôåñï


ôïõò ôßôëïõò ôùí ðåñéïäéêþí. Ôá äýï áðïôåëÝóìáôá óõíäõÜæïíôáé ìå ôçí åíôïëÞ
UNION þóôå íá ðñïêýøåé ï æçôïýìåíïò ðßíáêáò.

Åñþôçìá 10: "Íá âñåèïýí (áí õðÜñ÷ïõí) óõíäñïìçôÝò ðïõ Ý÷ïõí ôï ßäéï üíïìá
ìå êÜðïéï óõããñáöÝá."

SELECT üíïìá
FROM ÓõíäñïìçôÞò
INTERSECT
SELECT üíïìá
FROM ÓõããñáöÝáò;
220 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

Ôï ðñþôï õðïåñþôçìá åðéëÝãåé ôá ïíüìáôá ôùí óõíäñïìçôþí áðü ôïí ðßíáêá


ÓõíäñïìçôÞò, åíþ ôï äåýôåñï ôá ïíüìáôá ôùí óõããñáöÝùí áðü ôïí ðßíáêá Óõã-
ãñáöÝáò. Ôá áðïôåëÝóìáôá ôùí äýï õðïåñùôçìÜôùí óõíäõÜæïíôáé ìå ôçí åíôïëÞ
INTERSECT, þóôå íá ðñïêýøåé ï æçôïýìåíïò ðßíáêáò ðïõ ðåñéÝ÷åé ôá êïéíÜ
ïíüìáôá.

Åñþôçìá 11: "Íá ðñïóäéïñéóèïýí ïé êùäéêïß êáé ïé ôßôëïé ôùí Üñèñùí ðïõ äåí
Ý÷ïõí äçìïóéåõèåß óå êÜðïéï ðåñéïäéêü."
SELECT êùäéêüò,ôßôëïò
FROM ¢ñèñï
EXCEPT
SELECT êùäéêüò,ôßôëïò
FROM ¢ñèñï
WHERE êùäéêüò_ðåñéïäéêïý IS NOT NULL;

Ôï ðñþôï õðïåñþôçìá åðéëÝãåé üëá ôá Üñèñá áðü ôïí ðßíáêá ¢ñèñï, åíþ ôï
äåýôåñï åðéëÝãåé ìüíï ôá Üñèñá ðïõ Ý÷ïõí äçìïóéåõèåß óå êÜðïéï ðåñéïäéêü.
Ç äéáöïñÜ ôùí äýï óõíüëùí äßíåé ôï æçôïýìåíï áðïôÝëåóìá. Ôï åñþôçìá áõôü
ìðïñåß åðßóçò íá äéáôõðùèåß ÷ùñßò íá ÷ñçóéìïðïéÞóïõìå ôçí åíôïëÞ EXCEPT,
ùò åîÞò:
SELECT êùäéêüò,ôßôëïò
FROM ¢ñèñï
WHERE êùäéêüò_ðåñéïäéêïý IS NULL;

Ìåôïíïìáóßá
Ç SQL äßíåé ôç äõíáôüôçôá íá ìåôïíïìÜóïõìå ìßá óôÞëç Þ ìßá Ýêöñáóç (êáô’ áíôé-
óôïé÷ßá ìå ôçí ðñÜîç ìåôïíïìáóßáò ôçò ó÷åóéáêÞò Üëãåâñáò). Ôá ïíüìáôá ôùí
óôçëþí ôïõ áðïôåëÝóìáôïò ðñïóäéïñßæïíôáé áðü ôï ôìÞìá SELECT ôïõ åñùôÞìá-
ôïò. ÈåùñÞóôå ôï åñþôçìá ðïõ õðïëïãßæåé ôï Üèñïéóìá ôùí óõíäñïìçôþí üëùí
ôùí ãíùóôéêþí ðåñéï÷þí:

Åñþôçìá 12: "Íá âñåèåß ôï Üèñïéóìá ôùí óõíäñïìçôþí ãéá üëåò ôéò ãíùóôéêÝò
ðåñéï÷Ýò."

SELECT SUM(áñéèìüò óõíäñïìçôþí)


FROM ÃíùóôéêÞ Ðåñéï÷Þ;

Ôï áðïôÝëåóìá ôïõ åñùôÞìáôïò åßíáé Ýíáò ðßíáêáò ìå ìßá ãñáììÞ êáé ìßá óôÞëç ìå
üíïìá SUM(áñéèìüò óõíäñïìçôþí). Ðáñáôçñïýìå üôé ôï üíïìá ôçò óôÞëçò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 221

äåí åßíáé êáèüëïõ âïëéêü. Ôï ðñüâëçìá ãßíåôáé åíôïíüôåñï áí ÷ñçóéìïðïéïýíôáé


õðïåñùôÞìáôá. ÐñïóèÝôïíôáò ôç ëÝîç AS óôï ôìÞìá SELECT ìðïñïýìå íá äç-
ëþóïõìå ôï åðéèõìçôü üíïìá ôçò óôÞëçò ùò åîÞò:

SELECT SUM(áñéèìüò óõíäñïìçôþí) AS óõíïëéêÝò óõíäñïìÝò


FROM ÃíùóôéêÞ Ðåñéï÷Þ;

Ç ëÝîç AS ìðïñåß íá åìöáíßæåôáé êáé óôï ôìÞìá FROM ôçò åíôïëÞò SELECT.
Óôçí ðåñßðôùóç áõôÞ ÷ñçóéìïðïéåßôáé ãéá ôç ìåôïíïìáóßá ðéíÜêùí. Ç éäéüôçôá
áõôÞ åßíáé éäéáßôåñá ÷ñÞóéìç áí ðñáãìáôïðïéïýíôáé ðñÜîåéò óýíäåóçò åíüò ðß-
íáêá ìå ôïí åáõôü ôïõ. ÈåùñÞóôå üôé æçôïýìå ôá æåýãç êùäéêþí ãíùóôéêþí ðå-
ñéï÷þí (êùäéêüòA, êùäéêüòB), Ýôóé þóôå ï áñéèìüò óõíäñïìçôþí ôçò ãíùóôéêÞò
ðåñéï÷Þò A íá åßíáé ìéêñüôåñïò ôçò Â.

Åñþôçìá 13: "Íá âñåèïýí ôá æåýãç êùäéêþí ãíùóôéêþí ðåñéï÷þí Ýôóé þóôå ï
áñéèìüò óõíäñïìçôþí ôçò ðñþôçò íá åßíáé ìéêñüôåñïò ôïõ áñéèìïý óõíäñïìçôþí
ôçò äåýôåñçò."
SELECT A.êùäéêüò AS êùäéêüòÁ, B.êùäéêüò AS êùäéêüòÂ
FROM ÃíùóôéêÞ_Ðåñéï÷Þ AS A, ÃíùóôéêÞ_Ðåñéï÷Þ AS B
WHERE A.áñéèìüò_óõíäñïìçôþí < B.áñéèìüò_óõíäñïìçôþí;

ÅñùôÞìáôá ìå ÓõíáñôÞóåéò ÓõíÜèñïéóçò


Ïé óõíáñôÞóåéò óõíÜèñïéóçò (aggregate functions) ÷ñçóéìïðïéïýíôáé ãéá ôçí åîá-
ãùãÞ óõãêåíôñùôéêþí ôéìþí áðü ôéò ôéìÝò ìßáò óôÞëçò. Ç SQL õðïóôçñßæåé ôéò
åîÞò ðÝíôå óõíáñôÞóåéò:
• ÌÉÍ ãéá ôçí åýñåóç ôçò åëÜ÷éóôçò ôéìÞò ìßáò óôÞëçò,
• MAX ãéá ôçí åýñåóç ôçò ìÝãéóôçò ôéìÞò ìßáò óôÞëçò,
• AVG ãéá ôïí õðïëïãéóìü ôçò ìÝóçò ôéìÞò ìßáò óôÞëçò,
• SUM, ãéá ôïí õðïëïãéóìü ôïõ áèñïßóìáôïò ôùí ôéìþí ìßáò óôÞëçò,
• COUNT, ãéá ôç ìÝôñçóç ôïõ ðëÞèïõò ôùí ãñáììþí.
Áò åîåôÜóïõìå óôç óõíÝ÷åéá ìåñéêÜ ðáñáäåßãìáôá ÷ñÞóçò ôùí óõíáñôÞóåùí
óõíÜèñïéóçò óå åñùôÞìáôá SQL.

Åñþôçìá 14: "Íá âñåèåß ôï ðëÞèïò Üñèñùí ðïõ åßíáé êáôá÷ùñéóìÝíá óôç ÂÄ."
222 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

SELECT COUNT(¢ñèñï.êùäéêüò)
FROM ¢ñèñï;

Åñþôçìá 15: "Íá âñåèåß ôï óýíïëï ôùí Üñèñùí ðïõ Ý÷åé ãñÜøåé ï óõããñáöÝáò
ìå êùäéêü 1."

SELECT COUNT(ÓõããñáöÞ ¢ñèñïõ.êùäéêüò Üñèñïõ)


FROM ÓõããñáöÞ ¢ñèñïõ
WHERE ÓõããñáöÞ ¢ñèñïõ.êùäéêüò óõããñáöÝá=1;

ÐïëëÝò öïñÝò ïé óõíáñôÞóåéò óõíÜèñïéóçò ÷ñçóéìïðïéïýíôáé ìå óôü÷ï ôïí


ðñïóäéïñéóìü ôéìþí ãéá äéáöïñåôéêÝò ïìÜäåò. Ãéá ðáñÜäåéãìá, Ýóôù üôé èÝëïõìå
íá ðñïóäéïñßóïõìå ôï ðëÞèïò ôùí Üñèñùí ðïõ Ý÷åé ãñÜøåé ï êÜèå óõããñáöÝáò.
Ðáñáôçñïýìå üôé óôç ãåíéêÞ ðåñßðôùóç ç áðÜíôçóç óå Ýíá ôÝôïéï åñþôçìá áðï-
ôåëåßôáé áðü ðïëëÝò ãñáììÝò êáé äýï óôÞëåò. Óôá åñùôÞìáôá ðïõ åîåôÜóáìå
ðñïçãïõìÝíùò, ç áðÜíôçóç áðïôåëïýíôáí ìüíï áðü ìßá ãñáììÞ êáé ìßá óôÞëç
(äçëáäÞ ìßá ìüíï ôéìÞ). Óôéò ðåñéðôþóåéò üðïõ áðáéôåßôáé ï ðñïóäéïñéóìüò ôçò
ôéìÞò ìßáò óõíÜñôçóçò óõíÜèñïéóçò ãéá äéáöïñåôéêÝò ïìÜäåò äåäïìÝíùí, ôüôå
åßíáé áðáñáßôçôç ç ÷ñÞóç ôçò åíôïëÞò GROUP BY (êáé ôçò HAVING óå ðïëëÝò
ðåñéðôþóåéò).

Åñþôçìá 16: "Íá âñåèåß ôï ðëÞèïò ôùí Üñèñùí ðïõ Ý÷åé ãñÜøåé êÜèå óõã-
ãñáöÝáò."

SELECT üíïìá, COUNT(êùäéêüò_Üñèñïõ) AS áñéèìüò_Üñèñùí


FROM ÓõããñáöÝáò,ÓõããñáöÞ_¢ñèñïõ
WHERE êùäéêüò=êùäéêüò_óõããñáöÝá
GROUP BY üíïìá;

Ç åíôïëÞ GROUP BY ôïðïèåôåßôáé áìÝóùò ìåôÜ ôéò óõíèÞêåò ôïõ WHERE. Ç


åíôïëÞ GROUP BY áêïëïõèåßôáé áðü ôï üíïìá ôçò óôÞëçò ìå âÜóç ôçí ïðïßá
èá ðñáãìáôïðïéçèåß ç ïìáäïðïßçóç ôùí äåäïìÝíùí. Óçìåéþíåôáé üôé ãéá ôçí
ïìáäïðïßçóç ìðïñïýí íá ÷ñçóéìïðïéçèïýí ðåñéóóüôåñåò ôçò ìßáò óôÞëåò. Óôï
óõãêåêñéìÝíï ðáñÜäåéãìá ç ïìáäïðïßçóç áöïñÜ óôç óôÞëç ÓõããñáöÝáò.üíïìá,
áöïý èÝëïõìå ôï ðëÞèïò ôùí Üñèñùí áíÜ óõããñáöÝá. Ç óõããñáöÞ åñùôçìÜôùí
SQL ìå ÷ñÞóç GROUP BY áðáéôåß éäéáßôåñç ðñïóï÷Þ. ¸íáò áðü ôïõò ðåñéïñé-
óìïýò ðïõ ðñÝðåé íá ôçñïýíôáé åßíáé üôé ïé óôÞëåò ðïõ ÷ñçóéìïðïéïýíôáé ãéá
ôçí ïìáäïðïßçóç ôùí ãñáììþí èá ðñÝðåé íá âñßóêïíôáé êáé óôï ôìÞìá SELECT
ôïõ åñùôÞìáôïò. Óôï Ó÷Þìá 9.2 áðåéêïíßæåôáé ôï áðïôÝëåóìá ôçò åêôÝëåóçò ôïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 223

ðñïçãïýìåíïõ åñùôÞìáôïò ìå âÜóç ôï óôéãìéüôõðï ôùí ðéíÜêùí ÓõããñáöÝáò êáé


ÓõããñáöÞ ¢ñèñïõ.

êùäéêüò êùäéêüò
óõããñáöÝá Üñèñïõ êùäéêüò üíïìá ...
1 1 1 A. Guttman ...
1 2 2 D. Knuth ...
2 3 3 J. Gray ...
2 4 4 A. Corral ...
3 6
4 7 Ðßíáêáò ÓõããñáöÝáò
4 9
üíïìá áñéèìüò Üñèñùí
2 10
3 12 A. Guttman 2
3 14 D. Knuth 6
2 13 J. Gray 3
2 5 A. Corral 2
2 4 ÁðïôÝëåóìá åñùôÞìáôïò
Ðßíáêáò ÓõããñáöÞ ¢ñèñïõ

Ó÷Þìá 9.2: ÁðïôÝëåóìá åýñåóçò ôïõ ðëÞèïõò ôùí Üñèñùí áíÜ óõããñáöÝá.

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôç ÷ñÞóç ôçò Ýêöñáóçò HAVING, ðïõ óõíïäåýåé


ðïëëÝò öïñÝò ìßá Ýêöñáóç GROUP BY. Ç Ýêöñáóç HAVING ÷ñçóéìïðïéåßôáé ãéá
íá ïñßóåé ðåñéïñéóìïýò ðïõ ó÷åôßæïíôáé ìå ôçí ïìáäïðïßçóç ðïõ Ý÷åé ðñáãìáôï-
ðïéçèåß. Ãéá ðáñÜäåéãìá, áí èÝëïõìå óôçí Ýîïäï ôïõò óõããñáöåßò êáé ôï ðëÞèïò
ôùí Üñèñùí ðïõ Ý÷åé ãñÜøåé ï êáèÝíáò Ýôóé þóôå ï êÜèå óõããñáöÝáò íá Ý÷åé
ãñÜøåé ðåñéóóüôåñï áðü ôñßá Üñèñá, ôüôå èá ðñÝðåé íá ïñßóïõìå Ýíáí åðéðëÝïí
ðåñéïñéóìü, ðïõ üìùò äåí ìðïñåß íá äéáôõðùèåß óôï ôìÞìá WHERE ôïõ åñùôÞìá-
ôïò SQL.

Åñþôçìá 17: "Íá âñåèåß ôï ðëÞèïò ôùí Üñèñùí ðïõ Ý÷åé ãñÜøåé êÜèå óõã-
ãñáöÝáò ãéá ôïõò óõããñáöåßò ðïõ Ý÷ïõí ãñÜøåé ðåñéóóüôåñá áðü ôñßá Üñèñá."

SELECT üíïìá,COUNT(êùäéêüò_Üñèñïõ) AS áñéèìüò_Üñèñùí


FROM ÓõããñáöÝáò, ÓõããñáöÞ_¢ñèñïõ
WHERE êùäéêüò=êùäéêüò_óõããñáöÝá
GROUP BY üíïìá
HAVING áñéèìüò_Üñèñùí>3;
224 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

ÁíáæÞôçóç ìå ÓåéñÝò ×áñáêôÞñùí


Ç SQL ðáñÝ÷åé åéäéêïýò ìç÷áíéóìïýò ãéá ôçí áíáæÞôçóç óåéñÜò ÷áñáêôÞñùí.
Óå ðïëëÝò ðåñéðôþóåéò áðáéôåßôáé ç áíáæÞôçóç ìßáò óåéñÜò ÷áñáêôÞñùí ðïõ íá
ðåñéÝ÷åôáé ìÝóá óå Üëëç. Åðßóçò, õðÜñ÷åé ôï åíäå÷üìåíï íá ìç ãíùñßæïõìå ôïí
åðáêñéâÞ ôñüðï áðïèÞêåõóçò ìßáò óåéñÜò ÷áñáêôÞñùí óôç ÂÄ (ð.÷., ðåæÜ Þ êå-
öáëáßá ãñÜììáôá). Ãéá ôçí áíáæÞôçóç óåéñþí ÷áñáêôÞñùí ÷ñçóéìïðïéïýíôáé ïé
ôåëåóôÝò LIKE êáé NOT LIKE.

Åñþôçìá 18: "Íá âñåèïýí ïé óõíäñïìçôÝò ôùí ïðïßùí ôï åðßèåôï ôåëåéþíåé óå


‘üðïõëïò’."

SELECT *
FROM ÓõíäñïìçôÞò
WHERE üíïìá LIKE ‘\%üðïõëïò’;

ÐáñáôçñÞóôå ôç ÷ñÞóç ôïõ ÷áñáêôÞñá "%" óôç óåéñÜ ÷áñáêôÞñùí. Ç åìöÜíéóç


ôïõ ÷áñáêôÞñá "%" óçìáßíåé üôé óôç èÝóç áõôÞ ìðïñåß íá õðÜñ÷ïõí êáíÝíáò,
Ýíáò Þ ðåñéóóüôåñïé ÷áñáêôÞñåò. ÅðïìÝíùò, ìå ôï åñþôçìá áõôü áíáæçôïýìå
óõíäñïìçôÝò ðïõ ôï üíïìá ôïõò ôåëåéþíåé óå "üðïõëïò". Ï åéäéêüò ÷áñáêôÞñáò
" " ÷ñçóéìïðïéåßôáé ãéá íá äçëþóåé ôçí ýðáñîç áêñéâþò åíüò ÷áñáêôÞñá. Ïé
åéäéêïß ÷áñáêôÞñåò ìðïñåß íá âñßóêïíôáé óôçí áñ÷Þ, óôç ìÝóç Þ óôï ôÝëïò ôçò
óåéñÜò ÷áñáêôÞñùí. Ï ôåëåóôÞò NOT LIKE Ý÷åé áêñéâþò ôï áíôßèåôï áðïôÝëåóìá,
áíáæçôþíôáò óåéñÝò ÷áñáêôÞñùí ðïõ äåí ìïéÜæïõí ìå ôç äåäïìÝíç. Óôïí Ðßíáêá
9.2 ðáñïõóéÜæïíôáé ìåñéêÜ ðáñáäåßãìáôá ÷ñÞóçò ôïõ êáôçãïñÞìáôïò LIKE.

ÕðïåñùôÞìáôá
¸íá åñþôçìá SQL ìðïñåß íá ðåñéëáìâÜíåé õðïåñùôÞìáôá ðïõ åìðåñéÝ÷ïíôáé
ôï Ýíá ìÝóá óôï Üëëï. Ôï áðïôÝëåóìá ôïõ åóùôåñéêïý õðïåñùôÞìáôïò ÷ñçóéìï-
ðïéåßôáé áðü ôï åîùôåñéêü õðïåñþôçìá. Ôï åóùôåñéêü õðïåñþôçìá ìðïñåß íá
åìöáíßæåôáé óôá ôìÞìáôá WHERE Þ HAVING ìßáò åíôïëÞò SQL3 .

Åñþôçìá 19: "Íá âñåèïýí ïé ôßôëïé ôùí ãíùóôéêþí ðåñéï÷þí ãéá ôéò ïðïßåò éó÷ýåé
üôé ï áñéèìüò óõíäñïìçôþí åßíáé ìåãáëýôåñïò áðü ôï ìÝóï üñï."

SELECT ôßôëïò
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí >
3
Óôç óõíÝ÷åéá èá åîåôÜóïõìå ôç ÷ñÞóç õðïåñùôçìÜôùí êáé óå åíôïëÝò INSERT, UPDATE
êáé DELETE.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 225

Ðñüôõðï ÅðåîÞãçóç Ðáñáäåßãìáôá


‘Âáó%’ Íá åíôïðéóôïýí ïé óõìâïëïóåéñÝò
ðïõ áñ÷ßæïõí ìå ‘Âáó’ ‘ÂáóéëÜêçò’, ‘Âáóéëåßïõ’
‘%üðïõëïò’ Íá åíôïðéóôïýí ïé óõìâïëïóåéñÝò
ðïõ ôåëåéþíïõí óå ‘üðïõëïò’ ‘Âáóéëáêüðïõëïò’, ‘Íáíüðïõëïò’
‘%ðïõ%’ Íá åíôïðéóôïýí ïé óõìâïëïóåéñÝò
ðïõ ðåñéÝ÷ïõí ôï ‘ðïõ’ ‘Ìáíùëüðïõëïò’, ‘Ðáðáäüðïõëïò’
‘ÃéÜíí ò’ Íá åíôïðéóôïýí ïé óõìâïëïóåéñÝò
ìå áêñéâþò Ýíá ÷áñáêôÞñá
ìåôáîý ôïõ ‘ÃéÜíí’ êáé ôïõ ‘ò’ ‘ÃéÜííçò’, ‘ÃéÜííïò’
‘%ããÝëï ’ Íá åíôïðéóôïýí ïé óõìâïëïóåéñÝò
ðïõ ðåñéÝ÷ïõí ôï ‘ããÝëï’
êáé áêïëïõèåß Ýíáò ÷áñáêôÞñáò ‘ÅõáããÝëïõ’, ‘¢ããÝëïõ’

Ðßíáêáò 9.2: ×ñÞóç ôïõ êáôçãïñÞìáôïò LIKE.

(SELECT AVG(áñéèìüò_óõíäñïìçôþí)
FROM ÃíùóôéêÞ_Ðåñéï÷Þ);

Ôï åóùôåñéêü õðïåñþôçìá åðéóôñÝöåé ìßá ìüíï ôéìÞ ðïõ åßíáé ï ìÝóïò üñïò ôïõ
ðëÞèïõò óõíäñïìçôþí ãéá üëåò ôéò ãíùóôéêÝò ðåñéï÷Ýò. Óôç óõíÝ÷åéá, ç ôéìÞ ôçò
óôÞëçò áñéèìüò óõíäñïìçôþí êÜèå ãñáììÞò ôïõ ðßíáêá óõãêñßíåôáé ìå ôï ìÝóï
üñï, êáé áí åßíáé ìåãáëýôåñç ôüôå óõìðåñéëáìâÜíåôáé óôï áðïôÝëåóìá, äéáöïñå-
ôéêÜ áðïññßðôåôáé.

Åñþôçìá 20: "Íá ðñïóäéïñéóèïýí ïé ôßôëïé ôùí ãíùóôéêþí ðåñéï÷þí üðïõ äåí
áíôéóôïé÷åß êÜðïéï Üñèñï."

SELECT ôßôëïò
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE êùäéêüò NOT IN
(SELECT êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò
FROM ¢ñèñï);

Ôï åóùôåñéêü õðïåñþôçìá åðéóôñÝöåé Ýíá óýíïëï ôéìþí, ôï ïðïßï áðïôåëåßôáé


áðü ôïõò êùäéêïýò ôùí ãíùóôéêþí ðåñéï÷þí ðïõ åßíáé áðïèçêåõìÝíïé óôéò ãñáì-
ìÝò ôïõ ðßíáêá ¢ñèñï. Ðñïöáíþò, ï êùäéêüò ìßáò ãíùóôéêÞò ðåñéï÷Þò óôïí
ïðïßï äåí áíôéóôïé÷åß êÜðïéï Üñèñï, äåí èá áíÞêåé óôï óýíïëï áõôü. ÅðïìÝíùò,
åëÝã÷ïõìå áí êÜèå êùäéêüò áíÞêåé Þ ü÷é óôï óýíïëï êáé áíáëüãùò áðïññßðôå-
ôáé Þ óõìðåñéëáìâÜíåôáé óôï æçôïýìåíï áðïôÝëåóìá áíôéóôïß÷ùò. Ï Ýëåã÷ïò ôçò
226 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

ýðáñîçò Þ ü÷é ìßáò ãñáììÞò óå Ýíá óýíïëï ðñáãìáôïðïéåßôáé ìå ôç ÷ñÞóç ôùí


êáôçãïñçìÜôùí IN êáé NOT IN. ÌåôÜ ôá äýï áõôÜ êáôçãïñÞìáôá ðñÝðåé íá
áêïëïõèåß êÜðïéï óýíïëï ãñáììþí Þ êÜðïéï õðïåñþôçìá SQL.
Óôï åðüìåíï ðáñÜäåéãìá ðáñïõóéÜæåôáé ç ÷ñÞóç ôïõ êáôçãïñÞìáôïò EXISTS
ôï ïðïßï åßíáé åðßóçò ðïëý ÷ñÞóéìï ãéá ôç äéáôýðùóç åñùôçìÜôùí. Ç ôéìÞ ðïõ
åðéóôñÝöåé ôï êáôçãüñçìá EXISTS åßíáé áëçèÞò áí ôï óýíïëï ðïõ áêïëïõèåß
äåí åßíáé êåíü. Óå äéáöïñåôéêÞ ðåñßðôùóç åßíáé øåõäÞò .

Åñþôçìá 21: "Íá âñåèïýí ïé êùäéêïß ôùí óõããñáöÝùí ðïõ Ý÷ïõí Ýóôù êáé Ýíá
Üñèñï ðïõ Ý÷åé äçìïóéåõèåß êáé óå ðåñéïäéêü êáé óå ðñáêôéêÜ óõíåäñßïõ."

SELECT êùäéêüò_óõããñáöÝá
FROM ÓõããñáöÞ_¢ñèñïõ AS ÓÁ
WHERE EXISTS
(SELECT *
FROM ¢ñèñï
WHERE êùäéêüò=ÓÁ.êùäéêüò_Üñèñïõ AND
êùäéêüò_óõíåäñßïõ IS NOT NULL AND
êùäéêüò_ðåñéïäéêïý IS NOT NULL);

Ç SQL ðñïóöÝñåé ôá êáôçãïñÞìáôá SOME (Þ ANY) êáé ALL ôá ïðïßá áíôéóôïé-


÷ïýí óôïí õðáñîéáêü êáé êáèïëéêü ðïóïäåßêôç ðïõ ÷ñçóéìïðïéïýìå óôá ìáèç-
ìáôéêÜ (∃, ∀). Ìå ôç ÷ñÞóç ôùí êáôçãïñçìÜôùí áõôþí ìðïñïýìå íá óõíôÜîïõìå
ðïëý ÷ñÞóéìá åñùôÞìáôá ìå ÷ñÞóç õðïåñùôçìÜôùí. Ðñéí áðü ôá êáôçãïñÞìáôá
SOME êáé ALL ìðïñåß íá ðñïçãåßôáé ïðïéïóäÞðïôå ôåëåóôÞò óýãêñéóçò (=, >, <,
>=, <=, <>).

Åñþôçìá 22: "Íá âñåèïýí ïé ãíùóôéêÝò ðåñéï÷Ýò ðïõ Ý÷ïõí ìåãáëýôåñï áñéèìü
óõíäñïìçôþí áðü ôïõëÜ÷éóôïí ìßá Üëëç ãíùóôéêÞ ðåñéï÷Þ."

SELECT ôßôëïò
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí > SOME
(SELECT áñéèìüò_óõíäñïìçôþí
FROM ÃíùóôéêÞ_Ðåñéï÷Þ);

Åñþôçìá 23: "Íá âñåèïýí ïé ãíùóôéêÝò ðåñéï÷Ýò ðïõ Ý÷ïõí ìåãáëýôåñï áñéèìü
óõíäñïìçôþí áðü üëåò ôéò Üëëåò ãíùóôéêÝò ðåñéï÷Ýò."

SELECT ôßôëïò
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 227

WHERE áñéèìüò_óõíäñïìçôþí>ALL
(SELECT áñéèìüò_óõíäñïìçôþí
FROM ÃíùóôéêÞ_Ðåñéï÷Þ);

ÕðïåñùôÞìáôá ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå êáé åíôüò ôçò Ýêöñáóçò HAV-


ING, üðùò öáßíåôáé óôï áêüëïõèï åñþôçìá:

Åñþôçìá 24: "Íá âñåèïýí ïé êùäéêïß ôùí óõããñáöÝùí êáé ôï óýíïëï ôùí Üñèñùí
ðïõ Ý÷ïõí ãñÜøåé, Ýôóé þóôå ï áñéèìüò ôùí Üñèñùí íá åßíáé ìåãáëýôåñïò áðü ôï
Ýíá äÝêáôï ôùí óõíïëéêþí äçìïóéåýóåùí."

SELECT êùäéêüò_óõããñáöÝá,
COUNT (êùäéêüò_Üñèñïõ) AS áñéèìüò_Üñèñùí
FROM ÓõããñáöÞ_¢ñèñïõ
GROUP BY êùäéêüò_óõããñáöÝá
HAVING áñéèìüò_Üñèñùí >
(SELECT COUNT(*)/10
FROM ÓõããñáöÞ_¢ñèñïõ);

Ôáîéíüìçóç ÁðïôåëåóìÜôùí
H SQL äßíåé ôç äõíáôüôçôá íá ôáîéíïìÞóïõìå ôá áðïôåëÝóìáôá êáôÜ áýîïõóá Þ
êáôÜ öèßíïõóá äéÜôáîç, áíáëüãùò ìå ôá ðåñéå÷üìåíá ìßáò ç ðåñéóóïôÝñùí óôç-
ëþí. Ç Ýêöñáóç ORDER BY ÷ñçóéìïðïéåßôáé ãéá ôï óêïðü áõôü.

Åñþôçìá 25: "Íá âñåèïýí üëåò ïé ãíùóôéêÝò ðåñéï÷Ýò êáé ôï ðëÞèïò óõíäñïìçôþí
ãéá áõôÝò ðïõ Ý÷ïõí ðåñéóóüôåñï áðü åêáôü óõíäñïìçôÝò êáé ôá áðïôåëÝóìáôá
íá äïèïýí óå áýîïõóá óåéñÜ ùò ðñïò ôïí ôßôëï."

SELECT ôßôëïò,áñéèìüò_óõíäñïìçôþí
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí > 100
ORDER BY ôßôëïò ASC;

Áí ðáñáëåéöèåß ôï ASC ôüôå ç ôáîéíüìçóç åííïåßôáé üôé åßíáé áýîïõóá. Óå


ðåñßðôùóç ðïõ áðáéôåßôáé ôáîéíüìçóç êáôÜ öèßíïõóá äéÜôáîç ôüôå ðñÝðåé íá
÷ñçóéìïðïéçèåß ôï DESC.

Åñþôçìá 26: "Íá âñåèïýí üëåò ïé ãíùóôéêÝò ðåñéï÷Ýò êáé ôï ðëÞèïò óõíäñïìçôþí
ãéá áõôÝò ðïõ Ý÷ïõí ðåñéóóüôåñï áðü åêáôü óõíäñïìçôÝò êáé ôá áðïôåëÝóìáôá
íá äïèïýí óå öèßíïõóá óåéñÜ ùò ðñïò ôïí ôßôëï."
228 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

SELECT ôßôëïò,áñéèìüò_óõíäñïìçôþí
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí > 100
ORDER BY ôßôëïò DESC;

Áò õðïèÝóïõìå ôþñá üôé èÝëïõìå ôá áðïôåëÝóìáôá íá ôáîéíïìçèïýí ùò ðñïò


ôïí áñéèìü ôùí óõíäñïìçôþí. ÅðåéäÞ õðÜñ÷åé ðåñßðôùóç äýï ãíùóôéêÝò ðåñéï÷Ýò
íá Ý÷ïõí ôï ßäéï ðëÞèïò óõíäñïìçôþí, ìðïñïýìå íá ïñßóïõìå üôé óå ìßá ôÝôïéá
ðåñßðôùóç ç ôáîéíüìçóç èá ãßíåé ùò ðñïò ôïí ôßôëï ôçò ãíùóôéêÞò ðåñéï÷Þò.

Åñþôçìá 27: "Íá âñåèïýí üëåò ïé ãíùóôéêÝò ðåñéï÷Ýò êáé ôï ðëÞèïò óõíäñïìçôþí
ãéá áõôÝò ðïõ Ý÷ïõí ðåñéóóüôåñï áðü åêáôü óõíäñïìçôÝò êáé ôá áðïôåëÝóìáôá
íá äïèïýí óå áýîïõóá óåéñÜ ùò ðñïò ôï ðëÞèïò ôùí óõíäñïìçôþí. Óå ðåñßðôùóç
ðïõ õðÜñ÷ïõí ãíùóôéêÝò ðåñéï÷Ýò ìå ôï ßäéï ðëÞèïò óõíäñïìçôþí ç ôáîéíüìçóç
íá ðñáãìáôïðïéçèåß ùò ðñïò ôïí ôßôëï."
SELECT ôßôëïò,áñéèìüò_óõíäñïìçôþí
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí>100
ORDER BY áñéèìüò_óõíäñïìçôþí,ôßôëïò;

¢ëëá ÊáôçãïñÞìáôá
Ç SQL äßíåé ôç äõíáôüôçôá íá ÷ñçóéìïðïéÞóïõìå åíáëëáêôéêïýò ôñüðïõò óý-
íôáîçò ôçò óõíèÞêçò óôï ôìÞìá WHERE åíüò åñùôÞìáôïò. ¸íá ðïëý ÷ñÞóéìï
êáôçãüñçìá åßíáé ôï BETWEEN (êáé ôï NOT BETWEEN) ðïõ ÷ñçóéìïðïéåßôáé ãéá
íá åëÝãîïõìå áí ìßá ôéìÞ âñßóêåôáé ìÝóá óå êÜðïéï äéÜóôçìá ôéìþí. Óôí óõíÝ-
÷åéá äßíïõìå Ýíá ðáñÜäåéãìá ÷ñÞóçò ôïõ êáôçãïñÞìáôïò BETWEEN.

Åñþôçìá 28: "Íá âñåèïýí ïé ôßôëïé ôùí ãíùóôéêþí ðåñéï÷þí ãéá ôéò ïðïßåò ï
áñéèìüò óõíäñïìçôþí åßíáé ìåãáëýôåñïò Þ ßóïò áðü 10 êáé ìéêñüôåñïò Þ ßóïò
áðü 20."
SELECT ôßôëïò
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí>=10 AND
áñéèìüò_óõíäñïìçôþí<=20;

ÅíáëëáêôéêÜ ìðïñïýìå íá ãñÜøïõìå:


SELECT ôßôëïò
FROM ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE áñéèìüò_óõíäñïìçôþí BETWEEN 10 AND 20;
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 229

Ôï êáôçãüñçìá OVERLAPS ÷ñçóéìïðïéåßôáé ãéá íá äéáðéóôùèåß áí äýï ÷ñï-


íéêÜ äéáóôÞìáôá åðéêáëýðôïíôáé. Ôï êÜèå ÷ñïíéêü äéÜóôçìá ìðïñåß íá åßíáé ôçò
ìïñöÞò (÷ñüíïò áñ÷Þò, ÷ñüíïò ôÝëïõò) Þ ôçò ìïñöÞò (÷ñüíïò áñ÷Þò, äéÜñêåéá).
Áí ôá äýï äéáóôÞìáôá åðéêáëýðôïíôáé ôüôå åðéóôñÝöåôáé TRUE, äéáöïñåôéêÜ
FALSE. Ãéá ðáñÜäåéãìá, ç áêüëïõèç óõíèÞêç ìðïñåß íá ÷ñçóéìïðïéçèåß óôï
ôìÞìá WHERE åíüò åñùôÞìáôïò ãéá ôïí Ýëåã÷ï ôçò ÷ñïíéêÞò åðéêÜëõøçò ôùí äýï
÷ñïíéêþí äéáóôçìÜôùí:

(TIME ‘10:43:00’, TIME ‘11:43:00’)


OVERLAPS
(TIME ‘10:50:00’, TIME ’11:10:00’)

Ç óõíèÞêç áõôÞ åßíáé áëçèÞò, äéüôé ôá äýï ÷ñïíéêÜ äéáóôÞìáôá åðéêáëýðôïíôáé,


êáé ìÜëéóôá ôï äåýôåñï åìðåñéÝ÷åôáé ðëÞñùò óôï ðñþôï. Óçìåéþíåôáé üôé åíáë-
ëáêôéêÜ ôïõ ôýðïõ äåäïìÝíùí TIME ìðïñïýí íá ÷ñçóéìïðïéçèïýí ïé ôýðïé DATE
êáé TIMESTAMP.

9.3.2 ÅéóáãùãÞ ÄåäïìÝíùí


Óôç ãåíéêÞ ðåñßðôùóç, ìßá ÂÜóç ÄåäïìÝíùí äåí åßíáé óôáôéêÞ. ÁíôéèÝôùò, äå-
äïìÝíá åéóÜãïíôáé, äéáãñÜöïíôáé êáé åíçìåñþíïíôáé áíáëüãùò ìå ôéò áíÜãêåò.
Ç SQL ðáñÝ÷åé åéäéêÝò åíôïëÝò ãéá ôéò ðñïçãïýìåíåò ëåéôïõñãßåò. Ç åíôïëÞ ãéá
ôçí åéóáãùãÞ íÝùí äåäïìÝíùí åßíáé ç INSERT, ç óýíôáîç ôçò ïðïßáò Ý÷åé ùò
åîÞò:

INSERT INTO üíïìá-ðßíáêá [(óôÞëç1,óôÞëç2,...,óôÞëçÍ)]


VALUES (ôéìÞ1, ôéìÞ2, ..., ôéìÞN);

Ôá ïíüìáôá ôùí óôçëþí ðïõ ðñïóäéïñßæïíôáé áìÝóùò ìåôÜ ôï üíïìá ôïõ ðßíáêá
Ý÷ïõí Ýíá-ðñïò-Ýíá áíôéóôïé÷ßá ìå ôéò ôéìÝò ðïõ åéóÜãïõìå ìåôÜ ôç ëÝîç VAL-
UES. ¸÷ïõìå ôç äõíáôüôçôá íá åéóÜãïõìå óôïé÷åßá óå ïñéóìÝíåò ìüíï óôÞëåò
ôïõ ðßíáêá. Ïé õðüëïéðåò óôÞëåò áñ÷éêïðïéïýíôáé áíáëüãùò ìå ôçí ôéìÞ ðïõ
Ý÷åé ðñïóäéïñéóèåß êáôÜ ôç äçìéïõñãßá ôïõ ðßíáêá. Áí äåí Ý÷åé ðñïóäéïñéóèåß
êÜðïéá ôéìÞ, ôüôå ÷ñçóéìïðïéåßôáé ç êåíÞ ôéìÞ (NULL). Ðñéí ôçí åêôÝëåóç ôçò
åíôïëÞò INSERT åëÝã÷ïíôáé üëïé ïé ðåñéïñéóìïß áêåñáéüôçôáò, ïé ïðïßïé Ý÷ïõí
ïñéóèåß ãéá ôïí ðßíáêá. Áí äåí éêáíïðïéåßôáé êÜðïéïò ðåñéïñéóìüò, ôüôå ç åíôïëÞ
åéóáãùãÞò áðïôõã÷Üíåé. Áò åîåôÜóïõìå óôç óõíÝ÷åéá ìåñéêÜ ðáñáäåßãìáôá åé-
óáãùãÞò äåäïìÝíùí:

INSERT INTO ÃíùóôéêÞ_Ðåñéï÷Þ


VALUES (10, ‘ÄéáóôçìéêÞ Ôå÷íïëïãßá’, 0);
230 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

Ç ðñïçãïýìåíç åíôïëÞ åéóÜãåé óôïí ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ ìßá íÝá ãñáììÞ. Ç
óôÞëç êùäéêüò ðáßñíåé ôçí ôéìÞ 10, ç óôÞëç ôßôëïò ëáìâÜíåé ôçí ôéìÞ "ÄéáóôçìéêÞ
Ôå÷íïëïãßá" êáé ôÝëïò ç óôÞëç áñéèìüò óõíäñïìçôþí ëáìâÜíåé ôçí ôéìÞ 0. Áí
èÝëïõìå, ìðïñïýìå íá ïñßóïõìå äéáöïñåôéêÞ óåéñÜ åéóáãùãÞò ôéìþí óôç íÝá
óôÞëç ùò åîÞò:

INSERT INTO ÃíùóôéêÞ_Ðåñéï÷Þ (ôßôëïò,êùäéêüò)


VALUES (‘ÄéáóôçìéêÞ Ôå÷íïëïãßá’, 10);

ÐáñáôçñÞóôå üôé äåí Ý÷ïõìå äþóåé ôéìÞ ãéá ôç óôÞëç áñéèìüò óõíäñïìçôþí. Óôçí
ðåñßðôùóç áõôÞ, áí óôçí åíôïëÞ ïñéóìïý ôïõ ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ õðÜñ÷åé
áñ÷éêÞ ôéìÞ, ôüôå èá ÷ñçóéìïðïéçèåß ãéá ôçí áñ÷éêïðïßçóç. ÄéáöïñåôéêÜ, áñ÷é-
êïðïéåßôáé ìå ôçí êåíÞ ôéìÞ (NULL).
ÐïëëÝò öïñÝò ðáñáôçñåßôáé ç áíÜãêç íá ÷ñçóéìïðïéÞóïõìå Üëëïõò ðßíáêåò
ãéá íá åéóÜãïõìå ôéìÝò óå Ýíá íÝï ðßíáêá. Ðñïöáíþò, ïé åéóáãùãÝò óôï íÝï
ðßíáêá ìðïñïýí íá ãßíïõí ãñáììÞ-ðñïò-ãñáììÞ ÷ñçóéìïðïéþíôáò äéáöïñåôéêÝò
åíôïëÝò INSERT, üìùò êÜôé ôÝôïéï äåí åßíáé êïìøü, êáé åðéðëÝïí åðéâáñýíåé ôï
÷ñÞóôç. ÅíáëëáêôéêÜ, ç SQL äßíåé ôç äõíáôüôçôá íá ÷ñçóéìïðïéÞóïõìå õðïå-
ñùôÞìáôá SELECT ãéá ôçí åéóáãùãÞ äåäïìÝíùí óå Ýíáí ðßíáêá. ÈåùñÞóôå üôé
Ý÷ïõìå êáôáóêåõÜóåé ôïí ðßíáêá ¢ñèñï Ðåñéïäéêïý(êùäéêüò, ôßôëïò) ï ïðïßïò èá
áðïèçêåýåé ôá Üñèñá ðïõ Ý÷ïõí äçìïóéåõèåß ìüíï óå ðåñéïäéêÜ êáé ü÷é óå ðñá-
êôéêÜ óõíåäñßùí. Ìå ôçí áêüëïõèç åíôïëÞ INSERT ìðïñïýìå íá áíôéãñÜøïõìå
áðü ôïí ðßíáêá ¢ñèñï ìüíï ôéò ðëçñïöïñßåò ðïõ ìáò åíäéáöÝñïõí:

INSERT INTO ¢ñèñï_Ðåñéïäéêïý


AS
SELECT êùäéêüò,ôßôëïò
FROM ¢ñèñï
WHERE êùäéêüò_ðåñéïäéêïý IS NOT NULL AND
êùäéêüò_óõíåäñßïõ IS NULL;

9.3.3 ÅíçìÝñùóç ÄåäïìÝíùí


Ç åíôïëÞ åíçìÝñùóçò äåäïìÝíùí ÷ñçóéìïðïéåßôáé ãéá ôçí áëëáãÞ ôùí ôéìþí ôùí
óôçëþí åíüò ðßíáêá. ¼ðùò êáé óôçí ðåñßðôùóç ôçò åéóáãùãÞò äåäïìÝíùí, ðñéí
áðü ôçí åíçìÝñùóç åëÝã÷åôáé ç éêáíïðïßçóç ôùí ðåñéïñéóìþí áêåñáéüôçôáò.
Óå ðåñßðôùóç ðïõ äåí éêáíïðïéåßôáé êÜðïéïò ðåñéïñéóìüò, ôüôå ç åíçìÝñùóç
áðïôõã÷Üíåé. Ç SQL ðáñÝ÷åé ôçí åíôïëÞ UPDATE ðïõ óõíôÜóóåôáé ùò åîÞò:

UPDATE üíïìá-ðßíáêá
SET (óôÞëç1=ôéìÞ1,óôÞëç2=ôéìÞ2, ...,óôÞëçN=ôéìÞN)
WHERE óõíèÞêç;
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 231

¸óôù üôé èÝëïõìå íá áëëÜîïõìå ôïí ôßôëï ôçò ãíùóôéêÞò ðåñéï÷Þò "Äéáóôç-
ìéêÞ Ôå÷íïëïãßá" óå "ÄéÜóôçìá". Ç áëëáãÞ ðñáãìáôïðïéåßôáé ìå ôçí åðüìåíç
åíôïëÞ åíçìÝñùóçò:
UPDATE ÃíùóôéêÞ_Ðåñéï÷Þ
SET (ôßôëïò=‘ÄéÜóôçìá’)
WHERE êùäéêüò=10;

Áðáéôåßôáé éäéáßôåñç ðñïóï÷Þ óôç óõíèÞêç ðïõ ðñÝðåé íá ïñßóïõìå óôï ôìÞìá
WHERE ôçò åíôïëÞò åíçìÝñùóçò. Áí èÝëïõìå íá åíçìåñùèïýí ôá äåäïìÝíá óå
ìßá ìüíï ãñáììÞ ôïõ ðßíáêá, ôüôå áðáñáßôçôá ðñÝðåé íá óõììåôÝ÷åé óôç óõíèÞêç
êÜðïéï êëåéäß ôïõ ðßíáêá. ÄéáöïñåôéêÜ, åíäÝ÷åôáé ç áëëáãÞ íá åðçñåÜóåé ðå-
ñéóóüôåñåò ãñáììÝò áëëïéþíïíôáò ôá äåäïìÝíá ôïõ ðßíáêá. Ãéá ðáñÜäåéãìá, ç
åðüìåíç åíôïëÞ åíçìÝñùóçò èá èÝóåé óå 0 ôç óôÞëç áñéèìüò óõíäñïìçôþí óå
üëåò ôéò ãñáììÝò ôïõ ðßíáêá!
UPDATE ÃíùóôéêÞ_Ðåñéï÷Þ
SET (áñéèìüò_óõíäñïìçôþí=0);

9.3.4 ÄéáãñáöÞ ÄåäïìÝíùí


Ç åíôïëÞ äéáãñáöÞò ÷ñçóéìïðïéåßôáé ãéá ôçí êáôÜñãçóç ãñáììþí åíüò ðßíáêá.
Ðñéí ôçí åêôÝëåóç ôçò åíôïëÞò åëÝã÷ïíôáé ïé ðåñéïñéóìïß áêåñáéüôçôáò êáé áí
éêáíïðïéïýíôáé, ôüôå ç åíôïëÞ äéáãñáöÞò åêôåëåßôáé ìå åðéôõ÷ßá. Ç ãåíéêÞ ìïñöÞ
ôçò åíôïëÞò åßíáé:
DELETE FROM üíïìá-ðßíáêá
WHERE óõíèÞêç;

Óôï ôìÞìá WHERE, ðñïóäéïñßæåôáé ç óõíèÞêç ðïõ ðñÝðåé íá éêáíïðïéåßôáé áðü ôéò
ãñáììÝò ðïõ ðñüêåéôáé íá äéáãñáöïýí. Áí äåí õðÜñ÷åé óõíèÞêç, äéáãñÜöïíôáé
üëåò ïé ãñáììÝò ôïõ ðßíáêá. Áò åîåôÜóïõìå ìåñéêÜ ðáñáäåßãìáôá äéáãñáöÞò
äåäïìÝíùí:

DELETE FROM ¢ñèñï;

DELETE FROM ÃíùóôéêÞ_Ðåñéï÷Þ


WHERE áñéèìüò_óõíäñïìçôþí=0 AND êùäéêüò NOT IN
(SELECT DISTINCT êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò
FROM ¢ñèñï);

Ç ðñþôç åíôïëÞ äéáãñÜöåé üëåò ôéò ãñáììÝò ôïõ ðßíáêá ¢ñèñï. Ç äåýôåñç åíôïëÞ
äéáãñÜöåé üëåò ôéò ãíùóôéêÝò ðåñéï÷Ýò ãéá ôéò ïðïßåò äåí õðÜñ÷åé óõíäñïìçôÞò
êáé äåí õðÜñ÷ïõí Üñèñá ðïõ íá áíÞêïõí óå áõôÝò.
232 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

9.4 Äéá÷åßñéóç ¼øåùí êáé Êáôáëüãùí


¼ðùò Ý÷åé áíáöåñèåß óôï ÊåöÜëáéï 5, ìßá üøç åßíáé Ýíáò åéêïíéêüò ðßíáêáò
÷ùñßò öõóéêÞ õðüóôáóç, ï ïðïßïò óôçñßæåôáé óå Üëëïõò ðßíáêåò ôçò ÂÄ. Ãéá ôïí
ïñéóìü ìßáò üøçò ç SQL ðáñÝ÷åé ôçí åíôïëÞ CREATE VIEW ðïõ óõíôÜóóåôáé ùò
åîÞò:

CREATE VIEW üíïìá-üøçò


AS
(õðïåñþôçìá SQL);

Ìßá üøç óôçñßæåôáé óå ðßíáêåò âÜóçò, ïé ïðïßïé óõììåôÝ÷ïõí óôïí ïñéóìü ôçò
üøçò áí êÜðïéá áðü ôéò óôÞëåò åìöáíßæåôáé óôï ôìÞìá SELECT ôïõ õðïåñùôÞìá-
ôïò SQL. ¸óôù üôé áðáéôåßôáé ï ïñéóìüò ìßáò üøçò ðïõ óôçñßæåôáé óôïõò ðßíáêåò
Ðåñéïäéêü êáé ÐñáêôéêÜ Óõíåäñßïõ êáé ðåñéÝ÷åé ôïõò ôßôëïõò ôùí ðåñéïäéêþí êáé
ôùí óõíåäñßùí ðïõ åßíáé êáôá÷ùñéóìÝíá óôç ÂÄ. Ç åíôïëÞ êáôáóêåõÞò ôçò üøçò
Ý÷åé ùò åîÞò:

CREATE VIEW Ïíüìáôá_Ðåñéïäéêþí_Óõíåäñßùí


AS
(SELECT ôßôëïò FROM Ðåñéïäéêü
UNION
SELECT ôßôëïò FROM ÐñáêôéêÜ_Óõíåäñßïõ);

Ìßá üøç äåí äéáöÝñåé ùò ðñïò ôç ëåéôïõñãéêüôçôá áðü Ýíáí êáíïíéêü ðßíáêá
âÜóçò. Ùóôüóï, ç ÷ñÞóç üøçò óå åíôïëÝò INSERT, UPDATE êáé DELETE ðïëëÝò
öïñÝò äçìéïõñãåß ðñïâëÞìáôá. Ãéá ðáñÜäåéãìá, áí ÷ñçóéìïðïéÞóïõìå ôçí üøç
Ïíüìáôá Ðåñéïäéêþí Óõíåäñßùí ãéá íá åéóÜãïõìå ìßá íÝá ãñáììÞ, ôüôå èá ðñÝðåé
íá åíçìåñùèïýí ïé âáóéêïß ðßíáêåò Ðåñéïäéêü êáé ÐñáêôéêÜ Óõíåäñßïõ. ¼ìùò ç
üøç Ý÷åé ùò óôÞëåò ìüíï ôïõò ôßôëïõò ðåñéïäéêþí êáé óõíåäñßùí, ìå áðïôÝëåóìá
ïé õðüëïéðåò óôÞëåò ôùí âáóéêþí ðéíÜêùí íá ðñÝðåé íá óõìðëçñùèïýí ìå êåíÝò
ôéìÝò. Áí ôï ãåãïíüò áõôü äåí Ýñ÷åôáé óå óýãêñïõóç ìå êÜðïéïí ðåñéïñéóìü
áêåñáéüôçôáò, ôüôå äåí õðÜñ÷åé ðñüâëçìá. Áí éó÷ýåé ôï áíôßèåôï, ôüôå ç åéóáãùãÞ
èá åßíáé áíåðéôõ÷Þò. Ôá ðñïâëÞìáôá ðïõ äçìéïõñãïýí ïé üøåéò ïäÞãçóáí ôïõò
êáôáóêåõáóôÝò ÓÄÂÄ åßôå óôçí áðáãüñåõóç ÷ñÞóçò üøçò óå åíôïëÝò INSERT,
UPDATE êáé DELETE, åßôå ôçí ðåñéïñéóìÝíç ÷ñÞóç óå áõôÝò ôéò åíôïëÝò õðü
ðñïûðïèÝóåéò.
Ãéá ôçí êáôÜñãçóç ìßáò üøçò ÷ñçóéìïðïéåßôáé ç åíôïëÞ DROP VIEW:

DROP VIEW Ïíüìáôá Ðåñéïäéêþí Óõíåäñßùí;


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 233

¸íá áêüìç óçìáíôéêü ÷áñáêôçñéóôéêü ôçò SQL åßíáé ç äõíáôüôçôá êáôá-


óêåõÞò êáé êáôÜñãçóçò êáôáëüãùí. ¼ðùò èá áíáöåñèåß åêôåíÝóôåñá óå åðüìåíï
êåöÜëáéï, Ýíáò êáôÜëïãïò ïñßæåôáé óå ìßá Þ ðåñéóóüôåñåò óôÞëåò åíüò ðßíáêá,
êáé óôï÷åýåé óôçí áðïäïôéêüôåñç åêôÝëåóç ôùí åñùôçìÜôùí ðïõ ÷ñçóéìïðïéïýí
ôéò óôÞëåò áõôÝò óôç óõíèÞêç WHERE. Ç êáôáóêåõÞ êáé êáôÜñãçóç êáôáëüãùí
ðñáãìáôïðïéåßôáé ìå ôéò åíôïëÝò CREATE INDEX êáé DROP INDEX áíôßóôïé÷á.

9.5 Óýíïøç
Ç SQL (structured query language) ðñïôõðïðïéÞèçêå ãéá ðñþôç öïñÜ 1986 êáé
åßíáé ç äçìïöéëÝóôåñç ãëþóóá ÂÜóåùí ÄåäïìÝíùí. Ç SQL åßíáé âáóéóìÝíç
óôç ó÷åóéáêÞ Üëãåâñá êáé ôï ó÷åóéáêü ëïãéóìü ðëåéÜäùí êáé äéá÷ùñßæåôáé óôç
ãëþóóá ïñéóìïý äåäïìÝíùí êáé ôç ãëþóóá ÷åéñéóìïý äåäïìÝíùí. Ôá âáóéêüôåñá
ðëåïíåêôÞìáôá ôçò ãëþóóáò åßíáé:

• ÊÜèå ó÷åóéáêü óýóôçìá õðïóôçñßæåé SQL, ïðüôå ç äéáôýðùóç ôùí åñù-


ôçìÜôùí åßíáé áíåîÜñôçôç áðü ôï ÷ñçóéìïðïéïýìåíï ÓÄÂÄ.

• Ç ãëþóóá ÷ñçóéìïðïéåßôáé ãéá üëåò ôéò ëåéôïõñãßåò ôïõ ÓÄÂÄ (äçìéïõñãßá


ðéíÜêùí, åéóáãùãÞ êáé áíáæÞôçóç äåäïìÝíùí, äçìéïõñãßá íÝùí ÷ñçóôþí,
ê.ë.ð.)

• ÐïëëÝò ãëþóóåò ðñïãñáììáôéóìïý Ý÷ïõí ôñïðïðïéçèåß, þóôå íá õðïóôçñß-


æïõí äéáôýðùóç åñùôçìÜôùí óå SQL.

• Ç SQL Ý÷åé áðëÞ óýíôáîç êáé áðïäåóìåýåé ôï ÷ñÞóôç áðü ëåðôïìÝñåéåò


õëïðïßçóçò.

Ðñüóöáôá, ïé ó÷åäéáóôÝò ãëùóóþí óõìöþíçóáí óå åðÝêôáóç ôçò ãëþóóáò


SQL ìå áðïôÝëåóìá íá äçìéïõñãçèåß ôï ðñüôõðï ìå ïíïìáóßá SQL:1999 (Þ
SQL3). Ùóôüóï, ìåñéêÝò ìüíï áðü ôéò äõíáôüôçôåò ôçò SQL:1999 õðïóôçñßæï-
íôáé áðü ôá óýã÷ñïíá åìðïñéêÜ ÓÄÂÄ.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


9.1. Íá áíáöåñèïýí ôá âáóéêÜ ðëåïíåêôÞìáôá ôçò ãëþóóáò SQL.

9.2. ÁíáöÝñåôå ôïõò ôýðïõò äåäïìÝíùí ôçò SQL ðïõ ãíùñßæåôå êáé ðåñéãñÜøôå
ôç äéáöïñÜ ìåôáîý ôùí ôýðùí CHAR êáé VARCHAR.

9.3. ¸óôù ï ðßíáêáò R(êùäéêüò, üíïìá, ðüëç).


234 ÊåöÜëáéï 9. Ç Ãëþóóá SQL

• Äþóôå ôçí åíôïëÞ SQL ãéá ôçí êáôáóêåõÞ ôïõ ðßíáêá, åðéëÝãïíôáò ôïõò
ôýðïõò äåäïìÝíùí ôùí ÷áñáêôçñéóôéêþí.

• ×ñçóéìïðïéÞóôå åíôïëÝò SQL ãéá ôçí åéóáãùãÞ ôùí åããñáöþí: (1, "Ãéþñ-
ãïò", "Èåóóáëïíßêç"), (2, "Ìáñßá", "ÁèÞíá") êáé (3, "Êþóôáò", "×áíéÜ").

• Äéáôõðþóôå óå SQL ôï åñþôçìá: íá âñåèïýí ôá ïíüìáôá ôùí ðñïóþðùí


ðïõ ìÝíïõí åßôå óôçí ÁèÞíá åßôå óôç Èåóóáëïíßêç.

• ×ñçóéìïðïéÞóôå ìßá åíôïëÞ SQL ãéá ôç äéáãñáöÞ ôïõ ðåñéå÷ïìÝíïõ ôïõ


ðßíáêá R.
9.4. Äßíïíôáé ïé ðßíáêåò: R(A, B, C) êáé S(D, E, F ). ×ñçóéìïðïéÞóôå SQL ãéá
íá åêöñÜóåôå ôá åðüìåíá åñùôÞìáôá ó÷åóéáêÞò Üëãåâñáò:
• ΠB (R)

• σA=143 (R)

• S×R

• ΠC,D (σA=F (S × R))


9.5. Äßíåôáé ôï åðüìåíï ó÷Þìá ìßáò ÂÜóçò ÄåäïìÝíùí:

ÕðÜëëçëïò(üíïìá õðáëëÞëïõ, ôçëÝöùíï, ðüëç)


ÅñãÜæåôáé(üíïìá õðáëëÞëïõ, üíïìá åôáéñåßáò, ìéóèüò)
Åôáéñåßá(üíïìá åôáéñåßáò, ðüëç)
ÐñïúóôÜìåíïò(üíïìá õðáëëÞëïõ, üíïìá ðñïúóôáìÝíïõ)

Íá äïèïýí åêöñÜóåéò ôçò ãëþóóáò SQL ãéá êÜèå Ýíá áðü ôá åîÞò åñùôÞìáôá:
• Íá âñåèïýí ôá ïíüìáôá ôùí õðáëëÞëùí ðïõ åñãÜæïíôáé óôçí åôáéñåßá
"COMPANY S.A."

• Íá âñåèïýí ôá ïíüìáôá êáé ïé ðüëåéò äéáìïíÞò ôùí õðáëëÞëùí ôçò "COM-


PANY S.A."

• Íá âñåèïýí ôá ïíüìáôá, ôá ôçëÝöùíá êáé ïé ðüëåéò äéáìïíÞò ôùí õðáë-


ëÞëùí ôçò "COMPANY S.A." ôùí ïðïßùí ï ìéóèüò åßíáé ìåãáëýôåñïò áðü
1000 åõñþ.

• Íá âñåèïýí ôá ïíüìáôá ôùí õðáëëÞëùí ðïõ äéáìÝíïõí óôçí ßäéá ðüëç üðïõ
âñßóêåôáé êáé ç åôáéñåßá üðïõ åñãÜæïíôáé.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 235

• Äéáôõðþóôå óå SQL Ýíá åñþôçìá ðïõ áðáéôåß ôç ÷ñÞóç üëùí ôùí ðéíÜêùí
ôçò ÂÜóçò ÄåäïìÝíùí.

9.6. Ãéá ôç ÂÜóç ÄåäïìÝíùí ôçò ðñïçãïýìåíçò Üóêçóçò, ÷ñçóéìïðïéÞóôå SQL


ãéá ôçí êáôáóêåõÞ ìßáò üøçò ðïõ äßíåé ôï üíïìá ôïõ õðáëëÞëïõ êáé ôï üíïìá ôçò
åôáéñåßáò üðïõ åñãÜæåôáé, ãéá ôéò åôáéñåßåò ðïõ Ý÷ïõí Ýäñá ôç Èåóóáëïíßêç êáé
ï ìéóèüò ôïõ õðáëëÞëïõ åßíáé ìåãáëýôåñïò áðü 1000 åõñþ.

9.7. ×ñçóéìïðïéþíôáò ôïí ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ íá äéáôõðþóåôå óå SQL ôï


åñþôçìá ðïõ ðáñïõóéÜæåé ôïí ôßôëï êáé ôï ðëÞèïò óõíäñïìçôþí ãéá ôéò ãíùóôéêÝò
ðåñéï÷Ýò ôùí ïðïßùí ï áñéèìüò óõíäñïìçôþí åßíáé ìåãáëýôåñïò Þ ßóïò áðü ôï
ìÝóï üñï óõíäñïìçôþí áíÜ ãíùóôéêÞ ðåñéï÷Þ.

9.8. ×ñçóéìïðïéþíôáò ôïí ðßíáêá ¢ñèñï íá ïñßóåôå ìßá üøç ç ïðïßá ðáñïõóéÜ-
æåé ôïõò êùäéêïýò êáé ôïõò ôßôëïõò ôùí Üñèñùí ðïõ Ý÷ïõí äçìïóéåõèåß óå êÜðïéï
ðåñéïäéêü áëëÜ ü÷é êáé óå ðñáêôéêÜ óõíåäñßïõ.

9.9. ×ñçóéìïðïéþíôáò ôïõò ðßíáêåò ÓõããñáöÞ ¢ñèñïõ êáé ¢ñèñï íá ïñßóåôå ìßá
üøç ç ïðïßá èá ðåñéÝ÷åé ôéò áêüëïõèåò óôÞëåò: ôïí êùäéêü êáé ôï üíïìá ôïõ êÜèå
óõããñáöÝá, ôï ðëÞèïò Üñèñùí óå ðåñéïäéêÜ êáé ôï ðëÞèïò Üñèñùí óå ðñáêôéêÜ
óõíåäñßùí.

9.10. Íá êáôáóêåõÜóåôå Ýíáí íÝï ðßíáêá ìå üíïìá ¢ñèñá Ðåñéïäéêþí Óõíåäñßùí.


Óôç óõíÝ÷åéá ÷ñçóéìïðïéþíôáò åíôïëÝò INSERT ìå ÷ñÞóç õðïåñùôçìÜôùí íá
ãåìßóåôå ôïí ðßíáêá ìå ôïõò êùäéêïýò êáé ôïõò ôßôëïõò ôùí Üñèñùí ðïõ Ý÷ïõí
äçìïóéåõèåß êáé óå êÜðïéï ðåñéïäéêü êáé óå ðñáêôéêÜ êÜðïéïõ óõíåäñßïõ.
10
Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí
óå MSSQLS-2000

Ôï óýóôçìá MSSQLS-2000 õðïóôçñßæåé ðëÞñùò ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí.


Ôá äåäïìÝíá áðïèçêåýïíôáé óå ðßíáêåò ôçò ÂÜóçò ÄåäïìÝíùí êáé Ý÷ïõìå ôç
äõíáôüôçôá íá ðñïóðåëÜóïõìå ôá äåäïìÝíá ÷ñçóéìïðïéþíôáò ôï åñãáëåßï SQL
Query Analyzer. Ç ãëþóóá ðïõ õðïóôçñßæåé ï MSSQLS-2000 êáëåßôáé T-SQL
(Transact-SQL) ðïõ åßíáé ðëÞñùò óõìâáôÞ ìå ôï ðñüôõðï SQL-92. Óôï êåöÜëáéï
áõôü èá áó÷ïëçèïýìå ìå ôïí ïñéóìü êáé ÷åéñéóìü äåäïìÝíùí óôïí MSSQLS-2000
ìåëåôþíôáò ôéò óçìáíôéêüôåñåò ëåéôïõñãßåò ôïõ óõóôÞìáôïò.
Ùò ðáñÜäåéãìá èá ÷ñçóéìïðïéÞóïõìå ìßá áðëÞ ÂÜóç ÄåäïìÝíùí ðïõ áöïñÜ
óå êéíçìáôïãñáöéêÝò ôáéíßåò êáé çèïðïéïýò, ãéá ìßá åöáñìïãÞ åíüò êáôáóôÞìá-
ôïò åíïéêßáóçò ôáéíéþí (video club). Áñ÷éêÜ, ðñÝðåé íá êáôáóêåõÜóïõìå ôç íÝá
ÂÜóç ÄåäïìÝíùí óýìöùíá ìå ôçí ðåñéãñáöÞ ôïõ Êåöáëáßïõ 5. Ç íÝá ÂÜóç
ÄåäïìÝíùí êáëåßôáé movies-db. Ôï äéÜãñáììá ÏÓ êáé ôï óôéãìéüôõðï ôçò âÜóçò
áðåéêïíßæïíôáé óôï Ó÷Þìá 10.1. Ôï ó÷Þìá ôçò âÜóçò áðïôåëåßôáé áðü äýï óýíïëá
ïíôïôÞôùí Çèïðïéüò êáé Ôáéíßá, êáé áðü ôï óýíïëï óõó÷åôßóåùí Óõììåôï÷Þ, ôï
ïðïßï ðñïóäéïñßæåé ôç óõììåôï÷Þ åíüò çèïðïéïý óå ìßá ôáéíßá. Ôá ÷áñáêôçñé-
óôéêÜ DVD êáé VHS äçëþíïõí ôç äéáèåóéìüôçôá ôçò ôáéíßáò óôï áíôßóôïé÷ï ìÝóï
áðïèÞêåõóçò.

237
238 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

êùäéêüò ôßôëïò êáôçãïñßá DVD VHS


1 The others Ôñüìïõ 3 3
2 Armagedon ÐåñéðÝôåéá 2 1
3 Contact Åð. Öáíôáóßáò 6 5
4 Midnight run ÐåñéðÝôåéáò 2 1
5 Fifth element Åð. Öáíôáóßáò 7 7
6 ÊÜôé êïõñáóìÝíá ðáëëçêÜñéá Êùìùäßá 0 4
7 Ï ¢íèñùðïò ðïõ Ýôñå÷å ðïëý Êùìùäßá 0 5
Ôáéíßá

êùäéêüò êùäéêüò
êùäéêüò üíïìá çèïðïéïý ôáéíßáò
1 Nicole Kidman 1 1
2 Jodie Foster 2 3
3 Bruce Willis 3 2
4 Robert de Niro 3 5
5 Charles Grodin 4 4
6 ÈáíÜóçò ÂÝããïò 5 4
7 ËÜìðñïò ÊùíóôáíôÜñáò 6 7
7 6
Çèïðïéüò
Óõììåôï÷Þ

Ó÷Þìá 10.1: ÄéÜãñáììá ÏÓ êáé óôéãìéüôõðï ôçò âÜóçò ðïõ èá ÷ñçóéìïðïéçèåß.

10.1 Äçìéïõñãßá êáé Äéá÷åßñéóç ÐéíÜêùí


Ï MSSQLS-2000 õðïóôçñßæåé ôç äçìéïõñãßá ðéíÜêùí åßôå ìÝóù ôïõ åñãáëåßïõ
ó÷åäéáóìïý ðéíÜêùí ðïõ áðïôåëåß ìÝñïò ôïõ Enterprise Manager åßôå ìÝóù åíôï-
ëþí T-SQL. ÏðïéïíäÞðïôå ôñüðï êáé áí ÷ñçóéìïðïéÞóïõìå ç äçìéïõñãßá åíüò
íÝïõ ðßíáêá ðåñéëáìâÜíåé ôçí ïíïìáóßá ôïõ ðßíáêá, ôïí ïñéóìü ôùí óôçëþí, êáé
ôçí ðñïóèÞêç éäéïôÞôùí óôéò óôÞëåò ôïõ ðßíáêá.
Ç äçìéïõñãßá íÝïõ ðßíáêá ìÝóù ôïõ Enterpsise Manager åßíáé ìßá ðïëý áðëÞ
äéáäéêáóßá. Óôï Ó÷Þìá 10.2 ðáñïõóéÜæåôáé ç êáôáóêåõÞ ôùí ðéíÜêùí Çèïðïéüò
êáé Ôáéíßá ÷ñçóéìïðïéþíôáò ôï åñãáëåßï ó÷åäéáóìïý ðéíÜêùí ôïõ Enterprise
Manager. Ðáñïìïßùò ìðïñïýìå íá êáôáóêåõÜóïõìå êáé ôïí ðßíáêá Óõììåôï÷Þ.
Ãéá êÜèå óôÞëç ðïõ ïñßæåôáé ðñÝðåé íá ïñßóïõìå êáé ôï ðåäßï ïñéóìïý ôçò óôÞëçò.
Ï MSSQLS-2000 õðïóôçñßæåé üëïõò ôïõò ôýðïõò äåäïìÝíùí ôçò SQL-92. Åðé-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 239

Ó÷Þìá 10.2: ÊáôáóêåõÞ ðéíÜêùí ìÝóù ôïõ Enterprise Manager.

ðëÝïí, ðñïóöÝñåé Ýíá óýíïëï íÝùí ôýðùí äåäïìÝíùí ãéá ìåãáëýôåñç åõêïëßá
ôïõ ó÷åäéáóôÞ ôçò ÂÜóçò ÄåäïìÝíùí. Ï Ðßíáêáò 10.1 óõíïøßæåé ôïõò ôýðïõò
äåäïìÝíùí ðïõ åßíáé äéáèÝóéìïé ùò ðåäßá ïñéóìïý ôùí óôçëþí åíüò ðßíáêá óôïí
MSSQLS-2000.

Êáôçãïñßá Ôýðïé ÄåäïìÝíùí


ÓåéñÝò ×áñáêôÞñùí CHAR[(n)], VARCHAR[(n)], TEXT
×áñáêôÞñåò unicode NCHAR[(n)], NVARCHAR[(n)], NTEXT
Äõáäéêïß Áñéèìïß BINARY[(n)], VARBINARY[(n)], IMAGE
Çìåñïìçíßá DATETIME, SMALLDATETIME
ÁêÝñáéïé Áñéèìïß INT, BIGINT, SMALLINT, TINYINT
Äåêáäéêïß Áñéèìïß DECIMAL[(p[,s])], NUMERIC[(p[,s])]
ÊéíçôÞò ÕðïäéáóôïëÞò FLOAT[(n)], REAL
ÍïìéóìáôéêÝò ÌïíÜäåò MONEY, SMALLMONEY
Âoolean ÂÉÔ
Åéäéêïß CURSOR, TIMESTAMP, SYSNAME,
TABLE, SQL VARIANT, UNIQUEIDENTIFIER

Ðßíáêáò 10.1: Ôýðïé äåäïìÝíùí ðïõ õðïóôçñßæïíôáé áðü ôïí MSSQLS-2000.

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôïí ôñüðï äçìéïõñãßáò íÝùí ðéíÜêùí ÷ñçóéìï-


ðïéþíôáò ôç ãëþóóá ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí T-SQL. Ìðïñïýìå íá
óôÝëíïõìå åíôïëÝò ðñïò ôïí MSSQLS-2000 ÷ñçóéìïðïéþíôáò ôïí SQL Query An-
240 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

alyzer. Ç åêêßíçóç ôïõ Query Analyzer ãßíåôáé åßôå ìÝóù ôïõ Enterprise Manager
åßôå áð’ åõèåßáò áðü ôï ëåéôïõñãéêü óýóôçìá, êáé óõãêåêñéìÝíá áðü ôïí êáôÜëïãï
üðïõ Ý÷ïõí åãêáôáóôáèåß ïé åöáñìïãÝò ôïõ MSSQLS-2000. Óçìåéþíåôáé üôé ðñéí
áðü ôçí áðïóôïëÞ åíôïëþí ðñïò ôï óýóôçìá ðñÝðåé áðáñáéôÞôùò íá äçëþóïõìå
üôé èá ÷ñçóéìïðïéÞóïõìå ôç ÂÜóç ÄåäïìÝíùí movies-db ùò ôçí ôñÝ÷ïõóá âÜóç.
Áðü ôï ìåíïý åðéëïãþí ôïõ Query Analyzer åðéëÝãïõìå ôçí êáôçãïñßá "Query"
êáé óôç óõíÝ÷åéá "Change Database". ÌåôÜ áðü ôçí áëëáãÞ ôçò ôñÝ÷ïõóáò âÜ-
óçò, üëåò ïé åíôïëÝò ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí áðåõèýíïíôáé óôç ÂÜóç
ÄåäïìÝíùí movies-db.
Ãéá ôç äçìéïõñãßá íÝùí ðéíÜêùí ÷ñçóéìïðïéïýìå ôçí åíôïëÞ CREATE TABLE.
Ç åíôïëÞ ðïõ ðñÝðåé íá äþóïõìå ãéá ôçí êáôáóêåõÞ ôïõ ðßíáêá Ôáéíßá åßíáé:

CREATE TABLE Ôáéíßá


(êùäéêüò INT NOT NULL,
ôßôëïò VARCHAR(100) NOT NULL,
êáôçãïñßá VARCHAR(20),
DVD INT,
VHS INT,
PRIMARY KEY (êùäéêüò));

Óôï Ó÷Þìá 10.3 ðáñïõóéÜæåôáé ç åêôÝëåóç ôçò åíôïëÞò êáôáóêåõÞò íÝïõ ðß-

Ó÷Þìá 10.3: Äçìéïõñãßá ôïõ ðßíáêá Ôáéíßá ìÝóù T-SQL óôïí Query Analyzer.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 241

íáêá ìå ôç âïÞèåéá ôïõ Query Analyzer. ÌåôÜ ôçí åðéôõ÷Þ åêôÝëåóç ôçò åíôïëÞò
ëáìâÜíïõìå ôï ìÞíõìá "The command(s) completed successfully". ÅðéôñÝðåôáé ç
äéáôýðùóç ðïëëþí åíôïëþí ìáæß. Ï äéá÷ùñéóìüò ôùí åíôïëþí ãßíåôáé ìå ôç ÷ñÞóç
ôïõ ÷áñáêôÞñá ";" óôï ôÝëïò êÜèå åíôïëÞò.
ÌåôÜ ôçí êáôáóêåõÞ åíüò ðßíáêá Ý÷ïõìå ôç äõíáôüôçôá íá ðñïóèÝóïõìå, íá
áöáéñÝóïõìå Þ íá ìåôáâÜëïõìå ôï ðåäßï ïñéóìïý ìßáò óôÞëçò, ÷ùñßò íá áðáé-
ôåßôáé ç åê íÝïõ êáôáóêåõÞ ôïõ ðßíáêá. Ïé ëåéôïõñãßåò áõôÝò åßíáé äéáèÝóéìåò
åßôå ìÝóá áðü ôï åñãáëåßï ó÷åäéáóìïý ðéíÜêùí ôïõ Enterprise Manager, åßôå
÷ñçóéìïðïéþíôáò åíôïëÝò T-SQL óôïí Query Analyzer. Óôç äåýôåñç ðåñßðôùóç
÷ñçóéìïðïéåßôáé ç åíôïëÞ ALTER TABLE, óýìöùíá ìå üóá Ý÷ïõìå óõæçôÞóåé óôï
ÊåöÜëáéï 9.

10.2 Ðåñéïñéóìïß Áêåñáéüôçôáò


Õðåíèõìßæåôáé üôé Ýíá áðü ôá ðïëý óçìáíôéêÜ óôïé÷åßá ôùí ÓÄÂÄ åßíáé ç äõíá-
ôüôçôá íá åðéâÜëëïõìå ðåñéïñéóìïýò áêåñáéüôçôáò óôá äåäïìÝíá. Ï MSSQLS-
2000 õðïóôçñßæåé üëåò ôéò ìïñöÝò áêåñáéüôçôáò äåäïìÝíùí ðïõ ìåëåôÞóáìå óôï
ÊåöÜëáéï 6. Áíáëõôéêüôåñá Ý÷ïõìå:
• PRIMARY KEY (óôÞëç1,..., óôÞëçÍ): äçëþíåé üôé ïé óôÞëåò ðïõ âñß-
óêïíôáé ìÝóá óôéò ðáñåíèÝóåéò áðïôåëïýí ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá.

• NOT NULL: ïñßæåé üôé óôç óõãêåêñéìÝíç óôÞëç äåí åðéôñÝðïíôáé êåíÝò ôéìÝò.

• FOREIGN KEY: äçëþíåé üôé ç óõãêåêñéìÝíç óôÞëç åßíáé îÝíï êëåéäß ãéá ôïí
ðßíáêá.

• UNIQUE: ïñßæåé üôé äåí åßíáé äõíáôüí íá õðÜñ÷ïõí äýï ßäéåò ôéìÝò ãéá ôç
óõãêåêñéìÝíç óôÞëç.

• DEFAULT: ïñßæåé ðïéÜ ôéìÞ èá Ý÷åé ç óôÞëç óå ðåñßðôùóç ðïõ äåí ðñïó-
äéïñéóèåß êÜðïéá ôéìÞ êáôÜ ôçí åéóáãùãÞ ìßáò ãñáììÞò óôïí ðßíáêá.

• CHECK: äßíåé ôç äõíáôüôçôá íá ïñßóïõìå ïðïéáäÞðïôå ëïãéêÞ óõíèÞêç ðïõ


ðñÝðåé íá éó÷ýåé ãéá ôá áðïèçêåõìÝíá äåäïìÝíá.
Ïé óõíèÞêåò ôùí ðåñéïñéóìþí áêåñáéüôçôáò åëÝã÷ïíôáé ðñéí áðü êÜèå åéóá-
ãùãÞ, äéáãñáöÞ Þ åíçìÝñùóç äåäïìÝíùí. Óå ðåñßðôùóç ðïõ õðÜñ÷åé Ýóôù êáé
Ýíáò ðåñéïñéóìüò ðïõ äåí éêáíïðïéåßôáé, ôüôå ç áíôßóôïé÷ç åíôïëÞ áðïôõã÷Üíåé,
áðïôñÝðïíôáò ôçí áðïèÞêåõóç äåäïìÝíùí ðïõ åíäå÷ïìÝíùò íá äçìéïõñãÞóïõí
ðñüâëçìá. Ï ïñéóìüò ôùí ðåñéïñéóìþí áêåñáéüôçôáò ìðïñåß íá ãßíåé åßôå êáôÜ
ôç äçìéïõñãßá åíüò ðßíáêá, åßôå áñãüôåñá ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ ALTER
242 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

TABLE óôïí Query Analyzer Þ ôï åñãáëåßï ó÷åäéáóìïý ðéíÜêùí ôïõ Enterprise


Manager. Áò åîåôÜóïõìå ðùò ìðïñïýìå íá ïñßóïõìå ìåñéêïýò ðåñéïñéóìïýò
áêåñáéüôçôáò êáôÜ ôç äçìéïõñãßá ôïõ ðßíáêá Ôáéíßá:

CREATE TABLE Ôáéíßá


(êùäéêüò INT NOT NULL,
ôßôëïò VARCHAR(100) NOT NULL,
êáôçãïñßá VARCHAR(20) DEFAULT ‘¢ãíùóôç’,
DVD INT DEFAULT 0,
VHS INT DEFAULT 0,
PRIMARY KEY (êùäéêüò),
UNIQUE (ôßôëïò),
CHECK (DVD>=0),
CHECK (VHS>=0));

Ãéá ôçí ðñïóèÞêç åíüò íÝïõ ðåñéïñéóìïý áêåñáéüôçôáò, ï ïðïßïò åðéâÜë-


ëåé Üíù üñéï óôïí áñéèìü ôùí áíôéãñÜöùí DVD ðïõ ìðïñåß íá Ý÷åé ìßá ôáéíßá
÷ñçóéìïðïéïýìå ôçí åîÞò åíôïëÞ:

ALTER TABLE Ôáéíßá


ADD CONSTRAINT CHECK (DVD<20);

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôïí ïñéóìü ðåñéïñéóìþí áêåñáéüôçôáò îÝíïõ


êëåéäéïý. Ç ìïñöÞ áõôÞ áðáéôåßôáé êáôÜ ôç äçìéïõñãßá ôïõ ðßíáêá Óõììåôï÷Þ. Ï
ðßíáêáò áõôüò ðåñéÝ÷åé ùò óôÞëåò ôá êëåéäéÜ ôùí ðéíÜêùí Çèïðïéüò êáé Ôáéíßá.
ÅðïìÝíùò, ïé äýï áõôÝò óôÞëåò ðñÝðåé íá ïñéóèïýí ùò îÝíá êëåéäéÜ, óýìöùíá ìå
ôá üóá Ý÷ïõìå ìåëåôÞóåé óôï ÊåöÜëáéï 6. Ç êáôáóêåõÞ ôïõ ðßíáêá ðñáãìáôï-
ðïéåßôáé ìå ôçí åêôÝëåóç ôçò åðüìåíçò åíôïëÞò T-SQL:

CREATE TABLE Óõììåôï÷Þ


(êùäéêüò_çèïðïéïý INT NOT NULL,
êùäéêüò_ôáéíßáò INT NOT NULL,
PRIMARY KEY (êùäéêüò_çèïðïéïý,êùäéêüò_ôáéíßáò),
FOREIGN KEY (êùäéêüò_çèïðïéïý)
REFERENCES Çèïðïéüò(êùäéêüò)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (êùäéêüò_ôáéíßáò)
REFERENCES Ôáéíßá (êùäéêüò)
ON DELETE CASCADE
ON UPDATE CASCADE);
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 243

Ïé åíôïëÝò ON DELETE CASCADE êáé ON UPDATE CASCADE ÷ñçóéìïðïéïý-


íôáé ãéá íá äçëþóïõí ôçí åíÝñãåéá ðïõ èá åöáñìïóèåß óå ðåñßðôùóç ðïõ äéáãñá-
öïýí ïé ìåôáâëçèïýí ïé ôéìÝò ôùí îÝíùí êëåéäéþí óôïõò áñ÷éêïýò ðßíáêåò. Åäþ
ïñßæïõìå üôé áí ç ôéìÞ åíüò îÝíïõ êëåéäéïý äéáãñáöåß, ôüôå èá äéáãñáöïýí êáé
ïé áíôßóôïé÷åò ãñáììÝò ôïõ ðßíáêá Óõììåôï÷Þ. Åðßóçò, áí ç ôéìÞ åíüò êëåéäéïý
ìåôáâëçèåß óôïí áñ÷éêü ðßíáêá, ôüôå èá åíçìåñùèïýí ïé áíôßóôïé÷åò ãñáììÝò ôïõ
ðßíáêá Óõììåôï÷Þ.

10.3 ÅéóáãùãÞ, ÄéáãñáöÞ êáé ÅíçìÝñùóç ÄåäïìÝíùí


Ïé ëåéôïõñãßåò åéóáãùãÞò, äéáãñáöÞò êáé åíçìÝñùóçò äåäïìÝíùí åöáñìüæïíôáé
åßôå ÷ñçóéìïðïéþíôáò ôïí Enterprise Manager åßôå ôïí Query Analyzer. Áðü ôïí
Enterprise Manager ìðïñïýìå íá ðñïâÜëïõìå üëá ôá ðåñéå÷üìåíá åíüò ðßíáêá
êáé óôç óõíÝ÷åéá íá ðñï÷ùñÞóïõìå óå ìåôáâïëÝò ôùí äåäïìÝíùí, óå åéóáãùãÝò
íÝùí ãñáììþí Þ óå äéáãñáöÝò. Ç äéáäéêáóßá åßíáé ðïëý áðëÞ êáé öéëéêÞ ðñïò
ôï ÷ñÞóôç. ÅðéëÝãïõìå ôçí ðñïâïëÞ ðéíÜêùí áðü ôç ÂÜóç ÄåäïìÝíùí movies-
db êáé óôç óõíÝ÷åéá ÷ñçóéìïðïéþíôáò ôçí åðéëïãÞ "Open Table" êáé "Return all
Rows" (äåîß ðëÞêôñï ôïõ ðïíôéêéïý åðÜíù óôïí ðßíáêá) åìöáíßæïíôáé üëá ôá ðå-
ñéå÷üìåíá ôïõ ðßíáêá. Óôï Ó÷Þìá 10.4 åìöáíßæïíôáé ôá ðåñéå÷üìåíá ôïõ ðßíáêá
Çèïðïéüò.

Nicole Kidman
Jodie Foster
Bruce Willis
Robert DeNiro
Charles Grodin
Θανάσης Βέγγος
Λάµπρος Κωνσταντάρας

Ó÷Þìá 10.4: ÅìöÜíéóç äåäïìÝíùí ôïõ ðßíáêá Çèïðïéüò óôïí Enterprise Manager.

Ç åéóáãùãÞ, äéáãñáöÞ êáé åíçìÝñùóç äåäïìÝíùí ðñáãìáôïðïéåßôáé ìÝóù ôçò


244 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

T-SQL ìå ôéò åíôïëÝò INSERT, DELETE êáé UPDATE áíôéóôïß÷ùò. Ç óýíôáîç ôùí
åíôïëþí áõôþí áêïëïõèåß ôï ðñüôõðï SQL-92 (âë. ÊåöÜëáéï 9). Ç åéóáãùãÞ
ôùí ôñéþí ðñþôùí ãñáììþí ôïõ ðßíáêá Çèïðïéüò ãßíåôáé ìå ôçí åêôÝëåóç ôùí
åðüìåíùí åíôïëþí:

INSERT INTO Çèïðïéüò


VALUES (1, ‘Nicole Kidman’);
INSERT INTO Çèïðïéüò
VALUES (2, ‘Jodie Foster’);
INSERT INTO Çèïðïéüò
VALUES (3, ‘Bruce Willis’);

Ç äéáãñáöÞ ôçò ãñáììÞò ôïõ ðßíáêá ìå êùäéêü 1 ãßíåôáé ùò åîÞò:

DELETE FROM Çèïðïéüò


WHERE êùäéêüò=1;

ÔÝëïò, ç ìåôáâïëÞ ôïõ ïíüìáôïò ôçò ãñáììÞò ìå êùäéêü 1 Ý÷åé ùò åîÞò:

UPDATE Çèïðïéüò
SET üíïìá=‘Tom Cruse’ WHERE êùäéêüò=1;

Áðáéôåßôáé éäéáßôåñç ðñïóï÷Þ êáôÜ ôç äéáãñáöÞ êáé åíçìÝñùóç äåäïìÝíùí,


äéüôé áí äþóïõìå ëáíèáóìÝíç óõíèÞêç óôï ôìÞìá WHERE ôçò åíôïëÞò, ßóùò åðç-
ñåáóèïýí ðïëëÝò ãñáììÝò ôïõ ðßíáêá ìå êáôáóôñïöéêÜ áðïôåëÝóìáôá ãéá ôç
ÂÜóç ÄåäïìÝíùí.

10.4 ÄéáãñÜììáôá ÏíôïôÞôùí-Óõó÷åôßóåùí


Ï MSSQLS-2000 äßíåé ôç äõíáôüôçôá êáôáóêåõÞò äéáãñáììÜôùí ÏÓ ìå óôü÷ï
ôç ìïíôåëïðïßçóç ôïõ ðñáãìáôéêïý êüóìïõ êáé ôçí ïðôéêÞ áíáðáñÜóôáóç ôùí
ðéíÜêùí êáé ôùí ìåôáîý ôïõò ó÷Ýóåùí. Ç êáôáóêåõÞ åíüò äéáãñÜììáôïò ðáñÝ-
÷åôáé áðü ôïí Enterprise Manager, ìÝóù ôçò åðéëïãÞò "Diagrams". Óôï Ó÷Þìá
10.5 áðåéêïíßæåôáé ôï äéÜãñáììá ÏÓ ãéá ôç ÂÜóç ÄåäïìÝíùí movies-db. Ðáñá-
ôçñÞóôå ôéò óõíäÝóåéò ðïõ åìöáíßæïíôáé ìåôáîý ôùí ðéíÜêùí, ïé ïðïßåò äçëþíïõí
ôïõò ðåñéïñéóìïýò áêåñáéüôçôáò îÝíùí êëåéäéþí ðïõ Ý÷ïõìå ïñßóåé êáôÜ ôçí êá-
ôáóêåõÞ ôïõ ðßíáêá Óõììåôï÷Þ. ×ñçóéìïðïéþíôáò ôï äåîß ðëÞêôñï ôïõ ðïíôéêéïý
åðÜíù óå ìßá óõó÷Ýôéóç ìðïñïýìå íá äïýìå ôéò éäéüôçôÝò ôïõ. Óôï Ó÷Þìá 10.6
ðáñïõóéÜæïíôáé ïé éäéüôçôåò ôùí äýï óõó÷åôßóåùí.
Áíáëüãùò ìå ôéò áðáéôÞóåéò ìðïñïýìå ìÝóù ôïõ äéáãñÜììáôïò íá ðñïóèÝ-
ôïõìå êáé íá áöáéñïýìå ðßíáêåò, íá ðñïóèÝôïõìå êáé íá áöáéñïýìå óôÞëåò, íá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 245

Ó÷Þìá 10.5: ÄéÜãñáììá ÏÓ ãéá ôç ÂÜóç ÄåäïìÝíùí movies-db.

Ó÷Þìá 10.6: Éäéüôçôåò óõó÷åôßóåùí ôçò âÜóçò movies-db.

ìåôáâÜëëïõìå ôïí ïñéóìü ôùí óôçëþí ôùí ðéíÜêùí êáé íá äéá÷åéñéæüìáóôå ôïõò
ðåñéïñéóìïýò áêåñáéüôçôáò. Ïé ìåôáâïëÝò åöáñìüæïíôáé Üìåóá óôïõò ðßíáêåò
246 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

ôçò ÂÜóçò ÄåäïìÝíùí. Åðßóçò Ý÷ïõìå ôç äõíáôüôçôá íá ÷ñçóéìïðïéÞóïõìå ðïëëÜ


äéáãñÜììáôá ãéá ôçí ßäéá ÂÜóç ÄåäïìÝíùí.

10.5 Äéáôýðùóç ÅñùôçìÜôùí


Ç T-SQL äéáèÝôåé ôçí ðñüôáóç SELECT ... FROM ... WHERE ãéá ôç äéáôýðùóç
åñùôçìÜôùí ðñïò ôç ÂÜóç ÄåäïìÝíùí. Õðåíèõìßæåôáé üôé ç ãåíéêÞ óýíôáîç ôçò
ðñüôáóçò åßíáé:

SELECT [DISTINCT] <ëßóôá óôçëþí>


FROM <ëßóôá ðéíÜêùí>
[WHERE óõíèÞêç]
[GROUP BY <ëßóôá óôçëþí>]
[HAVING óõíèÞêç]
[ORDER BY <ëßóôá óôçëþí>[ASCENDING | DESCENDING]];

Ç äéáôýðùóç åñùôçìÜôùí ðñïò ôç ÂÜóç ÄåäïìÝíùí ðñáãìáôïðïéåßôáé ìÝóù


ôïõ Query Analyzer. ÅîåôÜæïõìå óôç óõíÝ÷åéá ôç äéáôýðùóç ìåñéêþí åñùôçìÜôùí
êáé ôçí áðÜíôçóç ðïõ åðéóôñÝöåé ôï óýóôçìá óå êÜèå ðåñßðôùóç. Ç áðÜíôçóç
óå êÜèå åñþôçìá äßíåôáé üðùò áêñéâþò ðáñïõóéÜæåôáé óôïí Query Analyzer.

1. Åñþôçìá: íá âñåèïýí üëá ôá ÷áñáêôçñéóôéêÜ ôùí ôáéíéþí ãéá ôéò ïðïßåò


õðÜñ÷ïõí ðåñéóóüôåñá áðü 3 áíôßãñáöá óå ìïñöÞ DVD.

Äéáôýðùóç T-SQL:

SELECT *
FROM Ôáéíßá
WHERE DVD>3;

ÁðÜíôçóç ÓõóôÞìáôïò:

2. Åñþôçìá: íá ðñïóäéïñéóèïýí ïé êùäéêïß êáé ïé ôßôëïé ôùí ôáéíéþí ãéá ôéò


ïðïßåò õðÜñ÷ïõí ôïõëÜ÷éóôïí 2 áíôßãñáöá óå DVD êáé ôï ðïëý 3 áíôß-
ãñáöá óå VHS.

Äéáôýðùóç T-SQL:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 247

SELECT êùäéêüò,ôßôëïò
FROM Ôáéíßá
WHERE DVD>=2 AND VHS<=3;

ÁðÜíôçóç ÓõóôÞìáôïò:

3. Åñþôçìá: íá âñåèïýí ôá ïíüìáôá üëùí ôùí çèïðïéþí.

Äéáôýðùóç T-SQL:

SELECT üíïìá
FROM Çèïðïéüò;

ÁðÜíôçóç ÓõóôÞìáôïò:

4. Åñþôçìá: íá âñåèïýí ïíüìáôá çèïðïéþí êáé ôßôëïé ôáéíéþí, üðïõ ï óõãêå-


êñéìÝíïò çèïðïéüò íá óõììåôÝ÷åé óôç óõãêåêñéìÝíç ôáéíßá.

Äéáôýðùóç T-SQL:

SELECT üíïìá,ôßôëïò
FROM Çèïðïéüò,Ôáéíßá,Óõììåôï÷Þ
WHERE Çèïðïéüò.êùäéêüò=Óõììåôï÷Þ.êùäéêüò_çèïðïéïý AND
Ôáéíßá.êùäéêüò=Óõììåôï÷Þ.êùäéêüò_ôáéíßáò;

Óçìåéþíåôáé üôé åðåéäÞ ç ÷ñÞóç ôùí óôçëþí üíïìá êáé ôßôëïò äåí äçìéïõñ-
ãåß óýã÷õóç, äåí åßíáé áðáñáßôçôï íá äçëþóïõìå êáé ôïí ðßíáêá óôï ôìÞìá
248 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

SELECT. ÐáñáôçñÞóôå üìùò üôé óôï ôìÞìá WHERE ÷ñçóéìïðïéïýíôáé ôá


ïíüìáôá ôùí ðéíÜêùí, þóôå íá åßíáé óáöÝò óå ðïéüí ðßíáêá áíáöåñüìá-
óôå óå êÜèå óõíèÞêç.

ÁðÜíôçóç ÓõóôÞìáôïò:

5. Åñþôçìá: íá âñåèåß ôï óýíïëï ôùí áíôéãñÜöùí DVD êáé VHS ãéá üëåò
ôéò ôáéíßåò óõíïëéêÜ.

Äéáôýðùóç T-SQL:

SELECT SUM(DVD) AS total_DVD, SUM(VHS) AS total_VHS


FROM Ôáéíßá;

ÁðÜíôçóç ÓõóôÞìáôïò:

Óôéò ðñïôÜóåéò SELECT ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå óõíáñôÞóåéò ðïõ


åöáñìüæïíôáé óôéò ôéìÝò ôùí óôçëþí ãéá íá äþóïõí ôï åðéèõìçôü áðïôÝëåóìá.
ÓõíáñôÞóåéò ìðïñïýí åðßóçò íá ÷ñçóéìïðïéçèïýí êáé óôï ôìÞìá WHERE. Óôï
ôåëåõôáßï åñþôçìá ðïõ åîåôÜóáìå Ýãéíå ÷ñÞóç ôçò óõíÜñôçóçò Üèñïéóçò SUM.
Ðáñïìïßùò ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå êáé ìßá ðëçèþñá Üëëùí óõíáñôÞ-
óåùí ðïõ õðïóôçñßæïíôáé áðü ôïí MSSQLS-2000, ïé âáóéêüôåñåò åê ôùí ïðïßùí
ðáñïõóéÜæïíôáé óôç óõíÝ÷åéá. Ïé óõíáñôÞóåéò óõíÜèñïéóçò ðáñïõóéÜæïíôáé óôïí
Ðßíáêá 10.2. Óôïí Ðßíáêá 10.3 äßíïíôáé ïé áñéèìçôéêÝò óõíáñôÞóåéò, åíþ óôïí
Ðßíáêá 10.4 äßíïíôáé ïé óõíáñôÞóåéò óõìâïëïóåéñþí. Ðåñéóóüôåñåò óõíáñôÞóåéò
ðåñéãñÜöïíôáé óå åîåéäéêåõìÝíá âéâëßá ðïõ ó÷åôßæïíôáé ìå ôïí MSSQLS-2000.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 249

ÓõíÜñôçóç ÐåñéãñáöÞ
AVG ìÝóïò üñïò ôùí ôéìþí ìßáò óôÞëçò Þ áñéèìçôéêÞò Ýêöñáóçò
MAX ìÝãéóôç ôéìÞ óôÞëçò Þ áñéèìçôéêÞò Ýêöñáóçò
MIN åëÜ÷éóôç ôéìÞ óôÞëçò Þ áñéèìçôéêÞò Ýêöñáóçò
SUM Üèñïéóìá ôéìþí óôÞëçò Þ áñéèìçôéêÞò Ýêöñáóçò
COUNT ðëÞèïò ôéìþí

Ðßíáêáò 10.2: ÓõíáñôÞóåéò óõíÜèñïéóçò.

ÓõíÜñôçóç ÐåñéãñáöÞ
ABS(n) áðüëõôç ôéìÞ ôïõ áñéèìïý n
ACOS(n) ôüîï óõíçìßôïíïõ n
ASIN(n) ôüîï çìéôüíïõ n
ATAN(n) ôüîï åöáðôïìÝíçò n
ATAN2(n,m) ôüîï åöáðôïìÝíçò ôïõ n/m
CEILING(n) åðéóôñÝöåé ôï ìéêñüôåñï áêÝñáéï ðïõ åßíáé ìåãáëýôåñïò ôïõ n
COS(n) óõíçìßôïíï ôçò ãùíßáò n
COT(n) óõíåöáðôïìÝíç ôçò ãùíßáò n
DEGREES(n) ìåôáôñÝðåé ôïí áñéèìü n óå ìïßñåò
EXP(n) õðïëïãéóìüò ôçò Ýêöñáóçò en
FLOOR(n) åðéóôñÝöåé ôï ìåãáëýôåñï áêÝñáéï ðïõ åßíáé ìéêñüôåñïò ôïõ n
LOG(n) öõóéêüò ëïãÜñéèìïò ôïõ n
LOG10(n) ëïãÜñéèìïò ìå âÜóç 10 ôïõ n
PI() åðéóôñÝöåé ôçí ôéìÞ ôïõ áñéèìïý π (3.14...)
POWER(x,y) õðïëïãéóìüò ôçò Ýêöñáóçò xy
RADIAN(n) ìåôáôñïðÞ ôïõ áñéèìïý n óå áêôßíéá (RAD)
RAND åðéóôñÝöåé Ýíáí ôõ÷áßï áñéèìü ìåôáîý 0 êáé 1
ROUND(n,p) óôñïããýëåõóç ôïõ áñéèìïý n ÷ñçóéìïðïéþíôáò áêñßâåéá p
ROWCOUNT åðéóôñïöÞ ôïõ áñéèìïý ôùí ãñáììþí ðïõ Ý÷ïõí åðçñåáóèåß
áðü ôçí ôåëåõôáßá ðñüôáóç T-SQL ðïõ åêôåëÝóôçêå
SIGN(n) åðéóôñÝöåé ôï ðñüóçìï ôïõ áñéèìïý n ùò áñéèìü:
-1 ãéá áñíçôéêÞ ôéìÞ, +1 ãéá èåôéêÞ ôéìÞ êáé 0 ãéá ìçäåíéêÞ ôéìÞ
SIN(n) õðïëïãéóìüò çìéôüíïõ ôïõ n
SQRT(n) õðïëïãéóìüò ôåôñáãùíéêÞò ñßæáò ôïõ n
TAN(n) åöáðôïìÝíç ãùíßáò n

Ðßíáêáò 10.3: ÁñéèìçôéêÝò óõíáñôÞóåéò.


250 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

ÓõíÜñôçóç ÐåñéãñáöÞ
ASCII(c) ìåôáôñïðÞ ôïõ ÷áñáêôÞñá c óôïí éóïäýíáìï
äåêáäéêü êùäéêü ASCII
CAST(a AS ôýðïò[(ìÞêïò)]) ìåôáôñïðÞ ôçò Ýêöñáóçò a óôïí ôýðï
äåäïìÝíùí ôýðïò
CHAR(n) ìåôáôñïðÞ ôïõ êþäéêá ASCII n óôïí
éóïäýíáìï ÷áñáêôÞñá
CONVERT(ôýðïò[(ìÞêïò)],a) éóïäýíáìç ìå ôçí CAST ìå äéáöïñåôéêÞ
äéáôýðùóç
CHARINDEX(s1,s2) åðéóôñÝöåé ôçí áñ÷éêÞ èÝóç üðïõ ç
óõìâïëïóåéñÜ s1 åìöáíßæåôáé ìÝóá óôçí s2
DIFFERENCE(s1,s2) åðéóôñÝöåé ôç äéáöïñÜ ôùí ôéìþí SOUNDEX
ôùí óõìâïëïóåéñþí s1 êáé s2
LOWER(s) ìåôáôñÝðåé üëá ôá êåöáëáßá ãñÜììáôá ôçò
óõìâïëïóåéñÜò s óå ðåæÜ
LTRIM(s) êáôáñãåß ôá áñ÷éêÜ êåíÜ äéáóôÞìáôá ôçò
óõìâïëïóåéñÜò s
NEWID() äçìéïõñãåß Ýíá ìïíáäéêü áñéèìü ôáõôüôçôáò
ìåãÝèïõò 16 bytes ìå óêïðü ôçí áðïèÞêåõóç
ìßáò ôéìÞò ìå ôýðï UNIQUEIDENTIFIER
PATINDEX(s,Ýêöñáóç) åðéóôñÝöåé ôçí áñ÷éêÞ èÝóç ôçò s óôçí
Ýêöñáóç Ýêöñáóç
REPLICATE(s,i) åðáíáëáìâÜíåé ôç óõìâïëïóåéñÜ s i öïñÝò
REVERSE(s) åðéóôñÝöåé ôç óõìâïëïóåéñÜ s ìå áíôßóôñïöç
óåéñÜ ÷áñáêôÞñùí
RIGHT(s,ìÞêïò) åðéóôñÝöåé ôïõò ôåëåõôáßïõò ÷áñáêôÞñåò ôçò
óõìâïëïóåéñÜò s
RTRIM(s) êáôáñãåß ôá ôåëéêÜ êåíÜ äéáóôÞìáôá ôçò
óõìâïëïóåéñÜò s
SOUNDEX(a) åðéóôñÝöåé Ýíáí êùäéêü SOUNDEX ôåóóÜñùí
÷áñáêôÞñùí ãéá íá êáèïñßóåé ôçí ïìïéüôçôá
áíÜìåóá óå äýï óõìâïëïóåéñÝò
SPACE(ìÞêïò) åðéóôñÝöåé ìßá óõìâïëïóåéñÜ ðïõ ðåñéÝ÷åé
ìÞêïò êåíÜ äéáóôÞìáôá
STR(f,[ìÞêïò[,d]]) ìåôáôñÝðåé ôçí Ýêöñáóç êéíçôÞò õðïäéáóôïëÞò
f óå óõìâïëïóåéñÜ ìÞêïõò ìÞêïò
÷ñçóéìïðïéþíôáò d äåêáäéêÜ øçößá
STUFF(s1,a,ìÞêïò,s2) áíôéêáèéóôÜ ôç óõìâïëïóåéñÜ s1 ôçí s2
îåêéíþíôáò áðü ôç èÝóç a ãéá ìÞêïò èÝóåéò
SUBSTRING(a,s,ìÞêïò) åðéóôñÝöåé ìßá íÝá óõìâïëïóåéñÜ áðü ôçí s
îåêéíþíôáò áðü ôç èÝóç a ìå ìÞêïò ìÞêïò
UPPER(s) ìåôáôñÝðåé üëá ôá ðåæÜ ôçò s óå êåöáëáßá

Ðßíáêáò 10.4: ÓõíáñôÞóåéò óõìâïëïóåéñþí.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 251

Áîßæåé íá äïèåß ëßãç ðåñéóóüôåñç ðñïóï÷Þ óôç óõíÜñôçóç SOUNDEX. Ç óõíÜñ-


ôçóç SOUNDEX åßíáé ìßá óðïõäáßá ìÝèïäïò êùäéêïðïßçóçò ðïõ ÷ñçóéìåýåé ãéá ôç
óõìðßåóç ëÝîåùí êáé ìðïñåß íá èåùñçèåß ùò Ýíáò öùíçôéêüò êáôáêåñìáôéóìüò.
Ç óõíÜñôçóç ìåôáôñÝðåé ôï üñéóìá óå Ýíáí áëöáñéèìçôéêü êùäéêü ôåóóÜñùí
ôï ðïëý øçößùí. Ôï ðñþôï øçößï åßíáé Ýíá áðü ôá ãñÜììáôá ôïõ áããëéêïý
áëöáâÞôïõ êáé åßíáé ôï ðñþôï ãñÜììá ôçò ëÝîçò. Ôá ôñßá åðüìåíá øçößá åßíáé
áñéèìïß ðïõ ðáñÜãïíôáé óýìöùíá ìå êÜðïéïõò êáíüíåò. Êáôáëáâáßíïõìå ëïéðüí
üôé õðÜñ÷ïõí 26 · 73 = 8918 äéáöïñåôéêïß êùäéêïß ðïõ ìðïñïýí íá ðñïêýøïõí.
Áõôü óçìáßíåé üôé äýï äéáöïñåôéêÝò ëÝîåéò ìðïñåß íá Ý÷ïõí ôïí ßäéï SOUNDEX
êùäéêü. Ôï ðëåïíÝêôçìá ôçò ÷ñÞóçò ôçò SOUNDEX åßíáé üôé äåí áðáéôåßôáé íá
ãíùñßæïõìå åðáêñéâþò ôçí ïñèïãñáößá ìßá ëÝîçò. Ôïíßæïõìå üôé óå ðåñßðôùóç
ðïõ ðñáãìáôïðïéåßôáé áíáæÞôçóç, ôï óýóôçìá äåí èá ìáò åðéóôñÝøåé áðïôÝëåóìá
áí ç ëÝîç ðïõ äßíïõìå äåí ôáõôßæåôáé åðáêñéâþò ìå áõôÞí ðïõ åßíáé áðïèçêåõìÝíç
óôç ÂÄ. Ïé êáíüíåò ðïõ ÷ñçóéìïðïéïýíôáé áðü ôç óõíÜñôçóç SOUNDEX åßíáé ïé
åîÞò:
• Áãíïïýíôáé üëïé ïé ìç áëöáâçôéêïß ÷áñáêôÞñåò.
• Ôá ðåæÜ ÷áñáêôÞñåò ìåôáôñÝðïíôáé óå êåöáëáßá.
• ËáìâÜíåôáé ï ðñþôïò ÷áñáêôÞñáò ôçò ëÝîçò óôï áðïôÝëåóìá.
• Áãíïïýíôáé ôá öùíÞåíôá A,E,I,O,U,Y êáé ôá óýìöùíá H,W.
• Ïé ÷áñáêôÞñåò B,F,P,V ìåôáôñÝðïíôáé óå 1.
• Ïé ÷áñáêôÞñåò C,G,J,K,Q,S,X,Z ìåôáôñÝðïíôáé óå 2.
• Ïé ÷áñáêôÞñåò D,T ìåôáôñÝðïíôáé óå 3.
• Ï ÷áñáêôÞñáò L ìåôáôñÝðåôáé óå 4.
• Ïé ÷áñáêôÞñåò M,N ìåôáôñÝðïíôáé óå 5.
• Ï ÷áñáêôÞñáò R ìåôáôñÝðåôáé óå 6.
• Äýï ç ðåñéóóüôåñá ßäéá øçößá áíôéêáèéóôþíôáé ìå Ýíá.
• Ôá ðñþôá ôñßá øçößá ëáìâÜíïíôáé óôï áðïôÝëåóìá.
Óýìöùíá ìå ôïõò ðñïçãïýìåíïõò êáíüíåò, ç ëÝîç "MacCloud" ìåôáôñÝðåôáé
óôïí êùäéêü "M243" åíþ ç ëÝîç "Smith" ìåôáôñÝðåôáé óôïí êùäéêü "S53". Óç-
ìåéþíåôáé, üôé ãéá íá óõãêñßíïõìå äýï óõìâïëïóåéñÝò ùò ðñïò ôïõò êùäéêïýò
SOUNDEX ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôç óõíÜñôçóç DIFFERENCE, þóôå íá
ðñïóäéïñßóïõìå ðüóï äéáöÝñïõí öùíçôéêÜ ïé äýï ëÝîåéò.
252 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

10.6 ¼øåéò
Ï MSSQLS-2000 õðïóôçñßæåé ôç äçìéïõñãßá üøåùí åßôå ìÝóù ôïõ åñãáëåßïõ ó÷å-
äéáóìïý üøåùí ôïõ Enterprise Manager åßôå ìå ÷ñÞóç åíôïëþí T-SQL áðü ôïí
Query Analyzer. ÅîåôÜæïíôáé êáé ïé äýï ôñüðïé ãéá ôçí êáôáóêåõÞ ìßáò üøçò
ðïõ áðïêñýðôåé ôéò óôÞëåò êùäéêüò, DVD êáé VHS áðü ôïí ðßíáêá Ôáéíßá êáé
åðéôñÝðåé ôçí ðñïóðÝëáóç ìüíï óôéò óôÞëåò ôßôëïò êáé êáôçãïñßá.
Ç ðñïóðÝëáóç ôïõ åñãáëåßïõ ó÷åäéáóìïý üøåùí ãßíåôáé åðéëÝãïíôáò ôï áíôß-
óôïé÷ï åéêïíßäéï (Views) ãéá ôç ÂÜóç ÄåäïìÝíùí movies-db óôá áñéóôåñÜ ôïõ
Enterprise Manager. ¸÷ïõìå ôç äõíáôüôçôá íá åðéëÝîïõìå ðïëëïýò ðßíáêåò,
üðïõ èá óôçñé÷èåß ç üøç. Ãéá ôï ðáñÜäåéãìÜ ìáò ÷ñåéáæüìáóôå ìüíï ôïí ðßíáêá
Ôáéíßá. Óôç óõíÝ÷åéá, åðéëÝãïõìå áðü ôïí ðßíáêá Ôáéíßá ôéò óôÞëåò ðïõ èá óõì-
ìåôÝ÷ïõí óôçí üøç. Ïé óôÞëåò áõôÝò åßíáé ïé ôßôëïò êáé êáôçãïñßá. Ðáñáôçñïýìå
üôé ìå ôçí åðéëïãÞ ìßáò óôÞëçò åíçìåñþíåôáé áõôüìáôá ôï åñþôçìá SQL, ôï ïðïßï
áíôáðïêñßíåôáé óôçí êáôáóêåõÞ ôçò üøçò. Ç ìïñöÞ ôïõ åñãáëåßïõ ó÷åäéáóìïý
üøåùí åßíáé üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 10.7.

Π ί ν α κ α ς

β ά σ η ς σ τ ο ν

Ε π ι λ ε γ ό  ε ν ε ς

ο π ο ί ο

σ τ ή λ ε ς

σ τ η ρ ί ζ ε τ α ι η

ν έ α ό ψ η

Ε ρ ώ τ η  α S Q L π ο υ

α ν τ ι σ τ ο ι χ ε ί σ τ η ν έ α ό ψ η

Ó÷Þìá 10.7: ÊáôáóêåõÞ íÝáò üøçò ìå ôïí Enterprise Manager.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 253

Ç êáôáóêåõÞ ìßáò íÝáò üøçò ðñáãìáôïðïéåßôáé óôçí T-SQL ìå ôç ÷ñÞóç ôçò


ðñüôáóçò CREATE VIEW, ç ãåíéêÞ óýíôáîç ôçò ïðïßáò åßíáé:
CREATE VIEW üíïìá-üøçò} [<ëßóôá óôçëþí>]
[WITH{ENCRYPTION|SCHEMABINDING|VIEW_METADATA}[,...n]]
AS
ðñüôáóç SELECT
[WITH CHECK OPTION];

ÐáñáôçñÞóôå üôé Ý÷ïõìå ôç äõíáôüôçôá íá ðñïóáñìüóïõìå ôéò éäéüôçôåò ôçò


üøçò ÷ñçóéìïðïéþíôáò ôéò ðñïôÜóåéò WITH ENCRYPTION, WITH SCHEMABIND-
ING êáé WITH VIEW METADATA. Áò åîåôÜóïõìå óõíïðôéêÜ ôçí åñìçíåßá ôçò
êÜèå ìßáò. ¼ôáí äçìéïõñãåßôáé ìßá íÝá üøç ôá óôïé÷åßá ôçò áðïèçêåýïíôáé óôï
ëåîéêü äåäïìÝíùí ôçò âÜóçò. Áí ÷ñçóéìïðïéçèåß ç åðéëïãÞ WITH ENCRYPTION,
ôüôå ôá óôïé÷åßá ôçò üøçò áðïèçêåýïíôáé êñõðôïãñáöçìÝíá, Ýôóé þóôå íá ìçí
åßíáé äéáèÝóéìïò ï ïñéóìüò ôçò üøçò. Áõôü åßíáé ðïëý ÷ñÞóéìï áí èÝëïõìå íá
áðïêñýøïõìå ôïí ïñéóìü ôçò üøçò.
Ìå ôçí åðéëïãÞ WITH SCHEMABINDING ðñáãìáôïðïéïýíôáé äåóìåýóåéò ìå-
ôáîý ôçò üøçò êáé ôùí âáóéêþí ðéíÜêùí, üðïõ óôçñßæåôáé ç üøç. Ìå ôçí åðéëïãÞ
áõôÞ áðïôñÝðåôáé ç äéáãñáöÞ Þ ç áëëáãÞ ïíüìáôïò ôùí âáóéêþí ðéíÜêùí ÷ùñßò
ðñþôá íá ìåôáâëçèåß áíáëüãùò ï ïñéóìüò ôçò üøçò. Ãéá ðáñÜäåéãìá, áí äéáãñÜ-
øïõìå ôïí ðßíáêá Ôáéíßá, ôüôå ðñïöáíþò ç üøç ðïõ êáôáóêåõÜóáìå ðñïçãïõìÝ-
íùò äåí èá äþóåé áðïôÝëåóìá. Ìå ôç ÷ñÞóç ôçò åðéëïãÞò WITH SCHEMABIND-
ING êÜôé ôÝôïéï áðïôñÝðåôáé åðåéäÞ åßôå èá ðñÝðåé ðñþôá íá êáôáóôñáöåß ç üøç
êáé ìåôÜ íá äéáãñáöåß ï ðßíáêáò, åßôå äåí èá ãßíåé ôßðïôå áðü ôá äýï.
Ç åðéëïãÞ WITH VIEW METADATA ÷ñçóéìïðïéåßôáé ãéá íá äçëþóïõìå üôé
åíäéáöåñüìáóôå ãéá ðëçñïöïñßåò ìåôáäåäïìÝíùí ðïõ áöïñïýí óôçí üøç êáé
ü÷é óôïõò ðßíáêåò üðïõ óôçñßæåôáé. Ç åðéëïãÞ áõôÞ åßíáé éäéáßôåñá ÷ñÞóéìç üôáí
æçôïýíôáé ðëçñïöïñßåò ìåôáäåäïìÝíùí áðü Üëëåò åöáñìïãÝò ìÝóù ôùí äéåðáöþí
ODBC, JDBC, OLE DB.
Ç ðñüôáóç CREATE VIEW ìáò äßíåé ôç äõíáôüôçôá íá ÷ñçóéìïðïéÞóïõìå ôçí
åðéëïãÞ WITH CHECK OPTION óôï ôÝëïò ôçò ðñüôáóçò. Ìå ôïí ôñüðï áõôü
åíåñãïðïéåßôáé Ýíáò ìç÷áíéóìüò ðñïóôáóßáò äåäïìÝíùí, ï ïðïßïò äåí åðéôñÝðåé
ôçí åéóáãùãÞ íÝáò ãñáììÞò óôçí üøç áí ç ãñáììÞ áõôÞ äåí ìðïñåß íá åßíáé
ïñáôÞ ëüãù ôçò ìç éêáíïðïßçóçò ôçò óõíèÞêçò WHERE (áí õðÜñ÷åé). ÈåùñÞóôå
ãéá ðáñÜäåéãìá ôçí üøç ¼øç Ôáéíßáò, ç ïðïßá åðéôñÝðåé ôçí ðñïóðÝëáóç ôùí
ãñáììþí ôïõ ðßíáêá Ôáéíßá ìüíï áí ï áñéèìüò ôùí äéáèÝóéìùí DVD ãéá ôçí
ôáéíßá åßíáé ìåãáëýôåñïò áðü 2. Ç åíôïëÞ äçìéïõñãßáò ôçò üøçò åßíáé:
CREATE VIEW ¼øç_Ôáéíßáò
AS
254 ÊåöÜëáéï 10. Ïñéóìüò êáé ×åéñéóìüò ÄåäïìÝíùí óå MSSQLS-2000

SELECT *
FROM Ôáéíßá
WHERE DVD>2
WITH CHECK OPTION;

Áí óôç óõíÝ÷åéá ðñïóðáèÞóïõìå íá åéóÜãïõìå óôçí üøç ìßá íÝá ôáéíßá ãéá ôçí
ïðïßá äåí õðÜñ÷ïõí äéáèÝóéìá áíôßãñáöá óå DVD, ôüôå ç åéóáãùãÞ èá áðïôý÷åé
êáé èá åìöáíéóèåß ôï áíÜëïãï ìÞíõìá ëÜèïõò ìáæß ìå ôçí áéôßá ðïõ ðñïêÜëåóå
ôçí áðïôõ÷ßá ôçò åêôÝëåóçò ôçò åíôïëÞò åéóáãùãÞò.
Ìßá üøç äåí Ý÷åé öõóéêÞ õðüóôáóç üðùò Ýíáò ðßíáêáò ôçò ÂÜóçò ÄåäïìÝ-
íùí. Ôï óýóôçìá åêôåëåß ôçí ðñüôáóç SELECT ôçò üøçò êÜèå öïñÜ ðïõ ôï
üíïìá ìßáò üøçò áíáöÝñåôáé óå Ýíá åñþôçìá T-SQL. Ùóôüóï, ï MSSQLS-2000
ìáò äßíåé ôç äõíáôüôçôá íá áðïèçêåýïõìå ôá äåäïìÝíá ìßáò üøçò, üðùò áêñéâþò
áðïèçêåýïíôáé ôá äåäïìÝíá åíüò ðßíáêá. Ìßá ôÝôïéá üøç êáëåßôáé õëïðïéçìÝíç
üøç (materialized view) Þ äåéêôïäïôïýìåíç üøç (indexed view). Ç ÷ñÞóç ôùí
üøåùí áõôþí åðéôá÷ýíåé óçìáíôéêÜ ôçí åðåîåñãáóßá åñùôçìÜôùí, äéüôé ôá áðï-
ôåëÝóìáôá ôçò üøçò åßíáé Þäç äéáèÝóéìá êáé äåí áðáéôåßôáé ç åê íÝïõ åêôÝëåóç
ôçò ðñüôáóçò SELECT ç ïðïßá ÷ñçóéìïðïéÞèçêå ãéá ôïí ïñéóìü ôçò üøçò (âë.
ÊåöÜëáéï 6).

10.7 Óýíïøç
Ôï óýóôçìá MSSQLS-2000 õðïóôçñßæåé ðëÞñùò ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí.
Ôá äåäïìÝíá áðïèçêåýïíôáé óå ðßíáêåò ôçò ÂÜóçò ÄåäïìÝíùí êáé Ý÷ïõìå ôç
äõíáôüôçôá íá ðñïóðåëÜóïõìå ôá äåäïìÝíá ÷ñçóéìïðïéþíôáò ôï åñãáëåßï SQL
Query Analyzer. Ç ãëþóóá ðïõ õðïóôçñßæåé ï MSSQLS-2000 êáëåßôáé T-SQL
(Transact-SQL), ç ïðïßá åßíáé ðëÞñùò åíáñìïíéóìÝíç ìå ôï ðñüôõðï SQL-92.
Ãéá ôçí êáôáíüçóç ôùí äõíáôïôÞôùí ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí ôïõ
MSSQLS-2000 ÷ñçóéìïðïéÞèçêå ìßá áðëÞ ÂÜóç ÄåäïìÝíùí (movies-db) ðïõ áöï-
ñÜ óå êéíçìáôïãñáöéêÝò ôáéíßåò êáé çèïðïéïýò. ÅîåôÜóáìå ôïí ôñüðï êáôáóêåõÞò
ôçò íÝáò âÜóçò êáé ôç äéáôýðùóç åñùôçìÜôùí T-SQL óôï åñãáëåßï SQL Query
Analyzer. Åðßóçò, ðåñéãñÜøáìå ôïí ôñüðï ÷ñÞóçò ôïõ Enterprise Manager ãéá ôçí
êáôáóêåõÞ ðéíÜêùí êáé ãéá ôç äçìéïõñãßá äéáãñáììÜôùí ïíôïôÞôùí-óõó÷åôßóåùí.
ÔÝëïò, áíáëýèçêå ï ôñüðïò ïñéóìïý üøåùí ìÝóù ôïõ Enterprise Manager êáé ôïõ
SQL Query Analyzer.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


10.1. Íá áíáöåñèïýí ïé ôýðïé äåäïìÝíùí ôïõ MSSQLS-2000.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 255

10.2. ÐïéÝò ìïñöÝò áêåñáéüôçôáò äåäïìÝíùí õðïóôçñßæïíôáé áðü ôïí MSSQLS-


2000; Íá ðåñéãñÜøåôå óýíôïìá ôçí êÜèå ìßá.

10.3. Ìå ôç âïÞèåéá ôïõ Enterprise Manager êáôáóêåõÜóôå ôç ÂÜóç ÄåäïìÝ-


íùí movies-db. Óôç óõíÝ÷åéá, ÷ñçóéìïðïéþíôáò ôïí Query Analyzer êáé åíôïëÝò
T-SQL êáôáóêåõÜóôå ôïõò ðßíáêåò ôçò ÂÜóçò ÄåäïìÝíùí movies-db, üðùò ðåñé-
ãñÜöïíôáé óôï êåßìåíï, êáé åéóÜãåôå óôïõò ðßíáêåò äåäïìÝíá.

10.4. Óôïí ðßíáêá Ôáéíßá íá ïñéóèåß Ýíá åðéðëÝïí ÷áñáêôçñéóôéêü üðïõ íá áðï-
èçêåýåôáé ôï üíïìá ôïõ óêçíïèÝôç ôçò ôáéíßáò. Óôç óõíÝ÷åéá, ÷ñçóéìïðïéþíôáò
äéáäï÷éêÝò åíôïëÝò UPDATE íá åíçìåñùèåß ôï ÷áñáêôçñéóôéêü áõôü ãéá üëåò ôéò
åããñáöÝò ôïõ ðßíáêá Ôáéíßá.

10.5. ×ñçóéìïðïéþíôáò åíôïëÝò T-SQL äéáôõðþóôå óôïí Query Analyzer Ýíá


åñþôçìá þóôå ùò áðÜíôçóç íá äßíåé ôï ðëÞèïò áíôéãñÜöùí VHS êáé DVD üëùí
ôùí ôáéíéþí.

10.6 ×ñçóéìïðïéþíôáò åíôïëÝò T-SQL äéáôõðþóôå óôïí Query Analyzer Ýíá åñþ-
ôçìá ðïõ âñßóêåé ãéá êÜèå çèïðïéü ôïí áñéèìü ôùí ôáéíéþí ðïõ Ý÷åé ðáßîåé.

10.7 ×ñçóéìïðïéþíôáò åíôïëÝò T-SQL äéáôõðþóôå óôïí Query Analyzer Ýíá åñþ-
ôçìá ðïõ íá äßíåé ôïí áñéèìü ôùí ôáéíéþí áíÜ êáôçãïñßá.

10.8. Íá êáôáóêåõáóèåß ìßá üøç óôç ÂÜóç ÄåäïìÝíùí movies-db ðïõ íá åðé-
óôñÝöåé ôá æåýãç (üíïìá çèïðïéïý, ôßôëïò ôáéíßáò), Ýôóé þóôå ï óõãêåêñéìÝíïò
çèïðïéüò íá óõììåôÝ÷åé óôç óõãêåêñéìÝíç ôáéíßá.

10.9. ÐïéÝò ìïñöÝò üøçò õðïóôçñßæåé ï MSSQLS-2000; ÐåñéãñÜøôå ôéò äéáöïñÝò


ôïõò êáé ôç ÷ñçóéìüôçôÜ ôïõò.

10.10. ×ñçóéìïðïéþíôáò ôá åñãáëåßá ôïõ MSSQL-2000 íá êáôáóêåõÜóåôå ôç ÂÄ


ðïõ áðåéêïíßæåôáé óôï Ó÷Þìá 4.1.
ÌÝñïò III

ÈÅÌÁÔÁ ÕËÏÐÏÉÇÓÇÓ

Ôï ìÝñïò áõôü ôïõ âéâëßïõ äéáðñáãìáôåýåôáé æçôÞìáôá õëïðïßçóçò ôùí ÓÄÂÄ.


Ç áðïôåëåóìáôéêüôçôá êáé áðïäïôéêüôçôá åíüò ÓÄÂÄ åîáñôÜôáé Üìåóá áðü ôïí
ôñüðï öõóéêÞò ïñãÜíùóçò êáé äéá÷åßñéóçò ôùí äåäïìÝíùí. ÊÜèå öïñÜ ðïõ áðï-
óôÝëëåôáé ðñïò åðåîåñãáóßá Ýíá åñþôçìá áêïëïõèïýí ðïëëÜ óôÜäéá ìÝ÷ñé ç áðÜ-
íôçóç óôï åñþôçìá íá ãßíåé äéáèÝóéìç óôï ÷ñÞóôç. Ôï ÊåöÜëáéï 11 ìåëåôÜ ôïõò
ôñüðïõò öõóéêÞò ïñãÜíùóçò ôçò âÜóçò äåäïìÝíùí, ðåñéãñÜöïíôáò áíáëõôéêÜ ôéò
ìåèüäïõò áðïèÞêåõóçò ôùí äåäïìÝíùí óôá áñ÷åßá ôçò ÂÜóçò ÄåäïìÝíùí. ¼ëá
ôá ÓÄÂÄ äéáèÝôïõí ìç÷áíéóìïýò ïñãÜíùóçò ôùí äåäïìÝíùí Ýôóé þóôå íá åðé-
ôá÷ýíåôáé ç äéáäéêáóßá ôçò áíáæÞôçóçò êáé åíçìÝñùóçò ôùí äåäïìÝíùí. Äýï
áíôéðñïóùðåõôéêÝò ïéêïãÝíåéåò äïìþí ïñãÜíùóçò ìåëåôïýìå óôá ÊåöÜëáéá 12
êáé 13. Óôï ÊåöÜëáéï 12 ðáñïõóéÜæïíôáé ïé äåíäñéêÝò äïìÝò ïñãÜíùóçò, äßíï-
íôáò Ýìöáóç óôç äïìÞ ôïõ B-äÝíäñïõ êáé ôéò ðáñáëëáãÝò ôïõ. Óôï ÊåöÜëáéï 13
ìåëåôïýìå ôéò äïìÝò ðïõ óôçñßæïíôáé óôïí êáôáêåñìáôéóìü. Êáé ïé äýï ìïñöÝò
ïñãÜíùóçò Ý÷ïõí áðáó÷ïëÞóåé ôïõò åñåõíçôÝò ðïõ áíáæçôïýí ôá÷ýôåñïõò ôñü-
ðïõò ðñïóðÝëáóçò ôùí äåäïìÝíùí. Óôï ÊåöÜëáéï 14 áíáëýïíôáé ïé ìç÷áíéóìïß
âåëôéóôïðïßçóçò êáé åðåîåñãáóßáò åñùôçìÜôùí. Ç äéáäéêáóßá ôçò âåëôéóôïðïßç-
óçò Ý÷åé ùò óôü÷ï ôïí ðñïóäéïñéóìü åíüò ðëÜíïõ åêôÝëåóçò ôïõ åñùôÞìáôïò, Ýôóé
þóôå ôï êüóôïò åðåîåñãáóßáò íá åßíáé üóï ãßíåôáé ìéêñüôåñï. Óôï ÊåöÜëáéï 15
ìåëåôïýìå ôéò óõíáëëáãÝò, ôïõò ìç÷áíéóìïýò ôáõôü÷ñïíçò ðñïóðÝëáóçò äåäïìÝ-
íùí êáé ôéò ìåèüäïõò åðáíÜêôçóçò. Ôï ÊåöÜëáéï 16 åßíáé åóôéÜæåé óôá èÝìáôá
áóöÜëåéáò ðïõ áöïñïýí óôá ÓÄÂÄ êáé óå æçôÞìáôá ðñïóôáóßáò äåäïìÝíùí. ÔÝ-
ëïò, óôï ÊåöÜëáéï 17 ðåñéãñÜöïõìå ôá èÝìáôá õëïðïßçóçò ôïõ MSSQLS-2000.
11
ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí
ÄåäïìÝíùí

Åßíáé ãíùóôü üôé Ýíá ÓÄÂÄ ôñÝ÷åé åðÜíù áðü ôï ëåéôïõñãéêü óýóôçìá, ðïõ åßíáé
õðåýèõíï ãéá ôç äéá÷åßñéóç ôùí áñ÷åßùí, óôï ëåãüìåíï ÷áìçëü öõóéêü åðßðåäï.
Óôï ðáñåëèüí åß÷áí õðÜñîåé äé÷ïãíùìßåò ãéá ôá äéá÷ùñéóôéêÜ üñéá ôùí äýï óõ-
óôçìÜôùí, äçëáäÞ ãéá ôéò óõãêåêñéìÝíåò õðçñåóßåò ðïõ èá Ýðñåðå íá ðñïóöÝñåé
ôï ëåéôïõñãéêü óýóôçìá óôï ÓÄÂÄ. Ôåëéêþò ç áêáäçìáúêÞ êáé êáôáóêåõáóôéêÞ
êïéíüôçôá ôùí áíèñþðùí ðïõ äéáêïíïýóáí ôéò ÂÜóåéò ÄåäïìÝíùí êáôÝëçîáí óôï
óõìðÝñáóìá üôé ìåñéêÝò õðçñåóßåò ôùí ëåéôïõñãéêþí óõóôçìÜôùí åßíáé áíåðáñ-
êåßò ãéá ôéò áíÜãêåò ìßáò ÂÜóçò ÄåäïìÝíùí. Ïé ëüãïé Þôáí ðñáêôéêïß êáé ôå÷íéêïß.
Ãéá ðáñÜäåéãìá:

• Óå óõóôÞìáôá ôùí 32 bit, ôï ìåãáëýôåñï ìÝãåèïò áñ÷åßïõ ðïõ ìðïñåß íá


äéá÷åéñéóèåß Ýíá ëåéôïõñãéêü óýóôçìá åßíáé 4 GBytes. ¼ìùò óõ÷íÜ õðÜñ-
÷ïõí åìðïñéêÝò åöáñìïãÝò ðïõ áðáéôïýí ìåãáëýôåñá áñ÷åßá.

• Ï ôñüðïò ïñãÜíùóçò ôùí áñ÷åßùí åîáñôÜôáé êáèáñÜ áðü ôï ëåéôïõñãéêü


óýóôçìá, êÜôé ðïõ ðåñéïñßæåé ôçí åõåëéîßá ôïõ ÓÄÂÄ.

259
260 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

• Ïé êáôáóêåõáóôÝò ôùí ÓÄÂÄ åðéèõìïýí ôï ðñïúüí ôïõò íá ôñÝ÷åé óå äéÜ-


öïñåò ðëáôöüñìåò ëåéôïõñãéêþí óõóôçìÜôùí. ¸ôóé åßíáé áíáãêáóìÝíïé
íá ìçí ðñïóáñìüæïõí ôï ðñïúüí ôïõò ðñïò ôéò éäéáéôåñüôçôåò ôïõ êÜèå ëåé-
ôïõñãéêïý óõóôÞìáôïò, áëëÜ íá ôï êáèéóôïýí üóï ôï äõíáôüí ðåñéóóüôåñï
áýôáñêåò ãéá ëüãïõò ìåôáöåñóéìüôçôáò.
Ïé ðñïçãïýìåíïé ëüãïé ïäÞãçóáí ôïõò êáôáóêåõáóôÝò ÓÄÂÄ íá ðñï÷ùñÞ-
óïõí óôçí êáôåýèõíóç íá óõìðåñéëÜâïõí óôá ðñïúüíôá ôïõò õðïóõóôÞìáôá ðïõ
íá åêôåëïýí ëåéôïõñãßåò öõóéêïý åðéðÝäïõ ìå ôñüðï þóôå íá åîõðçñåôïýíôáé ïé
óõãêåêñéìÝíåò áíÜãêåò ôùí óõãêåêñéìÝíùí óõóôçìÜôùí ìå ôïí êáëýôåñï äõíáôü
ôñüðï. Óôï ÊåöÜëáéï 3 ìåëåôÞóáìå ôçí áñ÷éôåêôïíéêÞ åíüò ÓÄÂÄ êáé ðåñéãñÜ-
øáìå ôá âáóéêÜ ôïõ õðïóõóôÞìáôá. Óôï Ó÷Þìá 11.1 äßíïíôáé ôá ôìÞìáôá ôïõ
ÓÄÂÄ ðïõ ó÷åôßæïíôáé ìå ôç öõóéêÞ ïñãÜíùóç ôùí äåäïìÝíùí êáé åßíáé ôá åîÞò:
• ï äéá÷åéñéóôÞò ôïõ ÷þñïõ ôïõ äßóêïõ (disk space manager Þ disk storage
manager),
• ï äéá÷åéñéóôÞò ôçò áðïìïíùôéêÞò ìíÞìçò, êáé
• ï äéá÷åéñéóôÞò áñ÷åßùí.

ι α χ ε ι ρ ι σ τ ή ς Α ρ χ ε ί ω ν

ι α χ ε ι ρ ι σ τ ή ς Α π ο  ο ν ω τ ι κ ή ς

Μ ν ή  η ς

ι α χ ε ι ρ ι σ τ ή ς Χ ώ ρ ο υ ί σ κ ο υ

Α π ο θ η κ ε υ  έ ν α ε δ ο  έ ν α

( D a t a b a s e )

Ó÷Þìá 11.1: ÔìÞìáôá ôïõ ÓÄÂÄ ðïõ ó÷åôßæïíôáé ìå ôç öõóéêÞ ïñãÜíùóç äåäïìÝ-
íùí.

Ôï êÜèå Ýíá áðü ôá ðñïçãïýìåíá ôìÞìáôá åðéêïéíùíåß ìå ôá ãåéôïíéêÜ ôïõ


äßíïíôáò êáé ðáßñíïíôáò äåäïìÝíá. Ãéá ðáñÜäåéãìá, ï äéá÷åéñéóôÞò ôïõ ÷þñïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 261

ôïõ äßóêïõ åßíáé ôï ëïãéóìéêü ðïõ åßíáé õðåýèõíï ãéá ôçí áíÜãíùóç êáé ôçí
áðïèÞêåõóç óåëßäùí óôï äßóêï, åíþ ï äéá÷åéñéóôÞò ôçò áðïìïíùôéêÞò ìíÞìçò
åßíáé ôï ëïãéóìéêü ðïõ åßíáé õðåýèõíï ãéá ôçí êáôÜôìçóç ôçò êýñéáò ìíÞìçò óå
êáôÜëëçëá ôìÞìáôá, þóôå åêåß íá áðïèçêåýïíôáé ðñïóùñéíÜ ôá ðåñéå÷üìåíá ôùí
óåëßäùí ðïõ Ýñ÷ïíôáé áðü ôï äßóêï (ìÝóù ôïõ äéá÷åéñéóôÞ ôïõ ÷þñïõ ôïõ äßóêïõ).
Ôï áíþôåñï åðßðåäï ðåñéëáìâÜíåé Ýíá óýíïëï ðñïãñáììÜôùí ðïõ õëïðïéïýí
äéÜöïñåò äïìÝò áñ÷åßùí. Åðßóçò, ï äéá÷åéñéóôÞò áñ÷åßùí åßíáé õðåýèõíïò ãéá
ôçí ôáêôïðïßçóç ôùí åããñáöþí óå óåëßäåò.
Óôï ðáñüí êåöÜëáéï èá áíáðôõ÷èïýí èÝìáôá ðïõ áíáöÝñïíôáé óå èÝìáôá äéá-
÷åßñéóçò åéóüäïõ/åîüäïõ äåäïìÝíùí áðü ôç äåõôåñåýïõóá óôçí êýñéá ìíÞìç ìå ôç
âïÞèåéá ôùí áðïìïíùôéêþí ìíçìþí. ¼ìùò ðñïçãïõìÝíùò ðñÝðåé íá áíáöåñèïýí
ìåñéêÜ âáóéêÜ óôïé÷åßá ó÷åôéêÜ ìå ôçí áñ÷éôåêôïíéêÞ åíüò ôõðéêïý õðïëïãéóôéêïý
óõóôÞìáôïò.
Óôá ðñþôá õðïëïãéóôéêÜ óõóôÞìáôá ç êåíôñéêÞ ìïíÜäá åðåîåñãáóßáò (CPU)
ðáñÝìåíå áäñáíÞò üôáí äåäïìÝíá ìåôáöÝñïíôáí áðü/ðñïò ôç äåõôåñåýïõóá ìíÞìç.
Ç áäõíáìßá áõôÞ ãéá ôçí áðïôåëåóìáôéêÞ åðéêïéíùíßá ôçò ãñÞãïñçò êýñéáò ìíÞ-
ìçò êáé ôùí âñáäýôåñùí äåõôåñåõïõóþí ìíçìþí Ý÷åé îåðåñáóèåß óôïõò óýã÷ñï-
íïõò õðïëïãéóôÝò ìå ôç äçìéïõñãßá ìßáò äéåðáöÞò (interface), ðïõ ìðïñåß íá Ý÷åé
äýï ìïñöÝò:

• ôá ìåãÜëá óõóôÞìáôá Ý÷ïõí ôï ëåãüìåíï êáíÜëé (channel), ðïõ åßíáé Ýíáò


äåýôåñïò åðåîåñãáóôÞò (I/O processor), åíþ

• ôá ìéêñÜ óõóôÞìáôá Ý÷ïõí ôï ëåãüìåíï äßáõëï äåäïìÝíùí (data bus).

Óêïðüò êáé ôùí äýï åßíáé ç åîïìÜëõíóç ôïõ ñõèìïý ìåôáöïñÜò äåäïìÝíùí. Åéäé-
êüôåñá, ôï êáíÜëé áí êáé Ý÷åé äéêÞ ôïõ ìéêñÞ ìíÞìç êáé ìßá ìéêñÞ ïìÜäá åíôïëþí,
äåí åßíáé éóüôéìïò åðåîåñãáóôÞò ðñïò ôïí êåíôñéêü åðåîåñãáóôÞ. Ç âáóéêÞ ëåé-
ôïõñãßá ôïõ êáíáëéïý åßíáé ç ìåôáôñïðÞ ôùí ëÝîåùí ôçò êýñéáò ìíÞìçò óå bytes,
þóôå íá áðïèçêåõèïýí óôçí ðåñéöåñåéáêÞ óõóêåõÞ êáé ç ìåôáôñïðÞ ôùí bytes óå
ëÝîåéò ãéá ôçí áíôßóôñïöç ìåôáöïñÜ. Ïé ëåéôïõñãßåò áõôÝò åêôåëïýíôáé áðü Ýíá
ðñüãñáììá ðïõ óõíÞèùò åßíáé áðïèçêåõìÝíï óôçí êýñéá ìíÞìç êáé óôÝëíåôáé
åíôïëÞ ðñïò åíôïëÞ áðü ôïí êåíôñéêü åðåîåñãáóôÞ óôï êáíÜëé üðïõ åêôåëïýíôáé.
Åðéëåêôéêü (selector) ëÝãåôáé ôï êáíÜëé ðïõ ìðïñåß íá åëÝã÷åé ðïëëÝò äåõôå-
ñåýïõóåò óõóêåõÝò, üìùò ðñÝðåé íá åêôåëÝóåé ðëÞñùò ôï ðñüãñáììá ðïõ áöïñÜ
óå ìßá óõóêåõÞ ðñïôïý áñ÷ßóåé íá åêôåëåß ôï ðñüãñáììá ìßáò Üëëçò óõóêåõÞò.
Ôï ðïëõðëåêôéêü êáíÜëé (multiplexor channel) Ý÷åé ôç äõíáôüôçôá íá åêôå-
ëåß ôáõôü÷ñïíá ôá ðñïãñÜììáôá ðïëëþí äåõôåñåõïõóþí óõóêåõþí. ÂÝâáéá óôçí
ðñáãìáôéêüôçôá óå êÜèå ìßá óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ äåäïìÝíá ìåôáöÝñï-
íôáé áðü/ðñïò ìßá ìüíï óõóêåõÞ, äßíåôáé üìùò ç åíôýðùóç üôé äåäïìÝíá áðü
262 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

Äßáõëïò CPU-ìíÞìçò

ÊñõöÞ ìíÞìç
ÐñïóáñìïóôÞò
Êýñéá ìíÞìç
äéáýëùí
CPU

Äßáõëïò E/E

ÅëåãêôÞò E/E ÅëåãêôÞò E/E ÅëåãêôÞò E/E


¤ ¡ ¤ ¡
£ ¢ £ ¢
¸îïäïò
Äßóêïé ãñáöéêþí Äßêôõï
£ ¢ £ ¢

Ó÷Þìá 11.2: Áñ÷éôåêôïíéêÞ õðïëïãéóôéêïý óõóôÞìáôïò.

ðïëëÝò óõóêåõÝò ìåôáöÝñïíôáé ôáõôü÷ñïíá. Óôï Ó÷Þìá 11.2 ðáñïõóéÜæåôáé ç


áñ÷éôåêôïíéêÞ åíüò ôõðéêïý õðïëïãéóôéêïý óõóôÞìáôïò. Ôá öèçíüôåñá óõóôÞ-
ìáôá äéáèÝôïõí ìüíïí Ýíá äéÜäñïìï, üðïõ ìðïñåß íá êõêëïöïñïýí åíôïëÝò ôçò
êåíôñéêÞò ìïíÜäáò åðåîåñãáóßáò áëëÜ êáé åíôïëÝò åéóüäïõ/åîüäïõ.

11.1 Ôýðïé Åããñáöþí


Ôï ìÝãåèïò êÜèå ðåäßïõ ìßáò åããñáöÞò åîáñôÜôáé áðü ôïí ôýðï ôïõ. Ç ãñáöéêÞ
ðáñÜóôáóç ôçò ïñãÜíùóçò ôùí ðåäßùí ìßáò åããñáöÞò ëÝãåôáé ãñáììïãñÜöçóç
(layout). ÅããñáöÝò ìå ßäéá êáé éóïìÞêç ðåäßá áëëÜ äéáöïñåôéêÞ äéÜôáîç äåí
Ý÷ïõí ßäéá ãñáììïãñÜöçóç. Óôï Ó÷Þìá 11.3 ðáñïõóéÜæåôáé ç ãñáììïãñÜöçóç
ôçò åããñáöÞò åíüò õðáëëÞëïõ.

¼íïìá Äéåýèõíóç Êùäéêüò ÔìÞìá Ìéóèüò

30 bytes 40 bytes 4 bytes 3 bytes 4 bytes

Ó÷Þìá 11.3: ÅããñáöÞ ìå óôáèåñü ìÞêïò.

Ïé åããñáöÝò ìßáò ïíôüôçôáò óõíÞèùò Ý÷ïõí ßäéá ìïñöÞ êáé ëÝãïíôáé åããñáöÝò
óôáèåñïý ìÞêïõò (fixed length records). ÊÜôé ôÝôïéï óõìâáßíåé óõíÞèùò óôá ëå-
ãüìåíá ó÷åóéáêÜ ÓÄÂÄ. Óôçí ðåñßðôùóç áõôÞ ï õðïëïãéóìüò ìßáò äéåýèõíóçò ãéá
ôçí åðåîåñãáóßá ôïõ ðåäßïõ ìßáò åããñáöÞò åßíáé åýêïëç õðüèåóç, áöïý ðñáãìá-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 263

ôïðïéåßôáé üðùò êáé êáôÜ ôïí õðïëïãéóìü äéåõèýíóåùí óå ðßíáêåò (arrays).


Ùóôüóï, ìåñéêÝò öïñÝò óôá ó÷åóéáêÜ áëëÜ êáé óôá ëåãüìåíá áíôéêåéìåíï-
óôñåöÞ óõóôÞìáôá åßíáé âÝâáéï üôé ðñïêýðôïõí åããñáöÝò ìåôáâëçôïý ìÞêïõò
(variable length records). ÌåñéêÜ ëåéôïõñãéêÜ óõóôÞìáôá äåí õðïóôçñßæïõí åã-
ãñáöÝò ìåôáâëçôïý ìÞêïõò, áëëÜ ôéò ÷åéñßæïíôáé ùò åããñáöÝò óôáèåñïý ìÞêïõò.
Ôá ðëåïíåêôÞìáôá ôùí óõóôçìÜôùí, ðïõ õðïóôçñßæïõí ôéò åããñáöÝò ìåôáâëçôïý
ìÞêïõò, åßíáé óçìáíôéêüôåñá üôáí:

• õðÜñ÷åé ìåãÜëç áðüêëéóç ôùí ìçêþí ôùí åããñáöþí áðü ôï ìÝóï ìÞêïò
åããñáöÞò,

• ôá áñ÷åßá åßíáé ïãêþäç,

• åßíáé ìåãÜëç ç óõ÷íüôçôá ÷ñÞóçò, êáé ôÝëïò

• ôï õëéêü åßíáé ðïëý áêñéâü.

Ç ìåôáâëçôüôçôá ôïõ ìÞêïõò ôùí åããñáöþí ïöåßëåôáé óôïõò åîÞò ôñåéò ëü-
ãïõò:

• Ðåäßá ìåôáâëçôïý ìÞêïõò (variable length fields). Óôá óõóôÞìáôá ðïõ äåí
õðïóôçñßæïõí åããñáöÝò ìåôáâëçôïý ìÞêïõò, ãéá êÜèå åããñáöÞ äåóìåýåôáé
÷þñïò ßóïò ìå ôï ìÞêïò ôïõ ìåãáëýôåñïõ óôéãìéüôõðïõ ôçò åããñáöÞò. Áðü
ôçí Üëëç ðëåõñÜ, óôá óõóôÞìáôá ðïõ õðïóôçñßæïõí åããñáöÝò ìåôáâëçôïý
ìÞêïõò ãßíåôáé ðñïóðÜèåéá åîïéêïíüìçóçò ÷þñïõ óå ðåäßá, ðïõ ôï ìÞêïò
ôïõò ðïéêßëåé êáôÜ ðïëý. Ôï öáéíüìåíï áõôü óõíáíôÜôáé óõíÞèùò óå ðåäßá
ôýðïõ óõìâïëïóåéñÜò üðùò ïíüìáôá, äéåõèýíóåéò, ðåñéãñáöÝò ê.ë.ð.

• ÅããñáöÝò äéáöïñåôéêÞò ìïñöÞò (variable format records). ÄçëáäÞ, Ýóôù


üôé óå ìßá åôáéñåßá õðÜñ÷ïõí õðÜëëçëïé ðïõ ðëçñþíïíôáé ìå ôçí þñá, ôçí
çìÝñá, ôï ìÞíá Þ êáé ìå ôï êïììÜôé ðáñáãùãÞò. Óôï Ó÷Þìá 11.4 öáßíåôáé
Ýíá ôÝôïéï ðáñÜäåéãìá. ÐïëëÝò öïñÝò åßíáé ðéèáíü äýï åããñáöÝò íá Ý÷ïõí
ôï ßäéï ìÞêïò, áëëÜ íá åßíáé äéáöïñåôéêÞò ìïñöÞò. Ãéá ôçí áðïöõãÞ óõã-
÷ýóåùí, óôéò ðåñéðôþóåéò áõôÝò óßãïõñç ëýóç åßíáé ç ÷ñÞóç åíüò åðéðëÝïí

Ôýðïò=Ù üíïìá äéåýèõíóç ôìÞìá ùñïìßóèéï þñåò

Ôýðïò=Ì üíïìá äéåýèõíóç ôìÞìá ìéóèüò

Ó÷Þìá 11.4: ÅããñáöÝò ìåôáâëçôïý ìÞêïõò.


264 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

ðåäßïõ ðïõ íá äçëþíåé ôç ìïñöÞ ôçò åããñáöÞò. Ãåíéêüôåñá, åßíáé äõíáôüí


Ýíá áñ÷åßï íá ðåñéÝ÷åé åããñáöÝò áðü äýï ðßíáêåò äéáöïñåôéêïý ó÷Þìáôïò.
Óå ìßá ôÝôïéá ðåñßðôùóç åßíáé áíáìåíüìåíï ïé åããñáöÝò íá åßíáé äéáöïñå-
ôéêïý ìÞêïõò. Êáé ðÜëé ç ëýóç âáóßæåôáé óôçí ýðáñîç åíüò åðéðëÝïí ðåäßïõ
ðïõ äçëþíåé óå ðïéü ðßíáêá áíÞêåé ç åããñáöÞ.
• Åðáíáëáìâáíüìåíåò ïìÜäåò ðåäßùí (repeating groups). Ôï öáéíüìåíï
áõôü óõìâáßíåé üôáí Ýíá Þ ðåñéóóüôåñá ÷áñáêôçñéóôéêÜ åðáíáëáìâÜíïíôáé
ðåñéóóüôåñï áðü äýï öïñÝò. Ãéá ðáñÜäåéãìá, ç ïíôüôçôá ÕðÜëëçëïò ìå-
ôáîý ôùí Üëëùí ìðïñåß íá ðåñéÝ÷åé ôá ÷áñáêôçñéóôéêÜ üíïìá ðñïóôáôåõü-
ìåíïõ êáé çìåñïìçíßá ãÝííçóçò ðñïóôáôåõüìåíïõ. Óõíåðþò ç åããñáöÞ åíüò
õðÜëëçëïõ ìå äýï Þ ôñßá ðáéäéÜ èá ðåñéÝ÷åé áíôéóôïß÷ùò äýï Þ ôñßá óôéã-
ìéüôõðá ôùí ÷áñáêôçñéóôéêþí áõôþí. Óôï Ó÷Þìá 11.5 ðáñïõóéÜæåôáé ìßá
ôÝôïéá ðåñßðôùóç. Ùóôüóï, ôá ó÷åóéáêÜ ÓÄÂÄ äåí åðéôñÝðïõí óå ìßá åã-
ãñáöÞ ôçí ýðáñîç åðáíáëáìâáíüìåíùí ïìÜäùí êáé åðéëýïõí ôï ðñüâëçìá
êáôÜ äéáöïñåôéêü ôñüðï (âë. ÊåöÜëáéï 8).

üíïìá çìåñïìçíßá üíïìá


üíïìá êùäéêüò ···
ðñïóôáôåõüìåíïõ ãÝííçóçò ðñïóôáôåõüìåíïõ

Ó÷Þìá 11.5: ÅããñáöÞ ìå åðáíáëáìâáíüìåíåò ïìÜäåò.

Ãéá ôá ó÷åóéáêÜ óõóôÞìáôá éäéáßôåñï åíäéáöÝñïí ðáñïõóéÜæåé ìüíï ç ðñþôç


ðåñßðôùóç ôçò ýðáñîçò ðåäßùí ìåôáâëçôïý ìÞêïõò. ¸ôóé, üôáí Ýíáò ðñïãñáììá-
ôéóôÞò õëïðïéåß ìßá äïìÞ áñ÷åßïõ ðñÝðåé íá åßíáé ðïëý ðñïóåêôéêüò óôï ÷åéñéóìü
ôùí åããñáöþí áõôïý ôïõ åßäïõò, åðåéäÞ áðáéôåßôáé áö’ åíüò åðéðëÝïí ÷þñïò ãéá
ôçí áðïèÞêåõóç äåäïìÝíùí åëÝã÷ïõ êáé áö’ åôÝñïõ ðïëõðëïêüôåñï ëïãéóìéêü.
Ðéï óõãêåêñéìÝíá, ç äéá÷åßñéóç ôÝôïéùí åããñáöþí ìðïñåß íá ãßíåé ìå äýï ôñü-
ðïõò:
• ìå ÷ñÞóç åéäéêþí äéá÷ùñéóôþí (delimiters) Þ óçìáäéþí äéá÷ùñéóìïý (sepa-
rator marker) ìåôáîý ôùí åðéìÝñïõò ðåäßùí, üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá
11.6. Ç ìÝèïäïò áõôÞ áðáéôåß ôç óåéñéáêÞ óÜñùóç ôçò åããñáöÞò ãéá ôïí
åíôïðéóìü ôïõ æçôïýìåíïõ ðåäßïõ.

üíïìá $ äéåýèõíóç $ êùäéêüò $ ôìÞìá $ ìéóèüò

Ó÷Þìá 11.6: ×ñÞóç äéá÷ùñéóôþí óå óåëßäåò.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 265

• ìå ÷ñÞóç åíüò ìéêñïý êáôáëüãïõ óôçí áñ÷Þ ôçò åããñáöÞò, üðïõ ãéá êÜèå
ðåäßï áðïèçêåýåôáé ç áðüóôáóÞ ôïõ (offset) áðü ôçí áñ÷Þ ôçò åããñáöÞò.
Óôï Ó÷Þìá 11.7 ðáñïõóéÜæåôáé Ýíá ôÝôïéï ðáñÜäåéãìá. Ç ðñïóÝããéóç áõôÞ
áðáéôåß åðéðëÝïí ÷þñï óå ó÷Ýóç ìå ôçí ðñþôç ðñïóÝããéóç áëëÜ åßíáé ÷ñï-
íéêÜ áðïôåëåóìáôéêüôåñç ãéáôß äßíåé ôç äõíáôüôçôá Üìåóçò ðñïóðÝëáóçò
êÜèå ðåäßïõ.

üíïìá äéåýèõíóç êùäéêüò ôìÞìá ìéóèüò

¹±§
- ¸- °- ¦
"
-
&% - !

Ó÷Þìá 11.7: ×ñÞóç êáôáëüãïõ óå óåëßäåò.

¸íá ðñüâëçìá ðïõ óõ÷íÜ óõíáíôÜôáé óôéò ÂÜóåéò ÄåäïìÝíùí åßíáé ç ýðáñîç
ðåäßùí ìå ôéìÞ NULL, ìßá ôéìÞ ðïõ äçëþíåé üôé ãéá êÜðïéï óõãêåêñéìÝíï ðåäßï
äåí åßíáé äéáèÝóéìç Þ äåí ìðïñåß íá õðÜñîåé ðñáãìáôéêÞ ôéìÞ. ¸ôóé, óýìöùíá ìå
áõôÞ ôçí ðñïóÝããéóç äåí áðáéôåßôáé ç áðïèÞêåõóç êÜðïéïõ óõãêåêñéìÝíïõ óõì-
âüëïõ ðïõ íá äçëþíåé ôçí ôéìÞ NULL êÜðïéïõ ðåäßïõ, áëëÜ áðëþò ç áðüóôáóç
ôïõ åðüìåíïõ ðåäßïõ èá åßíáé ßóç ìå ôçí áðüóôáóç ôïõ óõãêåêñéìÝíïõ ðåäßïõ.
Ôï êõñéüôåñï ðñüâëçìá ðïõ ìðïñåß íá ðñïêýøåé ëüãù ôçò ýðáñîçò ðåäßùí
ìåôáâëçôïý ìÞêïõò åßíáé ç áýîçóç ôïõ ìåãÝèïõò ôçò åããñáöÞò êáôÜ ôçí åíçìÝ-
ñùóç åíüò ðåäßïõ. ¸íá ôÝôïéï åíäå÷üìåíï ìðïñåß íá ðñïêáëÝóåé:
• ôçí áíÜãêç ôáêôïðïßçóçò ôïõ ðåñéå÷ïìÝíïõ ôçò óåëßäáò ìå ôçí êáôÜëëçëç
ìåôáêßíçóç (shifting) ìåñéêþí åããñáöþí, Þ

• ôçí áíÜãêç áðïèÞêåõóçò ôçò óõãêåêñéìÝíçò åããñáöÞò óå Üëëç óåëßäá ëüãù


áíåðÜñêåéáò ÷þñïõ. Áí üìùò ç åããñáöÞ áõôÞ åßíáé óõíäåäåìÝíç ìå áëõóßäá
áðü êÜðïéá Üëëç åããñáöÞ, ôüôå õðÜñ÷åé êßíäõíïò íá óðÜóåé ç áëõóßäá. Ãéá
ôï ëüãï áõôü, áí ç åããñáöÞ ìåôáêéíçèåß, ôüôå óôç èÝóç ôçò áðïèçêåýåôáé
ç íÝá äéåýèõíóç þóôå íá ìç ÷áèïýí äåäïìÝíá.

11.2 Ôýðïé Óåëßäùí


ÊÜèå óåëßäá Ý÷åé ìßá åðéêåöáëßäá (page header), ðïõ ðåñéÝ÷åé óçìáíôéêÝò ðëçñï-
öïñßåò, üðùò ðëÞèïò áðïèçêåõìÝíùí åããñáöþí óôç óåëßäá, äéåýèõíóç åðüìåíçò
óåëßäáò ôïõ áñ÷åßïõ ê.ë.ð. ÐÝñáí ôçò åðéêåöáëßäáò, ëïéðüí, èá ìðïñïýóáìå íá
öáíôáóèïýìå ìßá óåëßäá óáí Ýíá óýíïëï èÝóåùí (slots) ãéá ôçí áðïèÞêåõóç ôùí
åããñáöþí. ¸ôóé, êÜèå åããñáöÞ ìðïñåß íá ÷áñáêôçñéóèåß áðü ôï óýóôçìá ìå
266 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

Ýíá ìïíáäéêü êùäéêü åããñáöÞò (record identifyer, rid), ðïõ áðïôåëåßôáé áðü ôï
æåýãïò <êùäéêüò óåëßäáò, áñéèìüò èÝóçò> (<page id, slot number>).
Áí ïé åããñáöÝò åßíáé óôáèåñïý ìÞêïõò, ôüôå ï åíôïðéóìüò ôùí åããñáöþí ìÝóá
óôç óåëßäá åßíáé åýêïëïò, êáèþò ìÜëéóôá õðÜñ÷ïõí äýï ðéèáíÝò åðéëïãÝò:

• ïé åããñáöÝò áðïèçêåýïíôáé óôéò ðñþôåò äéáèÝóéìåò èÝóåéò ôçò óåëßäáò,


ïðüôå åßíáé åýêïëïò ï õðïëïãéóìüò ôùí áðïóôÜóåùí (offsets). ¸ôóé, óå
ðåñßðôùóç äéáãñáöÞò ç ôåëåõôáßá åããñáöÞ êáôáëáìâÜíåé ôç èÝóç ôçò äéá-
ãñáöåßóáò. Ùóôüóï, ç ìÝèïäïò äåí åßíáé åöáñìüóéìç áí õðÜñ÷ïõí áëõóß-
äåò åããñáöþí, ãéáôß áí ìßá åããñáöÞ åêôüò ôçò óõãêåêñéìÝíçò óåëßäáò äåß-
÷íåé ðñïò ôç èÝóç ôçò ôåëåõôáßáò åããñáöÞò, ôüôå áõôÞ äåí ìðïñåß íá ìåôá-
êéíçèåß. Ç ïñãÜíùóç áõôÞ ðáñïõóéÜæåôáé óôá áñéóôåñÜ ôïõ Ó÷Þìáôïò 11.8.

n m 101...01
åããñáöÞ 1 åããñáöÞ 1
åããñáöÞ 2
··· åããñáöÞ 3
åããñáöÞ n ···
åëåýèåñïò
÷þñïò åããñáöÞ m

Ó÷Þìá 11.8: ÏñãÜíùóç óåëßäùí ìå åããñáöÝò óôáèåñïý ìÞêïõò.

• Óôá äåîéÜ ôïõ Ó÷Þìáôïò 11.8 ðáñïõóéÜæåôáé ç åíáëëáêôéêÞ ïñãÜíùóç. Óýì-


öùíá ìå ôç ìÝèïäï áõôÞ, óôçí åðéêåöáëßäá ôçò óåëßäáò áðïèçêåýåôáé Ýíáò
äõáäéêüò ðßíáêáò ìå óçìáßåò ðïõ äçëþíïõí áí ìßá èÝóç åßíáé êáôåéëçì-
ìÝíç Þ ü÷é. ¸ôóé, êáôÜ ôçí áíáæÞôçóç åîåôÜæïíôáé ìüíï ïé èÝóåéò ðïõ
áíôéóôïé÷ïýí óå áëçèåßò óçìáßåò, åíþ êáôÜ ôç äéáãñáöÞ ìßáò åããñáöÞò, ç
áíôßóôïé÷ç óçìáßá êáèßóôáôáé øåõäÞò.

Áí ïé åããñáöÝò åßíáé ìåôáâëçôïý ìÞêïõò, ôüôå ïé óåëßäåò äåí ðåñéÝ÷ïõí óôá-


èåñü áñéèìü èÝóåùí. Óå ðåñßðôùóç åéóáãùãÞò, ç íÝá åããñáöÞ èá Ýðñåðå íá
êáôáëÜâåé êÜðïéï êåíü ÷þñï êáôÜëëçëïõ ìåãÝèïõò þóôå íá ìçí á÷ñçóôåõèåß óç-
ìáíôéêü êïììÜôé ôïõ, ðïõ èá óõíå÷ßæåé íá ðáñáìÝíåé êåíü. Åðßóçò, óå ðåñßðôùóç
äéáãñáöÞò èá Ýðñåðå ïé õðüëïéðåò åããñáöÝò íá ìåôáêéíïýíôáé óôç óåëßäá, þóôå
ï êåíüò ÷þñïò íá åßíáé åíïðïéçìÝíïò.
Ç êáëýôåñç ôå÷íéêÞ ãéá ôï óêïðü áõôü åßíáé ç ýðáñîç åíüò ìéêñïý êáôá-
ëüãïõ èÝóåùí (directory of slots), Þ ðßíáêá ôïðïèÝôçóçò (position table) óôçí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 267

åðéêåöáëßäá ôçò óåëßäáò, ï ïðïßïò ðáñÝ÷åé üëåò ôéò ó÷åôéêÝò ðëçñïöïñßåò. ¸ôóé,
ï êáôÜëïãïò áõôüò ðåñéÝ÷åé ãéá êÜèå åããñáöÞ ôï æåýãïò <áðüóôáóç åããñáöÞò,
ìÞêïò åããñáöÞò> (<record offset, record length>). ÅðéðëÝïí, õðÜñ÷åé Ýíáò äåß-
êôçò ðñïò ôçí áñ÷Þ ôçò óåëßäáò áðü üðïõ áñ÷ßæåé ç ðåñéï÷Þ áðïèÞêåõóçò ôùí
åããñáöþí, êáèþò êáé Ýíáò äåßêôçò ðñïò ôçí áñ÷Þ ôçò åíïðïéçìÝíçò ðåñéï÷Þò ðïõ
åßíáé åëåýèåñç êáé äéáèÝóéìç ãéá áðïèÞêåõóç íÝùí åããñáöþí.
O êáôÜëïãïò áõôüò åîõðçñåôåß ôéò ðñïçãïýìåíåò ðñïäéáãñáöÝò áëëÜ èá
Ýðñåðå íá óçìåéùèåß üôé óå ðåñßðôùóç äéáãñáöÞò äåí ìðïñåß íá ãßíåé ôáêôï-
ðïßçóç ôïõ ßäéïõ ôïõ êáôáëüãïõ ìå åëåõèÝñùóç ôçò áíôßóôïé÷çò èÝóçò. Ùóôüóï ç
èÝóç áõôÞ óôïí êáôÜëïãï ìðïñåß íá áðïäïèåß ðñïò ÷ñÞóç óå åðüìåíç åéóáãùãÞ
åããñáöÞò. ¸ôóé ìßá êáéíïýñãéá èÝóç äçìéïõñãåßôáé óôïí êáôÜëïãï ìüíï áí üëåò
ïé õðÜñ÷ïõóåò èÝóåéò äåß÷íïõí óå ðñáãìáôéêÝò åããñáöÝò.
Óýìöùíá ìå ìßá áðëÞ ðáñáëëáãÞ ôçò ôå÷íéêÞò áõôÞò, ï êáôÜëïãïò äåí ðåñéÝ-
÷åé æåýãç <áðüóôáóç åããñáöÞò, ìÞêïò åããñáöÞò> áëëÜ ìüíï ôçí <áðüóôáóç
åããñáöÞò>, åíþ ç Ýíäåéîç ìÞêïõò (length indicator) ôïðïèåôåßôáé óôçí áñ÷Þ ôçò
áíôßóôïé÷çò åããñáöÞò. ¸ôóé, óå ðåñßðôùóç áíáæÞôçóçò äéåõêïëýíåôáé ç õðÝñ-
âáóç ìßáò åããñáöÞò.

11.3 Ïìáäïðïßçóç Åããñáöþí


Ãéá ôçí áíÜëõóç ôïõ êåöáëáßïõ áõôïý õðïôßèåôáé üôé ôï ìÝóï áðïèÞêåõóçò åßíáé
ï ìáãíçôéêüò äßóêïò, áëëÜ ç áíÜëõóç áõôÞ éó÷ýåé åí ìÝñåé êáé ãéá ôçí ðåñßðôùóç
ôùí ìáãíçôéêþí ôáéíéþí. Ãéá ôï ÷ñÞóôç, ëïéðüí, ç åããñáöÞ åßíáé ç åëÜ÷éóôç ëïãéêÞ
ìïíÜäá äéáêßíçóçò ôçò ðëçñïöïñßáò. Ùóôüóï üðùò áíáöÝñèçêå, ãéá ôï óýóôçìá
ç óåëßäá åßíáé ôï åëÜ÷éóôï öõóéêü ðïóü äåäïìÝíùí ðïõ ìåôáöÝñåôáé ìåôáîý ôïõ
äßóêïõ êáé ôçò êýñéáò ìíÞìçò. Ùò ðáñÜãïíôáò ïìáäïðïßçóçò (blocking factor,
Bf r) ïñßæåôáé ôï ðëÞèïò ôùí åããñáöþí ðïõ ÷ùñïýí óå ìßá óåëßäá. Áí õðïôåèåß
üôé ôï ìÝãåèïò ôçò åðéêåöáëßäáò ôçò óåëßäáò åßíáé áìåëçôÝïò êáé üôé ïé åããñáöÝò
åßíáé óôáèåñïý ìÞêïõò, ôüôå ï ðáñÜãïíôáò ïìáäïðïßçóçò éóïýôáé ìå:
¹ º
B
Bf r =
R
üðïõ åßíáé ôï ìÝãåèïò ôçò óåëßäáò, R åßíáé ôï ìÝãåèïò ôçò åããñáöÞò, åíþ B−f r×
R åßíáé ï êåíüò ÷þñïò ðïõ ðáñáìÝíåé óôï ôÝëïò ôçò óåëßäáò. Áí ïé åããñáöÝò åßíáé
ìåôáâëçôïý ìÞêïõò, ôüôå ç ìåôáâëçôÞ R óõìâïëßæåé ôï ìÝóï ìÞêïò ôùí åããñáöþí.
ÐñïóåããéóôéêÜ ãßíåôáé ðáñáäåêôü üôé ï ìÝóïò êåíüò ÷þñïò éóïýôáé ìå ôï ìéóü ôçò
ìÝóçò åããñáöÞò, R/2, ïðüôå ï ðáñÜãïíôáò ïìáäïðïßçóçò äßíåôáé áðü ôç ó÷Ýóç:
B − R/2
Bf r =
R
268 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

Áí n åßíáé ôï ðëÞèïò ôùí åããñáöþí, ôüôå ôï ðëÞèïò ôùí óåëßäùí ôïõ áñ÷åßïõ
åßíáé: » ¼
n
b =
Bf r
Áí ïé êåöáëÝò åßíáé ôïðïèåôçìÝíåò óôçí áñ÷Þ ôçò óåëßäáò, ôüôå ï ÷ñüíïò ìåôá-
öïñÜò ôçò óåëßäáò éóïýôáé ìå:
B
btt =
t
üðïõ t åßíáé ôá÷ýôçôá äéáêßíçóçò ôùí äåäïìÝíùí ìåôáîý äßóêïõ êáé ìíÞìçò êáé ìå-
ôñÜôáé ìå bytes/ms. Áí ðÜëé áíôß ôçò åããñáöÞò èåùñçèåß ìßá ïëüêëçñç Üôñáêôïò
÷ùñçôéêüôçôáò T , ôüôå ç ðïóüôçôá áõôÞ ìåôáöÝñåôáé óå ìßá ðëÞñç ðåñéóôñïöÞ 2r
(üðïõ r åßíáé ç ìÝóïò ÷ñüíïò ðåñéóôñïöÞò). ¸ôóé ðñïêýðôåé ç éóïäýíáìç ó÷Ýóç:

T
btt =
2r
¼ðùò ç ìáãíçôéêÞ ôáéíßá åßíáé ïñãáíùìÝíç óå öõóéêÝò åããñáöÝò ìå êåíÜ
ìåôáîý ôïõò, Ýôóé êáé óôï ìáãíçôéêü äßóêï áðáéôåßôáé êÜðïéá ïñãÜíùóç ìå óêïðü
ôï óõã÷ñïíéóìü êáôÜ ôç ëåéôïõñãßá ôïõ êáé åðïìÝíùò ôç ìåßùóç ôïõ ëáíèÜíïíôá
ðåñéóôñïöéêïý ÷ñüíïõ. Äýï ôñüðïé ãéá ôçí ïñãÜíùóç åíüò äßóêïõ óõíáíôþíôáé
óôçí ðñÜîç:

• ç ýðáñîç ôùí êåíþí ìåôáîý ôùí óåëßäùí, êáé

• ç ÷ñÞóç ôçò ôå÷íéêÞò ôçò ðáñåìâïëÞò (interleaving) ðïõ åðéôõã÷Üíåé êáëý-


ôåñïõò ÷ñüíïõò ðñïóðÝëáóçò áëëÜ åßíáé ó÷åôéêÜ ðåñßðëïêç.

Ç ôå÷íéêÞ ôçò ðáñåìâïëÞò åßíáé áíáãêáßá åðåéäÞ ï åëåãêôÞò ôïõ äßóêïõ áðáéôåß
êÜðïéï ÷ñüíï åðåîåñãáóßáò ôùí äåäïìÝíùí ðïõ äÝ÷åôáé áðü ôï äßóêï, ðñïôïý
ìðïñÝóåé íá äå÷èåß Üëëá äåäïìÝíá. ¸ôóé áí ç ëïãéêÜ åðüìåíç óåëßäá ôïðïèåôïý-
íôáí óôïí åðüìåíï öõóéêÜ ôïìÝá, ôüôå èá Ýðñåðå íá ãßíåé ìßá ðëÞñçò ðåñéóôñïöÞ
ôïõ äßóêïõ þóôå íá åíôïðéóèåß ç áñ÷Þ ôçò åðüìåíçò óåëßäáò.

Öõóéêüò ôïìÝáò 1 2 3 4 5 6 7 8 9 10
Ëïãéêüò ôïìÝáò 1 8 5 2 9 6 3 10 7 4

Ó÷Þìá 11.9: Ôå÷íéêÞ ôçò ðáñåìâïëÞò.

Ôï ðáñÜäåéãìá ôïõ Ó÷Þìáôïò 11.9 áíáöÝñåôáé óôçí ôå÷íéêÞ ôçò ðáñåìâïëÞò.


¸óôù üôé 10 óåëßäåò åíüò áñ÷åßïõ ðñÝðåé íá áðïèçêåõèïýí óôïõò 10 ôïìåßò ìßáò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 269

áôñÜêôïõ. Åðßóçò, áò õðïôåèåß üôé ï åëåãêôÞò áðáéôåß äéðëÜóéï ÷ñüíï áðü ôï


÷ñüíï ðïõ áðáéôåßôáé ãéá ôçí ðñïóðÝëáóç ôïõ åðüìåíïõ ôïìÝá. ¢ñá, üôáí èá ôå-
ëåéþóåé ç åðåîåñãáóßá ôçò öõóéêÞò åããñáöÞò R1 ðïõ åßíáé áðïèçêåõìÝíç óôïí
ôïìÝá S1, ç êåöáëÞ èá âñßóêåôáé åðÜíù áðü ôïí ôïìÝá S4 üðïõ èá ðñÝðåé íá
åßíáé áðïèçêåõìÝíç ç äåýôåñç öõóéêÞ åããñáöÞ R2. Åßíáé áíôéëçðôü üôé ìå ôçí ôå-
÷íéêÞ áõôÞ ìçäåíßæåôáé ç åðéâÜñõíóç ôïõ ÷ñüíïõ ðåñéóôñïöÞò. Óôï óõãêåêñéìÝíï
ðáñÜäåéãìá áñêïýí ôñåéò ðåñéóôñïöÝò ãéá ôçí áíÜãíùóç üëùí ôùí ôïìÝùí ôçò
áôñÜêôïõ, åíþ èá ÷ñåéáæüôáí äÝêá ðåñéóôñïöÝò áí äåí ÷ñçóéìïðïéïýíôáí ç ôå-
÷íéêÞ áõôÞ. Ôá ôåëåõôáßá ÷ñüíéá ïé ôá÷ýôçôåò ôùí åëåãêôþí Ý÷ïõí âåëôéùèåß óçìá-
íôéêÜ. ¸ôóé áíáöÝñåôáé áðü ôïõò êáôáóêåõáóôÝò äßóêùí üôé ï ëüãïò ðáñåìâïëÞò
åßíáé 1:1, ðïõ óçìáßíåé üôé ç ëïãéêÞ óåéñÜ ôùí ôïìÝùí ôáõôßæåôáé ìå ôç öõóéêÞ
óåéñÜ ôïõò.
Ç óõíÝ÷åéá ôçò áíÜëõóçò áíáöÝñåôáé óå äßóêïõò ðïõ åßíáé öïñìáñéóìÝíïé ìå
ôç ìÝèïäï ôùí êåíþí. ÅðåéäÞ óõ÷íÜ ç áíÜãíùóç áöïñÜ óôçí ðñïóðÝëáóç ðïë-
ëþí (äéáäï÷éêþí Þ ìç) óåëßäùí áðü öïñìáñéóìÝíï äßóêï, åêôüò áðü ôç ìåôáâëçôÞ
btt èåùñåßôáé ìßá êáéíïýñéá ìåôáâëçôÞ, ç ìåôáâëçôÞ ebt, ðïõ ïíïìÜæåôáé ðñáã-
ìáôéêüò ÷ñüíïò ìåôáöïñÜò óåëßäáò (effective block transfer time) êáé éóïýôáé
ìå:
B
ebt = 0
t
0
üðïõ t åßíáé ç ôá÷ýôçôá äéáêßíçóçò äåäïìÝíùí áðü öïñìáñéóìÝíï äßóêï óôç
ìíÞìç êáé ìåôñÜôáé åðßóçò ìå bytes/ms. Óôïí Ðßíáêá 11.1 äßíåôáé ìßá ëßóôá
ôùí êõñéüôåñùí ðáñáìÝôñùí êáé ôùí áíôßóôïé÷ùí ôéìþí ôïõò óå ìßá óõóêåõÞ
ÉÂÌ 3380. ÁõôÜ ôá óôïé÷åßá èá ÷ñçóéìïðïéçèïýí êáô’ åðáíÜëçøç óôá åðüìåíá
êåöÜëáéá êáé óôéò áóêÞóåéò.
Ïñéóìüò - ÐáñÜìåôñïò ÔéìÞ
ÌÝãåèïò óåëßäáò, 2400 bytes
×ñüíïò ìåôáöïñÜò óåëßäáò, btt 0,8 ms
Óåëßäåò áíÜ êýëéíäñï, C 600
Ðñáãìáôéêüò ÷ñüíïò ìåôáöïñÜò óåëßäáò, ebt 0,84 ms
Áñéèìüò êõëßíäñùí, N 885
ÌÝóïò ÷ñüíïò ðåñéóôñïöÞò, r 8,3 ms
ÌÝóïò ÷ñüíïò áíáæÞôçóçò, s 16 ms
Ôá÷ýôçôá áíÜãíùóçò óå äßóêï, t 3000 bytes/ms
Ôá÷ýôçôá áíÜãíùóçò óå öïñìáñéóìÝíï äßóêï, t0 2857 bytes/ms

Ðßíáêáò 11.1: ÔéìÝò ðáñáìÝôñùí ãéá ôç óõóêåõÞ ÉÂÌ 3380.

Áí, ëïéðüí, Ýíá áñ÷åßï êáôáëáìâÜíåé b óåëßäåò, ôüôå ç óåéñéáêÞ áíÜãíùóç


270 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

ôïõ áñ÷åßïõ áðáéôåß ÷ñüíï:


b × ebt
åíþ ç ôõ÷áßá áíÜãíùóç üëùí ôùí óåëßäùí áðáéôåß ÷ñüíï:
b × (s + r + ebt)
üðïõ s åßíáé ï ìÝóïò ÷ñüíïò áíáæÞôçóçò óå ms, r åßíáé ï ìÝóïò ÷ñüíïò ðå-
ñéóôñïöÞò óå ms. ÂÝâáéá èåùñåßôáé áìåëçôÝï ôï ìÝãåèïò ôçò åðéêåöáëßäáò
(header) Þ óåëßäáò åëÝã÷ïõ (control block) ôïõ áñ÷åßïõ êáé õðïôßèåôáé üôé ïé
åããñáöÝò Ý÷ïõí óôáèåñü ìÞêïò. Áðü ôéò ó÷Ýóåéò áõôÝò öáßíåôáé üôé áí õðÜñ÷åé
ìåãÜëï ðïóïóôü êåíïý ÷þñïõ, ôüôå ç óåéñéáêÞ áíÜãíùóç åðéâñáäýíåôáé.

11.4 Äéá÷åßñéóç ×þñïõ Äßóêïõ


Ï äéá÷åéñéóôÞò ôïõ ÷þñïõ ôïõ äßóêïõ åßíáé ôï ðëçóéÝóôåñï ôìÞìá åíüò ÓÄÂÄ
ðñïò ôï õëéêü. Ï äéá÷åéñéóôÞò äßíåé åíôïëÝò ðñïò ôï äßóêï ãéá íá äåóìåýóåé Þ
íá áðïäåóìåýóåé ìßá óåëßäá, üðùò êáé ãéá íá áíáãíùóèåß Þ íá áðïèçêåõèåß ìßá
óåëßäá. Óõ÷íÜ åßíáé ÷ñÞóéìï Ýíá óýíïëï óåëßäùí ôïõ áñ÷åßïõ íá áðïèçêåõèåß
óå äéáäï÷éêÝò áôñÜêôïõò ôïõ äßóêïõ, þóôå ç óåéñéáêÞ áíÜêôçóç ôïõò íá ãßíåôáé
áðïôåëåóìáôéêÜ. Ôï ðëÞèïò ôùí óåëßäùí ðïõ ìðïñïýí íá ðñïóðåëáóèïýí êáô’
áõôüí ôïí ôñüðï ðåñéïñßæåôáé áðü ôï ìÝãåèïò ôçò áðïìïíùôéêÞò ìíÞìçò (ç ÷ñÞóç
ôçò ïðïßáò èá áíáëõèåß óõíÝ÷åéá), êáé áðïôåëåß ôï ëåãüìåíï êÜäï (bucket) ðïõ
åßíáé ç ëïãéêÞ ìïíÜäá ðñïóðÝëáóçò óôï äßóêï. Áí êáé ôá óôïé÷åßá äåí åßíáé
ðñüóöáôá, áîßæåé íá áíáöåñèåß üôé óôï ìïíôÝëï EDS8 ôçò ICL ôï ëåéôïõñãéêü
óýóôçìá äéá÷åéñéæüôáí êÜäïõò ôçò 1 óåëßäáò, ôùí 2, ôùí 4 Þ ôùí 8 óåëßäùí,
åíþ óôá óõóôÞìáôá Vax ôï ìÝãåèïò ôïõ êÜäïõ ìðïñïýóå íá êáèïñéóèåß áðü 1
ìÝ÷ñé 65.535 óåëßäåò ôùí 512 bytes, ìå ðñïôåéíüìåíç default ôéìÞ ôïõò 3 ôïìåßò.
Ðáñüìïéåò ôå÷íéêÝò óõíáíôþíôáé êáé óôá óçìåñéíÜ óõóôÞìáôá, üðïõ óõíÞèùò ôï
ìÝãåèïò ôùí êÜäùí åßíáé 8 óåëßäåò ôùí 512 bytes.
Ç åêëïãÞ ôïõ êáôÜëëçëïõ ìåãÝèïõò êÜäïõ ìå óêïðü ôç âåëôéóôïðïßçóç ôçò
÷ñÞóçò ôïõ ÷þñïõ åßíáé õðüèåóç ôïõ äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò êáé äåí õðï-
ëïãßæåôáé äýóêïëá. Áò õðïôåèåß üôé ôï ìÝãåèïò ôçò åããñáöÞò åßíáé 160 bytes, åíþ
ôï ìÝãåèïò ôçò óåëßäáò åßíáé 256 bytes. Ïé åðéëïãÝò åßíáé ïé åîÞò äýï: ðñþôïí,
ïé åããñáöÝò íá ìðïñïýí íá áðïèçêåýïíôáé åí ìÝñåé óå äýï óåëßäåò ìå áõîçìÝíï
êüóôïò ðñïóðÝëáóçò, êáé äåýôåñïí, êÜèå åããñáöÞ íá áðïèçêåýåôáé óå ìßá ìüíï
óåëßäá ìå êüóôïò ôéò áõîçìÝíåò áðáéôÞóåéò óå ÷þñï ëüãù ôçò ýðáñîçò êåíïý ÷þ-
ñïõ óôï ôÝëïò ôçò óåëßäáò, öáéíüìåíï ðïõ ïíïìÜæåôáé åóùôåñéêÞ ôìçìáôïðïßçóç
(internal fragmentation).
Óôïí Ðßíáêá 11.2 äßíåôáé ôï ðïóïóôü ÷ñçóéìïðïßçóçò ÷þñïõ, êáèþò ï ðáñÜ-
ãïíôáò ïìáäïðïßçóçò áõîÜíåé áðü 1 ùò 8. Ðáñáôçñåßôáé üôé ôï ðïóïóôü áõôü
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 271

ÐáñÜãïíôáò ÌÝãåèïò Óåëßäåò/ ÌÝãåèïò Ðïóïóôü


ïìáäïðïßçóçò åããñáöþí êÜäï êÜäïõ ÷ñÞóçò
1 160 1 256 63%
2 320 2 512 63%
3 480 2 512 94%
4 640 3 768 83%
5 800 4 1024 78%
6 960 4 1024 94%
7 1120 5 1280 88%
8 1280 5 1280 100%

Ðßíáêáò 11.2: Áíôéóôïé÷ßá ìåãåèþí åããñáöÞò êáé ôïìÝá.

êõìáßíåôáé áðü 63% ùò 100%, ðïõ ðñïöáíþò åßíáé ç êáëýôåñç ëýóç. Óôï Ó÷Þìá
11.10 öáßíåôáé ç áíôéóôïé÷ßá ôïõ ìåãÝèïõò ôçò åããñáöÞò ðñïò ôï ìÝãåèïò ôïõ
ôïìÝá ãéá ðáñÜãïíôá ïìáäïðïßçóçò 8.

ÔïìÝáò ÔïìÝáò ÔïìÝáò ÔïìÝáò ÔïìÝáò


ÅããñáöÞ ÅããñáöÞ ÅããñáöÞ ÅããñáöÞ ÅããñáöÞ ÅããñáöÞ ÅããñáöÞ ÅããñáöÞ

Ó÷Þìá 11.10: Áíôéóôïé÷ßá ìåãåèþí åããñáöÞò êáé ôïìÝá.

Ôï ðïóïóôü ÷ñçóéìïðïßçóçò ôïõ ÷þñïõ äßíåôáé áðü ôç ó÷Ýóç:


R × Bf r
U =
S × P pb
üðïõ P pb åßíáé ôï ðëÞèïò ôùí óåëßäùí áíÜ êÜäï:
¹ º
R × Bf r
P pb =
S
åíþ S åßíáé ôï ìÝãåèïò ôïõ ôïìÝá óå bytes.
Áí ç êëÞóç èåùñçèåß üôé ãßíåôáé ìå âÜóç ôïí êÜäï, ôüôå ï ÷ñüíïò óåéñéáêÞò
áíÜãíùóçò åíüò áñ÷åßïõ éóïýôáé ìå:

bk × dtt

üðïõ b åßíáé ôï ðëÞèïò ôùí êÜäùí ôïõ áñ÷åßïõ êáé dtt åßíáé ï ÷ñüíïò ìåôáöïñÜò
äåäïìÝíùí (data transfer data) åíüò êÜäïõ, åíþ ï ÷ñüíïò ôõ÷áßáò áíÜãíùóçò ôïõ
áñ÷åßïõ åßíáé:
bk × (s + r + dtt)
272 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

Áðü ôéò ðñïçãïýìåíåò ó÷Ýóåéò óõíÜãåôáé üôé ç áëëáãÞ ôïõ ìåãÝèïõò ôïõ êÜ-
äïõ äåí åðéäñÜ êáèüëïõ óôçí ôá÷ýôçôá ôçò óåéñéáêÞò áíÜãíùóçò. ÁíôéèÝôùò, ç
áýîçóç ôïõ ìåãÝèïõò ôïõ êÜäïõ áõîÜíåé ôçí ôá÷ýôçôá ôçò ôõ÷áßáò ðñïóðÝëáóçò
ôïõ áñ÷åßïõ ìå âÜóç ôïí êÜäïõ, åíþ ìåéþíåé ôçí ôá÷ýôçôá áí ç ôõ÷áßá ðñïóðÝ-
ëáóç ãßíåôáé ìå âÜóç ôçí åããñáöÞ. Áí ç êëÞóç ãßíåôáé ìå âÜóç ôéò åããñáöÝò,
ôüôå ï áíôßóôïé÷ïò ôýðïò åßíáé:

n × (s + r + dtt)

ÄçëáäÞ, ãéá ôçí ðñïóðÝëáóç ìßáò åããñáöÞò ðñÝðåé íá ìåôáöåñèåß óôçí êýñéá
ìíÞìç Ýíáò ïëüêëçñïò êÜäïò áíôß ìßáò Þ äýï óåëßäùí, üðïõ ðéèáíþò ìðïñåß
íá åßíáé áðïèçêåõìÝíç ç åããñáöÞ. ¸ôóé ðñïêýðôåé üôé áí ç åðåîåñãáóßá ôïõ
áñ÷åßïõ ãßíåôáé êõñßùò êáôÜ ôõ÷áßï ôñüðï, ôüôå äåí óõìöÝñåé íá ïìáäïðïéïýíôáé
ðïëëÝò óåëßäåò óå Ýíáí êÜäï. Óõíåðþò, ôåëéêÜ, ç åêëïãÞ ôïõ êáôÜëëçëïõ ðëÞèïõò
óåëßäùí áíÜ êÜäï åßíáé Ýíá ðïëõäéÜóôáôï ðñüâëçìá.
Êáô’ åîáßñåóç üìùò ðñïò üóá áíáöÝñèçêáí ðñïçãïõìÝíùò õðÜñ÷ïõí ìåñéêÝò
ðåñéðôþóåéò, üðïõ äåí åêôåëïýíôáé ôÝôïéïõ åßäïõò âåëôéóôïðïéÞóåéò. Ç ôå÷íéêÞ
áõôÞ äåí êÜíåé âåëôéóôïðïßçóç ÷þñïõ áëëÜ äéåõêïëýíåé óçìáíôéêÜ ôéò åéóáãùãÝò
êáé ôéò áíáíåþóåéò ôùí åããñáöþí. Óå Üëëá óõóôÞìáôá åðéôñÝðåôáé ìßá åããñáöÞ
íá áðïèçêåõèåß êáôÜ Ýíá ìÝñïò óå Ýíá êÜäï êáé êáôÜ ôï õðüëïéðï óå Üëëïí.
¸ôóé ôï ðïóïóôü ÷ñçóéìïðïßçóçò ôïõ ÷þñïõ åßíáé 100%, ùóôüóï áðáéôåßôáé ìßá
ðëÝïí ðñï÷ùñçìÝíç ìÝèïäïò äéá÷åßñéóçò ôçò áðïìïíùôéêÞò ìíÞìçò.
Áí êáé óõíÞèùò áñ÷éêÜ Ýíá áñ÷åßï êáôáëáìâÜíåé óõíå÷üìåíåò èÝóåéò óôï
äßóêï, ôï ðéèáíüôåñï åßíáé üôé ëüãù åéóáãùãþí êáé äéáãñáöþí ïé óåëßäåò ôïõ
áñ÷åßïõ èá äéáóðáñèïýí óôéò åðéöÜíåéåò ôïõ äßóêïõ, åíþ âÝâáéá ôï ßäéï óõìâáßíåé
êáé ãéá ôïí åëåýèåñï ÷þñï ðïõ ðáýåé íá åßíáé åíéáßïò áëëÜ äéáóêïñðßæåôáé óå
ìéêñÜ áðïìáêñõóìÝíá ôìÞìáôá. Ìßá áêüìç õðåõèõíüôçôá ôïõ äéá÷åéñéóôÞ åßíáé
íá ãíùñßæåé ðïéÝò óåëßäåò åßíáé êáôåéëçììÝíåò êáé ðïéåò åëåýèåñåò. Ãéá ôï óêïðü
áõôü ìðïñïýí íá ÷ñçóéìïðïéçèïýí äýï ôå÷íéêÝò:
• ìå ÷ñÞóç ìßá ëßóôáò ãéá ôéò äéåõèýíóåéò ôùí åëåýèåñùí óåëßäùí, üðùò ãß-
íåôáé ìå ôç óõëëïãÞ óêïõðéäéþí (garbage collection) áðü Ýíá ëåéôïõñãéêü
óýóôçìá, Þ
• ìå ÷ñÞóç åíüò äõáäéêïý ðßíáêá, üðïõ ôá 1 êáé 0 áíôéóôïé÷ïýí óôéò êáôåé-
ëçììÝíåò êáé óôéò åëåýèåñåò óåëßäåò, áíôéóôïß÷ùò.
¸ôóé ðáñ’ üôé ìðïñåß íá õðÜñ÷åé óõíïëéêÜ åëåýèåñïò ÷þñïò, åíôïýôïéò áõôüò ï
÷þñïò ìðïñåß íá ìçí åßíáé ðñáêôéêÜ åêìåôáëëåýóéìïò, üðùò ãéá ðáñÜäåéãìá ãéá
ôï Üíïéãìá åíüò êáéíïýñãéïõ áñ÷åßïõ. ÁõôÞ ç äéáäéêáóßá êáëåßôáé ôìçìáôïðïß-
çóç (fragmentation) ôïõ äßóêïõ. Ãéá ôï óêïðü áõôü ôá áñ÷åßá äéáéñïýíôáé óå
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 273

åêôÜóåéò (extents), ðÝñá áðü ôçí õðïäéáßñåóç ôïõò óå êÜäïõò, óåëßäåò, åããñáöÝò
êáé ðåäßá. ¸êôáóç åßíáé Ýíá ôìÞìá ôïõ áñ÷åßïõ, ôï ïðïßï êáôáëáìâÜíåé êáô’
áðïêëåéóôéêüôçôá Ýíá óõãêåêñéìÝíï ìÝñïò ôïõ äßóêïõ. ÓõíÞèùò ïé åêôÜóåéò åß-
íáé éóïìåãÝèåéò êáé ðïéêßëïõí óå ðëÞèïò áðü ìßá ìÝ÷ñé ìåñéêÝò äåêÜäåò. Áí êáé
ç äéá÷åßñéóç ôùí åêôÜóåùí áö’ åáõôÞò åßíáé Ýíá åðéðëÝïí ðñüâëçìá, åíôïýôïéò
ìå ôïí ôåìá÷éóìü ôùí áñ÷åßùí óå åêôÜóåéò åßíáé äõíáôü íá ãßíåé êáëýôåñç ÷ñÞóç
ôïõ äßóêïõ êáé ãéá äýï áêüìç ëüãïõò:
• Óýìöùíá ìå ôéò ôåëåõôáßåò åîåëßîåéò öÝñåôáé üôé åßíáé ðïëý áðïôåëåóìáôéêü
áðü Üðïøç ðáñáëëçëéóìïý ôá ìåãÜëá áñ÷åßá íá åðéìåñßæïíôáé óå åêôÜóåéò
ðïõ áðïèçêåýïíôáé óå äéáöïñåôéêïýò äßóêïõò. ÌÜëéóôá ìåñéêÝò öïñÝò
êÜôé ôÝôïéï ãßíåôáé êáé ãéá áñ÷åßá ìåóáßïõ ìåãÝèïõò. Ç êáôáíïìÞ áõôÞ ôïõ
áñ÷åßïõ ëÝãåôáé æåýîç Þ óýíäåóç (spanning).
• Ìßá åéóáãüìåíç åããñáöÞ ìðïñåß íá ìç ÷ùñÜ óå êÜðïéá Ýêôáóç (ðéèáíü-
ôåñá ôçí ôåëåõôáßá). Ôüôå áõôüìáôá ôï óýóôçìá ðáñá÷ùñåß óôï áñ÷åßï ìßá
åðéðëÝïí Ýêôáóç ìå ôñüðï áäéáöáíÞ ãéá ôï ÷ñÞóôç. Áêüìç, ôï óýóôçìá
ìðïñåß ìßá Üäåéá Ýêôáóç íá ôç äéáèÝóåé óå êÜðïéï Üëëï áñ÷åßï.

11.5 Äéá÷åßñéóç ÁðïìïíùôéêÞò ÌíÞìçò


Ôï ìÝãåèïò ôçò êýñéáò ìíÞìçò óôá óýã÷ñïíá õðïëïãéóôéêÜ óõóôÞìáôá åßíáé êáôÜ
ðïëý ìåãáëýôåñï óå ó÷Ýóç ìå ôï ðáñåëèüí. ¸íá óýã÷ñïíï PC äéáèÝôåé ôïõëÜ-
÷éóôïí 512 MBytes êýñéáò ìíÞìçò, åðéôñÝðïíôáò ôçí áðïèÞêåõóç ðåñéóóüôåñùí
äåäïìÝíùí óôçí êýñéá ìíÞìç. Óôçí éäáíéêÞ ðåñßðôùóç üëá ôá äåäïìÝíá ðñÝðåé íá
âñßóêïíôáé óôçí êýñéá ìíÞìç, þóôå íá Ý÷ïõìå ôçí ôá÷ýôåñç äõíáôÞ ðñïóðÝëáóç.
Ùóôüóï, êÜôé ôÝôïéï åßíáé áíÝöéêôï äéüôé ïé óýã÷ñïíåò åöáñìïãÝò áðáéôïýí ôç
äéá÷åßñéóç üëï êáé ðåñéóóüôåñùí äåäïìÝíùí ìå áðïôÝëåóìá ç ÷ñÞóç äåõôåñåýïõ-
óáò Þ áêüìç êáé ôñéôåýïõóáò ìíÞìçò íá åßíáé áðáñáßôçôç ãéá ôïõò åîõðçñÝôåò
ðïõ õðïóôçñßæïõí ÓÄÂÄ. ÅðéðëÝïí, ç áðïèÞêåõóç üëùí ôùí äåäïìÝíùí óôçí
êýñéá ìíÞìç äçìéïõñãåß óðáôÜëç ÷þñïõ, äéüôé óõíÞèùò ìüíï Ýíá ìéêñü ôìÞìá
ôùí áðïèçêåõìÝíùí äåäïìÝíùí áðáéôåßôáé êÜèå öïñÜ. ËáìâÜíïíôáò õð’ üøç ôç
ìåãÜëç äéáöïñÜ ðïõ õðÜñ÷åé óôï ÷ñüíï ðñïóðÝëáóçò ìåôáîý êýñéáò êáé äåõôå-
ñåýïõóáò ìíÞìçò, ï ôñüðïò ðñïóðÝëáóçò ôùí äåäïìÝíùí åßíáé ðïëý óçìáíôéêüò
ãéá ôç óõíïëéêÞ áðüäïóç ôïõ óõóôÞìáôïò.
Ï óêïðüò ôùí áðïìïíùôéêþí ìíçìþí (buffer memories) åßíáé ç ïìáëïðïßçóç
ôçò ñïÞò ôùí äåäïìÝíùí ìåôáîý ôçò ãñÞãïñçò êýñéáò êáé äåõôåñåýïõóáò ìíÞìçò,
êáé ãåíéêÜ äéáêñßíïíôáé óå äýï ôýðïõò:
• ôéò õëéêÝò (hardware buffers), ðïõ ÷ñçóéìïðïéïýíôáé åõñýôáôá ãéá ôç äéá-
÷åßñéóç ôùí éäéáßôåñá áñãþí ðåñéöåñåéáêþí óõóêåõþí, êáé
274 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

• ôéò ëïãéóìéêÝò (software buffers), ðïõ åßíáé ôìÞìáôá ôçò êýñéáò ìíÞìçò.

Ïé õëéêÝò ìíÞìåò óôï ðáñåëèüí ÷ñçóéìïðïéïýíôáí óôéò áíáãíùóôéêÝò ìïíÜäåò


÷áñôïôáéíéþí êáé êáñôþí, åíþ ôï ßäéï óõìâáßíåé óôïõò óýã÷ñïíïõò åêôõðùôÝò,
üðïõ ç ìíÞìç áõôÞ âñßóêåôáé óôïí åëåãêôÞ ôïõò. Áêüìç êáé ïé ïäçãïß ôáéíéþí
êáé äßóêùí Ý÷ïõí ìíÞìåò ðïõ, üìùò, åßíáé ðïëý ìéêñÝò. Ïé ìíÞìåò áõôÝò äåí
èá ìáò áðáó÷ïëÞóïõí óôç óõíÝ÷åéá. Óôï Ó÷Þìá 11.11 ðáñïõóéÜæåôáé ç ñïÞ ôùí
äåäïìÝíùí ìåôáîý êýñéáò êáé äåõôåñåýïõóáò ìíÞìçò, üðïõ åìöáíßæåôáé êáé ç ëï-
ãéóìéêÞ áðïìïíùôéêÞ ìíÞìç. Ç ýðáñîç ôùí ëïãéóìéêþí ìíçìþí åßíáé áðáñáßôçôï
óõóôáôéêü êÜèå ÓÄÂÄ.

² ¯
± °
@
I ² ¯
¡
µ @@ Áñ÷åßï
Ðåñéï÷Þ ¡¡ @@ ÊáíÜëé µ±
¡ °
åñãáóßáò ¡
ª @ ¡
åããñáöÞò @ ¡
@
R ¡
ª
² ¯
Ðåñéï÷Þ ÁðïìïíùôéêÞ
ðñïãñÜììáôïò ìíÞìç ± °
÷ñÞóôç Äßóêïò

Êýñéá ìíÞìç

Ó÷Þìá 11.11: ÑïÞ äåäïìÝíùí ìåôáîý êýñéáò êáé äåõôåñåýïõóáò ìíÞìçò.

¸óôù üôé üëá ôá äåäïìÝíá åíüò ÓÄÂÄ ðåñéÝ÷ïíôáé óå Ýíá áñ÷åßï êáé ìüíï, ôï
ïðïßï áðïôåëåßôáé áðü 1.000.000 óåëßäåò (äçëáäÞ, 4 GBytes ðåñßðïõ èåùñþíôáò
óåëßäåò ôùí 4 Kb). Ðñïöáíþò ç êýñéá ìíÞìç åßíáé ìéêñüôåñç. ¸ôóé ìÝóá óôçí
êýñéá ìíÞìç äåóìåýåôáé êÜðïéïò ÷þñïò ãéá ôçí áðïìïíùôéêÞ ìíÞìç, þóôå åêåß
íá ôïðïèåôïýíôáé ðñïóùñéíÜ áðü ôï äéá÷åéñéóôÞ ôçò áðïìïíùôéêÞò ìíÞìçò ôá
äåäïìÝíá ðïõ Ýñ÷ïíôáé áðü ôï äßóêï ìÝ÷ñé íá ãßíåé ç åðåîåñãáóßá ôïõò. Ï
äéá÷åéñéóôÞò, ëïéðüí, áõôüò åßíáé õðåýèõíïò ãéá ôïí ôåìá÷éóìü ôçò ìíÞìçò óå
Ýíá óýíïëï ðëáéóßùí (frames), üðïõ ôï ìÝãåèïò êÜèå ðëáéóßïõ åßíáé ßóï ðñïò ôï
ìÝãåèïò ôçò óåëßäáò, åíþ ôï óýíïëï ôùí ðëáéóßùí áõôþí ïíïìÜæåôáé äåîáìåíÞ
ìíçìþí (buffer pool).
Ôá áíþôåñá óôñþìáôá ôïõ óõóôÞìáôïò åðéêïéíùíïýí ìå ôï äéá÷åéñéóôÞ ôçò
áðïìïíùôéêÞò ìíÞìçò êáé:

• ôïõ æçôïýí êÜðïéá óåëßäá, ðïõ ìðïñåß Þäç íá âñßóêåôáé óå êÜðïéï ðëáßóéï,
áëëéþò ðñÝðåé íá ðñïóðåëáóèåß áðü ôï äßóêï, Þ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 275

• ôïõ ðåñíïýí Ýíá ìÞíõìá üôé äåí ÷ñåéÜæïíôáé ðëÝïí êÜðïéá óåëßäá, ïðüôå
ôï ðëáßóéï ìðïñåß íá åëåõèåñùèåß, Þ ôÝëïò

• ôïõ ðåñíïýí Ýíá ìÞíõìá ãéá êÜðïéá åíçìÝñùóç ðïõ Ý÷åé åðÝëèåé óå êÜðïéá
óåëßäá, ïðüôå ç åíçìÝñùóç áõôÞ ðñÝðåé íá ðåñÜóåé óôçí áíôßóôïé÷ç óåëßäá
ôïõ äßóêïõ.

Ï äéá÷åéñéóôÞò ãéá íá áíôáðïêñéèåß óôá êáèÞêïíôÜ ôïõ ãíùñßæåé ãéá êÜèå ðëáß-
óéï ðüóåò öïñÝò Ý÷åé æçôçèåß ÷ùñßò íá åëåõèåñùèåß áðü ôüôå ðïõ ç áíôßóôïé÷ç
óåëßäá ôïðïèåôÞèçêå óôçí áðïìïíùôéêÞ ìíÞìç, êáé áí ôï ðëáßóéï åßíáé âñþìéêï
(dirty), äçëáäÞ áí Ý÷åé åíçìåñùèåß. Áõôü åðéôõã÷Üíåôáé ìå ôç âïÞèåéá ôïõ ëå-
ãüìåíïõ ìåôñçôÞ êáñöùìÜôùí (pin count) êáé ôïõ ëåãüìåíïõ âñþìéêïõ bit, ïé
ïðïßïé áñ÷éêïðïéïýíôáé ìå ôéìÝò 010 êáé 02 .
Áí ç óåëßäá åðüìåíçò æÞôçóçò âñßóêåôáé óå êÜðïéï ðëáßóéï ôüôå ï ìåôñçôÞò
pin count áõîÜíåôáé êáôÜ Ýíá (äéáäéêáóßá ðïõ ëÝãåôáé "êÜñöùìá" - pinning),
åíþ ï ìåôñçôÞò ìåéþíåôáé êáôÜ Ýíá áí Ýñèåé ìÞíõìá üôé ôï ðåñéå÷üìåíï êÜðïéïõ
ðëáéóßïõ äåí åßíáé ðëÝïí ÷ñÞóéìï (äéáäéêáóßá "îåêÜñöùìá" - unpinning). Áí ç
áéôïýìåíç óåëßäá äåí âñßóêåôáé óôçí áðïìïíùôéêÞ ìíÞìç êáé äåí õðÜñ÷åé êÜ-
ðïéï åëåýèåñï ðëáßóéï, ôüôå åðéëÝãåôáé Ýíá ðëáßóéï, ôï ëåãüìåíï èýìá (victim),
üðïõ èá Ýñèåé ç áéôïýìåíç óåëßäá áðü ôï äßóêï. Ôï èýìá åðéëÝãåôáé ìåôáîý ôùí
ðëáéóßùí ðïõ Ý÷ïõí ìçäåíéêü pin count åöáñìüæïíôáò ìßá ðïëéôéêÞ áíôéêáôÜóôá-
óçò óåëßäùí (page replacement) (ðïõ èá åîçãçèïýí óôç óõíÝ÷åéá). Ùóôüóï, ðñéí
åëåõèåñùèåß ï ÷þñïò ôïõ èýìáôïò åßíáé áðáñáßôçôï íá åëåã÷èåß ôï dirty bit. Áí
ôï bit áõôü åßíáé 0, ôüôå ðñÜãìáôé ôï ðëáßóéï åëåõèåñþíåôáé ÷ùñßò êáìßá Üëëç
åíÝñãåéá, åíþ áí åßíáé 1 ôüôå ôï ðåñéå÷üìåíï ôïõ ðëáéóßïõ áðïèçêåýåôáé óôçí
áíôßóôïé÷ç óåëßäá ôïõ äßóêïõ. ¼ìùò åßíáé ðéèáíü íá ìçí õðÜñ÷ïõí ðëáßóéá ìå
ìçäåíéêü pin count. Óå ìßá ôÝôïéá ðåñßðôùóç ç íÝá áßôçóç ðñÝðåé íá ðåñéìÝíåé,
êáé ðéèáíþò íá áðïññéöèåß.
Ç ðñïçãïýìåíç áíÜðôõîç ôïõ ôñüðïõ ëåéôïõñãßáò ôçò áðïìïíùôéêÞò ìíÞìçò
ðñïóïìïéÜæåé óôïí ôñüðï ëåéôïõñãßáò ôçò åéêïíéêÞò ìíÞìçò (virtual memory)
åíüò ëåéôïõñãéêïý óõóôÞìáôïò. Ùóôüóï, üðùò åëÝ÷èç óôçí áñ÷Þ ôïõ êåöáëáßïõ,
Ýíá ÓÄÂÄ äåí åðáíáðáýåôáé ïýôå óå áõôÝò ôéò õðçñåóßåò ôïõ ëåéôïõñãéêïý óõ-
óôÞìáôïò ãéáôß ôï ßäéï ìðïñåß íá ðñïâëÝøåé ôá ðñüôõðá æÞôçóçò óåëßäùí (page
reference patterns), åéäéêÜ üôáí åêôåëïýíôáé óõãêåêñéìÝíåò äéåñãáóßåò, üðùò óåé-
ñéáêÝò óáñþóåéò áñ÷åßùí Þ óõíäÝóåéò (join) áñ÷åßùí ê.ë.ð. Ç äõíáôüôçôá ðñü-
âëåøçò ôçò ìåëëïíôéêÞò æÞôçóçò ìðïñåß íá ÷ñçóéìïðïéçèåß ìå óêïðü ôç âåëôßùóç
ôçò áðïôåëåóìáôéêüôçôÜò ôïõ óôá åîÞò óçìåßá:

• ìå ôçí åðéëïãÞ ôïõ êáôÜëëçëïõ ðëáéóßïõ ãéá ôï ñüëï ôïõ èýìáôïò,


276 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

• ìå ôçí åðéëïãÞ ôçò êáôÜëëçëçò óôéãìÞò ãéá ôçí áðïèÞêåõóç ôùí âñþìéêùí
óåëßäùí óôï äßóêï, êáé
• ìå ôçí ðñï-ðñïóðÝëáóç (prefetching) óåëßäùí áðü ôï äßóêï ðñéí áêüìç
áõôÝò æçôçèïýí.
Óå åöáñìïãÝò ÂÜóåùí ÄåäïìÝíùí ôï êüóôïò åðåîåñãáóßáò ôùí óåëßäùí áðü ôç
óôéãìÞ ðïõ èá Ýñèïõí óôéò áðïìïíùôéêÝò ìíÞìåò èåùñåßôáé áìåëçôÝï óå ó÷Ýóç
ìå ôï êüóôïò ìåôáöïñÜò äåäïìÝíùí áðü/ðñïò ôç äåõôåñåýïõóá ìíÞìç. ¸ôóé, ç
ðñï-ðñïóðÝëáóç âåëôéþíåé óçìáíôéêÜ ôçí åðßäïóç ôïõ óõóôÞìáôïò üôáí äåí áéôþ-
íôáé üëåò ôéò óåëßäåò ôïõ äßóêïõ ìå ßäéá ðéèáíüôçôá, áëëÜ ïé áéôÞóåéò åóôéÜæïíôáé
êõñßùò óå ìåñéêÝò ðåñéï÷Ýò äåäïìÝíùí. Ôï ôåëåõôáßï öáéíüìåíï ïíïìÜæåôáé ôï-
ðéêüôçôá (locality), êáé ïäçãåß óå áýîçóç ôïõ ëåãüìåíïõ ëüãïõ åðéôõ÷ßáò (hit
ratio), ðïõ åßíáé ôï ðçëßêï ôïõ áñéèìïý ôùí áéôÞóåùí ðïõ áðáíôþíôáé ÷ùñßò ðñï-
óðÝëáóç óôç äåõôåñåýïõóá ìíÞìç ðñïò ôïí áñéèìü ôùí óõíïëéêþí áéôÞóåùí. Ìå
Üëëá ëüãéá, ç ðñï-ðñïóðÝëáóç âåëôéþíåé ôçí åðßäïóç üôáí ïé áéôÞóåéò áöïñïýí
ãåéôïíéêÝò óåëßäåò óå ðåñßðôùóç óåéñéáêÞò ðñïóðÝëáóçò, åíþ ç åðßäïóç öèßíåé
óçìáíôéêÜ óå ðåñßðôùóç ôõ÷áßáò ðñïóðÝëáóçò. ÅðéðëÝïí ðñÝðåé íá ôïíéóèåß
üôé ç ðñï-ðñïóðÝëáóç óõíôåëåß óôç ìåßùóç ôïõ ìÝóïõ ÷ñüíïõ ðñïóðÝëáóçò óôéò
óåëßäåò åðåéäÞ, üôáí åßíáé ãíùóôÝò ïé äéåõèýíóåéò ôùí óåëßäùí ðïõ èá ðñïóðå-
ëáóèïýí, ìðïñåß íá ãßíåé êÜðïéá áíáäéÜôáîç ôçò óåéñÜò ôùí áéôÞóåùí ìå óôü÷ï
ôçí åëá÷éóôïðïßçóç ôïõ ÷ñüíïõ áíáæÞôçóçò êáé ôïõ ëáíèÜíïíôá ðåñéóôñïöéêïý
÷ñüíïõ.
Óôç óõíÝ÷åéá åîçãåßôáé ìßá áðëÞ ôå÷íéêÞ ÷ñÞóçò ôçò áðïìïíùôéêÞò ìíÞìçò,
ðïõ ïíïìÜæåôáé single buffering, êáé ìðïñåß íá õéïèåôçèåß óå ðåñéðôþóåéò óåé-
ñéáêÞò ðñïóðÝëáóçò áñ÷åßïõ. Ìßá åíáëëáêôéêÞ ëýóç åßíáé íá áêïëïõèçèåß ç
åðáíáëáìâáíüìåíç äéáäéêáóßá íá ãåìßæåé ç ìíÞìç êáé êáôüðéí íá áêïëïõèåß ç
åðåîåñãáóßá. ¸ôóé èá ìåôáöÝñåôáé ç åðüìåíç óåëßäá áðü ôçí ðåñéöåñåéáêÞ óõ-
óêåõÞ óôçí áðïìïíùôéêÞ ìíÞìç, ìüíï üôáí ôåëåéþóåé ç åðåîåñãáóßá üëùí ôùí
åããñáöþí ôçò áðïìïíùôéêÞò ìíÞìçò. Ùóôüóï óýìöùíá ìå ìßá ðñï÷ùñçìÝíç
ìÝèïäï ìðïñåß íá ãßíåé áðïôåëåóìáôéêüôåñç ÷ñÞóç ôçò ìíÞìçò ìåôáöÝñïíôáò äå-
äïìÝíá ôáõôü÷ñïíá áðü ôçí ðåñéöåñåéáêÞ óõóêåõÞ ðñïò ôç ìíÞìç êáé áðü ôç
ìíÞìç óôçí ðåñéï÷Þ ôïõ ðñïãñÜììáôïò ôïõ ÷ñÞóôç (user program area), üðùò
öáßíåôáé óôï Ó÷Þìá 11.11. ÂÝâáéá ç ßäéá ôå÷íéêÞ ìðïñåß íá åöáñìïóèåß ãéá
ôçí ôáõôü÷ñïíç ìåôáöïñÜ äåäïìÝíùí êáôÜ ôçí áíôßóôñïöç óåéñÜ. Ç ìÝèïäïò
áõôÞ ìðïñåß íá õëïðïéçèåß ìå Ýíá ìç÷áíéóìü êõêëéêÞò ëßóôáò. Ç äéá÷åßñéóç ôçò
ëßóôáò áõôÞò ãßíåôáé ìå ôç âïÞèåéá äýï äåéêôþí ðïõ äåß÷íïõí ôçí ðñþôç äéáèÝ-
óéìç åããñáöÞ ãéá ôï ðñüãñáììá åöáñìïãÞò êáé ôçí ðñþôç äéáèÝóéìç èÝóç ãéá
áðïèÞêåõóç åããñáöþí áðü ôç äåõôåñåýïõóá óõóêåõÞ. ¸ôóé êáôÜ ôç äéÜñêåéá
ôçò åðåîåñãáóßáò ï Ýíáò äåßêôçò "êõíçãÜ" ôïí Üëëïí. ¼ôáí ï ðñþôïò öèÜóåé ôï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 277

äåýôåñï, ôüôå ç áðïìïíùôéêÞ ìíÞìç åßíáé Üäåéá, åíþ óôçí áíôßèåôç ðåñßðôùóç ç
ìíÞìç åßíáé ãåìÜôç.
Óå ðåñßðôùóç óåéñéáêÞò ðñïóðÝëáóçò óåéñéáêïý áñ÷åßïõ ìðïñåß íá ÷ñçóéìï-
ðïéçèåß ìßá áêüìç áðïôåëåóìáôéêüôåñç ôå÷íéêÞ ðïõ ïíïìÜæåôáé double buffering.
Ãéá ôçí êáôáíüçóç ôçò ôå÷íéêÞò, ÷ùñßò âëÜâç ôçò ãåíéêüôçôáò áò õðïôåèåß üôé ç
áðïìïíùôéêÞ ìíÞìç áðïôåëåßôáé áðü äýï ðëáßóéá ìüíï. ¸óôù üôé áñ÷éêÜ áõôÜ ôá
äýï ðëáßóéá ãåìßæïõí ìå ôéò ðñþôåò äýï óåëßäåò ôïõ áñ÷åßïõ. Ìüëéò ïëïêëçñùèåß
ç åðåîåñãáóßá ôùí åããñáöþí ôïõ ðñþôïõ ðëáéóßïõ, ôüôå áõôü ìå íÝá áíÜãíùóç
îáíáãåìßæåé ìå ôï ðåñéå÷üìåíï ôçò ôñßôçò óåëßäáò ôïõ áñ÷åßïõ. ¸ôóé, ç ôñßôç
óåëßäá ðñïóöÝñåôáé ãéá åðåîåñãáóßá áìÝóùò ìüëéò ôåëåéþóåé ç åðåîåñãáóßá ôçò
äåýôåñçò óåëßäáò ðïõ âñßóêåôáé óôï äåýôåñï ðëáßóéï. Ìå ôïí ôñüðï áõôü, óå
ìßá ÷ñïíéêÞ óôéãìÞ ôï Ýíá ðëáßóéï äÝ÷åôáé äåäïìÝíá áðü ôï äßóêï êáé ôï Üëëï
óõììåôÝ÷åé óôçí åðåîåñãáóßá, åíþ óôçí åðüìåíç ÷ñïíéêÞ óôéãìÞ ïé ñüëïé ôùí
ðëáéóßùí áíôéóôñÝöïíôáé. Ç ôå÷íéêÞ áõôÞ áëëáãÞò ôùí ñüëùí ôùí äýï ìíçìþí
ïíïìÜæåôáé áíôáëëáãÞ áðïìïíùôéêþí ìíçìþí (buffer swapping). Áí ï ÷ñüíïò
åðåîåñãáóßáò ôùí åããñáöþí ôçò óåëßäáò (÷ñüíïò CPU) äåí åßíáé ìåãáëýôåñïò
áðü ôï ÷ñüíï ðñïóðÝëáóçò (÷ñüíïò É/Ï), ôüôå âÜóéìá ìðïñåß íá èåùñçèåß üôé
ï óõíïëéêüò ÷ñüíïò ôáõôßæåôáé ìå ôï ÷ñüíï ðñïóðÝëáóçò. Óôï Ó÷Þìá 11.12 ðá-
ñïõóéÜæåôáé áö’ åíüò ìßá óåéñÜ áðü ëåéôïõñãßåò åéóüäïõ/åîüäïõ ìå ôéò ÷ñïíéêÜ
áíôßóôïé÷åò ëåéôïõñãßåò åðåîåñãáóßáò êáé áö’ åôÝñïõ ôï ðåñéå÷üìåíï ôùí äýï
ðëáéóßùí. ÊáôÜ ôïí ßäéï ôñüðï ôá äýï ðëáßóéá ìðïñïýí íá óõíåñãáóèïýí ãéá ôç
óåéñéáêÞ áðïèÞêåõóç óôï áñ÷åßï.

Ðñþôï Äåýôåñï
I/O CPU ðëáßóéï ðëáßóéï
ÁíÜãíùóç A
ÁíÜãíùóç B Åðåîåñãáóßá A A
ÁíÜãíùóç C Åðåîåñãáóßá B A/C B
ÁíÜãíùóç D Åðåîåñãáóßá C C B/D
.. .. .. ..
. . . .

Ó÷Þìá 11.12: ×ñïíéêÞ áëëçëïõ÷ßá åñãáóéþí ìå ÷ñÞóç äýï ðëáéóßùí.

Áí ïé õðïëïãéóìïß åßíáé ðïëý óýíèåôïé êáé ÷ñïíïâüñïé, ôüôå ç ÷ñÞóç ôùí äýï
ðëáéóßùí äåí Ý÷åé ôüóï èåáìáôéêÜ áðïôåëÝóìáôá. Óôï Ó÷Þìá 11.13 ðáñïõóéÜ-
æåôáé ìßá ôÝôïéá ðåñßðôùóç, üðïõ ï ÷ñüíïò CPU åßíáé ôñéðëÜóéïò áðü ôï ÷ñüíï
åéóüäïõ/åîüäïõ. Áí ïé áðïìïíùôéêÝò ìíÞìåò Ý÷ïõí ìÝãåèïò ßóï ìå ìßá Üôñáêôï,
278 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

Ðñþôï Äåýôåñï
I/O CPU ðëáßóéï ðëáßóéï
ÁíÜãíùóç A
ÁíÜãíùóç B Åðåîåñãáóßá A A
ÁíáìïíÞ Åðåîåñãáóßá A A B
ÁíáìïíÞ Åðåîåñãáóßá A A B
ÁíÜãíùóç C Åðåîåñãáóßá B A/C B
ÁíáìïíÞ Åðåîåñãáóßá B C B
ÁíáìïíÞ Åðåîåñãáóßá B C B
.. .. .. ..
. . . .

Ó÷Þìá 11.13: ×ñïíéêÞ áëëçëïõ÷ßá åñãáóéþí ìå ÷ñÞóç äýï ðëáéóßùí. O ÷ñüíïò


CPU åßíáé ôñéðëÜóéïò ôïõ ÷ñüíïõ É/Ï.

ôüôå ï ÷ñüíïò ðïõ áðáéôåßôáé ãéá ôç óåéñéáêÞ åðåîåñãáóßá ôïõ áñ÷åßïõ åßíáé:

dte × b × ebt

üðïõ ôï t åßíáé ï ëüãïò ôïõ ÷ñüíïõ CPU ðñïò ôï ÷ñüíï åéóüäïõ/åîüäïõ. Ãå-
íéêÜ ìåãáëýôåñïò ðáñáëëçëéóìüò ìðïñåß íá åðéôåõ÷èåß ìå ôç ÷ñÞóç ðïëëáðëþí
áðïìïíùôéêþí ìíçìþí (multiple buffering). ÁëëÜ êáé ðÜëé, áí ï ÷ñüíïò åðå-
îåñãáóßáò åßíáé ìåãáëýôåñïò áðü ôï ÷ñüíï åéóüäïõ/åîüäïõ, ôüôå ç ôå÷íéêÞ ôïõ
double buffering åßíáé åðáñêÞò.

11.5.1 Áëãüñéèìïé ÁíôéêáôÜóôáóçò


Ï ôñüðïò ðñáãìáôïðïßçóçò ôçò áíôéêáôÜóôáóçò äåäïìÝíùí óôçí êñõöÞ ìíÞìç
ôïõ åëåãêôÞ åîáñôÜôáé áðü ôï õëéêü êáé ôïí åëåãêôÞ. ÁíôéèÝôùò, ç ìÝèïäïò áíôé-
êáôÜóôáóç äåäïìÝíùí óôçí áðïìïíùôéêÞ ìíÞìç åßíáé óôçí åõèýíç ôïõ ÓÄÂÄ.
¼ðùò áíáöÝñèçêå ðñïçãïõìÝíùò, ïé ôå÷íéêÝò ôïõ single buffering êáé double
buffering ìðïñïýí íá åöáñìïóèïýí ìå åðéôõ÷ßá óå ðåñéðôþóåéò óåéñéáêÞò ðñï-
óðÝëáóçò óåéñéáêïý áñ÷åßïõ. Ùóôüóï, óå Ýíá ÓÄÂÄ ìðïñåß ôáõôü÷ñïíá ðïëëïß
÷ñÞóôåò íá ðñïóðåëáýíïõí ôç âÜóç, ïðüôå ç áðïìïíùôéêÞ ìíÞìç íá ðåñéÝ÷åé
óåëßäåò áðü ðïëëÜ áñ÷åßá. Ìßá ôÝôïéá ãåíéêÞ ðåñßðôùóç äåí áíôéìåôùðßæåôáé
ìå ôéò ðñïçãïýìåíåò ôå÷íéêÝò, áëëÜ áðáéôåßôáé ç åöáñìïãÞ ìßáò óõãêåêñéìÝíçò
ðïëéôéêÞò áíôéêáôÜóôáóçò óåëßäùí ãéá ôçí åðéëïãÞ ôïõ èýìáôïò.
Óôü÷ïò ôùí áëãïñßèìùí áíôéêáôÜóôáóçò óåëßäùí åßíáé ç áýîçóç ôïõ ðïóï-
óôïý åðéôõ÷ßáò (hit ratio) êáôÜ ôçí ðñïóðÝëáóç. Óôçí ðåñßðôùóç ðïõ ç æç-
ôïýìåíç óåëßäá âñåèåß óôçí áðïìïíùôéêÞ ìíÞìç Ý÷ïõìå åðéôõ÷ßá, äéáöïñåôéêÜ
Ý÷ïõìå áðïôõ÷ßá. Óå ðåñßðôùóç áðïôõ÷ßáò, ç óåëßäá äéáâÜæåôáé áðü ôï öõóéêü
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 279

ìÝóï Þ ôçí êñõöÞ ìíÞìç ôïõ åëåãêôÞ êáé áíôéãñÜöåôáé óôçí áðïìïíùôéêÞ ìíÞìç.
Áí áõôÞ åßíáé ðëÞñçò, ôüôå ðñÝðåé íá åðéëåãåß ìßá óåëßäá êáé íá áíôéêáôáóôáèåß
áðü ôç íÝá. Ï ðëÞèïò áðïôõ÷çìÝíùí ðñïóðåëÜóåùí êáèïñßæåé ôï ÷ñüíï ðïõ
áðáéôåßôáé ãéá ôçí ðñïóðÝëáóç äåäïìÝíùí áðü ôï öõóéêü ìÝóï áðïèÞêåõóçò. Óå
ìßá ðñþôç ðñïóÝããéóç Ý÷åé ðñïôáèåß íá åðéëÝãåôáé ìå ôñüðï ôõ÷áßï (random) ç
ðñïò áíôéêáôÜóôáóç óåëßäá. Óôç âéâëéïãñáößá Ý÷ïõí ðñïôáèåß ðïëëïß áëãüñéè-
ìïé áíôéêáôÜóôáóçò ìå äéáöïñåôéêÞ åðßäïóç êáé ðïëõðëïêüôçôá, ìå êõñéüôåñïõò
ôïõò åîÞò:
• Ðñþôç åñ÷üìåíç, ðñþôç áíôéêáèéóôþìåíç - FIFO (first-in first-out). Ç
ìÝèïäïò áíôéêáèéóôÜ ôéò óåëßäåò ìå ôç óåéñÜ ðïõ Ý÷ïõí åéóá÷èåß óôçí áðï-
ìïíùôéêÞ ìíÞìç. ÅðïìÝíùò, áíôéêáèßóôáôáé ç óåëßäá ðïõ âñßóêåôáé ôïí
ðåñéóóüôåñï ÷ñüíï áðïèçêåõìÝíç óôçí áðïìïíùôéêÞ ìíÞìç. Ç ìÝèïäïò
åßíáé ðïëý áðëÞ óôçí õëïðïßçóÞ ôçò, üìùò õóôåñåß óå åðßäïóç åðåéäÞ äåí
ëáìâÜíåé õð’ üøç ôç ÷ñçóéìüôçôá ôçò óåëßäáò, ìå áðïôÝëåóìá íá Ý÷ïõìå
áõîçìÝíï áñéèìü áðïôõ÷éþí.
• Ëéãüôåñï óõ÷íÜ ÷ñçóéìïðïéïýìåíç - LFU (least-frequently used). Ç ìÝèï-
äïò ëáìâÜíåé õð’ üøç ôç óõ÷íüôçôá ÷ñçóéìïðïßçóçò êÜèå óåëßäáò. Óåëßäåò
ðïõ ÷ñçóéìïðïéïýíôáé óõ÷íÜ äåí ðñÝðåé íá áíôéêáôáóôáèïýí. Ç åðßäïóç
ôçò LFU åßíáé êáôÜ ðïëý êáëýôåñç ôçò FIFO, üìùò Ý÷åé áõîçìÝíç ðïëõ-
ðëïêüôçôá åðåéäÞ êÜèå öïñÜ ðïõ ðñáãìáôïðïéåßôáé ðñïóðÝëáóç ðñÝðåé
íá åíçìåñþíïíôáé ïé ôéìÝò ôùí óõ÷íïôÞôùí. Ôï ìåéïíÝêôçìá ôçò ìåèüäïõ
åßíáé üôé ìßá óåëßäá ðïõ ÷ñçóéìïðïéÞèçêå ðïëý óõ÷íÜ óôï ðáñåëèüí êáé
äåí ÷ñçóéìïðïéåßôáé ðëÝïí, èá áñãÞóåé íá áíôéêáôáóôáèåß.
• Ëéãüôåñï ðñüóöáôá ÷ñçóéìïðïéçìÝíç - LRU (least-recently used). Ç ìÝ-
èïäïò åßíáé ç óõ÷íüôåñá ÷ñçóéìïðïéïýìåíç ìÝèïäïò áíôéêáôÜóôáóçò óåëß-
äùí. Ç óåëßäá ðïõ åðéëÝãåôáé ðñïò áíôéêáôÜóôáóç åßíáé áõôÞ ðïõ äåí Ý÷åé
÷ñçóéìïðïéçèåß ãéá ôï ìåãáëýôåñï ÷ñïíéêü äéÜóôçìá. ÅðïìÝíùò, óåëßäåò
ðïõ äåí ÷ñçóéìïðïéïýíôáé ãéá ìåãÜëá ÷ñïíéêÜ äéáóôÞìáôá èá åðéëåãïýí ãéá
áíôéêáôÜóôáóç, óå áíôßèåóç ìå áõôÝò ðïõ ÷ñçóéìïðïéÞèçêáí ðñüóöáôá êáé
ðáñáìÝíïõí óôç áðïìïíùôéêÞ ìíÞìç. Ç ðïëéôéêÞ áõôÞ õëïðïéåßôáé ìå ôç
âïÞèåéá ìßáò ïõñÜò, óôï ôÝëïò ôçò ïðïßáò ôïðïèåôïýíôáé ïé äéåõèýíóåéò ôùí
ðëáéóßùí ðïõ Ý÷ïõí pin count ßóï ìå 0. ¸ôóé ùò èýìá åðéëÝãåôáé ôï ðëáß-
óéï ðïõ âñßóêåôáé óôçí êåöáëÞ ôçò ïõñÜò. Ìå âÜóç ôçí áíôßèåôç ëïãéêÞ
Ý÷åé ðñïôáèåß ç ìÝèïäïò Ðåñéóóüôåñï ðñüóöáôá ÷ñçóéìïðïéçìÝíç - MRU
(most recently used) ÷ùñßò üìùò éäéáßôåñç åöáñìïãÞ.
• ÙñïëïãéáêÞ (clock). ÐáñáëëáãÞ ôçò ðñïçãïýìåíçò ðïëéôéêÞò, ç ïðïßá äåí
äéá÷åéñßæåôáé êÜðïéá ïõñÜ áëëÜ óôçñßæåôáé óå ìßá ìåôáâëçôÞ (current), ðïõ
280 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

èåùñåß êõêëéêÜ üëá ôá ðëáßóéá ôçò áðïìïíùôéêÞò ìíÞìçò. ¸ôóé áí ôï ðëáß-


óéï ðïõ õðïäåéêíýåôáé áðü ôçí current Ý÷åé pin count ìå ôéìÞ ìåãáëýôåñç
ôïõ 0, ôüôå ç current áõîÜíåôáé êáôÜ Ýíá, ìÝ÷ñé íá âñåé ðëáßóéï ìå ôéìÞ
pin count ßóç ìå 0.

Ç ðïëéôéêÞ áõôÞ, üðùò êáé ç ðñïçãïýìåíç äåí åßíáé áðïôåëåóìáôéêÝò óå ðåñß-


ðôùóç óåéñéáêÞò åðåîåñãáóßáò ôùí óåëßäùí åíüò áñ÷åßïõ. Ãéá ðáñÜäåéãìá, Ýóôù
üôé ç áðïìïíùôéêÞ ìíÞìç Ý÷åé 10 ðëáßóéá, êáé üôé Ýíá áñ÷åßï áðïôåëåßôáé áðü 10
óåëßäåò. ÁõôÞ ç ðåñßðôùóç åîõðçñåôåßôáé áðü ôéò ðïëéôéêÝò áõôÝò ÷ùñßò êáíÝíá
ðñüâëçìá, ãéáôß üôáí îáíáæçôçèåß êÜðïéá óåëßäá åßíáé âÝâáéï üôé äåí èá ãßíåé
ðñïóðÝëáóç óôï äßóêï. ¼ìùò áí ôï áñ÷åßï áðïôåëåßôáé áðü 11 óåëßäåò, ôüôå
êáôÜ ôï äåýôåñï, ôñßôï ê.ï.ê. ðÝñáóìá ôïõ áñ÷åßïõ èá ðñïóðåëáýíïíôáé êáé ðÜëé
üëåò ïé óåëßäåò, äçëáäÞ ï ëüãïò åðéôõ÷ßáò èá åßíáé 0. Ôï öáéíüìåíï áõôü ëÝãåôáé
óåéñéáêÞ ðëçììýñá (sequential flooding). Óôéò ðåñéóóüôåñåò ðåñéðôþóåéò ÷ñç-
óéìïðïéåßôáé êÜðïéá ðáñáëëáãÞ ôùí ðïëéôéêþí áõôþí þóôå íá áíôéìåôùðßæåôáé
áðïôåëåóìáôéêÜ ç óåéñéáêÞ åðåîåñãáóßá.

ÐáñÜäåéãìá
Èåùñïýìå üôé ôá äåäïìÝíá åßíáé áðïèçêåõìÝíá óå ôÝóóåñéò óåëßäåò Ó1, Ó2, Ó3,
Ó4. ¸óôù üôé ôï óýóôçìá äçìéïõñãåß ôçí åîÞò áêïëïõèßá áíáöïñþí óôéò óåëßäåò
áõôÝò:

Ó1, Ó2, Ó3, Ó4, Ó2, Ó2, Ó1, Ó2, Ó1, Ó1

ÕðïèÝóôå üôé ç áðïìïíùôéêÞ ìíÞìç ìðïñåß íá äå÷èåß ôï ðïëý ôñåéò óåëßäåò êáé
üôé áñ÷éêÜ åßíáé êåíÞ. ÅîåôÜæïõìå ôçí åðßäïóç ôùí ìåèüäùí FIFO êáé LRU óå
ó÷Ýóç ìå ôïí áñéèìü áðïôõ÷éþí ðïõ åìöáíßæåé ç êÜèå ìßá. Óôï Ó÷Þìá 11.14
ðáñïõóéÜæåôáé ç êáôÜóôáóç ôçò áðïìïíùôéêÞò ìíÞìçò ìåôÜ áðü êÜèå áíáöïñÜ
óåëßäáò. Ìßá óåëßäá ðáñïõóéÜæåôáé óêéáóìÝíç üôáí åßíáé ç åðüìåíç ðïõ èá
áíôéêáôáóôáèåß. Ï êýêëïò äßðëá óôçí áðïìïíùôéêÞ ìíÞìç äçëþíåé üôé óôç óõ-
ãêåêñéìÝíç áíáöïñÜ Ý÷ïõìå áðïôõ÷ßá. Ðáñáôçñïýìå üôé ç ìÝèïäïò LRU Ý÷åé
êáëýôåñç áðüäïóç áðü ôçí FIFO ãéá ôç óõãêåêñéìÝíç áêïëïõèßá áíáöïñþí. Ãéá
ðåñéóóüôåñåò óåëßäåò êáé ìåãáëýôåñåò ÷ùñçôéêüôçôåò ôçò áðïìïíùôéêÞò ìíÞìçò
ç äéáöïñÜ óôçí áðüäïóç åßíáé ìåãáëýôåñç.

11.5.2 ÅîõðçñÝôçóç ÁéôÞóåùí


Áí ç æçôïýìåíç óåëßäá äåí âñåèåß ïýôå óôçí áðïìïíùôéêÞ ìíÞìç ïýôå óôçí êñõöÞ
ìíÞìç ôïõ åëåãêôÞ, ôüôå ç óåëßäá áíáæçôåßôáé óôï öõóéêü ìÝóï áðïèÞêåõóçò. Ï
åëåãêôÞò äßóêïõ äéáèÝôåé ìßá ïõñÜ åîõðçñÝôçóçò (service queue) áéôÞóåùí, üðïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 281
F I F O L R U

Σ 1

Σ 1 Σ 1

Σ 2

Σ 1 Σ 2 Σ 1 Σ 2

Σ 3

Σ 1 Σ 2 Σ 3 Σ 1 Σ 2 Σ 3

Σ 4

Σ 4 Σ 2 Σ 3 Σ 4 Σ 2 Σ 3

Σ 2

Σ 4 Σ 2 Σ 3 Σ 4 Σ 2 Σ 3

Σ 2

Σ 4 Σ 2 Σ 3 Σ 4 Σ 2 Σ 3

Σ 1

Σ 4 Σ 1 Σ 3 Σ 4 Σ 2 Σ 1

Σ 2

Σ 4 Σ 1 Σ 2 Σ 4 Σ 2 Σ 1

Σ 1

Σ 4 Σ 1 Σ 2 Σ 4 Σ 2 Σ 1

Σ 1

Σ 4 Σ 1 Σ 2 Σ 4 Σ 2 Σ 1

Ó÷Þìá 11.14: Óýãêñéóç ìåèüäùí FIFO êáé LRU.

áðïèçêåýïíôáé áéôÞóåéò ãéá ðñïóðÝëáóç (áíÜãíùóç Þ äéáãñáöÞ) äåäïìÝíùí. Ç


ìÝèïäïò ðïõ ÷ñçóéìïðïéåßôáé ãéá ôçí åîõðçñÝôçóç ôùí áéôÞóåùí Ý÷åé ðïëý ìåãÜëç
óçìáóßá óôçí áðüäïóç ôïõ óõóôÞìáôïò. ¼ðùò Ý÷åé Þäç áíáöåñèåß, ãéá ôçí åîõ-
ðçñÝôçóç ìßáò áßôçóçò áðáéôåßôáé ÷ñüíïò Tseek + Trot + Ttrans . Ï ÷ñüíïò Tseek
áíôéðñïóùðåýåé ôï ÷ñïíéêü äéÜóôçìá ðïõ áðáéôåßôáé þóôå ç êåöáëÞ íá ôïðï-
èåôçèåß åðÜíù áðü ôçí êáôÜëëçëç Üôñáêôï êáé åßíáé ãåíéêþò ìåãáëýôåñïò áðü
ôïõò ÷ñüíïõò Trot êáé Ttrans . ÅðïìÝíùò, ðïëëÝò áðü ôéò ìåèüäïõò åîõðçñÝôçóçò
ðñïóðáèïýí íá ìåéþóïõí ôç äéáíõüìåíç áðüóôáóç áðü ôéò êåöáëÝò.
Ïé êõñéüôåñåò ìÝèïäïé åîõðçñÝôçóçò åßíáé ïé åîÞò:
• Ðñþôç åñ÷üìåíç, ðñþôç åîõðçñåôïýìåíç - FCFS (first-come first-served).
Åßíáé ç áðëïýóôåñç êáé åîõðçñåôåß ôéò áéôÞóåéò ìå ôç óåéñÜ Üöéîçò. Ôï
âáóéêü ðëåïíÝêôçìá ôçò ìåèüäïõ åßíáé ç åõêïëßá õëïðïßçóçò. Ùóôüóï,
ç åðßäïóÞ ôçò åîáñôÜôáé áðü ôïí ôýðï ôùí áéôÞóåùí. Áí äéáäï÷éêÝò áéôÞ-
óåéò áíáöÝñïíôáé óå áðïìáêñõóìÝíåò áôñÜêôïõò, ôüôå ç êåöáëÞ äéáãñÜöåé
ìåãÜëåò áðïóôÜóåéò êáé ìåéþíåôáé ç åðßäïóç.
• Ðñþôá ç ìéêñüôåñç áíáæÞôçóç - SSTF (shortest seek time first). Ç ìÝèï-
äïò ó÷åäéÜóèçêå ãéá íá áíôéìåôùðéóèåß ôï ðñïçãïýìåíï ðñüâëçìá. Áðü
ôéò áéôÞóåéò ðïõ áíáìÝíïõí åîõðçñåôåßôáé áõôÞ ðïõ èá ðñïêáëÝóåé ôç ìé-
êñüôåñç ìåôáêßíçóç ôçò êåöáëÞò. Ôï âáóéêü ìåéïíÝêôçìá ôçò ìåèüäïõ
282 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

åßíáé üôé áí óõíå÷þò Ýñ÷ïíôáé áéôÞóåéò ðïõ åðéöÝñïõí ìéêñÞ ìåôáêßíçóç


ôçò êåöáëÞò, åíäÝ÷åôáé ç åîõðçñÝôçóç êÜðïéùí áéôÞóåùí íá êáèõóôåñÞóåé
óçìáíôéêÜ. Óôç ÷åéñüôåñç ðåñßðôùóç, êÜðïéåò áéôÞóåéò äåí èá åîõðçñåôç-
èïýí ðïôÝ.

• ÓÜñùóç - SCAN. Óýìöùíá ìå ôç ìÝèïäï áõôÞ, ç êåöáëÞ ìåôáêéíåßôáé áðü


ôï Ýíá Üêñï ìÝ÷ñé ôï Üëëï êáé åîõðçñåôåß ôéò áéôÞóåéò áíáëüãùò. ¼ôáí
ç êåöáëÞ öôÜóåé óôï Ýíá Üêñï, ôüôå ç öïñÜ áíôéóôñÝöåôáé. Ç ìÝèïäïò
C-SCAN áðïôåëåß ðáñáëëáãÞ ôçò SCAN. ¼ôáí ç êåöáëÞ öôÜóåé óôï Ýíá
Üêñï ìåôáðçäÜ óôçí áñ÷Þ êáé óõíå÷ßæåôáé ç åîõðçñÝôçóç ôùí áéôÞóåùí.
Ç öïñÜ êßíçóçò ôçò êåöáëÞò ðáñáìÝíåé ßäéá êáôÜ ôçí åîõðçñÝôçóç ôùí
áéôÞóåùí.

• LOOK êáé C-LOOK. Áðïôåëïýí âåëôéþóåéò ôùí ìåèüäùí SCAN êáé C-


SCAN, áíôéóôïß÷ùò. Óôéò ìåèüäïõò áõôÝò ç êåöáëÞ äåí ìåôáêéíåßôáé ìÝ÷ñé
ôÝëïõò, áëëÜ óôáìáôÜ óôçí ôåëåõôáßá áßôçóç ðïõ áíáöÝñåôáé óôç ìåãá-
ëýôåñç Þ ìéêñüôåñç Üôñáêôï. Ìå ôïí ôñüðï áõôü áðïöåýãåôáé ç Üóêïðç
êßíçóç ôçò êåöáëÞò üôáí äåí õðÜñ÷ïõí Üëëåò áéôÞóåéò ãéá åîõðçñÝôçóç
ðñïò ôç óõãêåêñéìÝíç êáôåýèõíóç.

11.6 Óýíïøç
Ç öõóéêÞ ïñãÜíùóç ôùí äåäïìÝíùí ôçò âÜóçò ó÷åôßæåôáé Üìåóá ìå ôçí áðü-
äïóç ôïõ óõóôÞìáôïò. Ãéá ôï ëüãï áõôü, ðïëëÝò áðü ôéò ëåéôïõñãßåò äéá÷åßñéóçò
áñ÷åßùí ðïõ ðáñáäïóéáêÜ âñßóêïíôáé óôç äéêáéïäïóßá ôïõ ëåéôïõñãéêïý óõóôÞ-
ìáôïò åêôåëïýíôáé áðü ôï ÓÄÂÄ.
Ôá äåäïìÝíá ôçò âÜóç áðïèçêåýïíôáé óå áñ÷åßá. ÊÜèå áñ÷åßï áðïôåëåßôáé
áðü Ýíá óýíïëï åêôÜóåùí. Ç Ýêôáóç óôç óõíÝ÷åéá äéá÷ùñßæåôáé óå óåëßäåò, êáé
ôÝëïò êÜèå óåëßäá ðåñéÝ÷åé Ýíá óýíïëï åããñáöþí óôáèåñïý Þ ìåôáâëçôïý ìÞêïõò,
áíáëüãùò ìå ôçí õëïðïßçóç.
Ç ìåôáöïñÜ äåäïìÝíùí áðü êáé ðñïò ôç äåõôåñåýïõóá ìíÞìç ðñáãìáôïðïéåß-
ôáé ìå ôç âïÞèåéá ôùí áðïìïíùôéêþí ìíçìþí. Ç áðïìïíùôéêÞ ìíÞìç åßíáé Ýíá
ôìÞìá ôçò êýñéáò ìíÞìçò ôïõ óõóôÞìáôïò ôï ïðïßï ÷ñçóéìïðïéåßôáé áðïêëåéóôéêÜ
áðü ôï ÓÄÂÄ. Ç áíáæÞôçóç ôùí äåäïìÝíùí ðñáãìáôïðïéåßôáé ðñþôá óôç áðïìï-
íùôéêÞ ìíÞìç, êáé ìüíï óå ðåñßðôùóç áðïôõ÷ßáò ðñáãìáôïðïéåßôáé ðñïóðÝëáóç
óôç äåõôåñåýïõóá ìíÞìç. Ìå ôïí ôñüðï áõôü ï ÷ñüíïò åðåîåñãáóßáò ìåéþíåôáé
äñáóôéêÜ, êáèþò ìßá ðñïóðÝëáóç óôï Ý÷åé áñêåôÜ ìåãáëýôåñï ÷ñïíéêü êüóôïò
óå ó÷Ýóç ìå ìßá ðñïóðÝëáóç óôçí êýñéá ìíÞìç.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 283

ÅêôåíÝóôåñåò áíáëýóåéò ó÷åôéêÜ ìå ôá èÝìáôá ðïõ áíáðôý÷èçêáí óôï êåöÜ-


ëáéï áõôü ìðïñïýí íá âñåèïýí óôá âéâëßá [Salzberg 1988], [Wiederhold 1983] êáé
[Wiederhold 1987].

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


11.1. ¸íá áñ÷åßï ðåñéÝ÷åé n = 20.000 óôáèåñïý ìÞêïõò åããñáöÝò ìå äåäïìÝíá
öïéôçôþí. Ç ãñáììïãñÜöçóç êÜèå åããñáöÞò Ý÷åé ùò åîÞò: ¼íïìá (30 bytes),
ÁÅÌ (4 bytes), Äéåýèõíóç (40 bytes), ÔçëÝöùíï (8 bytes), Çìåñ ãÝííçóçò (8
bytes), Öýëëï (1 byte), Çìåñ åããñáöÞò (8 bytes), Ôñüðïò åéóáãùãÞò (1 byte).
Åðßóçò áðáéôåßôáé Ýíá åðéðëÝïí byte ùò óçìÜäé äéáãñáöÞò. Íá õðïëïãéóèåß:

• ôï ìÞêïò ôçò åããñáöÞò, R.

• ï ðáñÜãïíôáò ïìáäïðïßçóçò, Bf r, êáé ôï ðëÞèïò ôùí óåëßäùí, b, áí ôï


ëåéôïõñãéêü óýóôçìá åßíáé Windows êáé äåí åðéôñÝðåôáé ìßá åããñáöÞ íá
åêôåßíåôáé óå äýï óåëßäåò.

• ï ìÝóïò êåíüò ÷þñïò óôï ôÝëïò ôçò óåëßäáò.

11.2. Ãéá ôá äåäïìÝíá ôçò ðñïçãïýìåíçò Üóêçóçò, íá âñåèåß ôï éäáíéêü ðëÞèïò


ôïìÝùí ðïõ èá ðñÝðåé íá óõãêñïôïýí Ýíáí êÜäï, þóôå íá åëá÷éóôïðïéçèåß ç ðï-
óüôçôá ôïõ êåíïý ÷þñïõ. Åßíáé ôï áðïôÝëåóìá ñåáëéóôéêü;

11.3. Ãéá ôá äåäïìÝíá ôçò ¢óêçóçò 11.1, íá õðïëïãéóèåß ï ìÝóïò ÷ñüíïò ðïõ
áðáéôåßôáé ãéá

• ôç óåéñéáêÞ áíáæÞôçóç üëùí ôùí åããñáöþí (óÜñùóç) ôïõ áñ÷åßïõ.

• ôç äõáäéêÞ áíáæÞôçóç ìßá åããñáöÞò, áí ôï áñ÷åßï åßíáé ôáîéíïìçìÝíï ùò


ðñïò ôï ÁÅÌ.

Íá õðïôåèåß, åðßóçò, üôé ÷ñçóéìïðïéåßôáé äßóêïò ìå ôá ÷áñáêôçñéóôéêÜ ðïõ áíáöÝ-


ñïíôáé óôï ðáñüí êåöÜëáéï. Ôé Üëëåò õðïèÝóåéò åßíáé áíáãêáßï íá êÜíåôå ãéá
íá åðéëýóåôå ôçí Üóêçóç;

11.4. ¸óôù üôé ìüíï 90% ôùí öïéôçôþí Ý÷ïõí ôçëÝöùíï, åíþ ëåßðïõí ôá äå-
äïìÝíá ó÷åôéêÜ ìå ôç äéåýèõíóç êáé ôïí ôñüðï åéóáãùãÞò ãéá ôï 60% êáé ôï
80% ôùí öïéôçôþí, áíôéóôïß÷ùò. Íá åðéëõèåß êáé ðÜëé ç ¢óêçóç 11.1 èåùñþíôáò
åããñáöÝò ìåôáâëçôïý ìÞêïõò êáé ÷ñçóéìïðïéþíôáò ôç ìÝèïäï ôùí äéá÷ùñéóôþí.
Ðïéü ìÝãåèïò ãéá ôïõò äéá÷ùñéóôÝò èåùñåßôáé ëïãéêü;
284 ÊåöÜëáéï 11. ÖõóéêÞ ÏñãÜíùóç ÂÜóåùí ÄåäïìÝíùí

11.5. Íá âñåèåß ï âÝëôéóôïò ðáñÜãïíôáò ïìáäïðïßçóçò áí ôï ìÝãåèïò ôçò óåëßäáò


åßíáé 256 bytes, ôï ìÝãåèïò ôïõ êÜäïõ åßíáé áðü 2560-3840 bytes êáé ôï ìÞêïò ôçò
åããñáöÞò åßíáé 64, 72, 91, 240 Þ 400 bytes.

11.6. Äßíåôáé áñ÷åßï ìå 30.000 åããñáöÝò ôùí 100 bytes. ÊÜèå ìÞíá ãßíïíôáé
1000 ôõ÷áßåò ðñïóðåëÜóåéò ãéá ìßá åããñáöÞ êáé ìßá óåéñéáêÞ ðñïóðÝëáóç üëïõ
ôïõ áñ÷åßïõ êáôÜ êÜäïõò. Áí óôçí êýñéá ìíÞìç õðÜñ÷åé Ýíáò ðßíáêáò ìå ôéò
äéåõèýíóåéò ôùí êÜäùí ðïõ ðåñéÝ÷ïõí ôéò åããñáöÝò, ôüôå ðïéü åßíáé ôï âÝëôéóôï
ìÝãåèïò ôïõ êÜäïõ êáé ðüóï åßíáé ôï áíôßóôïé÷ï êüóôïò ãéá ôéò ëåéôïõñãßåò áõôÝò;
Íá âñåèïýí ïé áíôßóôïé÷åò ôéìÝò üôáí óå ìßá óåéñéáêÞ áíÜãíùóç áíôéóôïé÷ïýí
10.000 ôõ÷áßåò ðñïóðåëÜóåéò.

11.7. ¸óôù üôé ôï ðñïçãïýìåíï áñ÷åßï åßíáé áðïèçêåõìÝíï óå äßóêï ÉÂÌ 3380.
Ðïéü åßíáé ôï êüóôïò ãéá ôçí áíÜãíùóç ïëüêëçñïõ ôïõ áñ÷åßïõ êáôÜ åããñáöÝò
êáé êáôÜ óåëßäåò üôáí ï êÜäïò áðïôåëåßôáé áðü 9600, 19.200 êáé 48.000 bytes.

11.8. Íá âñåèåß ï ÷ñüíïò ðïõ áðáéôåßôáé áðü ìßá óõóêåõÞ ÉÂÌ 3380, ãéá ìßá
ôñïðïðïßçóç áñ÷åßïõ ðïõ áðáñôßæåôáé áðü 10.000 óåëßäåò ôùí 2.400 bytes, áí ï
êÜäïò áðïôåëåßôáé áðü 1, 2 Þ 10 óåëßäåò êáé ôÝëïò áí ï êÜäïò Ý÷åé ôï ìÝãåèïò
åíüò ôïìÝá.

11.9. Íá áíáöåñèïýí ôá ðëåïíåêôÞìáôá/ìåéïíåêôÞìáôá ôçò ðåñßðôùóçò üðïõ


åããñáöÝò áðü äýï äéáöïñåôéêïýò ðßíáêåò áðïèçêåýïíôáé óå Ýíá áñ÷åßï ìå åã-
ãñáöÝò ìåôáâëçôïý ìÞêïõò.

11.10. Íá áíáöåñèïýí ïé ïìïéüôçôåò/äéáöïñÝò êáé ôá ðëåïíåêôÞìáôá/ìåéïíåêôÞìáôá


ôïõ single êáé ôïõ double buffering.

11.11. Ôé óçìáßíåé ç Ýêöñáóç üôé ìßá óåëßäá åßíáé êáñöùìÝíç óôç äåîáìåíÞ
ìíçìþí; Ðïéüò åßíáé õðåýèõíïò ãéá ôï êÜñöùìá êáé ôï îåêÜñöùìá ôùí óåëßäùí;

11.12. Íá åîçãçèåß ôï öáéíüìåíï ôçò óåéñéáêÞò ðëçììýñáò.

11.13. ¸óôù üôé ìßá óõóêåõÞ äßóêùí CD ðñüêåéôáé ìå ôç âïÞèåéá ìßáò äéåðáöÞò
íá óõíäåèåß ìå Ýíá ìéêñïûðïëïãéóôÞ ãéá áðïèÞêåõóç áñ÷åßùí. ¸íáò äßóêïò CD
áðïèçêåýåé 60 ëåðôÜ ìïõóéêÞò, åíþ ï êáôÜëïãïò ôïõ ìðïñåß íá ðåñéÝ÷åé ìÝ÷ñé
99 åéóüäïõò. Ç ôá÷ýôçôá ðåñéóôñïöÞò åßíáé 500 óôñïöÝò/ëåðôü êáé ç ôá÷ýôçôá
ìåôáöïñÜò äåäïìÝíùí åßíáé 100 bytes/ms. Ç êåöáëÞ áíÜãíùóçò/áðïèÞêåõóçò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 285

êéíåßôáé ìå ãñáììéêÞ ôá÷ýôçôá êáé áðáéôïýíôáé 3 äåõôåñüëåðôá ãéá íá óáñùèåß


üëç ç åðéöÜíåéá. Íá âñåèïýí ïé õðüëïéðïé ðáñÜãïíôåò ðïõ ÷áñáêôçñßæïõí ôï
äßóêï.

11.14. ¸íá áñ÷åßï áðïôåëåßôáé áðü 4 óåëßäåò (Ó1, Ó2, Ó3 êáé Ó4). ÕðïèÝóôå üôé
ç áðïìïíùôéêÞ ìíÞìç ìðïñåß íá áðïèçêåýóåé 3 óåëßäåò. Áí ðñáãìáôïðïéçèïýí
ïé áêüëïõèåò áíáöïñÝò óåëßäùí Ó1, Ó1, Ó2, Ó3, Ó4, Ó1, Ó2, Ó4, Ó4, Ó1, Ó4, Ó4,
Ó3, Ó2, Ó1, Ó3, Ó4 íá äþóåôå ôá ðåñéå÷üìåíá ôçò áðïìïíùôéêÞò ìíÞìçò óå êÜèå
áíáöïñÜ èåùñþíôáò üôé ï áëãüñéèìïò áíôéêáôÜóôáóçò óåëßäùí åßíáé ï LRU.

11.15. Íá åðáíáëÜâåôå ôçí Üóêçóç 11.14 èåùñþíôáò üôé ï áëãüñéèìïò áíôéêáôÜ-


óôáóçò óåëßäùí åßíáé á) ï FIFO êáé â) ï MRU.
12
ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

Ï êáôÜëïãïò åßíáé ìßá äïìÞ ðïõ õëïðïéåß ìßá óõíÜñôçóç: ôï üñéóìá ôçò óõíÜñ-
ôçóçò åßíáé ç ôéìÞ ôïõ êëåéäéïý, åíþ ç ôéìÞ ôçò óõíÜñôçóçò åßíáé ï áñéèìüò ôçò
åããñáöÞò. ÄçëáäÞ, åßíáé äõíáôü ìå ôç âïÞèåéá ôïõ êáôáëüãïõ íá âñåèåß ï áñéè-
ìüò (Þ ç èÝóç) ìßáò åããñáöÞò ìå âÜóç ôï êëåéäß ôçò. ¸íáò Üëëïò ôñüðïò ãéá ôçí
åðßôåõîç áõôïý ôïõ óêïðïý åßíáé ç ìÝèïäïò ôïõ êáôáêåñìáôéóìïý, ðïõ äåí áðáé-
ôåß ìßá óõãêåêñéìÝíç äïìÞ üðùò ï êáôÜëïãïò, áëëÜ õðïöÝñåé áðü ôï ðñüâëçìá
ôùí óõíùíõìéþí.
ÃåíéêÜ, ï êáôÜëïãïò åßíáé áíåîÜñôçôïò áðü ôï áñ÷åßï, êáé ëïãéêÜ áëëÜ êáé
öõóéêÜ. Ôï êüóôïò áíáæÞôçóçò óôïí êáôÜëïãï åßíáé ó÷åôéêÜ ìéêñü, êáé óå êÜèå
ðåñßðôùóç ðïëý ìéêñüôåñï áðü ôï êüóôïò áíáæÞôçóçò ïëüêëçñçò ôçò åããñáöÞò
êáô’ åõèåßáí ìÝóá óôï áñ÷åßï. Óå Ýíáí êáôÜëïãï ôï êëåéäß ìðïñåß íá åßíáé Ýíá
ìüíï ÷áñáêôçñéóôéêü, Ýíá ôìÞìá ÷áñáêôçñéóôéêïý Þ óõíäõáóìüò ðïëëþí ÷áñá-
êôçñéóôéêþí. ÃåíéêÜ, ôï ìÞêïò ìßáò åããñáöÞò êáôáëüãïõ ðñÝðåé íá êñáôçèåß üóï
ôï äõíáôü ìéêñüôåñï. Óå áðëïýò êáôáëüãïõò êÜèå åããñáöÞ áðïôåëåßôáé áðü ôçí
ôéìÞ ôïõ êëåéäéïý (Þ áíôéóôïß÷ùò, ôéìÝò êëåéäéþí) êáé ôïí áíôßóôïé÷ï äåßêôç. Ìé-
êñÝò åããñáöÝò óôïí êáôÜëïãï åðéôñÝðïõí ìåãáëýôåñï óõíôåëåóôÞ ïìáäïðïßçóçò,
ïðüôå Ýôóé åðéôõã÷Üíåôáé ïéêïíïìßá óôï ÷þñï áðïèÞêåõóçò êáé óôï ÷ñüíï åéóü-
äïõ/åîüäïõ ôùí äåäïìÝíùí. Åðßóçò, ìðïñåß íá õðÜñ÷åé ìüíï Ýíáò êáôÜëïãïò,

287
288 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

áëëÜ ìðïñåß íá õðÜñ÷ïõí êáé ðåñéóóüôåñïé ôïõ åíüò êáôÜëïãïé ãéá Ýíá óõãêå-
êñéìÝíï áñ÷åßï. Óôï Ó÷Þìá 12.1 ðáñïõóéÜæåôáé äéáãñáììáôéêÜ ìßá ðåñßðôùóç
áñ÷åßïõ ìå äýï äéáöïñåôéêïýò áíåîÜñôçôïõò êáôáëüãïõò.

1ïò êáôÜëïãïò 2ïò êáôÜëïãïò

? ?
Êýñéï áñ÷åßï äåäïìÝíùí

Ó÷Þìá 12.1: Áñ÷åßï ìå äýï áíåîÜñôçôïõò êáôáëüãïõò.

Ï áðëïýóôåñïò ôýðïò êáôáëüãïõ åßíáé ï ãñáììéêüò êáôÜëïãïò (linear index),


üðùò ãéá ðáñÜäåéãìá ï êáôÜëïãïò åíüò âéâëßïõ. ¸íáò ãñáììéêüò êáôÜëïãïò ðå-
ñéÝ÷åé ôéò åããñáöÝò ôáîéíïìçìÝíåò êáôÜ áýîïõóá ôÜîç ÷ùñßò êáìßá Üëëç äüìçóç.
¸íáò ôÝôïéïò êáôÜëïãïò ìðïñåß íá ðñïóðåëáóèåß óåéñéáêÜ áëëÜ åßíáé áðïôå-
ëåóìáôéêüôåñï áí ðñïóðåëáóèåß ìå äõáäéêÞ áíáæÞôçóç Þ áíáæÞôçóç Üëìáôïò.
ÌÜëéóôá, ç ôåëåõôáßá ìÝèïäïò ÷ñçóéìïðïéåßôáé ãéá ôçí éêáíïðïßçóç åñùôçìÜ-
ôùí ðåñéï÷Þò. Ï êáôÜëïãïò áõôüò äéáôçñåß üëá ôá ìåéïíåêôÞìáôá ôùí óåéñéáêþí
áñ÷åßùí, äçëáäÞ ìç áðïôåëåóìáôéêÝò ìåèüäïõò åéóáãùãÞò, äéáãñáöÞò êáé áíá-
äéïñãÜíùóçò.
Äåíäñéêüò êáôÜëïãïò (tree index) åßíáé Ýíáò êáôÜëïãïò ìå óõãêåêñéìÝíç éå-
ñáñ÷ßá åðéðÝäùí. Ç ñßæá ôïõ êáôáëüãïõ äåéêôïäïôåß ðñïò ôï äåýôåñï åðßðåäï
ôïõ êáôáëüãïõ ê.ï.ê., åíþ ôï ôåëåõôáßï åðßðåäï (äçëáäÞ ôá öýëëá) ðåñéÝ÷ïõí
äåßêôåò ðñïò ôï áñ÷åßï ôùí äåäïìÝíùí. Ïé äåíäñéêïß êáôÜëïãïé (Þ áëëéþò äÝí-
äñá) äéáêñßíïíôáé óå äýï åßäç: ôá åôåñïãåíÞ (heterogeneous) êáé ôá ïìïãåíÞ
(homogeneous) äÝíäñá. ÅôåñïãåíÞ åßíáé ôá äÝíäñá ðïõ ðåñéÝ÷ïõí ìüíï Ýíá åß-
äïò äåéêôþí óå êÜèå êüìâï, áëëÜ ïé äåßêôåò áõôïß åßíáé äéáöïñåôéêïß ãéá ôïõò
êüìâïõò ôùí ìåóáßùí åðéðÝäùí áð’ üôé ãéá ôï ôåëåõôáßï åðßðåäï. ÁíôéèÝôùò óôá
ïìïãåíÞ äÝíäñá õðÜñ÷ïõí äýï åßäç äåéêôþí, ïé äåßêôåò äåäïìÝíùí (data point-
ers) êáé ïé äåíäñéêïß äåßêôåò (tree pointers). Óôá ìåóáßá åðßðåäá êáé ïé äýï
ôýðïé åßíáé åíåñãïß, åíþ óôï ôåëåõôáßï åðßðåäï åßíáé åíåñãïß ìüíï ïé äåßêôåò
äåäïìÝíùí.

Äåíäñéêüò Êëåéäß Äåíäñéêüò Äåíäñéêüò Êëåéäß Äåíäñéêüò


···
äåßêôçò Äåßêôçò äåßêôçò äåßêôçò Äåßêôçò äåßêôçò

Ó÷Þìá 12.2: Êüìâïò ïìïãåíïýò äÝíäñïõ.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 289

Óôï Ó÷Þìá 12.2 ðáñïõóéÜæåôáé ç åóùôåñéêÞ äïìÞ åíüò êüìâïõ ïìïãåíïýò


äÝíäñïõ, üðïõ ïé äåíäñéêïß äåßêôåò âñßóêïíôáé ìåôáîý ôùí êëåéäéþí, åíþ ïé äåß-
êôåò äåäïìÝíùí âñßóêïíôáé êÜôù áðü ôá êëåéäéÜ. ¼ðùò öáßíåôáé, ãéá êÜèå êëåéäß
õðÜñ÷åé Ýíáò äåíäñéêüò äåßêôçò, Ýíáò äåßêôçò äåäïìÝíùí êáé åðéðëÝïí Ýíáò áêüìç
äåíäñéêüò äåßêôçò áíÜ êüìâï. Ï ðñþôïò äåíäñéêüò äåßêôçò êáôåõèýíåé ðñïò
êëåéäéÜ ðïõ åßíáé ìéêñüôåñá áðü ôï ðñþôï êëåéäß ôïõ êüìâïõ, åíþ ï ôåëåõôáßïò
äåíäñéêüò äåßêôçò êáôåõèýíåé ðñïò êëåéäéÜ ìåãáëýôåñá áðü ôï ôåëåõôáßï êëåéäß
ôïõ êüìâïõ. ÊÜèå Üëëïò äåíäñéêüò äåßêôçò êáôåõèýíåé ðñïò êÜðïéïí êüìâï ôïõ
äÝíäñïõ ìå ôéìÝò êëåéäéþí ìåôáîý ôùí ôéìþí ôùí êëåéäéþí ðïõ ðåñéêëåßïõí ôï
äåßêôç. Óå ðåñßðôùóç åðßóêåøçò ôïõ êüìâïõ, üðïõ ðñáãìáôéêÜ âñßóêåôáé áðï-
èçêåõìÝíï ôï áíáæçôïýìåíï êëåéäß, ôüôå ï äåßêôçò äåäïìÝíùí êáôåõèýíåé ðñïò
ôçí áíôßóôïé÷ç åããñáöÞ.
12
´ Q
´ ? Q
´
´ Q
Q
5 52
¢ ?A ¢ ?A
¢ A ¢ A
4 10 19 56
? ? ? ?

Ó÷Þìá 12.3: ÏìïãåíÝò äÝíäñï.

Óôá Ó÷Þìáôá 12.3 êáé 12.4 ðáñïõóéÜæïíôáé äýï ðáñáäåßãìáôá ïìïãåíïýò êáé
åôåñïãåíïýò äÝíäñïõ, áíôéóôïß÷ùò. Ìßá âáóéêÞ äéáöïñÜ ìåôáîý åôåñïãåíþí êáé
ïìïãåíþí äÝíäñùí åßíáé ôï ýøïò ôïõ äÝíäñïõ, ðïõ Ý÷åé ùò áðïôÝëåóìá äéáöïñå-
ôéêÞ åðßäïóç óôçí áíáæÞôçóç. Ç ìÝóç ôéìÞ ðñïóðåëÜóåùí ãéá áíáæÞôçóç åßíáé
ìåãáëýôåñç ãéá ôá åôåñïãåíÞ äÝíäñá, ãéáôß ç áíáæÞôçóç öèÜíåé ïðùóäÞðïôå
ìÝ÷ñé ôá öýëëá ôïõ äÝíäñïõ. Ôï ó÷åôéêü ðëåïíÝêôçìá ôùí ïìïãåíþí äÝíäñùí
áíôéóôáèìßæåôáé áðü ôïí åðéðëÝïí áðáéôïýìåíï ÷þñï ãéá äåßêôåò.
"v
ÃÃÃZ``
à à ÃÃà "" Z `````
à à " Z ```
ÃÃÃ
v "
v Zv ``v
½¯ LZ ½¯ Z
L ½ ¯ Z
L ½¯ LZ
½¯ L Z ½¯ L Z ½¯ L Z ½¯ L Z
½ ¯ L Z ½ ¯ L Z ½ ¯ L Z ½ ¯ L Z
C ¶¤S
¶¤S C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤S
C ¶¤CS ¶¤S
C ¶¤S
C ¶¤CS

Ó÷Þìá 12.4: ÅôåñïãåíÝò äÝíäñï.

Óôï äÝíäñï ôïõ Ó÷Þìáôïò 12.4 ï ëüãïò äéáêëÜäùóçò (branching factor, fanout)
åßíáé m=4, ïðüôå ôï äÝíäñï óôá 3 åðßðåäá ôïõ ìðïñåß íá áðïèçêåýóåé 64 êëåéäéÜ.
290 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

ÃåíéêÜ, ðñïêýðôåé üôé ôï ýøïò, h, ôïõ êáôáëüãïõ ðïõ äåéêôïäïôåß n åããñáöÝò


åßíáé:
h ≥ logm n
¸íá ïìïãåíÝò äÝíäñï ìå ýøïò 3 êáé ëüãï äéáêëÜäùóçò 4 ìðïñåß íá áðïèçêåýóåé
63 êëåéäéÜ. ÃåíéêÜ óå Ýíá ïìïãåíÝò äÝíäñï ìå h åðßðåäá èá õðÜñ÷ïõí (m − 1)
êëåéäéÜ óôç ñßæá, m(m − 1) êëåéäéÜ óôï äåýôåñï åðßðåäï, m2 (m − 1) êëåéäéÜ óôï
ôñßôï ê.ï.ê. ¢ñá, ôï ðëÞèïò ôùí åããñáöþí ðïõ äåéêôïäïôïýíôáé èá åßíáé:

(m0 + m1 + m2 + ... + mh−1 ) × (m − 1) = mh − 1


êáé óõíåðþò:
n ≤ mh − 1 ⇐⇒ h ≥ logm (n + 1)
Ôï äõóêïëüôåñï ìÝñïò ôçò äéá÷åßñéóçò åíüò êáôáëüãïõ åßíáé ç åéóáãùãÞ êáé
ç äéáãñáöÞ ÷ùñßò íá êáôáóôåß áíáãêáßá ç ãåíéêÞ áíáäéïñãÜíùóç ôïõ êáôáëü-
ãïõ. Ãéá êÜèå åßäïò êáôáëüãïõ õðÜñ÷ïõí ïé ó÷åôéêïß áëãüñéèìïé. Óôç óõíÝ÷åéá
èá åîåôáóèåß ìßá ïéêïãÝíåéá äÝíäñùí, ôá ëåãüìåíá Â-äÝíäñá, ðïõ åßíáé ç âá-
óéêÞ äïìÞ ãéá êáôáëüãïõò. Ôá äÝíäñá ôçò ïéêïãÝíåéáò áõôÞò ÷ñçóéìïðïéïýíôáé
óå üëá ôá åìðïñéêÜ ÓÄÂÄ, üðùò ãéá ðáñÜäåéãìá óôï óýóôçìá SQL Server ôçò
Microsoft, óôï óýóôçìá ôçò Oracle, óôï DB2 ôçò ÉÂÌ, ê.ë.ð. Ïé äïìÝò èá ðá-
ñïõóéáóôïýí ìå ðáñáäåßãìáôá êáé èá ãßíåé áíÜëõóç ãéá ôá ÷ñïíéêÜ êüóôç ôùí
äéáöüñùí äéåñãáóéþí.

12.1 Â-äÝíäñá
Ç äïìÞ áõôÞ ðñïôÜèçêå áðü ôïõò Bayer êáé McCreight ôï 1972 [Bayer 1972].
ËÝãåôáé üôé ç ïíïìáóßá ôïõ äÝíäñïõ, ôï "Â", ðñïÝñ÷åôáé áðü ôï åðþíõìï ôïõ
Bayer, Þ áðü ôçí ïíïìáóßá ôçò åôáéñåßáò Boeing üðïõ åñãáæüôáí ï Âayer, Þ
áêüìç üôé ðñïÝñ÷åôáé áðü ôç ëÝîç balanced (éóïæõãéóìÝíï). Ôï âÝâáéï åßíáé üôé
äåí ðñïÝñ÷åôáé áðü ôç ëÝîç binary (äõáäéêü).
Ôï Â-äÝíäñï åßíáé ìßá ìåñéêÞ ðåñßðôùóç ôïõ äÝíäñïõ áíáæÞôçóçò m äñüìùí
(m-way search tree). Óýìöùíá ìå Ýíáí ïñéóìü, ùò Â-äÝíäñï ôÜîçò m ïñßæåôáé
ôï ïìïãåíÝò äÝíäñï ìå ôá åîÞò ÷áñáêôçñéóôéêÜ:

• ç ñßæá Ý÷åé ôï åëÜ÷éóôï äýï ðáéäéÜ,

• ïé åóùôåñéêïß êüìâïé (åêôüò ôçò ñßæáò) Ý÷ïõí ôï åëÜ÷éóôï dm/2e ðáéäéÜ êáé
ôï ìÝãéóôï m ðáéäéÜ,

• Ýíáò åóùôåñéêüò êüìâïò ìå k êëåéäéÜ Ý÷åé k+1 ðáéäéÜ, êáé


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 291

• ïé åîùôåñéêïß êüìâïé âñßóêïíôáé óôï ßäéï åðßðåäï.


Óôç âéâëéïãñáößá óõíáíôÜôáé Ýíáò ðáñüìïéïò ïñéóìüò ôïõ Â-äÝíäñïõ âáèìïý
(degree) d ðïõ äéáöÝñåé áðü ôïí ðñïçãïýìåíï ìüíï óôï äåýôåñï óêÝëïò. ÄçëáäÞ,
ïé åóùôåñéêïß êüìâïé, åêôüò ôçò ñßæáò, ðåñéÝ÷ïõí ôï åëÜ÷éóôï d êëåéäéÜ êáé ôï
ìÝãéóôï 2d êëåéäéÜ. Ðñïöáíþò, ï äåýôåñïò ïñéóìüò åßíáé ìåñéêÞ ðåñßðôùóç ôïõ
ðñþôïõ. Ôï Â-äÝíäñï ôïõ Ó÷Þìáôïò 12.5 åßíáé ôñßôçò ôÜîçò Þ ðñþôïõ âáèìïý.

A 5
© HH
©© H
B 3 G 11

¢¢ AA ¢¢ AA
D 1 2 E 4 Z 8 9 H 14 16

Ó÷Þìá 12.5: Â-äÝíäñï ôÜîçò 3.

Ï ðáñÜãïíôáò ÷ñçóéìïðïßçóçò ÷þñïõ (storage utilization factor), U , ïñßæåôáé


ùò ï ëüãïò ôïõ áñéèìïý ôùí áðïèçêåõìÝíùí êëåéäéþí ðñïò ôï óýíïëï ôùí äéáèÝ-
óéìùí èÝóåùí. Áðü ôïí ïñéóìü öáßíåôáé üôé ç åëÜ÷éóôç êáé ç ìÝãéóôç ôéìÞ ôïõ
ðáñÜãïíôá ÷ñçóéìïðïßçóçò ÷þñïõ åßíáé ðåñßðïõ Umin =50% êáé Umax =100%,
áíôéóôïß÷ùò. Ó÷åôéêÜ ìå ôçí åýñåóç ôçò ìÝóçò ôéìÞò ôïõ ðáñÜãïíôá áõôïý Ý÷ïõí
åìöáíéóèåß áñêåôÝò äçìïóéåýóåéò óôç âéâëéïãñáößá ðïõ åßíáé üìùò áðü ëßãï ùò
ðïëý óýíèåôåò. Áêïëïõèåß ìßá áðëïõóôåõôéêÞ áëëÜ ðñïóåããéóôéêÞ ìÝèïäïò ðïõ
äüèçêå áðü ôïí Leung [Leung 1984]. Áí n ôï ðëÞèïò ôùí êëåéäéþí êáé nod ôï
ðëÞèïò ôùí êüìâùí ôïõ äÝíäñïõ, ôüôå áðü ôï äåýôåñï ïñéóìü ôïõ Â-äÝíäñïõ (ðïõ
äåí èá ÷ñçóéìïðïéçèåß Üëëï óôç óõíÝ÷åéá) éó÷ýåé:
n
U =
2d × nod
Ãéá ìßá óôáèåñÞ ôéìÞ ôïõ n éó÷ýåé:
n 1
E[U ] = × E[ ]
2d nod
åíþ ãéá ôçí åëÜ÷éóôç êáé ôç ìÝãéóôç ôéìÞ ôïõ nod ðñïêýðôåé áíôéóôïß÷ùò:
n n
nodmax = nodmin =
2d × Umin 2d
ÕðïèÝôïíôáò ðñïóåããéóôéêÜ ìßá óõíå÷Þ ïìïéüìïñöç êáôáíïìÞ óôï äéÜóôçìá ôé-
ìþí [nodmin , nodmax ] ðñïêýðôåé:
Z nodmax
1 1 1 2d Umin 1
E[ ] = dnod = × ln
nod nodmax − nodmin nodmin nod n × (1 − Umin ) Umin
292 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

Áíôéêáèéóôþíôáò Umin =50% ðñïêýðôåé üôé [U ] = ln 2 ≈ 69%. Óçìåéþíåôáé


üôé áñãüôåñá êáôÜ ôçí åîÝôáóç Üëëùí äïìþí èá ãßíåé êáé ðÜëé áíáöïñÜ óôçí
áíÜëõóç áõôÞ. Ãéá ôï ëüãï áõôü, ôï Umin èåùñÞèçêå ùò ðáñÜìåôñïò.
Áðü ôïí ïñéóìü ôïõ Â-äÝíäñïõ åßíáé åýêïëï íá õðïëïãéóèåß ç ìÝóç ôéìÞ ôùí
ðñïóðåëÜóåùí ãéá åðéôõ÷Þ áíáæÞôçóç óôç ÷åéñüôåñç ðåñßðôùóç. ¸óôù, ëïéðüí,
Ýíá Â-äÝíäñï ôÜîçò m êáé ýøïõò h. Ï åëÜ÷éóôïò áñéèìüò êëåéäéþí ðïõ ìðïñåß
íá ðåñéÝ÷åé åßíáé:
l m mh−1
n = 2× −1
2
åíþ ï ìÝãéóôïò áñéèìüò êëåéäéþí ðïõ ìðïñåß íá ðåñéÝ÷åé åßíáé:

n = mh − 1

Óõíåðþò ç ôéìÞ ôïõ ýøïõò åíüò Â-äÝíäñïõ ðåñéêëåßåôáé ìåôáîý ôùí ïñßùí:
n+1
logm (n + 1) ≤ h ≤ 1 + logm/2
2
Ç åýñåóç ôçò âÝëôéóôçò ôéìÞò ôïõ m åßíáé Ýíá åíäéáöÝñïí ðñüâëçìá. Óå
ìßá ðñáêôéêÞ õëïðïßçóç åíüò êáôáëüãïõ ìå ôç äïìÞ ôïõ Â-äÝíäñïõ ïé åããñáöÝò
èá áðïôåëïýíôáé áðü ìßá ôñéÜäá ðåäßùí: ôï êëåéäß, ôï äåíäñéêü äåßêôç êáé ôï
äåßêôç ôùí äåäïìÝíùí (áãíïþíôáò ôï ìÝãåèïò ôïõ åðéðëÝïí äåíäñéêïý äåßêôç
áíÜ êüìâï). ÅðïìÝíùò óõíïëéêÜ ôï ìÝãåèïò åíüò êüìâïõ åßíáé m × (K + 2P )
bytes ðåñßðïõ. Ï ÷ñüíïò ãéá ôçí áíÜãíùóç åíüò ôõ÷áßïõ êüìâïõ åßíáé:
K + 2P
s+r+m×
t0
ÄïèÝíôïò ôïõ êüìâïõ ç åýñåóç åíüò êëåéäéïý ìðïñåß íá ãßíåé ìå äõáäéêÞ áíáæÞ-
ôçóç óå ÷ñüíï:
c × log m + d
üðïõ ôá c êáé d åßíáé óôáèåñÝò. Áðëïðïéþíôáò ôïí ôýðï áõôü ðñïêýðôåé üôé óôç
÷åéñüôåñç ðåñßðôùóç ôï ýøïò åßíáé:

log n+1
2

log m
üðïõ ôï e óôáèåñÜ. ÅðïìÝíùò ï ìÝãéóôïò ÷ñüíïò áíáæÞôçóçò äßíåôáé áðü ôïí
ôýðï: Ã !
n+1 s + r + d + m×(K+2P
t0
)
e × log × +c
2 log m
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 293

ðïõ åëá÷éóôïðïéåßôáé áí åëá÷éóôïðïéçèåß ôï Üèñïéóìá ôçò áãêýëçò. ¸ôóé óå


êÜèå ðåñßðôùóç ìå áíôéêáôÜóôáóç ôùí ðáñáìÝôñùí êáé ÷ñçóéìïðïéþíôáò ìßá
õðïëïãéóôéêÞ ìÝèïäï ëáìâÜíåôáé ôï âÝëôéóôï m. Áí ðñïêýøåé ìÝãåèïò êüìâïõ
ìåãáëýôåñï áðü ôï ìÝãåèïò ôùí áðïìïíùôéêþí ìíçìþí, ôüôå èåùñåßôáé ç ôéìÞ ôïõ
m ðïõ äåí õðåñâáßíåé ôï ìÝãåèïò ôùí ìíçìþí.

12.1.1 EéóáãùãÞ óå Â-äÝíäñï


Ìå âÜóç ôï äÝíäñï ôïõ Ó÷Þìáôïò 12.5 èá åîåôáóèïýí ïé äéÜöïñåò äéåñãáóßåò.
¸óôù üôé åéóÜãåôáé ôï êëåéäß 10, ðïõ êáôåõèýíåôáé óôïí êüìâï Æ. Ï ïñéóìüò
ôïõ äÝíäñïõ ðáñáâéÜæåôáé, óõíåðþò ðñÝðåé íá äçìéïõñãçèåß íÝïò êüìâïò üðùò
öáßíåôáé óôï Ó÷Þìá 12.6á. Ôï ìåóáßï áðü ôá êëåéäéÜ 8, 9 êáé 10 (äçëáäÞ ôï 9)
Ý÷åé áíÝâåé óôïí ðáôñéêü êüìâï, åíþ ôï 8 åðáíá-áðïèçêåýåôáé óôïí êüìâï Æ êáé
ôï 10 áðïèçêåýåôáé óôï íÝï êüìâï È.
Ç åéóáãùãÞ ôïõ êëåéäéïý 6 óôï äÝíäñï ôïõ Ó÷Þìáôïò 12.6á ãßíåôáé åýêïëá
êáé ãé’ áõôü ôï íÝï ó÷Þìá ðáñáëåßðåôáé. Óôç óõíÝ÷åéá, Ýóôù üôé åéóÜãåôáé ôï
êëåéäß 7, ïðüôå ðñïêýðôåé ôï Ó÷Þìá 12.6â. ¼ðùò êáé êáôÜ ôçí åéóáãùãÞ ôïõ
10, Ýôóé êáé åäþ ôï ìåóáßï êëåéäß (äçëáäÞ ôï 7) ðñï÷ùñåß Ýíá åðßðåäï ðñïò ôç
ñßæá. ¼ìùò êáé óôï íÝï êüìâï ðáñáâéÜæåôáé ï ïñéóìüò ôïõ Â-äÝíäñïõ. Óõíåðþò
ðñÝðåé áíáäñïìéêÜ íá åöáñìïóèåß ç ßäéá äéáäéêáóßá. ¸ôóé, ôï ìåóáßï êëåéäß
(äçëáäÞ ôï 9) áíåâáßíåé êáé ðÜëé Ýíá åðßðåäï êáé áðïèçêåýåôáé óôç ñßæá. ÊáôÜ
ðáñüìïéï ôñüðï ìå ôçí åéóáãùãÞ ôùí êëåéäéþí 15 êáé 12 ðñïêýðôåé ôï Ó÷Þìá
12.6ã. Áí, üìùò, óôï óçìåßï áõôü åéóá÷èåß ôï êëåéäß 13, ôüôå ìåôÜ áðü äéáäï÷éêÝò
äéáóðÜóåéò êüìâùí èá äéáóðáóèåß êáé ç ñßæá. ¸ôóé ðñïêýðôåé ôï Ó÷Þìá 12.6ä.
Ç åñþôçóç åßíáé ðüóï óõ÷íÜ ãßíåôáé äéÜóðáóç êüìâùí. Åßíáé öáíåñü üôé ç
ðñþôç äéÜóðáóç (äçëáäÞ, ç äéÜóðáóç ôçò áñ÷éêÞò ñßæáò) äçìéïõñãåß äýï íÝïõò
êüìâïõò, åíþ ïé åðüìåíåò äçìéïõñãïýí áðü Ýíá íÝï êüìâï ìüíï ìÝ÷ñé êáé h − 1
íÝïõò êüìâïõò óôçí ðåñßðôùóç ðïõ ç äéÜóðáóç ìåôáöåñèåß ìÝ÷ñé ôç ñßæá (üðïõ
h åßíáé ôï ýøïò ôïõ äÝíäñïõ). ¸ôóé, üôáí ôï äÝíäñï Ý÷åé Þäç p êüìâïõò, Ý÷ïõí
óõìâåß p − 2 äéáóðÜóåéò. ÊÜèå êüìâïò Ý÷åé ôï åëÜ÷éóôï dm/2e − 1 êëåéäéÜ, åêôüò
áðü ôç ñßæá ðïõ Ý÷åé ôï åëÜ÷éóôï Ýíá êëåéäß. Óõíåðþò Ýíá äÝíäñï ìå p êüìâïõò
ðåñéÝ÷åé ôï åëÜ÷éóôï 1 + (p − 1) × (dm/2e − 1) êëåéäéÜ. Ç ðéèáíüôçôá íá óõìâåß
äéÜóðáóç êáôÜ ôçí åéóáãùãÞ åíüò íÝïõ êëåéäéïý åßíáé ìéêñüôåñç áðü:
p−2
1 + (p − 1) × (dm/2e − 1)
ðïõ åßíáé ëéãüôåñï áðü 1 äéÜóðáóç áíÜ dm/2e−1 åéóáãùãÝò êëåéäéþí. Áóõìðôù-
ôéêÜ (äçëáäÞ, ãéá ìåãÜëï p) ãéá m=10 êáé m=20 ç ðéèáíüôçôá äéÜóðáóçò åßíáé
0.25 êáé 0.204, áíôéóôïß÷ùò. ÄçëáäÞ, üóï ìåãáëýôåñç åßíáé ç ôÜîç ôïõ äÝíäñïõ,
ôüóï ìéêñáßíåé áõôÞ ç ðéèáíüôçôá.
294 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

(á) åéóáãùãÞ 10 Á 5
» » H
»»» HH
 3 à 9 11
© HH
¢¢ AA ©© H
Ä 1 2 Å 4 Æ 8 È 10 Ç 14 16

(â) åéóáãùãÞ 6,7 Á 5 9


ÃÃ Ã ```
Ã
à ÃÃà ```
`
`
 3 à 7 Ë 11

¢¢ AA ¢¢ AA ¢¢ AA
Ä 1 2 Å 4 Æ 6 É 8 È 10 Ç 14 16

(ã) åéóáãùãÞ 15,12 Á 5 9


( ```
(((( ´´ ```
((((
( ´ `
`
 3 à 7 Ë 11 15
© HH
¢¢ AA ¢¢ AA ©© H
Ä 1 2 Å 4 Æ 6 É 8 È 10 Ç 12 14 Ê 16

(ä) åéóáãùãÞ 13 Î 9
» XX
»» XXX
»»» X
Á 5 Í 13
© H © H
©© HH ©© HH
 3 à 7 Ê 11 Ì 15

¢¢ AA ¢¢ AA ¢¢ AA ¢¢ AA
Ä 1 2 Å 4 Æ 6 É 8 È 10 Ç 12 Ë 14 Ê 16

Ó÷Þìá 12.6: Â-äÝíäñï ìå äéáäï÷éêÝò åéóáãùãÝò.

Ç ðñïçãïýìåíç áíÜëõóç åßíáé ðñïóåããéóôéêÞ. ÅðáêñéâÞò áíÜëõóç ôùí ÷á-


ñáêôçñéóôéêþí ôïõ Â-äÝíäñïõ åßíáé åîáéñåôéêÜ ðïëýðëïêç êáé ìÝ÷ñé óôéãìÞò ðå-
ñéïñßæåôáé óôá êáôþôåñá åðßðåäá. Ç áíÜëõóç áõôÞ ëÝãåôáé áíÜëõóç êñáóðÝäïõ
(fringe analysis) êáé ÷ñçóéìïðïéåß áëõóßäåò Markov. Ç óçìáíôéêüôåñç äçìïóßåõóç
óôç âéâëéïãñáößá åìöáíßóèçêå ôï 1982 óôçí åñãáóßá [Eisenbarth 1982], üðïõ Ý÷åé
áðïäåé÷èåß üôé ç ðéèáíüôçôá íá óõìâåß ìßá Þ ðåñéóóüôåñåò äéáóðÜóåéò êáôÜ ôçí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 295

åéóáãùãÞ ôïõ (n+1)-ïóôïý êëåéäéïý åßíáé:


1
+ O(m−2 )
(m − 1) × ln 2
12.1.2 ÄéáãñáöÞ óå Â-äÝíäñï
Ç äéáãñáöÞ óå Â-äÝíäñï åßíáé óáöþò äõóêïëüôåñç äéåñãáóßá óå ó÷Ýóç ìå ôçí
åéóáãùãÞ. Áõôü ïöåßëåôáé óôï ãåãïíüò üôé ìå ôç äéáãñáöÞ åíüò êëåéäéïý ìðï-
ñåß íá ðáñáâéáóèåß ï ïñéóìüò ôïõ Â-äÝíäñïõ êáé íá ÷ñåéáóèåß óõã÷þíåõóç äýï
ãåéôïíéêþí êüìâùí. ¸óôù, ëïéðüí, üôé äßíåôáé Ýíá Â-äÝíäñï ôÜîçò 5, üðùò óôï
Ó÷Þìá 12.7á.
Áñ÷éêÜ ðáñïõóéÜæïíôáé ôñåéò ðåñéðôþóåéò üðïõ ôï êëåéäß ðïõ ðñÝðåé íá äéá-
ãñáöåß áíÞêåé óå åîùôåñéêü êüìâï. Ãéá ðáñÜäåéãìá, Ýóôù üôé ðñÝðåé íá äéá-
ãñáöåß ôï êëåéäß 26. ÁõôÞ ç ðåñßðôùóç åßíáé ç áðëïýóôåñç êáé åêôåëåßôáé ÷ùñßò
åðéðëÝïí äéåñãáóßåò, åðåéäÞ ï ïñéóìüò äåí äéáôáñÜóóåôáé.

Á 10
(á)
³ ³ ```
```
³³
³ `
`
 3 6 à 13 17 20 23
¡ Q ³³ ´ aa
¡ Q
Q ³³ ´
³ ´ @
@ aa
1 2 4 5 7 8 9 11 12 14 15 16 18 19 21 22 24 25 26
Ä Å Æ Ç È É Ê Ë

(â) äéáãñáöÞ 26,5 Á 10


³ ³ PP
³³
³ PP
P
 3 7 à 13 17 20 23
© ¢ P
¡
¡ @
@ ©© ¢ \\ HHHPPP
P
1 2 4 6 8 9 11 12 14 15 16 18 19 21 22 24 25
Ä Å Æ Ç È É Ê Ë

(ã) äéáãñáöÞ 2 Á 13
³³ PP
³³
³ PP
P
 7 10 à 17 20 23
H ´ H
%% ee HH ´
´ @
@ HH
1 3 4 6 8 9 11 12 14 15 16 18 19 21 22 24 25
Ä Æ Ç È É Ê Ë

Ó÷Þìá 12.7: Â-äÝíäñï ìå äéáäï÷éêÝò äéáãñáöÝò.


296 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

(ä) äéáãñáöÞ 17 A 13
!! PP
!! PP
P
B 7 10 Ã 16 20 23
© ©
©© @
@ ©© ¡
¡ @
@
1 3 4 6 8 9 11 12 14 15 18 19 21 22 24 25
Ä Æ H È I K Ë

(å) äéáãñáöÞ 10 A 13
!! PP
!! PP
P
B 6 9 Ã 16 20 23
" @ © ¡
"
" @ ©© ¡ @
@
1 3 4 7 8 11 12 14 15 18 19 21 22 24 25
Ä Z H È I K Ë

(óô) äéáãñáöÞ 13 A 16
XX
!! XXX
!!
B 6 12 Ã 20 23
" @ ¡ @
"
" @ ¡ @
1 3 4 7 8 9 11 14 15 18 19 21 22 24 25
Ä Z È I K Ë

(æ) äéáãñáöÞ 20 B 6 12 16 23
à XXX
ÃÃÃ ©© HH
ÃÃÃ © H XXX
1 3 4 7 8 9 11 14 15 18 19 21 22 24 25
Ä Z È I Ë

Ó÷Þìá 12.7: Â-äÝíäñï ìå äéáäï÷éêÝò äéáãñáöÝò (óõíÝ÷åéá).

¸óôù üôé óôç óõíÝ÷åéá ðñÝðåé íá äéáãñáöåß ôï êëåéäß 5. ÐéèáíÞ äéáãñáöÞ


ôïõ êëåéäéïý 5 èá äéáôÜñáæå ôïí ïñéóìü, åðåéäÞ ôåëéêÜ óôïí êüìâï èá Ýìåíå
ìüíï Ýíá êëåéäß, äçëáäÞ ëéãüôåñï áðü dm/2e − 1 = 2. Óôçí ðåñßðôùóç áõôÞ
åëÝã÷åôáé áí ï ãåéôïíéêüò óôá äåîéÜ êüìâïò Æ Ý÷åé ðåñéóóüôåñï áðü 2 êëåéäéÜ.
ÁõôÞ ç óõíèÞêç óõìâáßíåé, áöïý ï êüìâïò Æ Ý÷åé ôñßá êëåéäéÜ. Åðßóçò, öáßíåôáé
üôé ï ðáôñéêüò êüìâïò ôïõ êüìâïõ Å (äçëáäÞ, ï Â) ðåñéÝ÷åé ôï êëåéäß 6 ðïõ
áðïôåëåß ôï áìÝóùò ìåãáëýôåñï êëåéäß áðü ôï 5. ¢ñá åßíáé äõíáôü íá äéáãñáöåß
ôï êëåéäß 5 ìå ôáõôü÷ñïíç Üíïäï ôïõ êëåéäéïý 7 áðü ôïí êüìâï Æ óôïí êüìâï Â,
êáé êÜèïäï ôïõ êëåéäéïý 6 áðü ôïí êüìâï  óôïí êüìâï Å. ¸ôóé ðñïêýðôåé ôï Â-
äÝíäñï ôïõ Ó÷Þìáôïò 12.7â. Áí ï äåîéÜ ãåéôïíéêüò êüìâïò äåí åß÷å ðåñéóóüôåñï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 297

áðü 2 êüìâïõò, ôüôå ç ðñïçãïýìåíç äéáäéêáóßá èá õëïðïéïýíôáí ìå ôï ãåéôïíéêü


áñéóôåñÜ êüìâï êáé ôï áíôßóôïé÷ï êëåéäß ôïõ ðáôñéêïý êüìâïõ.
Áí äåí ìðïñåß íá âñåèåß ðáñüìïéá ëýóç ïýôå áðü äåîéÜ ïýôå áðü áñéóôåñÜ,
ôüôå ðñÝðåé íá ãßíåé óõã÷þíåõóç. Ç óõã÷þíåõóç áöïñÜ óå ôñåéò êüìâïõò, üðïõ ïé
äýï åßíáé áðü ôï êáôþôåñï åðßðåäï êáé ï Ýíáò áðü ôï áíþôåñï. Ãéá ðáñÜäåéãìá,
Ýóôù üôé ðñÝðåé íá äéáãñáöåß ôï êëåéäß 2. Ç äéáäéêáóßá áêïëïõèåß ôá åîÞò
âÞìáôá. Ðñþôïí, ôï êëåéäß 1 ðïõ áðïìÝíåé óôïí êüìâï Ä, ôï êëåéäß 3 ôïõ êüìâïõ Â
êáé ôá êëåéäéÜ 4 êáé 6 ôïõ êüìâïõ Å óõã÷ùíåýïíôáé êáé áðïèçêåýïíôáé óôïí êüìâï
Ä. Ï êüìâïò Å äåí Ý÷åé ðëÝïí êáíÝíá êëåéäß êáé áðïäßäåôáé óôï óýóôçìá, åíþ
ï êüìâïò  Ý÷åé ìüíï Ýíá. Ôï äåýôåñï âÞìá åßíáé ðáñüìïéï ðñïò ôç äéáäéêáóßá
ðïõ áíáðôý÷èçêå êáôÜ ôç äéáãñáöÞ ôïõ êëåéäéïý 26. ÄçëáäÞ, åëÝã÷åôáé áí ï
äåîéüò ãåßôïíáò ôïõ êüìâïõ  (äçëáäÞ, o Ã) Ý÷åé ðåñéóóüôåñï áðü 2 êëåéäéÜ.
Áõôü ðñÜãìáôé óõìâáßíåé, ïðüôå ôï êëåéäß 13 ôïõ êüìâïõ à áíåâáßíåé êáôÜ Ýíá
åðßðåäï êáé öèÜíåé óôç ñßæá, åíþ ôï êëåéäß ôçò ñßæáò ðïõ åßíáé áìÝóùò ìåãáëýôåñï
áðü ôï 7 (äçëáäÞ, ôï 10) êáôåâáßíåé óôïí êüìâï Â. Óôï Ó÷Þìá 12.7ã öáßíåôáé ç
ôåëéêÞ ìïñöÞ ôïõ Â-äÝíäñï ìåôÜ ôç äéáãñáöÞ ôïõ êëåéäéïý 2.
ÌÝ÷ñé ôþñá åîåôÜóèçêáí ðåñéðôþóåéò äéáãñáöÞò üðïõ ôï êëåéäß åßíáé áðï-
èçêåõìÝíï óå ôåñìáôéêü êüìâï. Ç äéáäéêáóßá äéáãñáöÞò êëåéäéïý ðïõ åßíáé áðï-
èçêåõìÝíï óå åóùôåñéêü êüìâï åßíáé äéáöïñåôéêÞ. Óôçí ðåñßðôùóç áõôÞ ðñÝðåé
íá åíôïðéóèåß ôï ëåîéêïãñáöéêÜ áìÝóùò ðñïçãïýìåíï êëåéäß þóôå íá êáôáëÜâåé
ôç èÝóç ôïõ äéáãñáöüìåíïõ. Êáé ðÜëé äéáêñßíïíôáé ìåñéêÝò ðåñéðôþóåéò.
Ãéá ðáñÜäåéãìá, Ýóôù üôé áðü ôï äÝíäñï ôïõ Ó÷Þìáôïò 12.7ã ðñÝðåé íá äéá-
ãñáöåß ôï êëåéäß 17. ÅëÝã÷åôáé, ëïéðüí, áí ï êüìâïò È ðåñéÝ÷åé ðåñéóóüôåñï áðü
2 êëåéäéÜ. Ç óõíèÞêç áõôÞ ðñÜãìáôé óõìâáßíåé êáé óõíåðþò ôï êëåéäß 16 áíÝñ-
÷åôáé êáôÜ Ýíá åðßðåäï óôïí êüìâï Ã, þóôå íá ìç äéáôáñá÷èåß ï ïñéóìüò ôïõ
Â-äÝíäñïõ. Öáßíåôáé üôé áõôÞ ç ðåñßðôùóç äéáãñáöÞò áíôéìåôùðßóèçêå åýêïëá
"ðáñåíï÷ëþíôáò" ìüíï Ýíáí êüìâï ðáéäß ôïõ êüìâïõ, üðïõ áíÞêå ôï êëåéäß ðïõ
äéáãñÜöçêå. Ç íÝá ìïñöÞ ôïõ äÝíäñïõ ðáñïõóéÜæåôáé óôï Ó÷Þìá 12.7ä.
¸óôù üôé óôç óõíÝ÷åéá ðñÝðåé íá äéáãñáöåß ôï êëåéäß 10. Áí üìùò áíÝëèåé ôï
êëåéäß 9 ãéá íá êáëýøåé ôï êåíü, ôüôå ðëÝïí äåí éó÷ýåé ï ïñéóìüò ãéá ôïí êüìâï Æ,
ãéáôß ðåñéÝ÷åé ìüíï ôï êëåéäß 8. Ç óõíÝ÷åéá áêïëïõèåß êáôÜ ôá ãíùóôÜ. ÄçëáäÞ,
åëÝã÷åôáé ðñïò ôá äåîéÜ ï êüìâïò Ç, áëëÜ áõôüò äåí ìðïñåß íá óõíåéóöÝñåé.
Ï ðñïò ôá áñéóôåñÜ êüìâïò Ä Ý÷åé ðåñéóóüôåñï áðü 2 êëåéäéÜ. ¢ñá, ìå Üíïäï
ôïõ êëåéäéïý 6 áðü ôïí êüìâï Ä óôïí êüìâï  êáé êÜèïäï ôïõ êëåéäéïý 7 áðü
ôïí êüìâï  óôïí êüìâï Æ ôï äÝíäñï êáôáëÞãåé óôçí ôåëéêÞ ìïñöÞ ôïõ Ó÷Þìá-
ôïò 12.7å. ¸ôóé, óôçí ðåñßðôùóç áõôÞ õðåéóÞëèáí ôñåéò êüìâïé óôç äéáäéêáóßá
áðïêáôÜóôáóçò ôçò éóïññïðßáò.
ÁðïìÝíåé íá åîåôáóèïýí äýï Üëëåò ðåñéðôþóåéò äéáãñáöÞò. ¸óôù üôé ðñÝðåé
298 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

íá äéáãñáöåß ôï êëåéäß 13 ôçò ñßæáò. Óôçí ðåñßðôùóç áõôÞ ôï áìÝóùò ìéêñüôåñï


êëåéäß 12 ëáìâÜíåé ôç èÝóç ôïõ 13 óôç ñßæá êáé óõíåðþò ôï ðñüâëçìá ìåôáöÝ-
ñåôáé óôïí êüìâï Ç, ðïõ áðïìÝíåé ìüíï ìå ôï êëåéäß 11. Ï êüìâïò Ç äåí Ý÷åé
äåîéü áäåëöü, åíþ ï áñéóôåñüò ôïõ áäåëöüò Æ äåí ìðïñåß íá óõíåéóöÝñåé, ãéáôß
Ý÷åé ìüíï äýï êëåéäéÜ. Óå åðüìåíï âÞìá, ôï ðåñéå÷üìåíï ôùí êüìâùí Æ êáé Ç
ìáæß ìå ôï êëåéäß áðü ôïí êüìâï Â, ðïõ áíÞêåé óôï ìÝóï ôùí äéáóôçìÜôùí ôéìþí
ôùí äýï êüìâùí (äçëáäÞ, ôï 9) óõã÷ùíåýïíôáé óå Ýíáí êüìâï êáé áðïèçêåýïíôáé
óôç èÝóç ôïõ êüìâïõ Æ. ¢ñá, ôï ðñüâëçìá Ý÷åé ìåôáöåñèåß óôïí êüìâï  ðïõ
ðåñéÝ÷åé ìüíï ôï êëåéäß 6. Ç ëýóç ðëÝïí ìðïñåß íá äïèåß ìüíï áðü ôïí áäåëöü
ôïõ êüìâïõ Â, äçëáäÞ ôïí êüìâï Ã. Óôïí êüìâï  êáôÝñ÷åôáé ôï êëåéäß 12 (ðïõ
ðñïçãïõìÝíùò åß÷å áíÝëèåé óôç ñßæá), åíþ ôï êëåéäß 16 ôïõ êüìâïõ à áíÝñ÷åôáé
óôç ñßæá. Ôáõôü÷ñïíá üìùò, åðåéäÞ áëëÜæïõí ôá äéáóôÞìáôá ôéìþí ðïõ äåéêôï-
äïôïýíôáé áðü ôç ñßæá, ï êüìâïò È äåí äåéêôïäïôåßôáé ðëÝïí áðü ôïí êüìâï Ã
áëëÜ áðü ôïí êüìâï Â. Ç ôåëéêÞ ìïñöÞ ôïõ äÝíäñïõ ðáñïõóéÜæåôáé óôï Ó÷Þìá
12.7óô.
Ç ôåëåõôáßá ðåñßðôùóç äéáãñáöÞò åßíáé åêåßíç ðïõ ðñïêáëåß ôçí åëÜôôùóç
ôïõ ýøïõò ôïõ äÝíäñïõ. ¸óôù, ëïéðüí, üôé ðñÝðåé íá äéáãñáöåß ôï êëåéäß 20.
Áñ÷éêÜ ôï êëåéäß 19 áíåâáßíåé áðü ôïí êüìâï É óôïí êüìâï à ãéá íá êáëýøåé ôï
êåíü. Ôï ðñüâëçìá ðëÝïí âñßóêåôáé óôïí êüìâï É ðïõ ðåñéÝ÷åé ìüíï ôï êëåéäß
18. ¼ðùò êáé ðñéí, ôï ðåñéå÷üìåíï ôùí êüìâùí É êáé Ê ìáæß ìå ôï êëåéäß 19,
ðïõ âñßóêåôáé ìåôáîý ôùí äéáóôçìÜôùí ôéìþí ôùí êüìâùí áõôþí, áðïèçêåýïíôáé
óôïí êüìâï É, åíþ ï êüìâïò Ê áðïäßäåôáé êáé ðÜëé óôï óýóôçìá. Ôþñá ðëÝïí ôï
ðñüâëçìá âñßóêåôáé óôïí êüìâï à ðïõ Ý÷åé ìüíï ôï êëåéäß 23. Áêüìç ï áñéóôåñüò
áäåëöüò êáé ç ñßæá Ý÷ïõí ôïí åëÜ÷éóôï áñéèìü êëåéäéþí. ¢ñá, èá ãßíåé íÝá
óõã÷þíåõóç. ¸ôóé, ôï ðåñéå÷üìåíï ôùí êüìâùí Á,  êáé à áðïèçêåýåôáé óôïí
êüìâï  êáé ïé Üëëïé áðïäßäïíôáé óôï óýóôçìá. Ç ôåëéêÞ ìïñöÞ ôïõ äÝíäñïõ
ðáñïõóéÜæåôáé óôï Ó÷Þìá 12.7æ, üðïõ öáßíåôáé üôé ôï ýøïò ôïõ äÝíäñïõ áðü ôñßá
Ýãéíå äýï.
¼óïí áöïñÜ óôçí åðßäïóç ôçò äéáãñáöÞò áíáöÝñåôáé üôé óôç ÷åéñüôåñç ðåñß-
ðôùóç (üðïõ ìßá äéáãñáöÞ èá ðñïêáëÝóåé óõã÷þíåõóç ôçò ñßæáò) èá ãßíïõí 2h−1
ðñïóðåëÜóåéò êüìâùí ãéá áíÜãíùóç êáé h+1 ðñïóðåëÜóåéò ãéá áðïèÞêåõóç.
Ùóôüóï, áõôÞ ç ðåñßðôùóç äåí åßíáé éäéáßôåñá ðéèáíÞ. ÊáôÜ ìÝóï üñï áðáéôåß-
ôáé ç áíÜãíùóç h+1+1/k êüìâùí êáé ç åðáíá-áðïèÞêåõóç 4+2/k êüìâùí, üðïõ
k = dm/2e − 1.
Åßíáé åõíüçôï üôé áðü ôç ìïñöÞ ôïõ Â-äÝíäñïõ åîáñôÜôáé ï óõíïëéêüò êáôá-
ëáìâáíüìåíïò ÷þñïò (êáé åðïìÝíùò ï ðáñÜãïíôáò ÷ñçóéìïðïßçóçò ÷þñïõ) êáé
ç åðßäïóç êáôÜ ôçí åðéôõ÷Þ Þ ôçí áíåðéôõ÷Þ áíáæÞôçóç. Óôï Ó÷Þìá 12.8 ðáñïõ-
óéÜæïíôáé äýï äéáêñéôÝò äïìÝò Â-äÝíäñùí ôÜîçò 3 ìå 5 êëåéäéÜ. Ïé äýï áõôÝò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 299

@¡ @¡@¡
¡@ ¡@¡@
¢ @ " Q
" Q
¢ @ " Q
@¡@¡ @¡@¡ @¡ @¡ @¡
¡@¡@ ¡@¡@ ¡@ ¡@ ¡@

Ó÷Þìá 12.8: ÏìÜäá ÂÔ(3,5).

åêäï÷Ýò êáôáëáìâÜíïõí 3 êáé 4 êüìâïõò áíôéóôïß÷ùò, Ý÷ïõí ðáñÜãïíôá ÷ñç-


óéìïðïßçóçò ÷þñïõ 5/6 êáé 5/8 áíôéóôïß÷ùò, åíþ ç ìÝóç ôéìÞ ðñïóðåëÜóåùí ãéá
åðéôõ÷Þ áíáæÞôçóç åßíáé 9/5 êáé 8/5, áíôéóôïß÷ùò. Åßíáé åýêïëï íá äéáðéóôþóïõìå
üôé äåí ìðïñïýí íá õðÜñîïõí Üëëá ðáñüìïéá äÝíäñá ôÜîçò 3 ìå 5 êëåéäéÜ åêôüò
áðü áõôÜ ôá äýï äÝíäñá. Ïé äýï áõôÝò äéáêñéôÝò äïìÝò áðïôåëïýí ìßá êëÜóç ðïõ
óõìâïëßæåôáé ìå ÂÔ(3,5). Óôï Ó÷Þìá 12.9 ðáñïõóéÜæåôáé ç êëÜóç ÂÔ(3,15) ðïõ
áðïôåëåßôáé áðü 10 äéáêñéôÝò äïìÝò.

ÄÝíäñï ÌÝóç ôéìÞ Êáôáëáìâáíü-


ðñïóðåëÜóåùí ìåíïò ÷þñïò
á 3,27 15
â 2,60 9
ã 2,40 12
ä 2,53 10
å 2,53 10
óô 2,60 9
æ 2,47 11
ç 2,47 11
è 2,47 11
é 2,27 11

Ðßíáêáò 12.1: Óýãêñéóç äïìþí ôçò êëÜóçò ÂÔ(3,15).

Óôïí Ðßíáêá 12.1 ãéá êÜèå äïìÞ äßíïíôáé ç ìÝóç ôéìÞ ðñïóðåëÜóåùí ãéá åðé-
ôõ÷Þ áíáæÞôçóç, êáèþò êáé ï óõíïëéêüò êáôáëáìâáíüìåíïò ÷þñïò, áíôéóôïß÷ùò.
Áðü ôïí ðßíáêá áõôüí ðñïêýðôåé ï åîÞò êáíüíáò:

ôá âÝëôéóôá ùò ðñïò ôï ÷þñï Â-äÝíäñá åßíáé ðåñßðïõ âÝëôéóôá ùò ðñïò ôï ÷ñüíï,


ôá âÝëôéóôá ùò ðñïò ôï ÷ñüíï Â-äÝíäñá åßíáé ðåñßðïõ ÷åßñéóôá ùò ðñïò ôï ÷þñï.

Ç äéáðßóôùóç áõôÞ äéêáéïëïãåßôáé áðü ôï ãåãïíüò üôé ïé äïìÝò (â) êáé (óô), ðïõ
êáôáëáìâÜíïõí ôïí åëÜ÷éóôï ÷þñï ôùí 9 êüìâùí, Ý÷ïõí ÷ñïíéêü êüóôïò 2,60 ðïõ
åßíáé ìüëéò 8,3% ðåñéóóüôåñï áðü ôçí åëÜ÷éóôç ôéìÞ ôùí 2,40 ðñïóðåëÜóåùí.
300 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

v
© © HH
© HH
© © Hv
(á) v v (â)
¡@ ¡@ ´Q
¡ @ ´ Q
@ ¡ ´ Q
¡
v @v ¡
v @v ´
v Qv
¢A ¢A ¢A ¢A ¡@ ¡@
¢ A ¢ A ¢ A ¢ A ¡ @ ¡ @
¢
v Av v
¢ Av ¢
v Av v
¢ Av v
¡ v @v ¡
v v @v
¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@ ¡@
(ã) !v
! PP ©HH
v (ä)
! P ©
!! PP
PP © HH
v!
! v Pv v©
© v Hv
¢A ¡@ ¡@ ¢A ¢A ¢A
¢ A ¡ @ ¡ @ ¢ A ¢ A ¢ A
¢v Av v
¡ v @v v
¡ v @v ¢
v Av ¢
v Av ¢
v Av
¡ @ ¡ @ ¡@ ¡ @ ¡ @ ¡ @ ¡ @ ¡ @ ¡@ ¡ @ ¡ @ ¡ @ ¡@ ¡@
(å) v v (óô)
© ©HH ´Q
© HH ´ Q
´ Q

© v Hv ´
v Qv
¢A ¢A ¢A ¡@ ¡@
¢ A ¢ A ¢ A ¡ @ ¡ @
¢v Av ¢v Av ¢v Av ¡
v v @v ¡
v v @v
¡ @ ¡ @ ¡@ ¡@ ¡ @ ¡ @ ¡@ ¡ @ ¡ @ ¡@ ¡@ ¡@
(æ) v v (ç)
©a
aa ©a
aa
©© aa ©© aa

© v aav v©
© v aav
¢A ¢A ¡@ ¢A ¢A ¡@
¢ A ¢ A ¡ @ ¢ A ¢ A ¡ @
¢v Av ¢v Av ¡
v v @v ¢
v Av v
¢ Av v
¡ v @v
¡ @ ¡ @ ¡@ ¡ @ ¡ @ ¡ @ ¡ @ ¡@ ¡ @ ¡ @ ¡ @ ¡@ ¡@ ¡ @
(è) v
a v
a (é)
©© aa
a
©© aa
a

©
v©© v
aa
av ©
v ©© v
aa
av
¢A ¢A ¡@ ¢A ¢A ¡@
¢ A ¢ A ¡ @ ¢ A ¢ A ¡ @
¢v Av ¢v Av ¡
v v @v ¢
v Av ¢
v Av ¡
v v @v
¡ @ ¡ @ ¡@ ¡@ ¡ @ ¡ @ ¡ @ ¡@ ¡@ ¡ @ ¡ @ ¡@ ¡@ ¡@

Ó÷Þìá 12.9: ÏìÜäá ÂÔ(3,15).

ÁíôéèÝôùò ç äïìÞ (ã), ðïõ åßíáé ç êáëýôåñç áðü ðëåõñÜò ÷ñüíïõ, êáôáëáìâÜíåé
12 êüìâïõò ðïõ åßíáé 33,3% ðåñéóóüôåñï áðü ôçí åëÜ÷éóôç ôéìÞ ôùí 9 êüìâùí.
Ç äéáðßóôùóç áõôÞ áíÞêåé óôïõò Rosenberg êáé Snyder (1981) [Rosenberg 1981].
ÂÝâáéá, ç ìïñöÞ åíüò Â-äÝíäñïõ ðñïóäéïñßæåôáé áðü ôç óåéñÜ Üöéîçò ôùí
êëåéäéþí êáé äåí åßíáé äõíáôüí íá ãßíåé åðéëïãÞ åê ìÝñïõò ôïõ ÷ñÞóôç. Ùóôüóï,
ôï ðñáêôéêü óõìðÝñáóìá åßíáé üôé ìå ìßá Üëëç ðïëéôéêÞ äéá÷åßñéóçò ôùí äéá-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 301

óðÜóåùí/óõã÷ùíåýóåùí ìðïñåß íá õðÜñîïõí äéáöïñïðïéÞóåéò óôçí åðßäïóç ôçò


äïìÞò. Óôç óõíÝ÷åéá ðáñïõóéÜæåôáé ìßá ôÝôïéá ìÝèïäïò.

12.2 Â∗ -äÝíäñá
Ç ìÝóç ôéìÞ ôïõ ðáñÜãïíôá ÷ñçóéìïðïßçóçò ÷þñïõ (Å[U ]=69%) åíüò Â-äÝíäñïõ
åßíáé äõíáôü íá áõîçèåß áí êáôÜ ôçí åéóáãùãÞ åöáñìoóèåß ç åîÞò ôå÷íéêÞ. Áí
êÜðïéá åéóáãùãÞ ðñïêáëÝóåé õðåñ÷åßëéóç, ôüôå íá ìçí ãßíåé äéÜóðáóç (ïðüôå èá
ðñïêýøïõí äýï êüìâïé ìå ðåñéåêôéêüôçôá 50%), áëëÜ êÜðïéá êëåéäéÜ íá áðï-
èçêåõèïýí óå Ýíá ãåéôïíéêü êüìâï ðïõ äåí åßíáé 100% ðëÞñçò. Áí êáé ïé äýï
ãåéôïíéêïß êüìâïé åßíáé ðëÞñåéò, ôüôå äéáóðþíôáé äýï êüìâïé (ï õðåñ÷åéëßæùí êáé
Ýíáò ãåéôïíéêüò) êáé ðñïêýðôïõí ôñåéò. Ìå áõôü ôï ôÝ÷íáóìá ç åëÜ÷éóôç ôéìÞ
ôïõ ðáñÜãïíôá ÷ñçóéìïðïßçóçò ÷þñïõ êáèßóôáôáé Umin =67%, åíþ ìå áíôéêáôÜ-
óôáóç óôïí ôýðï ôïõ Leung) ðñïêýðôåé ìÝóç ôéìÞ Å[U ]=81%. ¢ëëï ðëåïíÝêôçìá
åßíáé üôé ç áíáæÞôçóç ãßíåôáé ôá÷ýôåñá, åíþ ôï ìåéïíÝêôçìá åßíáé ôï áõîçìÝíï
êüóôïò êáôÜ ôéò åéóáãùãÝò êáé ôéò äéáãñáöÝò. Ôá Â∗ -äÝíäñá, ðïõ ðñïôÜèçêáí
åðßóçò áðü ôïõò Bayer êáé McCreight, ïñßæïíôáé êáô’ áíáëïãßá ðñïò ôá Â-äÝíäñá.
Óýìöùíá ìå Ýíáí ïñéóìü ôï Â∗ -äÝíäñï ôÜîçò m åßíáé Ýíá äÝíäñï áíáæÞôçóçò
m äñüìùí üðïõ:

• ç ñßæá Ý÷åé ôï åëÜ÷éóôï äýï ðáéäéÜ êáé ôï ìÝãéóôï 2d 2m−2


3 e+1 ðáéäéÜ,

• ïé åóùôåñéêïß êüìâïé, åêôüò ôçò ñßæáò, Ý÷ïõí ôï åëÜ÷éóôï d 2m−2


3 e+1 ðáéäéÜ
êáé ôï ìÝãéóôï m ðáéäéÜ,

• Ýíáò åóùôåñéêüò êüìâïò ìå k êëåéäéÜ Ý÷åé k+1 ðáéäéÜ, êáé

• ïé åîùôåñéêïß êüìâïé âñßóêïíôáé óôï ßäéï åðßðåäï.

Ôá ðñÜãìáôá öùôßæïíôáé êáëýôåñá ìå ôá Ó÷Þìáôá 12.10 êáé 12.11, üðïõ ðá-


ñïõóéÜæåôáé áíôéóôïß÷ùò ç áëëçëïõ÷ßá äéáäï÷éêþí åéóáãùãþí óå Ýíá Â-äÝíäñï
êáé óå Ýíá Â∗ -äÝíäñï ôÜîçò 7. Óå Ýíá Â-äÝíäñï ôÜîçò 7 ï åëÜ÷éóôïò êáé ï ìÝãé-
óôïò áñéèìüò ðáéäéþí ôçò ñßæáò åíüò åßíáé 2 êáé 7 áíôéóôïß÷ùò, åíþ ï åëÜ÷éóôïò
êáé ï ìÝãéóôïò áñéèìüò ðáéäéþí ôùí åóùôåñéêþí êüìâùí åßíáé 4 êáé 7 áíôéóôïß÷ùò.
Ãéá Ýíá Â∗ -äÝíäñï ôÜîçò 7 éó÷ýïõí ôá åîÞò: ï åëÜ÷éóôïò êáé ï ìÝãéóôïò áñéè-
ìüò ðáéäéþí ôçò ñßæáò åßíáé 2 êáé 9 áíôéóôïß÷ùò, åíþ ï åëÜ÷éóôïò êáé ï ìÝãéóôïò
áñéèìüò ðáéäéþí ôùí åóùôåñéêþí êüìâùí åßíáé 5 êáé 7 áíôéóôïß÷ùò.
¸óôù üôé óôï Â-äÝíäñï Ý÷ïõí Þäç åéóá÷èåß 6 êëåéäéÜ ðïõ óôåãÜæïíôáé óôç
ñßæá. Ìå ôçí åéóáãùãÞ åíüò Ýâäïìïõ êëåéäéïý ç ñßæá äéáóðÜôáé êáé ðñïêýðôïõí
äýï êüìâïé-ðáéäéÜ. Ç äéáäéêáóßá áõôÞ ðáñïõóéÜæåôáé óôï Ó÷Þìá 12.10â. áíôé-
óôïß÷ùò, Ýóôù üôé óôï Â∗ -äÝíäñï Ý÷ïõí åéóá÷èåß Þäç 8 êëåéäéÜ êáé áêïëïõèåß
302 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

(á) 4 5 10 12 19 52

(â) 12
¡ @
¡ @
4 5 10 19 52 56

(ã) 12 71
»
» »»»» ´´ Q
Q
»
» ´
´ Q
Q
4 5 10 19 52 56 90 100 113 142 146

(ä) 12 71
»
» » »»» ´´ HH
HH
»
» ´
´
4 5 10 19 52 56 90 100 113 142 146 150

(å) 12 71 142
ÃÃÃ ! PP
à à ÃÃà !!! ¢ PP
PP
Ã
à !
! ¢ P
4 5 10 19 52 56 90 100 113 146 150 175 193 202 215

Ó÷Þìá 12.10: Äéáäï÷éêÝò åéóáãùãÝò óå Â-äÝíäñï.

åéóáãùãÞ ôïõ Ýíáôïõ. Óôï Ó÷Þìá 12.11â ðáñïõóéÜæåôáé ç äéÜóðáóç ôçò ñßæáò
êáé ç ãÝíåóç äýï êüìâùí-ðáéäéþí. Ç ñßæá óôï Â∗ -äÝíäñï ìðïñåß íá ðñïóöÝñåé
óôÝãç óå ðåñéóóüôåñá êëåéäéÜ áðü ôçí ôÜîç ôïõ äÝíäñïõ, þóôå ìå ôç äéÜóðáóç
ôçò ñßæáò íá ðñïêýøïõí êüìâïé ðëÞñåéò êáôÜ 67%.
Ç äéáäéêáóßá ôùí åéóáãùãþí óõíå÷ßæåôáé. Ôá êëåéäéÜ 10, 11 êáé 12 êáôåõèý-
íïíôáé óôï äåîéü ðáéäß ôçò ñßæáò ôïõ Â∗ -äÝíäñïõ ôïõ Ó÷Þìáôïò 12.11â êáé ðñï-
êáëïýí ôçí õðåñ÷åßëéóç ôïõ, ü÷é üìùò êáé ôç äéÜóðáóÞ ôïõ. Óôï Ó÷Þìá 8.11ã
ðáñïõóéÜæåôáé ôï Â∗ -äÝíäñï ìåôÜ ôçí åéóáãùãÞ ôïõ êëåéäéïý 13. Åßíáé öáíåñü
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 303

(á) 4 5 10 12 19 52 56 71

(â) 19
´ Q
´ Q
´
´ Q
Q
4 5 10 12 52 56 71 90

(ã) 56

! !! aa
aa
!!
! a
a
4 5 10 12 19 52 71 90 100 113 142 146

(ä) 19 100
³ ³³ PP
PP
³
³³
³ PP
P
4 5 10 12 52 56 71 90 113 142 146 150

(å) 19 142
à XXX
ÃÃ ÃÃÃ ¡ XX
à XXX
ÃÃÃ
à ¡ X
4 5 10 12 52 56 71 90 100 113 146 150 175 193 202 215

Ó÷Þìá 12.11: Äéáäï÷éêÝò åéóáãùãÝò óå Â∗ -äÝíäñï.

üôé ìåñéêÜ êëåéäéÜ Ý÷ïõí ðåñÜóåé óôïí áñéóôåñü ãåéôïíéêü êüìâï ìå áíÜëïãç ñýè-
ìéóç ôùí êëåéäéþí ôçò ñßæáò. Ôï Ó÷Þìá 12.10ã ðáñïõóéÜæåé áíôßóôïé÷ï Â-äÝíäñï
ðïõ ðåñéÝ÷åé ôá ßäéá êëåéäéÜ. Óôçí ðåñßðôùóç áõôÞ êáôáëáìâÜíïíôáé 4 êüìâïé
Ýíáíôé ôùí 3 ôïõ Â∗ -äÝíäñïõ.
Áí õðÜñîåé õðåñ÷åßëéóç óå êüìâï åíüò Â∗ -äÝíäñïõ êáé äåí õðÜñ÷åé ÷þñïò óå
ãåéôïíéêü êüìâï, ôüôå äçìéïõñãåßôáé Ýíáò íÝïò êüìâïò. Ôáõôü÷ñïíá ôá êëåéäéÜ
ôïõ êüìâïõ ðïõ õðåñ÷åéëßæåé êáé åíüò ãåéôïíéêïý êüìâïõ (ìå ðñïôåñáéüôçôá óôá
áñéóôåñÜ) áíáäéáíÝìïíôáé ðëÝïí óôïõò ôñåéò êüìâïõò. Ãéá ðáñÜäåéãìá, Ýóôù üôé
304 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

óôá äÝíäñá ôùí Ó÷çìÜôùí 12.10ã êáé 12.11ã åéóÜãåôáé ôï êëåéäß 14. Ç åðéëïãÞ ôùí
äýï ìåóáßùí êëåéäéþí ðïõ èá áíÝëèïõí óôï áíþôåñï åðßðåäï ðñïêýðôåé ìå ôçí
åîÞò áðëÞ ìÝèïäï. Ôá êëåéäéÜ ðïõ õðåéóÝñ÷ïíôáé óôç äéáäéêáóßá ôçò áíáäéáíïìÞò
åßíáé ôá êëåéäéÜ ôùí äýï êüìâùí, ôï êëåéäß áðü ôï áíþôåñï åðßðåäï êáé ôï åéóá-
ãüìåíï êëåéäß, Üñá ôï ðëÞèïò êëåéäéþí åßíáé 2m. Ôï ðñþôï êëåéäß ðïõ åðéëÝãåôáé
åßíáé ôï a=d(2m + 1)/3e-ïóôü, åíþ ôï äåýôåñï åßíáé ôï d(2m+1−a)/2e-ïóôü. Ôá
Ó÷Þìáôá 12.10ä êáé 12.11ä äåß÷íïõí ôç íÝá ìïñöÞ ôùí äÝíäñùí. Áí êáé ôá äýï
äÝíäñá Ý÷ïõí áðü ôÝóóåñéò êüìâïõò, åíôïýôïéò ïé äýï êüìâïé ôïõ Â-äÝíäñïõ åßíáé
ðëÞñåéò êáôÜ 50% êáé Ýíáò êáôÜ 100%, åíþ üëïé ïé êüìâïé ôïõ Â∗ -äÝíäñïõ åßíáé
ðëÞñåéò êáôÜ 50%. Ç äéáäéêáóßá ôùí áößîåùí íÝùí åããñáöþí óõíå÷ßæåôáé ìå ôá
êëåéäéÜ 15, 16, 17 êáé 18. Ïé íÝåò ìïñöÝò ôùí äÝíäñùí öáßíïíôáé óôá Ó÷Þìáôá
12.10å êáé 12.11å.
¼ðùò öáßíåôáé ôá Â∗ -äÝíäñá åßíáé ðëÝïí ÷ñïíïâüñá áðü ôá Â-äÝíäñá êáôÜ
ôçí åéóáãùãÞ êáé êáôÜ ôç äéáãñáöÞ, üìùò êÜíïõí êáëýôåñç ÷ñÞóç ôïõ ÷þñïõ
áðü ôá Â-äÝíäñá, åðåéäÞ äéáêñßíïíôáé áðü ìéêñüôåñï ýøïò êáé ëéãüôåñïõò êüì-
âïõò ãéá ôï ßäéï ðëÞèïò êëåéäéþí. ÅðéðëÝïí ðñïóöÝñïõí êáëýôåñïõò ÷ñüíïõò
áíáæÞôçóçò, äçëáäÞ ç ìÝóç ôéìÞ ôùí ðñïóðåëÜóåùí ãéá áíáæÞôçóç åíüò êëåéäéïý
óå äÝíäñï ôÜîçò m ìå n êëåéäéÜ óôç ÷åéñüôåñç ðåñßðôùóç åßíáé:
n+1
Taccess ≤ 1 + log(2m−2)/3
2
Óôçí åñãáóßá [Eisenbarth 1982] Ý÷åé áðïäåé÷èåß üôé ç ðéèáíüôçôá íá ãßíåé ìßá
Þ ðåñéóóüôåñåò äéáóðÜóåéò êáôÜ ôçí åéóáãùãÞ ôïõ (n+1)-êëåéäéïý åßíáé:
1
+ O(m−2 )
m−1
Óõãêñßíïíôáò ôïí ôýðï áõôü ìå ôïí áíôßóôïé÷ï ôýðï áðü ôá Â-äÝíäñá ðñïêýðôåé
áìÝóùò üôé óôá Â∗ -äÝíäñá ãßíåôáé óðáíéüôåñá äéÜóðáóç.
Áðü ôçí ðñïçãïýìåíç áíÜðôõîç ãßíåôáé öáíåñü üôé ãéá ôçí õëïðïßçóç ôçò
äïìÞò áõôÞò ðñÝðåé íá èåùñçèåß äéáöïñåôéêüò ôýðïò åããñáöÞò ãéá ôç ñßæá. Ëé-
ãüôåñï óõ÷íÜ óõíáíôÜôáé óôç âéâëéïãñáößá Ýíáò ðáñáëëáãìÝíïò ïñéóìüò ôïõ Â∗ -
äÝíäñïõ, üðïõ ï êüìâïò ôçò ñßæáò äÝ÷åôáé ôï ßäéï ìÝãéóôï ðåñéå÷üìåíï ìå ôïõò
õðüëïéðïõò êüìâïõò, åíþ ç ðïëéôéêÞ äéá÷åßñéóçò ôçò õðåñ÷åßëéóçò åßíáé êïéíÞ. Ç
ôå÷íéêÞ ôçò äéÜóðáóçò äýï êüìâùí óå ôñåéò ìðïñåß íá ãåíéêåõèåß ìå äéÜóðáóç
ôñéþí êüìâùí óå ôÝóóåñéò, ôåóóÜñùí êüìâùí óå ðÝíôå ê.ï.ê. Óôéò ðåñéðôþóåéò
áõôÝò ç åëÜ÷éóôç ôéìÞ ôïõ ðáñÜãïíôá ÷ñçóéìïðïßçóçò ÷þñïõ èá éóïýôáé áíôéóôïß-
÷ùò ìå 75%, 80% ê.ï.ê., åíþ ç ìÝóç ôéìÞ ðñïêýðôåé áðü ôïí ôýðï ôïõ Leung.
ÂÝâáéá åßíáé åõíüçôï üôé ôï ôßìçìá Ýíáíôé ôïõ êÝñäïõò áõôïý óå êáôáëáìâáíü-
ìåíï ÷þñï åßíáé ôï áõîçìÝíï êüóôïò óôïí áðáéôïýìåíï ÷ñüíï ãéá åéóáãùãÝò êáé
äéáãñáöÝò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 305

12.3 Â+ -äÝíäñá
Ç äïìÞ ðïõ ÷ñçóéìïðïéåßôáé ðåñéóóüôåñï óå åìðïñéêÜ ðáêÝôá ãéá ôç äçìéïõñãßá
êáôáëüãùí åßíáé ôá Â+ -äÝíäñá. Ç äïìÞ áõôÞ ðñïôÜèçêå áðü ôïí Knuth óôï
âéâëßï [Knuth 1973] êáé ïñßæåôáé ùò åîÞò. Óå Ýíá Â+ -äÝíäñïõ âáèìïý d:
• ç ñßæá Ý÷åé ôï åëÜ÷éóôï äýï ðáéäéÜ, åêôüò áí åßíáé öýëëï,

• ïé åóùôåñéêïß êüìâïé äåí Ý÷ïõí ðåñéóóüôåñï áðü 2d êëåéäéÜ êáé ëéãüôåñï


áðü d êëåéäéÜ. Ïé åóùôåñéêïß êüìâïé ðåñéÝ÷ïõí ìüíï êëåéäéÜ êáé äåßêôåò
ðñïò ôï êáôþôåñï åðßðåäï,

• üëá ôá öýëëá âñßóêïíôáé óôï ßäéï åðßðåäï. Áí ôï Â+ -äÝíäñï ÷ñçóéìï-


ðïéåßôáé ùò êýñéïò êáôÜëïãïò, ôüôå ôá öýëëá ðåñéÝ÷ïõí åããñáöÝò, åíþ áí
÷ñçóéìïðïéåßôáé ùò äåõôåñåýùí êáôÜëïãïò, ôüôå ôá öýëëá ðåñéÝ÷ïõí êëåé-
äéÜ êáé äåßêôåò ðñïò åããñáöÝò, êáé

• Ýíáò åóùôåñéêüò êüìâïò ìå k êëåéäéÜ Ý÷åé k+1 ðáéäéÜ.


Áðü ôïí ïñéóìü öáßíåôáé üôé (üðùò êáé ôï Â-äÝíäñï) ôï Â+ -äÝíäñï äåí åßíáé
áðáñáßôçôá äõáäéêü äÝíäñï. Ãéá ðáñÜäåéãìá, åßíáé äõíáôüí áðü êÜèå åóùôå-
ñéêü êüìâï ôïõ Â+ -äÝíäñïõ íá äåéêôïäïôïýíôáé 100 êüìâïé ðáéäéÜ. Óå áíôßèåóç
ðñïò ôï Â-äÝíäñï, ôï Â+ -äÝíäñï åßíáé åôåñïãåíÝò. Óôï Ó÷Þìá 12.12 ðáñïõóéÜæå-
ôáé Ýíá Â+ -äÝíäñï, üðïõ ïé áñéèìïß óôá öýëëá äçëþíïõí ôá êëåéäéÜ ïëüêëçñùí
åããñáöþí, åíþ ïé áñéèìïß óôïõò åóùôåñéêïýò êüìâïõò äçëþíïõí áðëÜ êëåéäéÜ.
Åðßóçò ôá öýëëá ðåñéÝ÷ïõí äåßêôåò ðñïò ôï åðüìåíï öýëëï ãéá äéåõêüëõíóç ôçò
óåéñéáêÞò åðåîåñãáóßáò. Öáßíåôáé, ëïéðüí, üôé ç äïìÞ õðïäéáéñåßôáé óå äýï ëï-
ãéêÜ ìÝñç, üðïõ ôï áíþôåñï åîõðçñåôåß ôï äåýôåñï ùò êáôÜëïãïò. ÐñáãìáôéêÜ
óå ìßá õëïðïßçóç èá ðñÝðåé íá åßíáé äéáöïñåôéêüò ï ôýðïò ôùí åóùôåñéêþí áðü
ôïí ôýðï ôùí åîùôåñéêþí êüìâùí. Óôç óõíÝ÷åéá èá öáíåß üôé áõôüò ï êáôÜëïãïò

56
³³³ PP
PP
³

³ PP
q
10 19 90 113
´ Q ´ Q
´ Q ´ Q
+́ ? Q
s +́ ? s
Q
4 5 - 10 12 - 19 52 - 56 71 - 90 100 - 113 142

Ó÷Þìá 12.12: ÊáôÜëïãïò ìå äïìÞ Â+ -äÝíäñïõ.


306 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

ëåéôïõñãåß ùò Ýíá áðëü Â-äÝíäñï üðùò áíáðôý÷èçêå ðñïçãïõìÝíùò. ÊÜëëéóôá,


åðßóçò, èá ìðïñïýóå ï êáôÜëïãïò áõôüò íá åßíáé Ýíá Â∗ -äÝíäñï.
Óôï óçìåßï áõôü áíïßãåé ìßá ðáñÝíèåóç. ¸÷åé ÷ñçóéìïðïéçèåß Þäç ï üñïò
óåëßäá ãéá íá äçëùèåß ôï åëÜ÷éóôï öõóéêü ìÝãåèïò äåäïìÝíùí ðïõ ìåôáöÝñå-
ôáé ìåôáîý êýñéáò êáé äåõôåñåýïõóáò ìíÞìçò. Ùóôüóï, ç ìåôáöïñÜ äåäïìÝíùí
ãßíåôáé ëïãéêÜ êáôÜ êÜäïõò. Óôçí áðëïýóôåñç ìïñöÞ ìðïñåß íá èåùñçèåß üôé
Ýíáò êÜäïò ôáõôßæåôáé ìå ìßá óåëßäá. Óôç óõíÝ÷åéá ëïéðüí ï üñïò êÜäïò èá
÷ñçóéìïðïéçèåß éóïäýíáìá ìå ôçí Ýííïéá ôïõ êüìâïõ.
Ç âáóéêÞ äéáöïñÜ ìåôáîý ôïõ Â-äÝíäñïõ êáé Â∗ -äÝíäñïõ áö’ åíüò êáé ôïõ
Â+ -äÝíäñïõ áö’ åôÝñïõ åßíáé üôé óôï Â+ -äÝíäñï ôá äåäïìÝíá âñßóêïíôáé ìüíï
óôá öýëëá. Óýìöùíá ìå ôïí ïñéóìü, ïé åóùôåñéêïß êüìâïé Ý÷ïõí áðü d ùò 2d êëåé-
äéÜ, åíþ ïé åîùôåñéêïß êüìâïé (ðïõ ôáõôßæïíôáé ìå ôïõò êÜäïõò) ðåñéÝ÷ïõí Ýíáí
áñéèìü åããñáöþí ðïõ ëÝãåôáé ðáñÜãïíôáò êáäïðïßçóçò (bucket factor, Bkf r).
Ãéá ðáñÜäåéãìá, óå Ýíá åóùôåñéêü êáé óå Ýíá åîùôåñéêü êüìâï ìðïñïýí íá
áðïèçêåõèïýí 200 êëåéäéÜ êáé 10 åããñáöÝò, áíôéóôïß÷ùò. ÅðåéäÞ ïé åóùôåñéêïß
êüìâïé ðåñéÝ÷ïõí ìüíï êëåéäéÜ êáé äéåõèýíóåéò, ï ëüãïò äéáêëÜäùóçò åßíáé ðïëý
ìåãÜëïò. ¸ôóé áõôÜ ôá äÝíäñá åßíáé ñç÷Ü êáé åîáéñåôéêÜ ðëáôéÜ. Áõôüò åßíáé ï
âáóéêüò ëüãïò ðïõ ôá Â+ -äÝíäñá åßíáé ôüóï áðïôåëåóìáôéêÜ. ÌÜëéóôá ôá Â+ -
äÝíäñá åßíáé ç êáôáëëçëüôåñç äïìÞ ãéá åñùôÞìáôá ðåñéï÷Þò (åíþ üðùò èá öáíåß
óå åðüìåíá êåöÜëáéá ç êáôáëëçëüôåñç äïìÞ ãéá áðëÜ åñùôÞìáôá óôçñßæåôáé óôïí
êáôáêåñìáôéóìü).
Ç äïìÞ ôïõ Â+ -äÝíäñïõ ðïõ åðåîçãÞèçêå ðñïçãïõìÝíùò åßíáé ìßá ðåñßðôùóç
ðñùôåýïíôïò êáôáëüãïõ, äçëáäÞ êáôáëüãïõ ìå âÜóç ôï ðñùôåýïí êëåéäß. Óôçí
ðåñßðôùóç áõôÞ, ï ðñùôåýùí êáôÜëïãïò êáèïñßæåé ôïí ôñüðï áðïèÞêåõóçò ôùí
åããñáöþí. Áí ïé åããñáöÝò åßíáé áðïèçêåõìÝíåò óå ãåéôïíéêïýò êÜäïõò êáôÜ
áðüëõôç ôÜîç ôïõ êëåéäéïý ôïõò, ôüôå ï êáôÜëïãïò ëÝãåôáé ïìáäïðïéçìÝíïò (clus-
tered). ¸ôóé, óôï áíþôåñï åðßðåäï áðü ôá öýëëá ï êáôÜëïãïò ðåñéÝ÷åé ìüíï ôçí
ôéìÞ ôïõ ìéêñüôåñïõ (Þ ìåãáëýôåñïõ) êëåéäéïý êÜèå êÜäïõ. Ãéá ôï ëüãï áõôü, ï
êáôÜëïãïò áõôüò êáëåßôáé êáé áñáéüò (sparse).
Ùóôüóï, ôï Â+ -äÝíäñï ìðïñåß íá ÷ñçóéìïðïéçèåß êáé ùò äåõôåñåýùí êáôÜëï-
ãïò. Ãéá ðáñÜäåéãìá, óôïí Ðßíáêá 12.2 ðáñïõóéÜæïíôáé óôïé÷åßá (ðëçèõóìüò êáé
Ýêôáóç) âáëêáíéêþí êñáôþí, åíþ óôï Ó÷Þìá 12.13 äßíåôáé ìßá äïìÞ Â+ -äÝíäñïõ,
üðïõ ôá óôïé÷åßá áõôÜ åßíáé áðïèçêåõìÝíá. Ðéï óõãêåêñéìÝíá, ðñùôåýïí êëåéäß
åßíáé ôï üíïìá ôïõ êñÜôïõò, åíþ äåõôåñåýïíôá êëåéäéÜ åßíáé ï ðëçèõóìüò óå åêá-
ôïììýñéá êáôïßêïõò êáé ç Ýêôáóç óå ÷éëéÜäåò ôåôñáãùíéêþí ÷éëéïìÝôñùí. ¸ôóé
óôï åðÜíù ìÝñïò ôïõ ó÷Þìáôïò öáßíåôáé ç äïìÞ ôïõ ðñùôåýïíôïò êáôáëüãïõ, åíþ
óôï êÜôù ìÝñïò ôïõ ó÷Þìáôïò äéáêñßíåôáé ï äåõôåñåýùí êáôÜëïãïò ðïõ åßíáé ïñ-
ãáíùìÝíïò ìå âÜóç ôï ðåäßï ôçò Ýêôáóçò. Óôï ôåëåõôáßï åðßðåäï ôïõ êáôáëüãïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 307

×þñá Ðëçèõóìüò ¸êôáóç


Áëâáíßá (A) 3 29
Âïóíßá-Åñæåãïâßíç (BH) 4 51
Âïõëãáñßá (B) 8 110
ÅëëÜäá (G) 10 132
Êñïáôßá (C) 5 56
Êýðñïò (CY) 1 9
ÐÃÄÌ (F) 2 25
Ñïõìáíßá (R) 23 237
Óåñâßá-Ìáõñïâïýíéï (SC) 10 102
Óëïâåíßá (S) 2 20

Ðßíáêáò 12.2: Ðëçèõóìüò êáé Ýêôáóç Âáëêáíéêþí êñáôþí.

áõôïý õðÜñ÷ïõí áðïèçêåõìÝíá æåýãç êëåéäéþí-äåéêôþí, üðïõ ïé äåßêôåò óçìáôï-


äïôïýí ðñïò ôéò áíôßóôïé÷åò åããñáöÝò ôïõ ðñùôåýïíôïò êáôáëüãïõ. Ï êáôÜëïãïò
áõôüò äåí åßíáé áñáéüò, áëëÜ áíôéèÝôùò ëÝãåôáé ðõêíüò (dense).
Óõ÷íÜ ãéá ôï ßäéï áñ÷åßï õðÜñ÷ïõí ðïëëïß äåõôåñåýïíôåò êáôÜëïãïé, ðïõ
áíôéóôïé÷ïýí óå äéáöïñåôéêÜ ðåäßá ôçò åããñáöÞò. ¸ôóé äéåõêïëýíåôáé ç áíáæÞ-

G
» aa
»»» aa
»»»
BH CY S
©©
HH ¡ @
©
© H
H ¡ @
A B BH C CY F G R S SC
3 8 4 5 1 2 10 23 2 10
29 110 51 56 9 25 132 237 20 102
P
i
PP Y
HH» H
Y
HH : ³³
»
»» 1 HH ³³³
HHH
H
Y Y 1
6PP»» H»H
³
³H
³
H³³ 6
HH
» P ³ ³
»»» ³ P HHHH
P³ ³³ HH H
9 20 25 29 51 56 102 110 132 237
@ ¡ H
H ©
©
HH
@ ¡ ©©
25 102 132
aa »»
aa »» »»»
51

Ó÷Þìá 12.13: Â+ -äÝíäñï ùò ðñùôåýùí êáé äåõôåñåýùí êáôÜëïãïò.


308 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

ôçóç ìå âÜóç åßôå ôï ðñùôåýïí, åßôå ôï äåõôåñåýïí êëåéäß. ¼ìùò áí ìßá åããñáöÞ
Ý÷åé ðïëëÜ ðåäßá, äåí åßíáé áðáñáßôçôï íá äçìéïõñãçèåß Ýíáò êáôÜëïãïò ãéá
êÜèå ðåäßï, ãéáôß Ýôóé ç ßäéá ðëçñïöïñßá èá åðáíáëáìâáíüôáí äýï öïñÝò êáé
èá ÷ñåéáæüôáí ðïëëáðëÜóéïò ÷þñïò áðü ôï ÷þñï ôùí êõñßùò äåäïìÝíùí. ¸íá
Üëëï óïâáñü ìåéïíÝêôçìá åßíáé üôé ôï êüóôïò åíçìÝñùóçò ôùí êáôáëüãùí èá
Þôáí éäéáßôåñá ìåãÜëï áêüìç êáé ãéá ìßá áðëÞ åéóáãùãÞ íÝáò åããñáöÞò. Åõèýíç
ôïõ äéá÷åéñéóôÞ ôïõ ÓÄÂÄ åßíáé íá áðïöáóßóåé ôï ðüóïõò êáé ðïéïýò êáôáëüãïõò
ðñÝðåé íá äçìéïõñãÞóåé, ãéáôß áí ãßíåé åñþôçìá ìå âÜóç äåõôåñåýïí êëåéäß ãéá
ôï ïðïßï äåí õðÜñ÷åé áíôßóôïé÷ïò êáôÜëïãïò, ôüôå ç áíáæÞôçóç ôáõôßæåôáé ìå ôçí
áíáæÞôçóç óå áñ÷åßï óùñïý.
Ç áíáæÞôçóç óå Â+ -äÝíäñá ãßíåôáé ìå ôçí åîÞò ìÝèïäï. Îåêéíþíôáò áðü ôç
ñßæá, ïé äåßêôåò ðñïò ôï êáôþôåñï åðßðåäï ïíïìÜæïíôáé áðü 0 ùò k êáé ôá êëåéäéÜ
áðü 1 ùò k. Áí ôï êëåéäß ðïõ áíáæçôåßôáé åßíáé ìéêñüôåñï áðü ôï ðñþôï êëåéäß ôçò
ñßæáò, ôüôå ëáìâÜíåôáé ï äåßêôçò õð’ áñéèìü 0. ÃåíéêÜ, áí ôï áíáæçôïýìåíï êëåéäß
åßíáé ìåãáëýôåñï áðü ôï i-ïóôü êëåéäß êáé ìéêñüôåñï áðü ôï (i+1)-ïóôü êëåéäß,
ôüôå áêïëïõèåßôáé ï i-ïóôüò äåßêôçò. Ç äéáäéêáóßá áõôÞ åêôåëåßôáé ãéá üëá ôá
åðßðåäá ôïõ äÝíäñïõ. ¸ôóé ç áíáæÞôçóç öèÜíåé óôá öýëëá, üðïõ åíôïðßæåôáé
ç ó÷åôéêÞ åããñáöÞ áí ôï Â+ -äÝíäñï åßíáé ðñùôåýùí êáôÜëïãïò, åíþ áí ôï Â+ -
äÝíäñï åßíáé äåõôåñåýùí êáôÜëïãïò ôüôå áêïëïõèåßôáé ï ó÷åôéêüò äåßêôçò ðñïò
ôçí áíôßóôïé÷ç åããñáöÞ.

12.3.1 ÐñïóðÝëáóç ÅããñáöÞò


¸óôù üôé ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò ðñùôåýùí êáôÜëïãïò. Ìðïñåß åý-
êïëá íá áðïäåé÷èåß, üôé üôáí áíïßãåé ôï áñ÷åßï, ôüôå üëïé ïé êüìâïé åêôüò ôùí
êüìâùí ôùí äýï ôåëåõôáßùí åðéðÝäùí áðïèçêåýïíôáé óôçí êýñéá ìíÞìç. Óõíå-
ðþò, ôï êüóôïò äéÜó÷éóçò ôùí åðéðÝäùí áõôþí åßíáé áìåëçôÝï. Áðáéôåßôáé ìßá
ðñïóðÝëáóç ãéá ôïí êüìâï ðïõ âñßóêåôáé åðÜíù áðü ôï êáôÜëëçëï öýëëï êáé
Üëëç ìßá ðñïóðÝëáóç ãéá ôï öýëëï. ¢ñá ôï ó÷åôéêü êüóôïò åßíáé:

Taccess = (s + r + btt) + (s + r + dtt)

¸óôù, ôþñá, üôé ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò äåõôåñåýùí êáôÜëïãïò.


Åßíáé åýëïãï íá õðïôåèåß üôé óôçí êýñéá ìíÞìç ÷ùñïýí üëá ôá åðßðåäá ôïõ äÝí-
äñïõ ðëçí ôïõ ôåëåõôáßïõ ðïõ ðåñéÝ÷åé ôïõò äåßêôåò ðñïò ôïõò êÜäïõò. ¸ôóé,
êáé óôçí ðåñßðôùóç áõôÞ ôï ÷ñïíéêü êüóôïò äßíåôáé áðü ôçí ðñïçãïýìåíç Ýê-
öñáóç. Óå êÜèå ðåñßðôùóç, ôï óçìáíôéêü óõìðÝñáóìá åßíáé üôé ç áíáæÞôçóç óå
Â+ -äÝíäñï áðáéôåß äýï ðñïóðåëÜóåéò óôï äßóêï.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 309

12.3.2 ÅîáíôëçôéêÞ ÁíÜãíùóç Áñ÷åßïõ


ÊÜèå êüìâïò ðåñéÝ÷åé ôï åëÜ÷éóôï êáé ôï ìÝãéóôï d êáé 2d êëåéäéÜ áíôéóôïß÷ùò,
üìùò Ý÷åé áðïäåé÷èåß üôé êáôÜ ìÝóï üñï ðåñéÝ÷åé 2d × ln 2 êëåéäéÜ. Óõíåðþò, ôï
ðëÞèïò ôùí êÜäùí ðïõ áðáéôïýíôáé ãéá ôçí áðïèÞêåõóç ôïõ Â+ -äÝíäñïõ åßíáé:
n
= bk
Bkf r × ln 2
üðïõ n åßíáé ôï ðëÞèïò ôùí åããñáöþí ôïõ áñ÷åßïõ. Ï áðáéôïýìåíïò ÷ñüíïò
ãéá ôçí åîáíôëçôéêÞ áíÜãíùóç åíüò Â+ -äÝíäñïõ ðïõ ÷ñçóéìåýåé ùò ðñùôåýùí
êáôÜëïãïò åßíáé:

n × (s + r + dtt)
Texhaustive (primary) = bk × (s + r + dtt) =
Bkf r × ln 2
Áõôüò ï ôýðïò ðñïûðïèÝôåé üôé óå êÜèå öýëëï õðÜñ÷åé Ýíáò äåßêôçò ðñïò ôï
åðüìåíï öýëëï. Áí áõôÞ ç óõíèÞêç äåí éó÷ýåé, ôüôå åíáëëáêôéêÜ ìðïñåß íá
åöáñìïóèåß ìßá åíäïäéáôåôáãìÝíç äéÜó÷éóç ìå áìåëçôÝï åðéðëÝïí ÷ñïíéêü êü-
óôïò. Ãéá ðáñÜäåéãìá, áí õðïôåèåß üôé ï âáèìüò ôïõ äÝíäñïõ åßíáé 100, ôüôå
ï ëüãïò äéáêëÜäùóçò åßíáé 140. ¢ñá, ãéá êÜèå 140 öýëëá ðñÝðåé íá ãßíåé ìßá
áêüìç åðßóêåøç óôïí êüìâï ðáôÝñá, ðïõ Þäç âñßóêåôáé óå êÜðïéá áðïìïíùôéêÞ
ìíÞìç.
ÐñÝðåé íá óçìåéùèåß üôé ôï ÷ñïíéêü êüóôïò ðïõ ðñïêýðôåé áðü ôç ó÷Ýóç
áõôÞ åßíáé ìåãáëýôåñï áðü ôï êüóôïò åîáíôëçôéêÞò áíÜãíùóçò åíüò óåéñéáêïý
ôáîéíïìçìÝíïõ áñ÷åßïõ, åðåéäÞ ïé äéáäï÷éêÝò åéóáãùãÝò êáé äéáãñáöÝò óõíôåëïýí
óôç öõóéêÞ áðïìÜêñõíóç ëïãéêÜ äéðëáíþí êüìâùí. ¸ôóé, áðáéôïýíôáé óõíå÷þò
íÝåò ðñïóðåëÜóåéò ìå êüóôïò åíôïðéóìïý ôïõ êáôÜëëçëïõ êõëßíäñïõ.
Ï áðáéôïýìåíïò ÷ñüíïò ãéá ôçí åîáíôëçôéêÞ áíÜãíùóç åíüò Â+ -äÝíäñïõ ðïõ
÷ñçóéìåýåé ùò äåõôåñåýùí êáôÜëïãïò åßíáé:
s + r + btt
Texhaustive (secondary) = n × (s + r + dtt) + n ×
2d × ln 2
Ï ðñþôïò üñïò áíáöÝñåôáé óôï êüóôïò áíÜãíùóçò ôùí åããñáöþí ìßá ðñïò ìßá,
åíþ ï äåýôåñïò áíáöÝñåôáé óôï êüóôïò áíÜãíùóçò ôïõ ôåëåõôáßïõ åðéðÝäïõ ôïõ
Â+ -äÝíäñïõ. Ï äåýôåñïò üñïò åßíáé óçìáíôéêÜ ìéêñüôåñïò êáé ìðïñåß íá ðáñá-
ëåéöèåß.

12.3.3 ÐñïóðÝëáóç Åðüìåíçò ÅããñáöÞò


¸óôù êáé ðÜëé üôé ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò ðñùôåýùí êáôÜëïãïò êáé
üôé õðÜñ÷ïõí äåßêôåò áðü ôï Ýíá öýëëï ðñïò ôï Üëëï. Ôï ÷ñïíéêü êüóôïò ãéá ôçí
310 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

áíÜêôçóç ôçò åðüìåíçò åããñáöÞò åßíáé:


s + r + dtt
Tnext (primary) =
Bkf r × ln 2
H ó÷Ýóç áõôÞ åîçãåßôáé ìå âÜóç ôï ãåãïíüò üôé 1/(Bkf r×ln 2) åßíáé ç ðéèáíüôçôá
ç åðüìåíç åããñáöÞ íá âñßóêåôáé óôïí ßäéï êüìâï ìå ôïí ðñïçãïýìåíï.
Áí ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò äåõôåñåýùí êáôÜëïãïò, ôüôå áðáéôåß-
ôáé ôïõëÜ÷éóôï ìßá ðñïóðÝëáóç êüìâïõ ãéá ôçí åýñåóç ôçò åðüìåíçò åããñáöÞò.
ÅðéðëÝïí ìðïñåß íá áðáéôçèåß ìßá ðñïóðÝëáóç óôï åðüìåíï öýëëï ãéá ôçí åý-
ñåóç ôçò äéåýèõíóçò áõôïý ôïõ êüìâïõ. ¢ñá, ôåëéêÜ, ôï ÷ñïíéêü êüóôïò ãéá ôçí
áíÜêôçóç ôçò åðüìåíçò åããñáöÞò åßíáé:
s + r + btt
Tnext (secondary) = (s + r + dtt) +
2d × ln 2
O ðñþôïò üñïò äßíåé ôï êüóôïò ãéá ôçí åýñåóç ôïõ åðüìåíïõ êÜäïõ üôáí ç äéåý-
èõíóÞ ôïõ åßíáé ãíùóôÞ. Ï äåýôåñïò üñïò ðñïêýðôåé áðü ôï ãåãïíüò üôé åßíáé
ðéèáíü áõôÞ ç äéåýèõíóç íá ìçí åßíáé ãíùóôÞ. Óôçí ðåñßðôùóç áõôÞ, ãíùóôÞ
åßíáé ìüíï ç äéåýèõíóç ôçò óåëßäáò, üðïõ åßíáé áðïèçêåõìÝíç ç äéåýèõíóç ôçò
åðüìåíçò åããñáöÞò. Êáé ðÜëé, ï äåýôåñïò üñïò åßíáé ëéãüôåñï óçìáíôéêüò áðü
ôïí ðñþôï êáé ç ó÷Ýóç ìðïñåß íá áðëïðïéçèåß.

12.3.4 ÅéóáãùãÞ ÅããñáöÞò


Ïé åéóáãùãÝò óôï Â+ -äÝíäñï ãßíïíôáé óôï ôåëåõôáßï åðßðåäï. Ìßá åéóáãùãÞ
ðÜíôá áñ÷ßæåé ìå áíáæÞôçóç ôïõ êëåéäéïý ðïõ ðñüêåéôáé íá åéóá÷èåß, þóôå íá
åíôïðéóèåß ï êáôÜëëçëïò êüìâïò. Áí ôï êëåéäß âñßóêåôáé Þäç óôï áñ÷åßï áðï-
öåýãåôáé Ýíá ëÜèïò. Áí õðÜñ÷åé äéáèÝóéìïò ÷þñïò ìÝóá óôïí êüìâï, ôüôå ôï
êëåéäß (Þ ç åããñáöÞ) áðïèçêåýåôáé. Óôçí áðëïýóôåñç, ëïéðüí, ðåñßðôùóç ôï
êüóôïò ìßáò åéóáãùãÞò åßíáé:

Tinsert = Taccess + 2r

¼ìùò åßíáé äõíáôüí íá õðÜñîåé äéÜóðáóç êüìâïõ ëüãù õðåñ÷åßëéóçò, êáé


áõôÞ ç äéáäéêáóßá íá óõíå÷éóèåß ìÝ÷ñé ôçí êïñõöÞ. Ãéá ðáñÜäåéãìá, Ýóôù üôé ôï
Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò ðñùôåýùí êáôÜëïãïò êáé üôé óå Ýíáí êüìâï óõãêå-
íôñþíïíôáé Bkf r+1 åããñáöÝò. Ïé ðñþôåò ìéóÝò êáé ïé äåýôåñåò ìéóÝò åããñáöÝò
áõôïý ôïõ óõíüëïõ áðïèçêåýïíôáé óôïí ðáëéü êáé óå íÝï êüìâï, áíôéóôïß÷ùò. Äç-
ëáäÞ, áí Bkf r=5 ôüôå êÜèå êüìâïò äÝ÷åôáé áðü ôñåéò åããñáöÝò. Áí Bkf r=10,
ôüôå ï ðáëéüò êáé ï íÝïò êüìâïò äÝ÷ïíôáé 5 êáé 6 åããñáöÝò, áíôéóôïß÷ùò. Óôçí
ðåñßðôùóç áõôÞ åßíáé öáíåñü üôé ïé äýï êüìâïé åßíáé ðëÞñåéò êáôÜ 50%. Áõôüò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 311

åßíáé Ýíáò ëüãïò ðïõ ôï áñ÷åßï áõôü êáôáëáìâÜíåé ðåñéóóüôåñï ÷þñï áðü Ýíá
áñ÷åßï óùñïý.
Áí ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò äåõôåñåýùí êáôÜëïãïò, ôüôå êÜèå åîù-
ôåñéêüò êüìâïò ðñÝðåé íá ðåñéÝ÷åé áðü d ùò 2d êëåéäéÜ. ¸ôóé, óôïí ðáëéü êáé óôï
íÝï êüìâï áðïèçêåýïíôáé d êáé d+1 êëåéäéÜ, áíôéóôïß÷ùò. Êáé óôéò äýï ðåñéðôþ-
óåéò, ç ôéìÞ ôïõ ìéêñüôåñïõ êëåéäéïý ôïõ íÝïõ êüìâïõ êáèþò êáé ç äéåýèõíóç ôïõ
íÝïõ êüìâïõ ðñÝðåé íá áíÝëèïõí ðñïò ôïí êüìâï ðáôÝñá. Áí áõôü ôï æåýãïò ðïõ
áíôëåßôáé ðñïò ôá åðÜíù äåí ÷ùñÜ óôïí ðáôÝñá êüìâï, ôüôå ðñÝðåé íá ãßíåé íÝá
äéÜóðáóç. Ùóôüóï, óôï óçìåßï áõôü õðÜñ÷åé ç åîÞò ìéêñÞ äéáöïñÜ. ¼ôáí óôïõò
åóùôåñéêïýò êüìâïõò õðÜñîåé äéÜóðáóç, ôüôå ôá ðñþôá d êëåéäéÜ áðïèçêåýï-
íôáé óôïí ðáëéü êüìâï, ôá ôåëåõôáßá d êëåéäéÜ áðïèçêåýïíôáé óôï íÝï êüìâï,
åíþ ôï ìåóáßï êëåéäß áíôëåßôáé ðñïò ôï áíþôåñï åðßðåäï. ÄçëáäÞ, ç äéáöïñÜ
Ýãêåéôáé óôï ãåãïíüò üôé ôï ìåóáßï êëåéäß áíÝñ÷åôáé óôï áíþôåñï åðßðåäï áðü
ôïõò åîùôåñéêïýò êüìâïõò, áëëÜ äåí áíÝñ÷åôáé áðü ôïõò åóùôåñéêïýò êüìâïõò.
Ç äéáäéêáóßá áõôÞ ìðïñåß íá óõíå÷éóèåß ìÝ÷ñé ôç ñßæá. Óôï Ó÷Þìá 12.14 äßíåôáé
Ýíá ðáñÜäåéãìá åéóáãùãÞò ôïõ êëåéäéïý 12 óôï Â+ -äÝíäñï ðïõ åßíáé âáèìïý 2.

19 71 146 175
» PPXXX
» »»» ´´ @ PP XX
»
» » ´ @ PP XX
X
4 5 10 12 19 52 56 71 90 100 113 146 150 175 193

100
```
! !! ```
!! ``
`
19 71 146 175
© H ´
© A HH ´ @
©© A H ´ @
4 5 10 12 19 52 56 71 90 100 113 142 146 150 175 193

Ó÷Þìá 12.14: ÅéóáãùãÞ óå Â+ -äÝíäñï ìå d=2 êáé Bkf r=4.

Ôï êüóôïò åéóáãùãÞò åßíáé óõíÜñôçóç ôùí äéáóðÜóåùí ðïõ èá óõìâïýí.


Ï Baeza-Yates [Baeza-Yates 1989] åðåêôåßíïíôáò ôçí áíÜëõóç êñáóðÝäïõ ôùí
Eisenbarth et al. êáôÝëçîå üôé ç ðéèáíüôçôá íá óõìâïýí ðåñéóóüôåñåò áðü ìßá
äéáóðÜóåéò êáôÜ ôçí åéóáãùãÞ óå Ýíá Â+ -äÝíäñï åßíáé:

1
+ O(Bkf r−2 )
Bkf r × ln 2
312 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

Óôçí ðåñßðôùóÞ ìáò èåùñåßôáé ðñïóåããéóôéêÜ üôé åßíáé éóïðßèáíï óå Ýíáí åîùôå-
ñéêü êüìâï íá åßíáé áðïèçêåõìÝíåò Bkf r/2, ..., Bkf r åããñáöÝò. Ç ðéèáíüôçôá
ìßá íÝá åããñáöÞ íá ìçí ÷ùñÜ óå êÜðïéïí åîùôåñéêü êüìâï åßíáé Bkf1r/2 = Bkf2
r.
2
¢ñá, ç ðéèáíüôçôá ìßá íÝá åããñáöÞ íá ÷ùñÜ óôïí åîùôåñéêü êüìâï åßíáé 1- Bkf r .
Ìå ôï ßäéï óêåðôéêü ç ðéèáíüôçôá íá äéáóðáóèåß ï ðáôñéêüò êüìâïò åßíáé 1/d.
Óõíåðþò, èåùñþíôáò üôé üëá ôá åðßðåäá ôïõ äÝíäñïõ ðëçí ôùí äýï ôåëåõôáßùí
åßíáé áðïèçêåõìÝíá óôçí êýñéá ìíÞìç, ôåëéêÜ ðñïêýðôåé üôé ôï êüóôïò åéóáãùãÞò
óå Â+ -äÝíäñï åßíáé:

µ ¶
2 s + r + btt
Tinsert = Taccess + 2r + × (s + r + dtt) + (s + r + btt) +
Bkf r d

ÅðåéäÞ ï âáèìüò ôïõ äÝíäñïõ åßíáé ìåãÜëïò (üðùò d=100), ìðïñåß ç ó÷Ýóç íá
áðëïðïéçèåß: µ ¶
2
Tinsert = 1 + × Taccess + 2r
Bkf r
Áí Bkf r=10 êáé ôï ìÝãåèïò ôçò óåëßäáò åßíáé 2400 bytes, ôüôå ðñïêýðôåé üôé ï
áðáéôïýìåíïò ÷ñüíïò ãéá ìßá åéóáãùãÞ åßíáé:
µ ¶
2
Tinsert = 1 + × 25, 1 + 16, 6 = 77 ms
5

Áðü áõôÜ ôá 77 ms, ôá 10 ðåñßðïõ ïöåßëïíôáé óôç äéÜóðáóç.


Áí ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò äåõôåñåýùí êáôÜëïãïò, ôüôå ðñÝðåé ï
üñïò 2/Bkf r íá áíôéêáôáóôáèåß ìå ôïí üñï 1/d. ¢ñá:
µ ¶
1
Tinsert (secondary) = 1 + × (s + r + btt) + 2r
d

ÅðåéäÞ ï ëüãïò äéáêëÜäùóçò åíüò Â+ -äÝíäñïõ, ðïõ ÷ñçóéìïðïéåßôáé ùò äåõôå-


ñåýùí êáôÜëïãïò, åßíáé ìåãÜëïò êáé ç ðéèáíüôçôá äéÜóðáóçò åßíáé ìéêñÞ, ï ôýðïò
áõôüò áðëïðïéåßôáé óå:

Tinsert (secondary) = s + 3r + btt

¼ôáí ãßíåôáé ìßá åéóáãùãÞ óôïí ðñùôåýïíôá êáôÜëïãï, ðñÝðåé íá åíçìåñù-


èïýí üëïé ïé äåõôåñåýïíôåò êáôÜëïãïé. Ç åíçìÝñùóç ôùí äåõôåñåõüíôùí êáôáëü-
ãùí åßíáé ðñïâëçìáôéêÞ, åðåéäÞ êáôÜ ôç äéÜóðáóç åíüò êüìâïõ ðïëëÝò åããñáöÝò
áëëÜæïõí äéåýèõíóç. Ãéá ôï ëüãï áõôü, ðïëëÜ óõóôÞìáôá äéá÷åßñéóçò áñ÷åßùí
äåí êñáôïýí ìáæß ìå ôï äåõôåñåýïí êëåéäß ôçí áíôßóôïé÷ç äéåýèõíóç áëëÜ ôçí ôéìÞ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 313

ôïõ ðñùôåýïíôïò êëåéäéïý. Ôï ðëåïíÝêôçìá ôùí óõóôçìÜôùí áõôþí åßíáé üôé äåí
åíçìåñþíïíôáé ãéá êÜèå åéóáãùãÞ üëïé ïé äåõôåñåýïíôåò êáôÜëïãïé. Áðü ôçí
áëç ðëåõñÜ, ôï ìåéïíÝêôçìá åßíáé üôé ãéá ôçí åýñåóç ìßáò åããñáöÞò ìå âÜóç ôï
äåõôåñåýïí êëåéäß ðñÝðåé íá ãßíåé ðñïóðÝëáóç êáé óôïõò äýï êáôáëüãïõò.

12.3.5 ÄéáãñáöÞ EããñáöÞò


Ç äéá÷åßñéóç ôùí äéáãñáöþí óå Ýíá Â+ -äÝíäñï åßíáé äýóêïëï ðñüâëçìá. Óýì-
öùíá ìå ôïí ïñéóìü äåí ðñÝðåé ç ðåñéåêôéêüôçôá ôùí êüìâùí ôïõ Â+ -äÝíäñïõ
íá åßíáé êáôþôåñç ôïõ 50%. ¢ñá, üôáí ëüãù äéáãñáöÞò Ýíáò êüìâïò ìåßíåé
ìå ëéãüôåñï áðü d êëåéäéÜ Þ Bkf r/2 åããñáöÝò, ôüôå ðñÝðåé áõôüò ï êüìâïò íá
óõã÷ùíåõèåß. Äéáêñßíïíôáé ðïëëÝò ðåñéðôþóåéò äéáãñáöÞò.
Ç ðñþôç êáé áðëïýóôåñç ðåñßðôùóç åßíáé üôáí ìåôÜ ôç äéáãñáöÞ êÜðïéïò
êüìâïò äåí Ý÷åé ëéãüôåñåò åããñáöÝò áðü Bkf r/2 åããñáöÝò Þ d êëåéäéÜ. Áí áðü
ôïõò ôåñìáôéêïýò êüìâïõò äéáãñáöåß êÜðïéá åããñáöÞ ìå êëåéäß ðïõ åßíáé áðïèç-
êåõìÝíï óå êÜðïéï áíþôåñï åðßðåäï ùò ôéìÞ óýãêñéóçò, ôüôå äåí äçìéïõñãåßôáé
ðñüâëçìá, ãéáôß êáé ðÜëé ç áíáæÞôçóç äéáìÝóïõ ôùí åðéðÝäùí ôïõ äÝíäñïõ åß-
íáé óùóôÞ. Óôï Ó÷Þìá 12.15â áõôÞ ç ðåñßðôùóç áíôéóôïé÷åß óôç äéáãñáöÞ ôçò
åããñáöÞò ìå êëåéäß 52.
Áí åîùôåñéêüò êüìâïò áðïìåßíåé ìå ëéãüôåñåò áðü Bkf r/2 åããñáöÝò, ôüôå
åëÝã÷åôáé áí Ýíáò ãåéôïíéêüò êüìâïò (ìå ðñïôåñáéüôçôá åîåôÜæåôáé ï áñéóôåñüò)
Ý÷ïõí ðåñéóóüôåñï áðü áõôü ôï üñéï. Áí êÜðïéïò, ëïéðüí, áäåëöüò êüìâïò Ý÷åé
ðåñéóóüôåñï áðü ôï üñéï, ôüôå ïé åããñáöÝò ôùí äýï êüìâùí ìïéñÜæïíôáé åîßóïõ
ìåôáîý ôïõò êáé ôáõôü÷ñïíá åíçìåñþíåôáé ï ðáôÝñáò êüìâïò. ÁõôÞ ç äéáäéêáóßá
ðáñïõóéÜæåôáé óôï Ó÷Þìá 12.15ã ìå ôç äéáãñáöÞ ôçò åããñáöÞò 19. Êáôüðéí Ýóôù
üôé äéáãñÜöåôáé ç åããñáöÞ 90. ÁõôÞ ç ðåñßðôùóç åßíáé ðáñüìïéá ìå ôçí ðåñß-
ðôùóç ôçò äéáãñáöÞò ôçò åããñáöÞò 52. Ç íÝá ìïñöÞ ôïõ Â+ -äÝíäñïõ öáßíåôáé
êáé ðÜëé óôï Ó÷Þìá 12.15ä.
¸óôù ôþñá üôé ðñÝðåé íá äéáãñáöåß ç åããñáöÞ 12. Åßíáé öáíåñü üôé êáíåßò
áðü ôïõò ãåéôïíéêïýò áäåëöïýò êüìâïõò äåí ìðïñåß íá óõíåéóöÝñåé. ÅðéëÝãå-
ôáé ï áñéóôåñüò êüìâïò ãéá óõã÷þíåõóç. Ïé åããñáöÝò ôùí äýï êüìâùí åðáíá-
áðïèçêåýïíôáé óôïí Ýíáí êüìâï, åíþ ï Üëëïò áðïäßäåôáé óôï óýóôçìá. Ôáõôü-
÷ñïíá, åíçìåñþíåôáé êáé ï ðáôÝñáò êüìâïò, üðïõ äéáãñÜöåôáé Ýíá êëåéäß êáé ï
áíôßóôïé÷ïò äåßêôçò. ÁõôÞ ç äéáäéêáóßá ðáñïõóéÜæåôáé óôï Ó÷Þìá 12.15ä.
ÌÝ÷ñé óôéãìÞò äåí åîåôÜóèçêáí ïé åóùôåñéêïß êüìâïé. ÐñÜãìáôé, åßíáé áðß-
èáíï êÜðïéïò åóùôåñéêüò êüìâïò íá êáôáëÞîåé ìå ëéãüôåñï áðü d êëåéäéÜ, áöïý
üðùò åßíáé ãíùóôü êáôÜ ìÝóï üñï ïé åóùôåñéêïß êüìâïé Ý÷ïõí 2d × ln 2 êëåéäéÜ.
Áí d=100, ôüôå 2d × ln 2 = 140 êáé óõíåðþò èá äçìéïõñãçèåß ïõóéáóôéêü ðñü-
âëçìá óôïí êüìâï áõôü, ìüíï áí ÷Üóåé 40 êëåéäéÜ. Ùóôüóï, ãéá ëüãïõò ðëçñüôçôáò
314 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

(á) 12 52
´ HH
´´ H
H
4 5 10 12 19 52 56 71 90

(â) äéáãñáöÞ 52 12 52
´ Q
´´ QQ
4 5 10 12 19 56 71 90

(ã) äéáãñáöÞ 19 10 52
¡ Q
¡ QQ
4 5 10 12 56 71 90

(ä) äéáãñáöÞ 90 10 52
¡ @
¡ @
4 5 10 12 56 71

(å) äéáãñáöÞ 12 52
¢ @
¢ @
4 5 10 56 71

Ó÷Þìá 12.15: ÄéáãñáöÝò óå Â+ -äÝíäñï ìå d=2 êáé Bkf r=4.

ðñÝðåé íá áíáöåñèïýí ôá åîÞò.


¸óôù üôé Ýíáò åóùôåñéêüò êüìâïò ìÝíåé ìå ëéãüôåñï áðü d êëåéäéÜ. ÅëÝã-
÷ïíôáé ïé áäåëöïß êüìâïé (ìå ðñïôåñáéüôçôá óôïí áñéóôåñü) áí ðåñéÝ÷ïõí ðå-
ñéóóüôåñá êëåéäéÜ áðü ôï üñéï. Áí êÜðïéïò áäåëöüò Ý÷åé ðåñéóóüôåñá êëåéäéÜ
áðü ôï üñéï, ôüôå ôá êëåéäéÜ ôïõ êüìâïõ áõôïý, ôï êëåéäß ôïõ ðáôÝñá êüìâïõ ðïõ
÷ùñßæåé ôïõò äýï áäåëöïýò êáé ôá êëåéäéÜ ôïõ õð’ üøç êüìâïõ áíáäéáíÝìïíôáé
óôïõò äýï êüìâïõò. Ôï ìåóáßï êëåéäß áðü áõôü ôï óýíïëï êëåéäéþí áíÝñ÷åôáé
óôïí ðáôÝñá êüìâï. Áí êáé ïé äýï áäåëöïß êüìâïé Ý÷ïõí áêñéâþò d êëåéäéÜ, ôüôå
ðñÝðåé íá ãßíåé óõã÷þíåõóç (êáôÜ ðñïôåñáéüôçôá ìå ôïí áñéóôåñü). Ôá êëåéäéÜ
áõôÜ åðáíá-áðïèçêåýïíôáé óôïí Ýíá êüìâï, ï Üëëïò êüìâïò áðïäßäåôáé óôï óý-
óôçìá, åíþ ôï áíôßóôïé÷ï êëåéäß êáé ï ó÷åôéêüò äåßêôçò äéáãñÜöïíôáé áðü ôïí
ðáôÝñá êüìâï. Áí êáé ï ðáôÝñáò êüìâïò ìå ôç óåéñÜ ôïõ áðïìåßíåé ìå ëéãüôåñï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 315

áðü d êëåéäéÜ, ôüôå ôï ðñüâëçìá ìåôáöÝñåôáé êáôÜ Ýíá åðßðåäï ðñïò ôç ñßæá.
Óôï Ó÷Þìá 12.16 ðáñïõóéÜæåôáé Ýíá ðáñÜäåéãìá äéáãñáöÞò óå Â+ -äÝíäñï ðïõ
êáôáëÞãåé óå óõã÷þíåõóç åóùôåñéêþí êüìâùí.

(á) 56
³ XX
³ ³³ XXX
³³ X
X
10 19 90 113 146
¡ @ © © ¡ @
¡ @ ©© ¡ @
4 5 10 12 19 52 56 71 90 100 113 142 146 150

(â) äéáãñáöÞ 4 90
! aa
!! aa
!! a
19 56 113 146
" l ¡ @
"" l ¡ @
5 10 12 19 52 56 71 90 100 113 142 146 150

(ã) äéáãñáöÞ 71 19 90 113 146


! P
!! ¢ @ HH PPP
!! ¢ @ HH PP
5 10 12 19 52 56 90 100 113 142 146 150

Ó÷Þìá 12.16: ÄéáãñáöÝò óå Â+ -äÝíäñï ìå d=2 êáé Bkf r=4.

Áêïëïõèåß ç áíÜëõóç ãéá ôç äéáãñáöÞ óå Â+ -äÝíäñï ðïõ ÷ñçóéìïðïéåßôáé


ùò ðñùôåýùí êáôÜëïãïò. To êüóôïò äéáãñáöÞò ôçò áðëÞò (êáé óõíçèÝóôåñçò
ðåñßðôùóçò) åßíáé:
Tdelete (primary) = Taccess + 2r

Óôç äåýôåñç ðåñßðôùóç ãßíåôáé áíáäéáíïìÞ ôùí åããñáöþí ôùí ãåéôïíéêþí


êüìâùí êáé ôïõ ðáôÝñá êüìâïõ. Óôçí ðåñßðôùóç áõôÞ áðáéôåßôáé åðéðëÝïí ðñï-
óðÝëáóç ôùí äýï áäåëöþí, åíþ ï ðáôÝñáò êüìâïò Ý÷åé Þäç ðñïóðåëáóèåß, êáé
åðáíá-áðïèÞêåõóç ôùí ôñéþí êüìâùí óõíïëéêÜ. Ç ðéèáíüôçôá ï ôåñìáôéêüò êüì-
âïò íá åßíáé ãåìÜôïò êáôÜ ôï Þìéóõ åßíáé 2/Bkf r. Åýêïëá ðñïêýðôåé üôé ôï
ó÷åôéêü ÷ñïíéêü êüóôïò åßíáé:
316 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

Tdelete (primary) = Taccess + 4 × (s + r + dtt) + (s + r + btt)

Áí êáé ïé äýï áäåëöïß êüìâïé ðåñéÝ÷ïõí áêñéâþò d êëåéäéÜ, ôüôå ôï ó÷åôéêü


êüóôïò åßíáé:
µ ¶
4
Tdelete (primary) = 1 + × Taccess + (s + r + btt)
Bkf r

Áí ôï Â+ -äÝíäñï ÷ñçóéìïðïéåßôáé ùò äåõôåñåýùí êáôÜëïãïò, ôüôå ï üñïò 2/Bkf r


áíôéêáèßóôáôáé áðü ôïí üñï 1/d. Ôï êüóôïò äéáãñáöÞò åßíáé:
µ ¶
3
Tdelete (secondary) = 1 + × (s + r + btt) + 2r
d
ÅðåéäÞ ôï d åßíáé áñêåôÜ ìåãÜëï, ï ôýðïò ìðïñåß íá áðëïðïéçèåß:

Tdelete (secondary) = s + 3r + btt

12.4 ¢ëëåò ÐáñáëëáãÝò ôùí Â-äÝíäñùí


Áðü ôá Â-äÝíäñá Ý÷åé ðñïÝëèåé ìßá ìåãÜëç ïìÜäá åíäéáöåñïõóþí ðáñáëëáãþí.
Ìåôáîý ôùí Üëëùí óôç âéâëéïãñáößá áíáöÝñïíôáé ïé åîÞò ðáñáëëáãÝò: ôá Â-
äÝíäñá ìå êëåéäéÜ ìåôáâëçôïý ìÞêïõò (B-trees with variable length entries), ôá
Â-äÝíäñá ìéêñÞò ôÜîçò, ôá ÄõáäéêÜ Â-äÝíäñá (Binary B-trees), ôá ÓõììåôñéêÜ
ÄõáäéêÜ Â-äÝíäñá (Symmetric Binary B-trees) êáé ôá ÐñïèåìáôéêÜ Â+ -äÝíäñá
(Prefix B+ -trees). ÁíáöïñÜ-êëåéäß ãéá ôçí ïéêïãÝíåéá áõôÞ ôùí ðáñáëëáãþí
åßíáé ç åðéóêüðçóç ôïõ Comer óôçí åñãáóßá [Comer 1979], üðïõ ôï Â-äÝíäñï
÷áñáêôçñßæåôáé ùò "ðáíôá÷ïý ðáñüí". Óôç óõíÝ÷åéá èá ãßíåé åêôåíÝóôåñç áíá-
öïñÜ óôá ÐñïèåìáôéêÜ Â+ -äÝíäñá, åíþ ãéá ôéò õðüëïéðåò äïìÝò äßíïíôáé ìüíï
ëßãá êáôáôïðéóôéêÜ óôïé÷åßá.
Áí ôá êëåéäéÜ åßíáé ìåôáâëçôïý ìÞêïõò (ãéá ðáñÜäåéãìá, óõìâïëïóåéñÝò),
ôüôå åßíáé äõíáôüí ãéá äåäïìÝíç ïìÜäá êëåéäéþí íá êáôáóêåõáóèåß Ýíá Â-äÝíäñï
ìå ðåñéåêôéêüôçôá êüìâùí ôïõëÜ÷éóôïí 50% [McGreight 1977]. ÄçëáäÞ óôï äÝí-
äñï áõôü óçìáóßá äåí Ý÷åé ôï ðëÞèïò ôùí êëåéäéþí ðïõ ðåñéÝ÷åé (äçëáäÞ, äåí
÷áñáêôçñßæåôáé áðü êÜðïéá ôÜîç), áëëÜ ôï óõíïëéêü ìÞêïò ôùí êëåéäéþí. ¸÷ïõí
ðñïôáèåß áñêåôïß áëãüñéèìïé êáôáóêåõÞò ôÝôïéùí äÝíäñùí ðïõ áðïóêïðïýí óôçí
åëá÷éóôïðïßçóç ôïõ ýøïõò ôïõ äÝíäñïõ êáé ôïõ ðëÞèïõò êüìâùí êáé óõíåðþò óôçí
åëá÷éóôïðïßçóç ôïõ ÷ñüíïõ áíáæÞôçóçò. ÃåíéêÜ, ãéá íá åðéôåõ÷èåß áõôüò ï óêï-
ðüò èá ðñÝðåé ôá ìéêñïý ìåãÝèïõò êëåéäéÜ íá áðïèçêåõèïýí ðëçóéÝóôåñá ðñïò ôç
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 317

ñßæá, þóôå ï ëüãïò äéáêëÜäùóçò óôá õøçëÜ åðßðåäá íá åßíáé ìåãÜëïò. Ôï ÷áñá-
êôçñéóôéêü ôçò äïìÞò áõôÞò êáé ôùí ó÷åôéêþí áëãïñßèìùí åßíáé üôé åöáñìüæïíôáé
ìüíï óå óôáôéêÜ êáé ãíùóôÜ áðü ôçí áñ÷Þ äåäïìÝíá.
Óôçí êáôçãïñßá ôùí Â-äÝíäñùí ìéêñÞò ôÜîçò åìðßðôïõí ðïëëÝò ðáñáëëáãÝò.
Ôá 2-3 äÝíäñá êáé ôá 1-2 äÝíäñá åßíáé Â-äÝíäñá ôÜîçò 3 êáé 2 áíôéóôïß÷ùò, äçëáäÞ
ðåñéÝ÷ïõí 1 ùò 2 êáé 0 ùò 1 åããñáöÝò áíôéóôïß÷ùò. Ôá 2-3 äÝíäñá áäåëöþí (2-3
Brother trees) åßíáé 2-3 äÝíäñá ìå ôïí åðéðñüóèåôï ðåñéïñéóìü üôé Ýíáò êüìâïò
ìå ìßá åããñáöÞ ðñÝðåé íá Ý÷åé ïðùóäÞðïôå áäåëöü êüìâï ìå äýï åããñáöÝò.
Ðáñüìïéïò ðåñéïñéóìüò éó÷ýåé êáé óôá 1-2 äÝíäñá áäåëöþí. Ôá 2-3 äÝíäñá õéþí
(2-3 Son trees) åßíáé 2-3 äÝíäñá ìå ôïí åðéðñüóèåôï ðåñéïñéóìü üôé äåí ìðïñåß
íá õðÜñîåé Ýíá æåýãïò êüìâùí ìå ó÷Ýóç ðáôÝñá-ðáéäéïý, üðïõ êáé ïé äýï êüìâïé
íá Ý÷ïõí ìßá ìüíï åããñáöÞ. Ðáñüìïéïò ðåñéïñéóìüò éó÷ýåé ãéá ôá 1-2 äÝíäñá
õéþí (1-2 Son trees). Åßíáé åõêïëïíüçôï üôé ïé ðåñéïñéóìïß áõôïß êáèéóôïýí
äýóêïëï êáèÞêïí ôçí áíÜðôõîç ôùí ó÷åôéêþí áëãïñßèìùí äéá÷åßñéóçò ôùí äïìþí.
¼ëåò áõôÝò ïé ðáñáëëáãÝò áðïôåëïýí ðåñéóóüôåñï èåùñçôéêÝò áíáæçôÞóåéò ðáñÜ
ïñãáíþóåéò ìå ðñáêôéêÞ åöáñìïãÞ. Ï åíäéáöåñüìåíïò áíáãíþóôçò ãéá ôéò äïìÝò
áõôÝò ìðïñåß íá áíáôñÝîåé óôï âéâëßï ôïõ Gonnet [Gonnet 1984], üðïõ èá âñåé
ðåñéóóüôåñá óôïé÷åßá êáé áíáöïñÝò.
Ôá ÄõáäéêÜ Â-äÝíäñá åßíáé ìßá óõãêåêñéìÝíç õëïðïßçóç ôùí 2-3 äÝíäñùí ìå
÷ñÞóç óõíäåäåìÝíùí ëéóôþí ìÝóá óå êÜèå êüìâï. ¸ôóé óôç äïìÞ óõíõðÜñ÷ïõí
ïé äåíäñéêïß äåßêôåò êáé ïé äåßêôåò ôùí êüìâùí, ïðüôå ôåëéêÜ ôï äÝíäñï ìïéÜæåé
ìå Ýíá áðëü äõáäéêü äÝíäñï. Óôçí åêäï÷Þ áõôÞ ï äåîéüò äåíäñéêüò êüìâïò ìðï-
ñåß íá êáôáóôåß ïñéæüíôéïò ðñïò ôïí áäåëöü êüìâï, åðïìÝíùò óå êÜèå åããñáöÞ
÷ñåéÜæåôáé êáé Ýíá åðéðëÝïí ðåäßï ðïõ äçëþíåé áí ï äåîéüò äåßêôçò åßíáé êá-
ôáêüñõöïò Þ ïñéæüíôéïò. Ôá óõììåôñéêÜ äõáäéêÜ Â-äÝíäñá åðéôñÝðïõí êáé ôïí
áñéóôåñü äåßêôç íá åßíáé ïñéæüíôéïò [Bayer 1972b]. ÌÜëéóôá óçìåéþíåôáé üôé ôá
äÝíäñá AVL åßíáé õðïðåñßðôùóç ôùí óõììåôñéêþí äõáäéêþí Â-äÝíäñùí.
¼ëåò áõôÝò ïé ðáñáëëáãÝò åßíáé äïìÝò ðïõ ëüãù åðßäïóçò áíáöÝñïíôáé
êõñßùò óôçí êýñéá ìíÞìç. ÁíôéèÝôùò, ôá ÐñïèåìáôéêÜ Â+ -äÝíäñá, ðïõ ðñïôÜ-
èçêáí áðü ôïõò Bayer êáé Unteraurer [Bayer 1977], Ý÷ïõí ðáñüìïéá äïìÞ ìå ôá
Â+ -äÝíäñá êáé åßíáé ìßá Üëëç ðáñáëëáãÞ ãéá õëïðïßçóç êõñßùò óå äåõôåñåýïõóá
ìíÞìç. Ç âáóéêÞ éäÝá åßíáé üôé áí ôï êëåéäß åßíáé óõìâïëïóåéñÜ, ôüôå åßíáé ðñïôé-
ìüôåñï óôïõò åóùôåñéêïýò êüìâïõò ôïõ êáôáëüãïõ íá áðïèçêåýåôáé ìüíï åêåßíï
ôï ðñüèåìá ôïõ êëåéäéïý, ôï ïðïßï åßíáé áðáñáßôçôï ãéá ôç äéáäéêáóßá áíáæÞôç-
óçò. ¸ôóé ï êáôÜëïãïò ðåñéÝ÷åé ôïõò ëåãüìåíïõò äéá÷ùñéóôÝò (separators) ðïõ
åßíáé ìåôáâëçôïý ìÞêïõò. Ôï ìÞêïò ôùí äéá÷ùñéóôþí ðïéêßëåé áðü Ýíá ìüíï
byte ìÝ÷ñé êáé Ýíá ðëÞñåò êëåéäß, êáèþò åîáñôÜôáé áðü ôéò ôéìÝò ôùí ãåéôïíéêþí
êëåéäéþí ôùí åããñáöþí. ¸íá ðáñÜäåéãìá öáßíåôáé óôï Ó÷Þìá 12.17, üðïõ ï
318 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

äéá÷ùñéóôÞò åßíáé Ýíá ìüíï byte.

··· f ···
³ ³³ PP
PP
³³
³ P
P
base bit data file graph tree

Ó÷Þìá 12.17: ÅëÜ÷éóôïò äéá÷ùñéóôÞò.

Óôï Ó÷Þìá 12.18 ðáñïõóéÜæåôáé Ýíáò ðëÞñçò êüìâïò åíüò Ðñïèåìáôéêïý Â+ -


äÝíäñïõ ìå Ýîé êëåéäéÜ êáé ìå ôïõò äéá÷ùñéóôÝò ìåôáîý ôùí êëåéäéþí. ¸óôù üôé
óôïí êüìâï áõôüí åéóÜãåôáé Ýíá íÝï êëåéäß, ôï üíïìá JUNG, ïðüôå ðñïêáëåßôáé
õðåñ÷åßëéóç êáé äéÜóðáóç ôïõ êüìâïõ. Áí ôá êëåéäéÜ áíáäéáíåìçèïýí åîßóïõ,
ôüôå ðñÝðåé ôï êëåéäß JOHNSON íá áðïèçêåõèåß óå Ýíá íÝï êüìâï ðñïò ôá äåîéÜ
êáé ï åëÜ÷éóôïò äéá÷ùñéóôÞò, ôï JOHNSON, íá áíÝëèåé êáôÜ Ýíá åðßðåäï. Áðå-
íáíôßáò áí ôá êëåéäéÜ äåí äéáíÝìïíôáí åîßóïõ óôïõò äýï êüìâïõò, áëëÜ óôïí áñé-
óôåñü êüìâï áðïèçêåýïíôáí ôá GREGG, HILDRETH êáé óôï äåîéü ôá JOHNS,
JOHNSON ê.ë.ð., ôüôå ï äéá÷ùñéóôÞò èá åßíáé ôï J. Óõíåðþò ç áíáäéáíïìÞ ôùí
êëåéäéþí óå ðåñßðôùóç äéÜóðáóçò åßíáé èÝìá âåëôéóôïðïßçóçò. Åäþ õðåéóÝñ÷å-
ôáé ç Ýííïéá ôïõ äéáóôÞìáôïò äéÜóðáóçò (split interval) ôùí ôåñìáôéêþí êüìâùí,
σex , êáé ôùí åóùôåñéêþí êüìâùí, σin , ðïõ ïñßæåôáé ùò o áñéèìüò ôùí bytes Þ
ôùí êëåéäéþí ðñïò ïðïéáäÞðïôå ðëåõñÜ ôïõ ìÝóïõ ôïõ êüìâïõ ðïõ èá ìðïñïýóå
íá èåùñçèåß ùò óçìåßï äéÜóðáóçò (split point). Ôï óçìåßï äéÜóðáóçò åêëÝãåôáé
ìåôáîý ôïõ äéáóôÞìáôïò äéÜóðáóçò, þóôå íá åëá÷éóôïðïéçèåß ï ó÷åôéêüò äéá÷ù-
ñéóôÞò. Áýîçóç ôùí σin êáé σex åðéôñÝðåé êáëýôåñç åêëïãÞ ôïõ äéá÷ùñéóôÞ, áëëÜ
ìðïñåß íá ïäçãÞóåé óå êáêÞ åêìåôÜëëåõóç ôïõ ÷þñïõ ôùí ôåñìáôéêþí êüìâùí ìå
ëéãüôåñï áðü 50%.
H J Johnson Jon K

? ? ? ? ?
Gregg Hildreth Johns Johnson Jones King

Ó÷Þìá 12.18: Äéá÷ùñéóôÝò óå Ðñïèåìáôéêü Â+ -äÝíäñï.

Ìå ôçí ôå÷íéêÞ áõôÞ ü÷é ìüíï åëá÷éóôïðïéåßôáé ï ÷þñïò ðïõ êáôáëáìâÜíïõí ïé


åóùôåñéêïß êüìâïé áëëÜ êáé ç áíáæÞôçóç ãßíåôáé ôá÷ýôåñá. Áõôü öáßíåôáé åýêïëá
êáé äéáéóèçôéêÜ, ãéáôß ôï äÝíäñï Ý÷åé ðëÝïí ëéãüôåñá åðßðåäá. Äåí áëëÜæåé, üìùò,
ôßðïôå óå ó÷Ýóç ìå ôï Â+ -äÝíäñï óå üôé áöïñÜ óôçí áíáæÞôçóç ôçò åðüìåíçò
åããñáöÞò êáé ôçò åîáíôëçôéêÞò áíÜãíùóçò ôïõ áñ÷åßïõ.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 319

12.5 Óýíïøç
Ïé äåíäñéêÝò äïìÝò ðñïóðÝëáóçò Ý÷ïõí åöáñìïóèåß ìå ìåãÜëç åðéôõ÷ßá ãéá ôçí
ïñãÜíùóç ôùí áðïèçêåõìÝíùí äåäïìÝíùí. Ïé äåíäñéêÝò äïìÝò ðñïóöÝñïõí áðï-
äïôéêÞ åéóáãùãÞ, äéáãñáöÞ, åíçìÝñùóç êáé áíáæÞôçóç äåäïìÝíùí. Åðßóçò Ý÷ïõí
ðïëý êáëÞ áðüäïóç óôá åñùôÞìáôá ðåñéï÷Þò.
Ç åöáñìïãÞ ôùí äåíäñéêþí äïìþí Ý÷åé óçìáíôéêÜ ðëåïíåêôÞìáôá Ýíáíôé ôçò
óåéñéáêÞò áíáæÞôçóçò äåäïìÝíùí. Óôçí ðåñßðôùóç ôçò óåéñéáêÞò áíáæÞôçóçò
ãéá ôçí áíáæÞôçóç åíüò Þ ðåñéóóïôÝñùí åããñáöþí ðñÝðåé íá ðñïóðåëáóèåß ôï
óýíïëï ôçò ÂÜóçò ÄåäïìÝíùí. ÁíôéèÝôùò, ìå ôçí åöáñìïãÞ ôùí äåíäñéêþí äï-
ìþí äåí åîåôÜæåôáé ìåãÜëï ìÝñïò ôçò âÜóçò, äéüôé åßíáé âÝâáéï üôé äåí ðåñéÝ÷åé
äåäïìÝíá ðïõ ó÷åôßæïíôáé ìå ôï åñþôçìá.
Ç äïìÞ ôïõ Â-äÝíäñïõ åßíáé áðü ôéò ðëÝïí äéáäåäïìÝíåò êáé ÷ñçóéìïðïéåßôáé
åõñýôáôá áðü ôá ÓÄÂÄ ùò ðñùôåýùí Þ äåõôåñåýùí êáôÜëïãïò. Ïé äïìÝò Â+ -
äÝíäñï êáé Â∗ -äÝíäñï áðïôåëïýí ôéò ãíùóôüôåñåò ðáñáëëáãÝò ôïõ. ÊÜèå êüìâïò
ôïõ äÝíäñïõ áðïôåëåß ìßá óåëßäá äåõôåñåýïõóáò ìíÞìçò. ÓçìáíôéêÞ ðáñÜìåôñïò
ðïõ åðçñåÜæåé ôçí åðßäïóç åßíáé ï ðáñÜãïíôáò äéáêëÜäùóçò ðïõ óôçí ïõóßá
êáèïñßæåé êáé ôï ýøïò ôïõ äÝíäñïõ.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


12.1. Íá äïèïýí áíáëõôéêÝò åêöñÜóåéò ãéá ôïí åëÜ÷éóôï êáé ìÝãéóôï áñéèìü åã-
ãñáöþí óå Â-äÝíäñï ôÜîçò ðïõ áðïôåëåßôáé áðü L åðßðåäá.

12.2. Â-äÝíäñï ôÜîçò m=6 ðåñéÝ÷åé 17 åããñáöÝò ìå êëåéäéÜ 8, 13, 26, 28, 41, 49,
54, 67, 83, 84, 96, 107, 132, 146, 151, 154, 170 êáé áðïôåëåßôáé áðü ôñßá åðßðåäá.
Íá ó÷åäéáóèåß ôï äÝíäñï êáé íá öáíåß ç äïìÞ ôïõ ìåôÜ ôéò äéáãñáöÝò ôùí åããñá-
öþí ìå êëåéäéÜ 83, 67 êáé 26.

12.3. Íá ó÷åäéáóèåß ôï Â∗ -äÝíäñï ôÜîçò m=6 ðïõ äçìéïõñãåßôáé ìåôÜ áðü äéá-
äï÷éêÝò åéóáãùãÝò ôùí åããñáöþí ìå êëåéäéÜ 25, 26, 24, 39, 32, 9, 28, 45, 13, 41,
5, 23, 19, 27, 6, 14, 34, 21, 31, 11 êáé 28. Óôç óõíÝ÷åéá íá ó÷åäéáóèåß ç äïìÞ ôïõ
äÝíäñïõ ìåôÜ áðü äéáãñáöÝò ôùí åããñáöþí ìå êëåéäéÜ 26, 21, 11, 9, 45, 13, 39, 6
êáé 14.

12.4. Óôï Â-äÝíäñï ôÜîçò m=3 ôïõ åðüìåíïõ ó÷Þìáôïò ìå x óçìåéþíïíôáé èÝóåéò
åããñáöþí. Óôéò èÝóåéò áõôÝò íá ôïðïèåôçèïýí åããñáöÝò ìå êëåéäéÜ P , Y , A, Q,
F , W , J, T , B, L, M , D êáé U . Íá ó÷åäéáóèåß ôï äÝíäñï êáé íá öáíåß ç äïìÞ
ôïõ ìåôÜ áðü åéóáãùãÞ åããñáöÞò ìå êëåéäß X, äéáãñáöÞ åããñáöÞò ìå êëåéäß Q,
320 ÊåöÜëáéï 12. ÄåíäñéêÝò ÌÝèïäïé ÐñïóðÝëáóçò

äéáãñáöÞ åããñáöÞò ìå êëåéäß M êáé åéóáãùãÞ åããñáöÞò ìå êëåéäß C.

@
¡
¡
@
! PP
!!
! PP
@
¡@

¡ ¡
@ @
¡@

¡ ¡
@
´ Q ´ Q
´ Q ´ Q
@
¡@
¡
@¡@ @
¡ ¡
¡
@ @
¡
¡
@ @
¡
¡
@ @
¡
¡
@ @
¡@
¡
@¡¡
@

12.5. Èåùñþíôáò ôçí ôå÷íéêÞ ôçò äéÜóðáóçò ôñéþí êüìâùí óå ôÝóóåñéò, íá ó÷å-
äéáóèåß ôï Â∗ -äÝíäñï ôÜîçò m=3 ðïõ äçìéïõñãåßôáé ìåôÜ áðü äéáäï÷éêÝò åéóá-
ãùãÝò ôùí åããñáöþí ìå êëåéäéÜ 25, 26, 24, 39, 32, 9, 28, 45, 13, 41, 5, 23, 19, 27,
6, 14, 34, 21, 31, 11 êáé 28. Óôç óõíÝ÷åéá íá ó÷åäéáóèåß ç äïìÞ ôïõ äÝíäñïõ ìåôÜ
áðü äéáãñáöÝò ôùí åããñáöþí ìå êëåéäéÜ 26, 21, 11, 9, 45, 13, 39, 6 êáé 14.

12.6. Íá ó÷åäéáóèåß ç êëÜóç ôùí ÂÔ(4,15) êáé ÂÔ(4,16). Íá åðéâåâáéùèåß ï


êáíüíáò ôùí âÝëôéóôùí äÝíäñùí.

12.7. Äßíåôáé Â+ -äÝíäñï ðïõ ÷ñçóéìåýåé ùò ðñùôåýùí êáôÜëïãïò. Ï áñéèìüò ôùí


êÜäùí ôïõ êáôþôåñïõ åðéðÝäïõ åßíáé bk. Óôï äßóêï åßíáé áðïèçêåõìÝíá ôá äýï
êáôþôåñá åðßðåäá ôïõ äÝíäñïõ, åíþ ôá õðüëïéðá åðßðåäá åßíáé áðïèçêåõìÝíá
óôçí êýñéá ìíÞìç ðïõ Ý÷åé ìÝãåèïò 10 MBytes. Áí õðïôåèåß üôé ï ìÝóïò ëüãïò
äéáêëÜäùóçò åßíáé 140, ôüôå ðüóï ìåãÜëï ìðïñåß íá åßíáé ôï áñ÷åßï þóôå ðïôÝ
íá ìçí õðÜñîåé êüóôïò ìåãáëýôåñï áðü 2 ðñïóðåëÜóåéò É/Ï.

12.8. Äßíåôáé Ýíá Â+ -äÝíäñï ìå 6.000.000 åããñáöÝò ôùí 400 bytes. Ðüóïò ÷þñïò
áðáéôåßôáé ãéá ôï ôåëåõôáßï åðßðåäï; Ðüóïò åßíáé ï áðáéôïýìåíïò ÷þñïò ãéá ôï
åðßðåäï åðÜíù áðü ôá öýëëá, áí ôï æåýãïò êëåéäß-äåßêôçò áðïôåëåßôáé áðü 12
bytes, åíþ êÜèå êÜäïò áðïôåëåßôáé áðü 1 Þ áðü 4 óåëßäåò; Ãéá êÜèå ðåñßðôùóç
ðüóïò åßíáé ï ÷ñüíïò ãéá ôçí åîáíôëçôéêÞ ôïõ áíÜãíùóç;

12.9. ¸óôù üôé óôï áñ÷åßï ôçò ðñïçãïýìåíçò Üóêçóçò åêôåëåßôáé ìßá åîáíôëç-
ôéêÞ áíÜãíùóç êÜèå 5000 áðëÝò áíáæçôÞóåéò. Ï åóùôåñéêüò êÜäïò Ý÷åé óôáèåñü
ìÝãåèïò ìßá óåëßäá ôùí 2400 bytes. Ðïéü åßíáé ôï âÝëôéóôï ìÝãåèïò ôïõ êÜäïõ
äåäïìÝíùí;

12.10. Ôá äåäïìÝíá ôùí ðñïçãïýìåíùí áóêÞóåùí åßíáé ïñãáíùìÝíá ùò ðñù-


ôåýïí Â+ -äÝíäñï êáé ùò äåõôåñåýïí Â+ -äÝíäñï. Ãéá êÜèå ðåñßðôùóç ðïéü åßíáé
ôï âÝëôéóôï ìÝãåèïò êüìâïõ þóôå Ýíá åñþôçìá ðåñéï÷Þò ðïõ áíáêôÜ ôï 5% ôùí
åããñáöþí íá åßíáé ïéêïíïìéêüôåñç áðü ôç óåéñéáêÞ áíáæÞôçóç åíüò áñ÷åßïõ óù-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 321

ñïý;

12.11. Ãéá áñ÷åßï ðïõ áðïôåëåßôáé áðü 100.000 åããñáöÝò ôùí 400 bytes êôßæåôáé
ùò äåõôåñåýùí êáôÜëïãïò Â+ -äÝíäñï ìå ìÝãåèïò ôåñìáôéêþí êüìâùí 2400 bytes.
¸óôù üôé ðñÝðåé íá äïèåß ëßóôá åããñáöþí ìå ôéìÞ óôï äåõôåñåýïí ðåäßï ìåãá-
ëýôåñç áðü ìßá óõãêåêñéìÝíç ôéìÞ. Áí ïé êáôÜëëçëåò åããñáöÝò óôçí Ýîïäï åßíáé
25% (Þ 10% Þ 5%) ôïõ óõíüëïõ ôùí åããñáöþí, ìÞðùò åßíáé ðñïôéìüôåñï íá ãßíåé
åîáíôëçôéêÞ áíÜãíùóç ôïõ áñ÷åßïõ êáé êáôüðéí íá ôáîéíïìçèïýí ïé åããñáöÝò
ðñéí äïèïýí óôï ÷ñÞóôç.

12.12. Óå Â+ -äÝíäñï ôÜîçò d=1 êáé Bkf r=2 íá åöáñìïóèåß äéáäï÷éêÜ ï áëãü-
ñéèìïò åéóáãùãÞò ãéá ôéò åããñáöÝò ìå êëåéäéÜ 4, 12, 6, 1, 3, 15, 5, 9, 7, 14, 16, 10
êáé 11. Êáôüðéí íá ãßíïõí äéáäï÷éêÝò äéáãñáöÝò ôùí åããñáöþí ìå êëåéäéÜ 1, 3
êáé 4. Ãéá ôá ßäéá äåäïìÝíá íá åîåôáóèåß Ýíá Â+ -äÝíäñï ôÜîçò d=3 êáé Bkf r=2.

12.13. Ôá äåäïìÝíá ôçò ðñïçãïýìåíçò Üóêçóçò ìðïñåß íá äïìçèïýí åßôå ùò


áñ÷åßï óùñïý, åßôå ùò Â+ -äÝíäñï. Ðïéü åßíáé ðñïôéìüôåñï áí óå êÜèå 10 ðñï-
óðåëÜóåéò áíôéóôïé÷ïýí 200 åéóáãùãÝò. Íá èåùñçèåß üôé Bkf r=6.

12.14. Ôï áñ÷åßï ôùí 6.000.000 åããñáöþí ôùí 400 bytes åßíáé ðñïôéìüôåñï íá
êôéóèåß ùò Â+ -äÝíäñï ìå 6.000.000 åéóáãùãÝò Þ ìå ôáîéíüìçóç ôùí äåäïìÝíùí
êáé ìåôÜ áðïèÞêåõóç;

12.15. ¸íá áñ÷åßï áðïôåëåßôáé áðü 20.000 åããñáöÝò ìå êëåéäß 9 bytes. Ôï ìÝ-
ãåèïò ôçò óåëßäáò åßíáé 2000 åããñáöÝò, åíþ ï äåßêôçò áðïôåëåßôáé áðü 4 bytes.
Åðßóçò Ýóôùóáí äýï ðåñéðôþóåéò ìÞêïõò åããñáöÞò: 15 Þ 180 bytes. Íá èåùñç-
èïýí ïé åîÞò ðåñéðôþóåéò: óôáôéêü äåíäñéêü áñ÷åßï, óôáôéêüò ðõêíüò êáôÜëïãïò
êáé êýñéï áñ÷åßï, ðñùôåýùí êáé äåõôåñåýùí êáôÜëïãïò Â-äÝíäñïõ êáé êýñéï áñ-
÷åßï. Ãéá êÜèå ðåñßðôùóç íá âñåèåß ôï óõíïëéêü ìÝãåèïò óå óåëßäåò êáé ôï ìÝóï
êüóôïò ðñïóðÝëáóçò.
13
Êáôáêåñìáôéóìüò

Ôá ôõ÷áßá Þ Üìåóá (random, direct) áñ÷åßá åßíáé ìßá åîáéñåôéêÜ ÷ñÞóéìç äïìÞ ãéá
ôç öõóéêÞ ïñãÜíùóç ôùí äåäïìÝíùí, ôüóï óôçí êýñéá üóï êáé óôç äåõôåñåýïõóá
ìíÞìç. Áí ôá áñ÷åßá áõôÜ åßíáé óùóôÜ ó÷åäéáóìÝíá, ôüôå áðïôåëïýí ìßá éäáíéêÞ
ïñãÜíùóç ãéá on-line åöáñìïãÝò, ãéáôß åíôïðßæïõí ôç æçôïýìåíç åããñáöÞ ìå ðïëý
ëßãåò ðñïóðåëÜóåéò (ßóùò êáé ìüíï ìßá). Ôï âáóéêü ìåéïíÝêôçìá ôçò äïìÞò áõôÞò
åßíáé üôé äåí ðñïóöÝñåôáé ãéá óåéñéáêÞ áíÜêôçóç ôáîéíïìçìÝíùí åããñáöþí êáôÜ
ïðïéïäÞðïôå êëåéäß Þ ãéá áíáæçôÞóåéò ðåñéï÷Þò.
Ç âáóéêÞ éäÝá ôçò ìåèüäïõ åßíáé ç åöáñìïãÞ êÜðïéïõ áðëïý áëãåâñéêïý
ìåôáó÷çìáôéóìïý óôçí ôéìÞ ôïõ êëåéäéïý, þóôå íá ðñïêýøåé ç áðüëõôç äéåýèõíóç
ôçò åããñáöÞò. Ç áðüëõôç äéåýèõíóç åîáñôÜôáé áðü ôï õëéêü êáé áðïôåëåßôáé
áðü ôçí ôñéÜäá: áñéèìüò êõëßíäñïõ, áñéèìüò áôñÜêôïõ êáé áñéèìüò åããñáöÞò.
Ùóôüóï, åßíáé äõíáôüí ç ìÝèïäïò íá åöáñìïóèåß êáé êáôÜ ôñüðï ðïõ íá ìçí
åîáñôÜôáé áðü ôï õëéêü.
Ôá êëåéäéÜ ëÝãïíôáé ðõêíÜ (dense) üôáí ïé ôéìÝò ôïõò åßíáé óõíå÷üìåíåò. Óôçí
áðëïýóôåñç ðåñßðôùóç ðõêíþí êëåéäéþí ïé ôéìÝò ôïõò áñ÷ßæïõí áðü ôç ìïíÜäá.
Ãéá ðáñÜäåéãìá, Ýóôù üôé ïé ôéìÝò ôùí êëåéäéþí åßíáé áðü ôï 1 ùò ôï 5000 êáé üôé ç
÷ùñçôéêüôçôá ôùí óåëßäùí åßíáé ìßá åããñáöÞ. Óôçí ðåñßðôùóç áõôÞ äçìéïõñãåßôáé

323
324 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

Ýíá áñ÷åßï ôùí 5000 óåëßäùí, ïðüôå ç i-ïóôÞ åããñáöÞ èá áðïèçêåõèåß óôçí (i-
1)-ïóôÞ óåëßäá. Èá ìðïñïýóå ïé ôéìÝò ôùí ðõêíþí êëåéäéþí íá ìçí áñ÷ßæïõí áðü
ôç ìïíÜäá áëëÜ, ãéá ðáñÜäåéãìá, íá êõìáßíïíôáé áðü ôï 10.001 ùò ôï 15.000.
Ôüôå áöáéñþíôáò ìßá óôáèåñÞ ôéìÞ áðü ôçí ôéìÞ ôïõ êëåéäéïý (óôç óõãêåêñéìÝíç
ðåñßðôùóç ôï 10.000), êáé ðÜëé âñßóêåôáé åýêïëá ç êáôÜëëçëç óåëßäá ôïõ áñ÷åßïõ.
Tá áñ÷åßá áõôÜ ëÝãïíôáé áõôïäåéêôïäïôçìÝíá (self-indexing) êáé õëïðïéïýíôáé
áðëïýóôáôá óå üëåò ôéò ãëþóóåò ðñïãñáììáôéóìïý.
Áí ôá êëåéäéÜ äåí åßíáé ðõêíÜ, ôüôå ìå ôçí ôå÷íéêÞ áõôÞ ôï ìåãáëýôåñï ìÝñïò
ôïõ áñ÷åßïõ èá ðáñáìåßíåé êåíü êáé èá óðáôáëçèåß ç äåõôåñåýïõóá ìíÞìç. Ç
ðåñßðôùóç áõôÞ áíôéìåôùðßæåôáé ìåôáó÷çìáôßæïíôáò ôçí ôéìÞ ôïõ êëåéäéïý, Ýôóé
þóôå ôï äéÜóôçìá ôùí êëåéäéþí íá áíôéóôïé÷åß óå Ýíá ðïëý ìéêñüôåñï äéÜóôçìá
ôéìþí äéåõèýíóåùí. Ç ìÝèïäïò áõôÞ ïíïìÜóèçêå áñ÷éêÜ ìåôáó÷çìáôéóìüò ôïõ
êëåéäéïý óå äéåýèõíóç (key-to-address transformation), áëëÜ ôåëéêÜ åðéêñÜôçóå
ï üñïò êáôáêåñìáôéóìüò (hashing), êáé ãé’ áõôü ôá ôõ÷áßá áñ÷åßá ëÝãïíôáé êáé
áñ÷åßá êáôáêåñìáôéóìïý (hashed files).
ÊáôÜ ôç öüñôùóç ôïõ áñ÷åßïõ äåóìåýåôáé êÜðïéïò ÷þñïò ôïõ äßóêïõ, ï ïðïßïò
ïíïìÜæåôáé êýñéá ðåñéï÷Þ (main area). Óå ìåñéêÝò ðáñáëëáãÝò ôçò ìåèüäïõ
ðñïâëÝðåôáé åðéðëÝïí êáé ç ìåëëïíôéêÞ ÷ñÞóç ðåñéï÷Þò õðåñ÷åßëéóçò (overflow
area), ðïõ óõíÞèùò âñßóêåôáé óôïí ßäéï êýëéíäñï ìå ôçí êýñéá ðåñéï÷Þ, þóôå
íá ìçí õðÜñ÷åé ÷ñïíéêü êüóôïò åíôïðéóìïý. ¼ìùò óå Üëëåò ðáñáëëáãÝò äåí
ðñïâëÝðåôáé îå÷ùñéóôÞ ðåñéï÷Þ ãéá ôéò åããñáöÝò õðåñ÷åßëéóçò. ÐáñÜãïíôáò äé-
åõèýíóåùí (address factor) åßíáé ôï êëÜóìá ôïõ ìåãÝèïõò ôçò êýñéáò ðåñéï÷Þò
ðñïò ôï óõíïëéêü ìÝãåèïò ôïõ áñ÷åßïõ. Áí ï ÷þñïò ðïõ Ý÷åé êñáôçèåß áðü ôï
áñ÷åßï äåí áõîïìåéþíåôáé ìå ôçí ðÜñïäï ôïõ ÷ñüíïõ, ôüôå ôï áñ÷åßï åßíáé óôá-
ôéêü. ¼ìùò óôçí ðñÜîç ïé åöáñìïãÝò åßíáé äõíáìéêÝò, äçëáäÞ ÷áñáêôçñßæïíôáé
áðü åéóáãùãÝò êáé äéáãñáöÝò åããñáöþí. ¸ôóé, áðü ôï 1980 êáé åíôåýèåí Ý÷åé
ðñïôáèåß ìßá óåéñÜ äïìþí äõíáìéêþí ôõ÷áßùí áñ÷åßùí ðïõ ìåãåèýíïíôáé êáé
óõññéêíþíïíôáé, áíáëüãùò ìå ôï ðëÞèïò ôùí åéóáãùãþí êáé ôùí äéáãñáöþí åã-
ãñáöþí, áíôéóôïß÷ùò. Ìå Üëëá ëüãéá, ïé äïìÝò áõôÝò äåí ðáñáìÝíïõí ðáèçôéêÝò
óôéò åéóáãùãÝò êáé äéáãñáöÝò åããñáöþí áëëÜ ðñïóáñìüæïíôáé, þóôå êáé íá ìç
ãßíåôáé óðáôÜëç ÷þñïõ áëëÜ êáé ç åðßäïóç íá ìçí åêöõëßæåôáé.
Óôç óõíÝ÷åéá èá åîåôáóèïýí áðü áëãïñéèìéêÞ Þ/êáé áíáëõôéêÞ Üðïøç ïé åîÞò
ïñãáíþóåéò: ï äõíáìéêüò êáôáêåñìáôéóìüò (dynamic hashing), o åðåêôáôüò êá-
ôáêåñìáôéóìüò (extendible hashing), ï åêèåôéêüò êáôáêåñìáôéóìüò ìå ðåñéïñé-
óìÝíï êáôÜëïãï (bounded index exponential hashing), êáé ôÝëïò ï ãñáììéêüò
êáôáêåñìáôéóìüò (linear hashing). ÊÜèå ìßá áðü ôéò ðñïçãïýìåíåò ôå÷íéêÝò ìå
ôá ðñïôåñÞìáôá êáé ôá ìåéïíåêôÞìáôá óå ó÷Ýóç ìå ôéò õðüëïéðåò áðáíôÜ ìå óýí-
èåôïõò áëãïñßèìïõò óôá ðñïâëÞìáôá:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 325

• ðùò êáé ðüôå äéáóðÜôáé Ýíáò êÜäïò,

• ðùò äéáíÝìïíôáé ïé åããñáöÝò áðü ôïí ðáëéü êÜäï óôïõò íÝïõò,

• ðùò êáé ðüôå óõã÷ùíåýïíôáé äýï êÜäïé, êáé ôÝëïò

• ðùò ïé åããñáöÝò áðü ôïõò äýï ðáëéïýò êÜäïõò áðïäßäïíôáé óôï íÝï êÜäï.

13.1 ÓõíáñôÞóåéò Êáôáêåñìáôéóìïý


Áðáñáßôçôï óôïé÷åßï üëùí ôùí ìåèüäùí ðïõ åîåôÜæïíôáé óôï ðáñüí êåöÜëáéï
åßíáé ïé óõíáñôÞóåéò êáôáêåñìáôéóìïý (hashing functions). Ìßá óõíÜñôçóç êá-
ôáêåñìáôéóìïý áíáëáìâÜíåé ôï ìåôáó÷çìáôéóìü ôçò ôéìÞò åíüò êëåéäéïý óå ôéìÞ
äéåýèõíóçò óôç äåõôåñåýïõóá ìíÞìç ìå ôõ÷áßï ôñüðï. ÊáëÞ óõíÜñôçóç èåùñåßôáé
åêåßíç ðïõ äéáóðåßñåé ôéò åããñáöÝò óå üëç ôçí Ýêôáóç ôïõ áñ÷åßïõ, áêüìç êáé áí
ïé ôéìÝò ôùí êëåéäéþí óõãêåíôñþíïíôáé óå ìåñéêÝò ðåñéï÷Ýò ôïõ ðåäßïõ ôéìþí ôùí
êëåéäéþí. Ãéá ôï ëüãï áõôü ç ìÝèïäïò ôïõ êáôáêåñìáôéóìïý ïíïìÜæåôáé åðßóçò
êáé ôå÷íéêÞ äéáóêïñðéóìïý áðïèÞêåõóçò (scatter storage technique). Áí ôá êëåé-
äéÜ åßíáé áñéèìçôéêÜ, ôüôå ìðïñåß íá åöáñìïóèåß ìßá áðëÞ áëãåâñéêÞ Ýêöñáóç.
Áí ôá êëåéäéÜ åßíáé áëöáâçôéêÜ Þ áëöáñéèìçôéêÜ, ôüôå ðñÝðåé íá ìåôáôñáðïýí
ðñþôá óå áñéèìçôéêÜ. Ç ìåôáôñïðÞ áõôÞ ìðïñåß íá ãßíåé ÷ñçóéìïðïéþíôáò êÜ-
ðïéá åóùôåñéêÞ áíáðáñÜóôáóç ôùí ÷áñáêôÞñùí ôùí êëåéäéþí, üðùò ôïõò êþäéêåò
ASCII, EBCDIC ê.ë.ð. ¸ôóé ãéá ðáñÜäåéãìá, ôï êëåéäß C1 ìðïñåß íá ìåôáôñáðåß
óå 6749 (67 åßíáé ï êþäéêáò ASCII ãéá ôï C êáé 49 åßíáé ï êþäéêáò ãéá ôï 1).
Ôï ðñüâëçìá ôùí óõíáñôÞóåùí êáôáêåñìáôéóìïý åßíáé üôé äýï Þ ðåñéóóüôå-
ñåò äéáöïñåôéêÝò ôéìÝò êëåéäéþí ìðïñåß íá äþóïõí ôçí ßäéá äéåýèõíóç. Áõôü ôï
öáéíüìåíï êáëåßôáé óýãêñïõóç (collision), åíþ ïé åããñáöÝò ðïõ óõãêñïýïíôáé
ëÝãïíôáé óõíþíõìá (synonyms). Áí áðü ìßá óõíÜñôçóç ðñïêýðôåé óçìáíôéêüò
áñéèìüò åããñáöþí ðïõ óõíùóôßæïíôáé óôçí ßäéá ðåñéï÷Þ ôïõ áñ÷åßïõ, ôüôå ëÝ-
ãåôáé üôé ðáñïõóéÜæåôáé ðñùôåýïõóá óõãêÝíôñùóç (primary clustering). ¸ôóé,
óõíÞèùò, äåóìåýåôáé ãéá ôï áñ÷åßï ðåñéóóüôåñïò ÷þñïò áðü ôçí áñ÷éêÞ ðñüâëåøç
ó÷åôéêÜ ìå ôï ôåëéêü ðëÞèïò ôùí åããñáöþí. Óôç âéâëéïãñáößá áíáöÝñïíôáé ðïëëÜ
÷áñáêôçñéóôéêÜ ðáñáäåßãìáôá ðïõ äåß÷íïõí áíÜãëõöá üôé ôï ðñüâëçìá ôùí óõ-
ãêñïýóåùí åìöáíßæåôáé ìå âåâáéüôçôá. Óôç óõíÝ÷åéá áíáöÝñïíôáé äýï ôÝôïéá
ðáñáäåßãìáôá.
¸óôùóáí ïé 31 óõíçèÝóôåñåò áããëéêÝò ëÝîåéò (and, or, not, the, ê.ë.ð.) ðïõ
áðïèçêåýïíôáé óå ðßíáêá 42 èÝóåùí. Ôï óýíïëï ôùí äõíáôþí ôïðïèåôÞóåùí
åßíáé 1050 , åíþ ïé âïëéêÝò ôïðïèåôÞóåéò (äçëáäÞ ÷ùñßò óýãêñïõóç) åßíáé ìüíï
1043 . ¢ñá áíôéóôïé÷åß ìßá âïëéêÞ ôïðïèÝôçóç óôéò äÝêá åêáôïììýñéá ðåñéðôþóåéò.
Ôï äåýôåñï ðáñÜäåéãìá åßíáé ôï ëåãüìåíï "ðáñÜäïîï ôùí ãåíåèëßùí". ¸óôù üôé
326 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

åðéëÝãïíôáé ôõ÷áßá áðü ôï ðëÞèïò 23 Üôïìá. Ç ðéèáíüôçôá ôïõëÜ÷éóôï äýï Üôïìá


áðü ôï óýíïëï ôùí 23 áôüìùí íá Ý÷ïõí ôçí ßäéá ìÝñá ãåíÝèëéá åßíáé 50.83%.
Ôï öáéíüìåíï ôùí óõãêñïýóåùí èá ìïíôåëïðïéçèåß ìáèçìáôéêÜ. Áí n åã-
ãñáöÝò ðñÝðåé íá áðïèçêåõèïýí óå m èÝóåéò, ôüôå ôï ðëÞèïò ôùí äõíáôþí ôï-
ðïèåôÞóåùí åßíáé mn . Ãéá ðáñÜäåéãìá, áí n=4 êáé m=5, ôüôå ôï ðëÞèïò ôùí
m!
ôïðïèåôÞóåùí åßíáé 625. Óôéò âïëéêÝò ôïðïèåôÞóåéò, ðïõ åßíáé (m−n)! = 120,
êÜèå åããñáöÞ áíáêôÜôáé ìå ìßá ðñïóðÝëáóç. Óôç ÷åéñüôåñç ðåñßðôùóç óå ìßá
èÝóç áíôéóôïé÷ïýí êáé ïé ôÝóóåñéò åããñáöÝò, ïðüôå êÜèå åããñáöÞ áíáêôÜôáé ìå
(n+1)/2=2,5 ðñïóðåëÜóåéò êáôÜ ìÝóï üñï. Ôï ðëÞèïò áõôþí ôùí äõóìåíþí ðå-
ñéðôþóåùí åßíáé m=5. Ïé õðüëïéðåò 500 ôïðïèåôÞóåéò äéáêñßíïíôáé óå ôñßá åßäç:
ìßá óýãêñïõóç äýï åããñáöþí, äýï óõãêñïýóåéò äýï åããñáöþí êáé ìßá óýãêñïõóç
ôñéþí åããñáöþí.
m!
Ç ðéèáíüôçôá íá åìöáíéóèåß ìßá âïëéêÞ ôïðïèÝôçóç åßíáé p0 = (m−n)!
mn =0.192,
ïðüôå ç ìÝóç ôéìÞ ôùí ðñïóðåëÜóåùí ãéá åããñáöÝò õðåñ÷åßëéóçò åßíáé 0 =0. Ç
ðéèáíüôçôá íá åìöáíéóèåß ç äõóìåíÝóôåñç ôïðïèÝôçóç åßíáé pmax = mmn = 0.008,
ïðüôå ï áñéèìüò ôùí óõãêñïýóåùí êáé ôùí ðñïóðåëÜóåùí ãéá åããñáöÞ õðåñ÷åß-
ëéóçò åßíáé c=n−1=3 êáé omax =1+2+3 áíôéóôïß÷ùò. Óôï Ó÷Þìá 13.1 ðáñïõ-
óéÜæïíôáé ôá P
óôïé÷åßá ôùí õðïëïßðùí ôñéþí ðåñéðôþóåùí. ÊáôÜ ìÝóï üñï áðáé-
ôïýíôáé p = c pc oc = 0, 3 åðéðñüóèåôåò ðñïóðåëÜóåéò ãéá ôçí áíÜêôçóç ìßáò
åããñáöÞò. Ç ìÝóç ôéìÞ ôùí åããñáöþíP ðïõ óõãêñïýóèçêáí êáé äåí áðïèçêåýèç-
êáí óôçí êáôÜëëçëç èÝóç åßíáé o = c pc c = 1, 05 åããñáöÝò, Üñá êáôÜ ìÝóï üñï
n − o=2,95 åããñáöÝò áðïèçêåýèçêáí óôï êýñéï áñ÷åßï. Ç ðéèáíüôçôá íá óõ-
ãêñïõóèåß ç åðüìåíç åããñáöÞ ðïõ èá åéóá÷èåß óôï áñ÷åßï åßíáé 1−2,95/5=0,41.

6ðñïóðå- ôñåéò
2,5
ëÜóåéò
äýï óå
ìßá èÝóç
1,75
1,5
1,25 äýï
ìßá óýãêñïõóç
1
êáìßá
óýãêñïõóç

0
0 100 200 300 400 500 600 625

Ó÷Þìá 13.1: ÊáôáíïìÞ óõãêñïýóåùí êáé ðñïóðåëÜóåùí.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 327

Ãéá Üëëåò ôéìÝò ôùí m êáé n ôï ó÷Þìá èá åßíáé ðáñüìïéï. Ï áñéèìüò ôùí âçìÜôùí
áõîÜíåé ðïëý ãñÞãïñá ãéá ìåãáëýôåñá m êáé n êáé ç óõíÜñôçóç ïìáëïðïéåßôáé.
Óôç âéâëéïãñáößá áíáöÝñïíôáé ðïëëÝò ìÝèïäïé ãéá ôçí åýñåóç óõíáñôÞóåùí
êáôáêåñìáôéóìïý ðïõ äåí ðáñÜãïõí óõíþíõìá. Ïé óõíáñôÞóåéò áõôÝò ëÝãïíôáé
ôÝëåéåò (perfect) êáé óõíÞèùò ÷ñçóéìïðïéïýíôáé óôçí ðñÜîç ìüíï óå ìéêñïýò
ðßíáêåò ôçò êýñéáò ìíÞìçò ãéá åéäéêÝò åöáñìïãÝò üðùò, ãéá ðáñÜäåéãìá, óå ìå-
ôáöñáóôÝò ãéá áðïèÞêåõóç äåóìåõìÝíùí ëÝîåùí, óå åðåîåñãáóßá öõóéêÞò ãëþó-
óáò ãéá öéëôñÜñéóìá ëÝîåùí õøçëÞò óõ÷íüôçôáò ê.ë.ð. Áí ìßá ôÝëåéá óõíÜñôçóç
äåóìåýåé ôïí åëÜ÷éóôï äõíáôü ÷þñï, ôüôå ëÝãåôáé åëÜ÷éóôç (minimal). Ìßá åðé-
ðëÝïí éäéáéôåñüôçôá ôùí ôÝëåéùí ìåèüäùí êáôáêåñìáôéóìïý åßíáé üôé óõíÞèùò
ðñïûðïèÝôïõí ôçí åê ôùí ðñïôÝñùí ãíþóç ôùí ôéìþí ôùí êëåéäéþí, ðñïûðüèåóç
ðïõ äåí óõíáíôÜôáé óôçí ðñÜîç. ÌÜëéóôá Ý÷ïõí ðñïôáèåß êáé ôÝëåéåò ìÝèïäïé
êáôáêåñìáôéóìïý ãéá ðåñéðôþóåéò ïãêùäþí óôáôéêþí áëëÜ êáé äõíáìéêþí áñ-
÷åßùí. Ïé ìÝèïäïé áõôÝò áðïôåëïýí ìßá êëÜóç ìåèüäùí ðïõ ïíïìÜæåôáé åîùôå-
ñéêüò ôÝëåéïò êáôáêåñìáôéóìüò (external perfect hashing) êáé äåí èá åîåôáóèåß
óôç óõíÝ÷åéá ëüãù ôçò åîáéñåôéêÞò ðïëõðëïêüôçôÜò ôïõò. Åî Üëëïõ ðáñÜ ôç èå-
ùñçôéêÞ ôïõò áñôéüôçôá, äåí ÷ñçóéìïðïéçèÞêáí åõñÝùò óôçí ðñÜîç ðáñÜ ìüíï
óå ðñùôüôõðá óõóôÞìáôá.
Ï ëüãïò ôùí êáôåéëçììÝíùí èÝóåùí ðñïò ôï óýíïëï ôùí èÝóåùí ôïõ áñ÷åßïõ
ïíïìÜæåôáé ðáñÜãïíôáò öüñôéóçò (load factor, Lf ), êáé éóïýôáé ìå:

n
Lf =
bkm × Bkf r

üðïõ bkm åßíáé ôï ðëÞèïò ôùí êÜäùí óôçí êýñéá ðåñéï÷Þ ôïõ áñ÷åßïõ. ÕðÜñ÷åé
Üìåóç ó÷Ýóç ôçò ôéìÞò ôïõ ðáñÜãïíôá öüñôéóçò êáé ôçò óõ÷íüôçôáò ôùí óõãêñïý-
óåùí. ¼óï ìéêñüôåñïò åßíáé ï ðáñÜãïíôáò öüñôéóçò, ôüóï ìéêñüôåñç åßíáé ç
ðéèáíüôçôá óýãêñïõóçò, êáé ôï áíôßóôñïöï. Áñìïäéüôçôá ôïõ äéá÷åéñéóôÞ ôïõ
ÓÄÂÄ åßíáé íá âñåé ôçí éóïññïðßá ìåôáîý ôïõ ðëÞèïõò ôùí óõãêñïýóåùí êáé ôïõ
ðïóïóôïý á÷ñçóéìïðïßçôïõ ÷þñïõ ôïõ áñ÷åßïõ.
Õðåñ÷åßëéóç óõìâáßíåé üôáí ìßá åããñáöÞ ðñÝðåé íá áðïèçêåõèåß óå Ýíá
ðëÞñç êÜäï. Ôüôå ç åããñáöÞ êáôåõèýíåôáé ãéá áðïèÞêåõóç óå Üëëïí êÜäï.
¼óï ìåãáëýôåñïò åßíáé ï êÜäïò, ôüóï ìéêñüôåñç åßíáé ç ðéèáíüôçôá íá õðÜñ÷åé
õðåñ÷åßëéóç. Ùóôüóï, üóï ìåãáëýôåñï åßíáé ôï ìÝãåèïò ôïõ êÜäïõ, ôüóï ðåñéó-
óüôåñï ÷ñïíïâüñá åßíáé ç ðñïóðÝëáóç óôï äßóêï. ¢ñá, êáé ó’ áõôü ôï óçìåßï
ðñÝðåé íá âñåèåß ìßá éóïññïðßá.
Ç óôáôéóôéêÞ êáôáíïìÞ ðïõ ÷áñáêôçñßæåé ôçí êáôáíïìÞ ôùí åããñáöþí óôïõò
êÜäïõò åßíáé ç äéùíõìéêÞ. Áí ïé åããñáöÝò ìïéñÜæïíôáé ôõ÷áßá óôïõò êÜäïõò, ôüôå
328 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

ç ðéèáíüôçôá íá Ý÷ïõí êáôåõèõíèåß óå Ýíá êÜäï i áðü ôéò n åããñáöÝò åßíáé:


µ ¶i µ ¶
n! 1 1 n−i
P (i) = × × 1−
i! × (n − i)! bk bk
Ãéá ìåãÜëåò ôéìÝò ôùí n êáé bk ç êáôáíïìÞ áõôÞ ìðïñåß íá ðñïóåããéóèåß áðü ôçí
õðïëïãéóôéêÜ âïëéêüôåñç êáôáíïìÞ Poisson:
¡ n ¢i
e−n/bk × bk
P (i) =
i!
Ç ìÝóç ôéìÞ ôùí åããñáöþí õðåñ÷åßëéóçò óå Ýíá êÜäï åßíáé:
n−Bkf
Xr
j × P (Bkf r + j)
j=1

êáé óõíåðþò ôï ðïóïóôü ôùí åããñáöþí õðåñ÷åßëéóçò åßíáé:


n−Bkf
Xr
bk
100 × × j × P (Bkf r + j)
n
j=1

Óôïí Ðßíáêá 13.1 äßíåôáé ç ìÝóç ôéìÞ ôïõ ðïóïóôïý ôùí åããñáöþí ðïõ õðåñ-
÷åéëßæïõí ùò óõíÜñôçóç ôïõ ìåãÝèïõò ôïõ êÜäïõ êáé ôïõ ðáñÜãïíôá öüñôéóçò.
Ôï ìÝãåèïò ôïõ áñ÷åßïõ Ý÷åé ëçöèåß ßóï ìå 200 êÜäïõò.
ÌÝãåèïò ÐáñÜãïíôáò öüñôéóçò
êÜäïõ 50% 55% 60% 65% 70% 75% 80% 85% 90% 95%
2 10,3 11,9 13,6 15,3 16,9 18,7 20,5 22,0 23,7 25,4
3 5,9 7,3 8,8 10,3 11,9 13,6 15,3 17,0 18,8 20,6
5 2,4 3,4 4,5 5,7 7,1 8,6 10,2 11,9 13,7 15,6
8 0,8 1,3 2,0 2,9 3,9 5,2 6,7 8,3 10,0 11,9
12 0,2 0,5 0,8 1,4 2,1 3,1 4,3 5,8 7,5 9,4
17 0,1 0,2 0,3 0,6 1,1 1,9 2,8 4,1 5,7 7,5
23 0,0 0,0 0,1 0,3 0,6 1,1 1,9 3,0 3,0 6,2

Ðßíáêáò 13.1: ÌÝóï ðïóïóôü õðåñ÷åßëéóçò áñ÷åßïõ.

ÊÜèå ÷ñÞóôçò ìðïñåß íá åöåýñåé ìßá íÝá óõíÜñôçóç êáôáêåñìáôéóìïý ìå


óêïðü íá äéáóðåßñåé ôá äåäïìÝíá ôïõ. ¸óôù üôé äßíåôáé ìßá åããñáöÞ ìå êëåéäß
172.148 ãéá íá áðïèçêåõèåß óå áñ÷åßï ðïõ áðïôåëåßôáé áðü 7000 êÜäïõò. Óôç
óõíÝ÷åéá ðáñïõóéÜæïíôáé ìåñéêÝò óõíáñôÞóåéò ðïõ áíáöÝñïíôáé êáôÜ êüñï óôç
âéâëéïãñáößá:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 329

• Äéáßñåóç ìå ðñþôï áñéèìü (prime number division). Ç ôéìÞ ôçò äéåýèõíóçò,


üðïõ èá áðïèçêåõèåß ç åããñáöÞ, éóïýôáé ìå ôï õðüëïéðï ôçò äéáßñåóçò
ôçò ôéìÞò ôïõ êëåéäéïý äéá ôïõ ìåãÝèïõò ôïõ áñ÷åßïõ. Óýìöùíá ìå ìßá
ðñáêôéêÞ ðáñáôÞñçóç ïé óõãêñïýóåéò åëá÷éóôïðïéïýíôáé áí äéáéñÝôçò åßíáé
ï ìåãáëýôåñïò ðñþôïò áñéèìüò ðïõ åßíáé ìéêñüôåñïò áðü ôï ìÝãåèïò ôïõ
áñ÷åßïõ. Óôçí ðñïêåéìÝíç ðåñßðôùóç éó÷ýåé: 172148 mod 6997 = 4220.
ÂÝâáéá, äéáéñÝôçò ìðïñåß íá åßíáé ïðïéïóäÞðïôå áñéèìüò áñêåß íá åßíáé
ìéêñüôåñïò áðü ôï ìÝãåèïò ôïõ áñ÷åßïõ. ÁíáöÝñåôáé åðßóçò áðü ðñáêôéêÝò
ðáñáôçñÞóåéò üôé ïé óõãêñïýóåéò åëá÷éóôïðïéïýíôáé áí ï äéáéñÝôçò äåí
ðåñéÝ÷åé ðñþôïõò áñéèìïýò ìéêñüôåñïõò áðü 20.

• ÌåôáôñïðÞ ôçò ñßæáò (radix conversion). Èåùñåßôáé üôé ç ôéìÞ ôïõ êëåé-
äéïý äåí åßíáé áñéèìüò ôïõ äåêáäéêïý óõóôÞìáôïò êáé åðïìÝíùò ðñÝðåé íá
ìåôáôñáðåß óå áñéèìü ôïõ óõóôÞìáôïò áõôïý. ¸ôóé áí õðïôåèåß üôé ï óõ-
ãêåêñéìÝíïò áñéèìüò Ý÷åé ùò âÜóç ôï 11, ôüôå ìå ôç ìåôáôñïðÞ ðñïêýðôåé:

1 × 115 + 7 × 114 + 2 × 113 + 1 × 112 + 4 × 11 + 8 = 266373

Ôï áðïôÝëåóìá êáíïíéêïðïéåßôáé äéáéñþíôáò äéá 6997. Ç äéåýèõíóç ôïõ


êÜäïõ ôïõ áñ÷åßïõ éóïýôáé ìå ôï ôåëéêü áðïôÝëåóìá ðïõ åßíáé 487.

• ÌÝóç ôïõ ôåôñáãþíïõ (mid square). Óýìöùíá ìå ôç ìÝèïäï áõôÞ ëáìâÜ-


íïíôáé ôá ìåóáßá øçößá ôïõ ôåôñáãþíïõ ôçò ôéìÞò ôïõ êëåéäéïý. ¸ôóé,
áí ç óõãêåêñéìÝíç ôéìÞ ôïõ êëåéäéïý õøùèåß óôï ôåôñÜãùíï, ðñïêýðôåé
029634933904. ËáìâÜíïíôáé ôá 4 ìåóáßá øçößá, äçëáäÞ 3493. Áêïëïõèåß
êáíïíéêïðïßçóç ùò ðñïò ôï 7000 êáé ðñïêýðôåé 3493×7000/9999=2445.

• Ìåôáêßíçóç Þ äßðëùóç (move, folding). Ðñüêåéôáé ãéá äýï ðáñüìïéåò ìå-


èüäïõò. Ç ôéìÞ ôïõ êëåéäéïý ÷ùñßæåôáé óå äýï Þ ðåñéóóüôåñá ôìÞìáôá ðïõ
ðñïóôßèåíôáé. ¸óôù üôé äßíåôáé ï áñéèìüò 17207359 ðïõ ÷ùñßæåôáé óå äýï
ôåôñáøÞöéïõò áñéèìïýò, ôïõò 1720 êáé 7359. Óýìöùíá ìå ôçí ðñþôç ìÝèïäï
ïé ôéìÝò ôùí ôåôñáøÞöéùí áñéèìþí ðñïóôßèåíôáé êáé ðñïêýðôåé 9079 (shift
folding). Óýìöùíá ìå ôç äåýôåñç ìÝèïäï ðñïóôßèåíôáé ïé ôåôñáøÞöéïé áñéè-
ìïß, áöïý ðñþôá ç óåéñÜ ôùí øçößùí ôïõ äåýôåñïõ áñéèìïý áíôéóôñáöåß
(boundary folding). ÄçëáäÞ ðñïóôßèåôáé ï ôåôñáøÞöéïò 1720 êáé ï 9537,
ðïõ ðñïÝñ÷åôáé áðü ôïí 7359. Ðñïêýðôåé 11257. Óôç óõíÝ÷åéá áêïëïõ-
èåß êáíïíéêïðïßçóç ùò ðñïò ôï ìÝãåèïò ôïõ áñ÷åßïõ. ¸ôóé óôçí ðñþôç
ðåñßðôùóç èá ðñïêýøåé ç äéåýèõíóç 9079 × 7000/19.998 = 3178, åíþ óôç
äåýôåñç ðåñßðôùóç èá ðñïêýøåé 11.257 × 7000/19.998 = 3940.
330 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

13.2 Äõíáìéêüò Êáôáêåñìáôéóìüò


Ï äõíáìéêüò êáôáêåñìáôéóìüò Þôáí ç ðñþôç ÷ñïíéêÜ äïìÞ äõíáìéêþí ôõ÷áßùí
áñ÷åßùí ðïõ åìöáíßóèçêå óôç âéâëéïãñáößá. Ï åñåõíçôÞò ðïõ ôçí ðáñïõóß-
áóå, ï Larson [Larson 1978], èåùñåßôáé áðü ôïõò èåìåëéùôÝò ôçò ðåñéï÷Þò áõôÞò.
Ï äõíáìéêüò êáôáêåñìáôéóìüò áðïôåëåßôáé áðü äýï öõóéêÜ áíåîÜñôçôåò äïìÝò:
Ýíáí êáôÜëïãï êáé Ýíá êýñéï áñ÷åßï. Ï êáôÜëïãïò åßíáé Ýíá äÜóïò äõáäéêþí
äÝíäñùí ðïõ õëïðïéïýíôáé ùò óõíäåäåìÝíåò äïìÝò êáé åßíáé áðïèçêåõìÝíá óôçí
êýñéá ìíÞìç. Óôï ôåëåõôáßï åðßðåäï ôùí äõáäéêþí äÝíäñùí ðåñéÝ÷ïíôáé äåßêôåò
ðñïò ôéò óåëßäåò ôïõ êýñéïõ áñ÷åßïõ ðïõ âÝâáéá åßíáé áðïèçêåõìÝíï óôç äåõ-
ôåñåýïõóá ìíÞìç. Ï áñéèìüò ôùí äõáäéêþí äÝíäñùí ðïõ áðïôåëïýí ôï äÜóïò
éóïýôáé ìå ôïí áñéèìü ôùí êÜäùí, bk, ôïõ áñ÷åßïõ üðùò Ý÷åé ó÷åäéáóèåß áñ÷éêÜ.
Ìßá óõíÜñôçóç êáôáêåñìáôéóìïý h1 (key) = key mod bk áðü ôçí ôéìÞ ôïõ êëåé-
äéïý äßíåé ôï äõáäéêü äÝíäñï, üðïõ âñßóêåôáé ï êÜäïò ðïõ ðåñéÝ÷åé ôçí åããñáöÞ.
ÁõôÞ åßíáé ç ãåíéêÞ öéëïóïößá ëåéôïõñãßáò ôçò äïìÞò ðïõ óôçñßæåôáé óôç óôñá-
ôçãéêÞ "äéáßñåé êáé âáóßëåõå". Óôç óõíÝ÷åéá áíáëýïíôáé äýï åéäéêüôåñá èÝìáôá.
Ðñþôïí, ðùò ìåãåèýíåôáé Ýíá áñ÷åßï êáé, äåýôåñïí, ðïéÜ åßíáé ç äïìÞ êáé ç
åðåîåñãáóßá ôùí äõáäéêþí äÝíäñùí.
ÊÜèå êÜäïò áðü ôïõò bk Ý÷åé ÷ùñçôéêüôçôá Bkf r åããñáöÝò, ïðüôå ðñÝðåé
íá ãßíåé äéÜóðáóç áí êÜðïéïò êÜäïò äå÷èåß ôçí (Bkf r+1)-ïóôÞ åããñáöÞ. Áõôü
óçìáßíåé üôé Ýíáò íÝïò êÜäïò ðáñá÷ùñåßôáé áðü ôï óýóôçìá óôï áñ÷åßï êáé ïé
(Bkf r+1) åããñáöÝò ðñÝðåé íá áíáäéáíåìçèïýí ìåôáîý ôùí äýï êÜäùí. Áõôü
åðéôõã÷Üíåôáé ìå ôç âïÞèåéá ìßáò äåýôåñçò óõíÜñôçóçò êáôáêåñìáôéóìïý h2 (key)
ðïõ äå÷üìåíç ùò óðüñï ôï êëåéäß (Þ êÜðïéï ìåôáó÷çìáôéóìü ôïõ êëåéäéïý) ìðïñåß
íá ðáñÜãåé ìßá øåõäïôõ÷áßá äõáäéêÞ óõìâïëïóåéñÜ (bitstring) ïðïéïõäÞðïôå ìÞ-
êïõò, üðïõ ôá 0 êáé 1 åìöáíßæïíôáé éóïðßèáíá. ÂÝâáéá áñ÷éêÜ áðáéôïýíôáé ìüíï
ìåñéêÜ bits, üìùò ìå ôéò äéáäï÷éêÝò äéáóðÜóåéò ôùí êÜäùí ÷ñåéÜæïíôáé üëï êáé
ðåñéóóüôåñá. Áõôüò åßíáé ï ëüãïò ðïõ áõôÞ ç äåýôåñç óõíÜñôçóç êáôáêåñìá-
ôéóìïý äåí ìåôáôñÝðåé áðëþò ôï êëåéäß óôï äõáäéêü áíôßóôïé÷ï. ¸ôóé, óýìöùíá
ìå ìßá óýìâáóç, áí ôï ðñþôï bit åßíáé 0 (áíôéóôïß÷ùò, 1), ôüôå ç áíôßóôïé÷ç åã-
ãñáöÞ êáôåõèýíåôáé óôïí õðÜñ÷ïíôá (áíôéóôïß÷ùò, óôï íÝï) êÜäï. Óôç ãåíéêÞ
ðåñßðôùóç, ÷ñçóéìïðïéïýíôáé ôüóá bits ôçò äõáäéêÞò óõìâïëïóåéñÜò üóá åßíáé
áðáñáßôçôá þóôå ïé Bkf r+1 åããñáöÝò íá äéáìïéñáóèïýí óå äýï êÜäïõò.
Áñ÷éêÜ êáèÝíá áðü ôá bk äõáäéêÜ äÝíäñá ôïõ äÜóïõò áðïôåëåßôáé ìüíï áðü
ìßá ñßæá, ïðüôå èåùñåßôáé üôé ï êáôÜëïãïò Ý÷åé ìüíï Ýíá åðßðåäï. ¼ôáí ãßíåé
êÜðïéá äéÜóðáóç êÜäïõ, ôüôå ðñÝðåé ôï áíôßóôïé÷ï äÝíäñï íá åðåêôáèåß êáôÜ Ýíá
åðßðåäï. Ðñïöáíþò, äåí óõìâáßíåé ôï ßäéï óå üëá ôá äÝíäñá, ëÝãåôáé üìùò üôé
ï êáôÜëïãïò åðåêôåßíåôáé êáôÜ Ýíá åðßðåäï. ¸ôóé áðü ôç ñßæá ôïõ áíôßóôïé÷ïõ
äÝíäñïõ äçìéïõñãïýíôáé äýï áðüãïíïé åîùôåñéêïß êüìâïé ìå ôïõò áíôßóôïé÷ïõò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 331

äåßêôåò ðñïò ôïõò äýï êÜäïõò. ÊáôÜ óýìâáóç, ï áñéóôåñüò êüìâïò äåß÷íåé óôïí
õðÜñ÷ïíôá êÜäï, åíþ ï äåîéüò êüìâïò äåß÷íåé óôï íÝï êÜäï. ÁõôÞ ç äéáäéêáóßá
åðÝêôáóçò ôùí äõáäéêþí äÝíäñùí ãßíåôáé áíáëüãùò ìå ôéò åéóáãùãÝò ôùí íÝùí
åããñáöþí. Áí ç óõíÜñôçóç h1 äéáóðåßñåé ôõ÷áßá ôéò åããñáöÝò óôá äõáäéêÜ äÝí-
äñá, ôüôå ôá äÝíäñá Ý÷ïõí ðåñßðïõ ôï ßäéï ìÝãåèïò, åíþ åêôéìÜôáé üôé ôá äÝíäñá
åßíáé éóïæõãéóìÝíá åðåéäÞ ç øåõäïôõ÷áßá óõíÜñôçóç h2 ðáñÜãåé éóïðßèáíá ôá 0
êáé 1.
Åßíáé åõíüçôï üôé ïé ôýðïé ôùí åóùôåñéêþí êáé ôùí åîùôåñéêþí êüìâùí åßíáé
äéáöïñåôéêïß. Ðéï óõãêåêñéìÝíá, êÜèå åóùôåñéêüò êüìâïò áðïôåëåßôáé áðü ôá
åîÞò ôÝóóåñá ðåäßá: óçìáßá, äåíäñéêüò äåßêôçò ðñïò ôïí ðáôÝñá êüìâï, äåíäñé-
êüò äåßêôçò ðñïò ôïí áñéóôåñü áðüãïíï êáé äåíäñéêüò äåßêôçò ðñïò ôïí äåîéü
áðüãïíï. áíôéóôïß÷ùò êÜèå åîùôåñéêüò êüìâïò áðïôåëåßôáé áðü ôá åîÞò ôÝóóåñá
ðåäßá: óçìáßá, äåíäñéêüò äåßêôçò ðñïò ôïí ðáôÝñá êüìâï, äåßêôçò ðñïò ôïí êÜäï
ôïõ áñ÷åßïõ êáé ìåôñçôÞò åããñáöþí ðïõ åßíáé áðïèçêåõìÝíåò óôïí áíôßóôïé÷ï
êÜäï. Ç óçìáßá ôùí åóùôåñéêþí êáé ôùí åîùôåñéêþí êüìâùí ëáìâÜíåé ôçí ôéìÞ
0 êáé 1, áíôéóôïß÷ùò.
Ç ðñïçãïýìåíç äéáäéêáóßá öáßíåôáé óôï ðáñÜäåéãìá ðïõ áêïëïõèåß. ¸óôù
üôé óå êåíü áñ÷åßï äõíáìéêïý êáôáêåñìáôéóìïý ìå êÜäïõò ìåãÝèïõò äýï åããñá-
öþí ðñüêåéôáé íá åéóá÷èïýí äéáäï÷éêÜ åããñáöÝò ìå ôéìÝò êëåéäéþí 4, 5, 10, 12,
19, 52, 56, 71 êáé 90. Áñ÷éêÜ ôï áñ÷åßï ó÷åäéÜæåôáé þóôå íá Ý÷åé ôñåéò êÜäïõò,
Üñá ðñÝðåé ùò ðñþôç óõíÜñôçóç êáôáêåñìáôéóìïý íá ÷ñçóéìïðïéçèåß ç óõíÜñ-
ôçóç h1 = key mod 3, ðïõ ÷ùñßæåé ôï äÜóïò ôïõ êáôáëüãïõ óå ôñßá äéáêñéôÜ
äõáäéêÜ äÝíäñá. ÐñÝðåé åðßóçò íá ÷ñçóéìïðïéçèåß êáé ìßá äåýôåñç óõíÜñôçóç
ãéá ôï êôßóéìï ôùí äõáäéêþí äÝíäñùí. ¸óôù, ëïéðüí, üôé åðéëÝãåôáé ç óõíÜñôçóç
key mod 10, þóôå áðü ôï êëåéäß íá ðñïêýøåé õðüëïéðï áðü 0 ùò 9. ÊÜèå ôéìÞ
ôïõ õðïëïßðïõ ìðïñåß íá èåùñçèåß ùò óðüñïò óå ìßá øåõäïôõ÷áßá ãåííÞôñéá,
R(), ðïõ íá ðáñÜãåé äõáäéêÜ øçößá 0 êáé 1 ìå ôçí ßäéá ðéèáíüôçôá (äçëáäÞ,
50%). Ôï áðïôÝëåóìá ìßáò ôÝôïéáò ãåííÞôñéáò ãéá êÜèå óðüñï öáßíåôáé óôïí
Ðßíáêá 13.2. Óôï Ó÷Þìá 13.2 öáßíåôáé ôï ôåëéêü áðïôÝëåóìá ôçò åéóáãùãÞò ôùí
åããñáöþí ìå ôç äçìéïõñãßá ôïõ êáôáëüãïõ ôùí ôñéþí äÝíäñùí êáé ôïõ áñ÷åßïõ
ôùí ðÝíôå êÜäùí.
R(0) R(1) R(2) R(3) R(4) R(5) R(6) R(7) R(8) R(9)
1011 0000 0100 0110 1111 0101 0001 1110 1001 0011

Ðßíáêáò 13.2: ÃåííÞôñéá øåõäïôõ÷áßùí äõáäéêþí áñéèìþí.

Ìå ôï ðáñÜäåéãìá áõôü öáßíåôáé üôé ç åðéôõ÷Þò áíáæÞôçóç êïóôßæåé ìßá ìüíï


ðñïóðÝëáóç óôï äßóêï. Åðßóçò êáôÜ ôçí áíáæÞôçóç ìç õðÜñ÷ïíôïò êëåéäéïý ìðï-
332 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

0 1 2
r r
0 ´Q 1 0 ´Q 1 Êýñéá
´
r´ Q
Qr ´
r´ Q
Qr r ìíÞìç
? ? ? ? ? Äåõôåñåýïõóá
12 71 90 4 10 19 52 5 56 ìíÞìç

Ó÷Þìá 13.2: Áñ÷åßï äõíáìéêïý êáôáêåñìáôéóìïý.

ñåß íá âñåèåß åîùôåñéêüò êüìâïò ôïõ äõáäéêïý äÝíäñïõ ìå ìåôñçôÞ åããñáöþí ßóï
ìå ìçäÝí. ¢ñá óôçí ðåñßðôùóç áõôÞ ôï áíôßóôïé÷ï ÷ñïíéêü êüóôïò áíåðéôõ÷ïýò
áíáæÞôçóçò èá åßíáé ìçäÝí áðü ôçí Üðïøç ôùí ðñïóðåëÜóåùí óôï äßóêï.

Ùóôüóï, ãßíåôáé áíôéëçðôü üôé ëüãù ôùí åéóáãùãþí ï êáôÜëïãïò áõîÜíåé


âáèìéáßá, ïðüôå ìðïñåß ôï ìÝãåèïò ôïõ íá îåðåñÜóåé ôï ìÝãåèïò ôçò äéáèÝóéìçò
êýñéáò ìíÞìçò. ¸ôóé óå êÜðïéá ÷ñïíéêÞ óôéãìÞ ç åðéôõ÷Þò áíáæÞôçóç èá êïóôßæåé
äýï ðñïóðåëÜóåéò óôï äßóêï ãéáôß ôìÞìá ôïõ êáôáëüãïõ èá ðñÝðåé íá áðïèçêåõ-
èåß óôç äåõôåñåýïõóá ìíÞìç. Óå ó÷Ýóç ìå ôïí ðáñÜãïíôá ÷ñçóéìïðïßçóçò ÷þñïõ
Ý÷åé áðïäåé÷èåß áíáëõôéêÜ üôé ç ìÝóç ôéìÞ ôïõ åßíáé 69%. Ç ôéìÞ áõôÞ éóïýôáé ìå
ôçí áíôßóôïé÷ç ãéá ôéò äïìÝò ôçò ïéêïãÝíåéáò ôùí Â-äÝíäñùí êáé èá óõíáíôçèåß
êáé ðÜëé óôç óõíÝ÷åéá ôïõ êåöáëáßïõ áõôïý.

Áðü ôïí Scholl [Scholl 1981] Ý÷ïõí ðñïôáèåß äýï ðáñáëëáãÝò ôïõ äõíáìéêïý
êáôáêåñìáôéóìïý ãéá ôç âåëôßùóç ôçò åðßäïóçò ôçò áíáæÞôçóçò. Óýìöùíá ìå
ìßá ðáñáëëáãÞ áðü áõôÝò, äåí ãßíåôáé äéÜóðáóç ôïõ êÜäïõ üôáí ó’ áõôüí êáôåõ-
èõíèåß ç (Bkf r+1)-ïóôÞ åããñáöÞ áëëÜ äçìéïõñãåßôáé áëõóßäá õðåñ÷åßëéóçò ìå
Ýíá äåýôåñï êÜäï. Ôï æåýãïò áõôü ôùí êÜäùí èá äéáóðáóèåß êáé ï êáôÜëïãïò
èá åíçìåñùèåß áíôéóôïß÷ùò üôáí èá Ý÷ïõí åéóá÷èåß β × Bkf r åããñáöÝò, üðïõ
1 ≤ β ≤ 2. Ç ôå÷íéêÞ áõôÞ ëÝãåôáé áíáâïëÞ äéÜóðáóçò (deferred splitting). ¸ôóé
âÝâáéá ãéá ìåñéêÝò ðåñéðôþóåéò èá ÷ñåéÜæåôáé ìßá ðñïóðÝëáóç óôï äßóêï, åíþ
ãéá Üëëåò ðåñéðôþóåéò èá ÷ñåéÜæïíôáé äýï ðñïóðåëÜóåéò. Ôï ðëåïíÝêôçìá üìùò
åßíáé üôé ï êáôÜëïãïò èá åßíáé ìéêñüôåñïò êáôÜ β öïñÝò êáé èá ÷ùñÜ óôçí êýñéá
ìíÞìç. Áí ôï áñ÷åßï ìåãáëþóåé õðåñâïëéêÜ, ôüôå ìðïñåß äßíïíôáò óôï β ìåãá-
ëýôåñåò ôéìÝò íá åðéôñáðïýí áëõóßäåò õðåñ÷åßëéóçò ìåãáëýôåñïõ ìÞêïõò, þóôå ï
êáôÜëïãïò íá ÷ùñÜ ïðùóäÞðïôå óôçí êýñéá ìíÞìç. Åýêïëá óõìðåñáßíåôáé üôé
óôç ÷åéñüôåñç ðåñßðôùóç èá ãßíïõí dβe ðñïóðåëÜóåéò óôï äßóêï. Ï åíäéáöåñü-
ìåíïò áíáãíþóôçò ìðïñåß áðü ôçí áíáöïñÜ íá âñåé ðåñéóóüôåñåò ëåðôïìÝñåéåò
ãéá ôéò ðáñáëëáãÝò ôïõ äõíáìéêïý êáôáêåñìáôéóìïý.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 333

13.3 Åðåêôáôüò Êáôáêåñìáôéóìüò


H äïìÞ áõôÞ ðñïôÜèçêå áðü ôïõò Fagin et al. [Fagin 1979b] êáé Þôáí ç ÷ñïíéêÜ
äåýôåñç õëïðïßçóç äõíáìéêïý ôõ÷áßïõ áñ÷åßïõ. Ç áëëçëïõ÷ßá ôùí ìåôáó÷çìáôé-
óìþí ôïõ êëåéäéïý ðïõ åêôåëïýíôáé óôïí åðåêôáôü êáôáêåñìáôéóìü öáßíåôáé óôï
Ó÷Þìá 13.3.
ÓõíÜñôçóç ÅîáãùãÞ d ÁíÜãíùóç
êáôáêåñìáôéóìïý ðñþôùí øçößùí êáôáëüãïõ

Ðñùôåýïí - H(key) - Åßóïäïò - Äåßêôçò


êëåéäß Êáôáëüãïõ áñ÷åßïõ

Ó÷Þìá 13.3: Ìåôáó÷çìáôéóìïß êëåéäéïý óôïí åðåêôáôü êáôáêåñìáôéóìü.

Ï ðñþôïò ìåôáó÷çìáôéóìüò åßíáé ìßá óõíÜñôçóç êáôáêåñìáôéóìïý ðïõ áðåé-


êïíßæåé êáôÜ ôõ÷áßï ôñüðï Ýíá äéÜóôçìá êëåéäéþí óå Ýíá óôáèåñü äéÜóôçìá äé-
åõèýíóåùí. Ï ìüíïò ðåñéoñéóìüò åßíáé üôé ôï äéÜóôçìá äéåõèýíóåùí ðñÝðåé íá
åßíáé äýíáìç ôïõ äýï. ÅðåéäÞ üìùò ðñïôéìÜôáé ôï äéÜóôçìá äéåõèýíóåùí íá
åßíáé ðñþôïò áñéèìüò, ãé’ áõôü ôåëéêÜ åðéëÝãåôáé ï ìåãáëýôåñïò áêÝñáéïò ðïõ åß-
íáé áìÝóùò ìéêñüôåñïò áðü ôç äõáäéêÞ äýíáìç. Ãéá ðáñÜäåéãìá, ï ìåãáëýôåñïò
ðñþôïò áñéèìüò ðïõ åßíáé ìéêñüôåñïò áðü ôï 216 åßíáé ï 65521.
Óôç óõíÝ÷åéá ç ôéìÞ ôïõ êëåéäéïý ìåôáôñÝðåôáé óôïí éóïäýíáìï äõáäéêü áñéèìü
êáé ëáìâÜíïíôáé ôá ðñþôá øçößá ôïõ, äçëáäÞ êÜðïéá bits. Åßíáé äõíáôüí åðßóçò
íá ìç ëçöèïýí ôá ðñþôá bits áëëÜ ôá ôåëåõôáßá Þ êÜðïéá ìåóáßá, üðùò óõìâáß-
íåé óå ðïëëÝò ðáñáëëáãÝò ôçò ìåèüäïõ ðïõ óõíáíôþíôáé óôç âéâëéïãñáößá. Ôá
bits áõôÜ ëáìâÜíïíôáé ùò åßóïäïò óå êáôÜëïãï, ðïõ ðåñéÝ÷åé äåßêôåò ðñïò ôïõò
êÜäïõò ôïõ áñ÷åßïõ. Ï êáôÜëïãïò áõôüò åßíáé Ýíáò ìïíïäéÜóôáôïò ðßíáêáò ìå 2d
óôïé÷åßá, üðïõ d åßíáé ôï ðëÞèïò ôùí øçößùí ðïõ åðéëÝãïíôáé áðü ôï áðïôÝëåóìá
ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý êáé ëÝãåôáé âÜèïò (depth) Þ åðßðåäï (level) ôïõ
êáôáëüãïõ.
Ôï ðëÞèïò ôùí øçößùí ðïõ åîÜãïíôáé áðü ôï áðïôÝëåóìá ôçò óõíÜñôçóçò
êáôáêåñìáôéóìïý ìåôáâÜëëåôáé ÷ñïíéêÜ áíáëüãùò ìå ôç ìåôáâïëÞ ôïõ ìåãÝèïõò
ôïõ áñ÷åßïõ. Ãéá ôï ëüãï áõôü, ôï åðßðåäï ôïõ êáôáëüãïõ åßíáé ìßá âáóéêÞ
ðáñÜìåôñïò. ¸íá ðáñÜäåéãìá ðáñïõóéÜæåôáé óôï Ó÷Þìá 13.4, üðïõ Ý÷ïõí ÷ñç-
óéìïðïéçèåß ôá ðñþôá ôñßá øçößá ôïõ ìåôáó÷çìáôéóìïý, êáé óõíåðþò ï ðßíáêáò
áðïôåëåßôáé áðü ïêôþ äåßêôåò.
Áõôïß ïé ïêôþ äåßêôåò ìðïñïýí íá áíáöåñèïýí óå ïêôþ ôï ðïëý êÜäïõò.
¸óôù üôé ç äõáäéêÞ ìïñöÞ ôïõ ìåôáó÷çìáôéóìïý åíüò êëåéäéïý äßíåôáé áðü ôçí
áêïëïõèßá bit 0110100101100101. Áðü áõôüí ôïí áñéèìü áðïìïíþíïíôáé ôá ôñßá
ðñþôá bits ðïõ éóïäõíáìïýí ìå ôï äåêáäéêü áñéèìü ôñßá. ¢ñá, ìå ðñïóðÝëáóç
334 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

- d0 =2
d=3 Á
©*
© H(key)=00...
©
- d0 =3
Â
H(key)=010...
Q
QQ
s d0 =3
Ã
@ H(key)=011...
H@H@
R
j
H
- d0 =1
Ä
*
© H(key)=1...
©©
Êýñéá ìíÞìç Äåõôåñåýïõóá ìíÞìç

Ó÷Þìá 13.4: ÊáôÜëïãïò åðéðÝäïõ 3 ìå ôÝóóåñéò êÜäïõò.

óôçí õð’ áñéèìü 3 åßóïäï ôïõ ðßíáêá (ðïõ ïõóéáóôéêÜ åßíáé ç ôÝôáñôç åßóïäïò ôïõ
ðßíáêá) âñßóêåôáé ï êáôÜëëçëïò äåßêôçò ðïõ áíáöÝñåôáé óôïí êÜäï Ã. Åðßóçò áò
ðñïóå÷èåß üôé êÜèå êÜäïò óõíïäåýåôáé áðü ìßá ðáñÜìåôñï, ôçí d0 , ðïõ ëÝãåôáé
âÜèïò (depth) Þ åðßðåäï (level) ôïõ êÜäïõ. Ç ðáñÜìåôñïò áõôÞ äçëþíåé ôï ðëÞèïò
ôùí bits ðïõ åßíáé êïéíüò ãéá ôá êëåéäéÜ üëùí ôùí åããñáöþí ôïõ êÜäïõ êáé åßíáé
ðÜíôá ìéêñüôåñç Þ ßóç áðü ôï âÜèïò ôïõ êáôáëüãïõ d. Óõíåðþò, ôï ðëÞèïò ôùí
0
äåéêôþí ðïõ áíáöÝñïíôáé óå Ýíá äåäïìÝíï êÜäï åßíáé 2d−d .
Áíáêåöáëáéþíïíôáò, ç áíáæÞôçóç óôïí åðåêôáôü êáôáêåñìáôéóìü ãßíåôáé ìå
ðÝíôå âÞìáôá. Ðñþôïí, åöáñìüæåôáé ìßá óõíÜñôçóç êáôáêåñìáôéóìïý óôï êëåéäß.
Äåýôåñïí, åîÜãïíôáé ôá ðñþôá d bits. Ôñßôï, ÷ñçóéìïðïéåßôáé ï êáôÜëïãïò ãéá íá
åíôïðéóèåß ï êáôÜëëçëïò äåßêôçò. ÔÝôáñôï, ìå âÜóç ôï äåßêôç ãßíåôáé ðñïóðÝëáóç
óôïí êÜäï. ÐÝìðôï, ãßíåôáé áíáæÞôçóç ìÝóá óôïí êÜäï ãéá ôïí åíôïðéóìü ôïõ
êëåéäéïý.
H åðåîåñãáóßá ôùí åéóáãùãþí êáé ôùí äéáãñáöþí åããñáöþí åßíáé áñêåôÜ
ðïëýðëïêç. ¸íáò âáóéêüò êáíüíáò åßíáé üôé ç ðåñéåêôéêüôçôá åíüò êÜäïõ äåí
ìðïñåß íá åßíáé ìåãáëýôåñç áðü 100%, êáé äåí ðñÝðåé íá åßíáé ìéêñüôåñç áðü
Ýíá ðïóïóôü ðïõ ïñßæåôáé áðü ôï ÷ñÞóôç, ãéá ðáñÜäåéãìá 50%. ¼ôáí áõôüò ï
êáíüíáò ðáñáâéÜæåôáé, ôüôå áëëÜæåé ç äïìÞ ôïõ áñ÷åßïõ.
¸óôù üôé óôïí êÜäï Ä ôïõ áñ÷åßïõ ôïõ Ó÷Þìáôïò 13.4 ðñüêåéôáé íá åéóá÷èåß
ìßá åããñáöÞ. Áí ï êÜäïò Ä åßíáé Þäç ðëÞñçò, ôüôå ç íÝá åããñáöÞ äåí ìðïñåß
íá áðïèçêåõèåß åêåß êáé ðñïêáëåßôáé åðÝêôáóç ôïõ áñ÷åßïõ. ¸ôóé, Ýíáò íÝïò
êÜäïò Å ðñïóôßèåôáé óôï áñ÷åßï. Ïé ìéóïß áðü ôïõò äåßêôåò ðïõ ðñéí áíáöÝñï-
íôáí óôïí êÜäï Ä, ôþñá áëëÜæïõí êáé áíáöÝñïíôáé óôïí êÜäï Å. Ïé áíôßóôïé÷åò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 335

åããñáöÝò ìåôáöÝñïíôáé áðü ôïí êÜäï Ä óôïí êÜäï Å. ¸ôóé ôåëéêÜ, ïé äýï êÜäïé
Ä êáé Å Ý÷ïõí ðåñéåêôéêüôçôá 50% êáé õðÜñ÷åé áñêåôüò ÷þñïò ãéá ìåëëïíôéêÝò
åéóáãùãÝò. Ç ôåëéêÞ ìïñöÞ ôïõ áñ÷åßïõ öáßíåôáé óôï Ó÷Þìá 13.5. Áò ðñïóå÷èåß
üôé ðñéí ôç äéÜóðáóç óôïí êÜäï Ä âñéóêüôáí üëåò ïé åããñáöÝò ôùí ïðïßùí ï
ìåôáó÷çìáôéóìüò ôïõ êëåéäéïý Üñ÷éæå áðü 1... ÌåôÜ ôç äéÜóðáóç óôïí êÜäï Ä
êáé óôïí êÜäï Å áðïèçêåýïíôáé üëåò ïé åããñáöÝò ôùí ïðïßùí ï ìåôáó÷çìáôéóìüò
ôïõ êëåéäéïý áñ÷ßæåé áðü 10... êáé 11... áíôéóôïß÷ùò.
- d0 =2
d=3 Á
©*
© H(key)=00...
©
- d0 =3
Â
H(key)=010...
Q
QQ
s d0 =3
Ã
@ H(key)=011...
H@@R
HHj d0 =2
Ä
@ H(key)=10...
H@H@
R
j
H d0 =2
Å
H(key)=11...

Ó÷Þìá 13.5: ÁíáäéáíïìÞ êëåéäéþí ëüãù äéÜóðáóçò êÜäïõ.

Ç äéÜóðáóç ôùí êÜäùí ìðïñåß íá óõíå÷éóèåß ìå ôéò äéáäï÷éêÝò åéóáãùãÝò


íÝùí åããñáöþí ìÝ÷ñé åíüò ïñéóìÝíïõ óçìåßïõ. ¼ôáí ï êÜäïò ðïõ ðñüêåéôáé
íá äéáóðáóèåß áíáöÝñåôáé áðü Ýíá ìüíï äåßêôç, äçëáäÞ d=d0 , ôüôå ï êáôÜëïãïò
ðñÝðåé íá åðåêôáèåß. ¸óôù üôé óôïí Þäç ðëÞñç êÜäï à ôïõ áñ÷åßïõ ôïõ Ó÷Þìáôïò
13.5 åéóÜãåôáé ìßá íÝá åããñáöÞ. Ôüôå Ýíáò íÝïò êÜäïò Æ áðïäßäåôáé óôï áñ÷åßï.
Ùóôüóï, ï êáôÜëïãïò äåí äéáèÝôåé ÷þñï ãéá íá áðïèçêåõèïýí ïé ó÷åôéêïß äåßêôåò.
¢ñá, óôï óçìåßï áõôü ðñÝðåé íá ìåãåèõíèåß ï êáôÜëïãïò.
Óå êÜèå äéáäï÷éêÞ ìåãÝèõíóç ï êáôÜëïãïò äéðëáóéÜæåôáé ìå áýîçóç ôçò ðá-
ñáìÝôñïõ d êáôÜ ìßá ìïíÜäá. ÊÜèå äåßêôçò ôïõ áñ÷éêïý êáôáëüãïõ êáôáëáìâÜíåé
äýï èÝóåéò ôïõ íÝïõ êáôáëüãïõ. Ãéá ðáñÜäåéãìá, ï êáôÜëïãïò ôïõ Ó÷Þìáôïò 13.5
ðåñéÝ÷åé äåßêôåò ðïõ áíáöÝñïíôáé êáôÜ óåéñÜ óôïõò êÜäïõò Á, Á, Â, Ã, Ä, Ä,
Å êáé Å. ÌåôÜ ôçí åðÝêôáóç ôïõ êáôáëüãïõ ïé äåßêôåò áíáöÝñïíôáé êáôÜ óåéñÜ
óôïõò êÜäïõò Á, Á, Á, Á, Â, Â, Ã, Ã, Ä, Ä, Ä, Ä, Å, Å, Å êáé Å. Ìå ôï äéðëáóéáóìü
ôïõ êáôáëüãïõ ï êÜäïò à áíáöÝñåôáé ðëÝïí áðü äýï äåßêôåò êáé óõíåðþò ìðïñåß
íá ðñï÷ùñÞóåé ç äéÜóðáóç. ¸ôóé, ï Ýíáò áðü áõôïýò ôïõò äýï äåßêôåò óôï åîÞò
áíáöÝñåôáé óôïí êÜäï Æ, åíþ ðáñÜëëçëá ïé åããñáöÝò ìïéñÜæïíôáé óôïõò äýï êÜ-
äïõò áíáëüãùò ìå ôá ðñþôá ôÝóóåñá øçößá áðü ôï áðïôÝëåóìá ôçò óõíÜñôçóçò
336 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

d0 =2
¡
µ Á
¡¡
µ H(key)=00...
7

¡ ­
¡ ¶Á
d=4 ¡¶ ­ d0 =3
¶­ ¡µ Â
H(key)=010...
­ ¡¡
µ
¡¡
¡ d0 =4
- Ã
H(key)=0110...
BXX
B - z
X d0 =2
B ³- Ä
1 H(key)=10...
³B³
XXX z
B- d0 =2
B-
1
³
Å
H(key)=11...
³³B
BBN
d0 =4
Æ
H(key)=0111...

Ó÷Þìá 13.6: Äéðëáóéáóìüò êáôáëüãïõ.

êáôáêåñìáôéóìïý. Ç íÝá ìïñöÞ ôïõ áñ÷åßïõ ðáñïõóéÜæåôáé óôï Ó÷Þìá 13.6.


Ï êáôÜëïãïò äéðëáóéÜæåôáé êÜèå öïñÜ ðïõ äéáóðÜôáé Ýíáò êÜäïò, ãéá ôïí
ïðïßï éó÷ýåé ç ó÷Ýóç d=d0 , áíåîÜñôçôá áðü ôçí êáôÜóôáóç ôùí Üëëùí êÜäùí.
ÁõôÞ ç ôå÷íéêÞ ìðïñåß íá ïäçãÞóåé óå ðáèïëïãéêÝò êáôáóôÜóåéò. Ãéá ðáñÜäåéãìá,

(á) åéóáãùãÞ 10, 142 (ã) åéóáãùãÞ 12, 19

-
- 10 d0 =1 d=4 10 12 d0 =4
d=1 XXX Q
z S QQ
s
142 d0 =1 @S 19 d0 =4
S@S
(â) åéóáãùãÞ 52, 56 RS
@ S@w
@ @S 52 56 d0 =3
@@@RS
w
* 10
© d0 =3 S@ R
@
©© @ S@
@ S
R d0 =2
d=3 - R
@@
H 52 56 d0 =3 XPqX
P
XzRS
@w
HH H
j - 142 d0 =1
Hj -
Q H d0 =2 ³³
³
1
QQQs
PQ
XPqQ
s
XX
z 142 d0 =1

Ó÷Þìá 13.7: ÐáèïëïãéêÞ ðåñßðôùóç äéðëáóéáóìïý êáôáëüãùí.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 337

óôï Ó÷Þìá 13.7 ðáñïõóéÜæåôáé Ýíá áñ÷åßï ìå äýï êÜäïõò ÷ùñçôéêüôçôáò äýï
åããñáöþí, üðïõ áñ÷éêÜ åéóÜãïíôáé äýï åããñáöÝò ìå êëåéäéÜ 10 (= 000010102 )
êáé 142 (= 100011102 ). Óôç óõíÝ÷åéá åéóÜãïíôáé ïé åããñáöÝò ìå êëåéäéÜ 52 (=
001101002 ) êáé 56 (= 001110002 ), ïðüôå ãßíïíôáé äýï äéáäï÷éêïß äéðëáóéáóìïß
ôïõ ìåãÝèïõò ôïõ êáôáëüãïõ, åðåéäÞ ôá êëåéäéÜ 10, 52 êáé 56 Ý÷ïõí êïéíÜ ôá
ðñþôá äýï bits. Äéðëáóéáóìüò ôïõ êáôáëüãïõ ãßíåôáé êáé ìå ôçí åéóáãùãÞ ôùí
åããñáöþí ìå êëåéäéÜ 12 (= 000011002 ) êáé 19 (= 000100112 ). ¸ôóé ï êáôÜëïãïò
Ý÷åé 24 =16 åéóüäïõò, ïðüôå õðÜñ÷ïõí áñêåôïß äéáêñéôïß äåßêôåò ðïõ äåß÷íïõí
åßôå óå Ýíá êåíü êÜäï åßôå óå Ýíá êïéíü êÜäï.
Åî áéôßáò äéáäï÷éêþí äéáãñáöþí åããñáöþí ìðïñåß íá ðñïêëçèåß ç áíôß-
óôñïöç äõúêÞ äéáäéêáóßá ôçò óõññßêíùóçò ôïõ áñ÷åßïõ. Äýï êÜäïé óõóóùìá-
ôþíïíôáé óå Ýíáí êÜäï õðü ôñåéò ðñïûðïèÝóåéò:

• ç ìÝóç ðåñéåêôéêüôçôá ôùí äýï êÜäùí äåí õðåñâáßíåé ôï 50%, ãéáôß óå áíôß-
èåôç ðåñßðôùóç äåí èá õðÞñ÷å ÷þñïò óå Ýíáí êÜäï ãéá üëåò ôéò åããñáöÝò,

• ïé êÜäïé ðïõ ðñüêåéôáé íá óõíäõáóèïýí ÷áñáêôçñßæïíôáé áðü ôçí ßäéá ôéìÞ


ôçò ðáñáìÝôñïõ d0 ,

• ôá êëåéäéÜ ôùí åããñáöþí ôùí äýï êÜäùí Ý÷ïõí êïéíÜ ôá ðñþôá d0 −1 øçößá
ôïõ áðïôåëÝóìáôïò ôïõ ìåôáó÷çìáôéóìïý êáôáêåñìáôéóìïý.

Ïé äýï ôåëåõôáßåò ðñïûðïèÝóåéò åßíáé áðáñáßôçôåò, Ýôóé þóôå üëåò ïé åããñáöÝò


ôïõ íÝïõ êÜäïõ íá Ý÷ïõí êïéíÜ ôá ðñþôá d0 øçößá. ¸óôù ãéá ðáñÜäåéãìá, üôé ç
ðñþôç óõíèÞêç óõíôñÝ÷åé ãéá ôïõò êÜäïõò Á êáé  ôïõ Ó÷Þìáôïò 13.5. Ïé êÜäïé
áõôïß, üìùò, äåí ìðïñïýí íá óõã÷ùíåõèïýí ãéáôß ôá êëåéäéÜ ôùí åããñáöþí äåí
Ý÷ïõí ôï ßäéï ðëÞèïò êïéíþí øçößùí. Áðåíáíôßáò, ïé êÜäïé Ä êáé Å ìðïñïýí íá
óõã÷ùíåõèïýí ãéáôß éêáíïðïéïýíôáé üëåò ïé óõíèÞêåò.
ÊáôÜ ôïí ßäéï ôñüðï, üôáí üëïé ïé äåßêôåò åßíáé êáôÜ æåõãÜñéá ìðïñåß íá
õðïäéðëáóéáóèåß êáé ôï ìÝãåèïò ôïõ êáôáëüãïõ. Ãéá ðáñÜäåéãìá, áí õðïôåèåß
üôé ïé äåßêôåò ôïõ êáôáëüãïõ áíáöÝñïíôáé êáôÜ óåéñÜ óôïõò êÜäïõò Á, Á, Á, Á,
Â, Â, Ã, Ã, Ä, Ä, Ä, Ä, Å, Å, Æ êáé Æ, ôüôå ìå ôç óõññßêíùóç ôïõ êáôáëüãïõ ïé
äåßêôåò èá áíáöÝñïíôáé óôïõò êÜäïõò Á, Á, Â, Ã, Ä, Ä, Å êáé Æ. ÁíôéèÝôùò, áí
ïé äåßêôåò áöïñïýóáí óôïõò êÜäïõò Á, Á, Á, Â, Â, Â, Ã, Ã, Ä, Ä, Ä, Ä, Å, Å, Æ
êáé Æ, ôüôå äåí èá ìðïñïýóå íá ãßíåé õðïäéðëáóéáóìüò ôïõ êáôáëüãïõ.
Áò óçìåéùèåß üôé óýìöùíá ìå ìßá Üëëç áðëÞ õëïðïßçóç ôïõ êáôáëüãïõ ìðïñåß
íá ìçí õðÜñ÷ïõí ðåñéôôïß äåßêôåò. ÄçëáäÞ, áí ãéá Ýíá óõãêåêñéìÝíï åðßðåäï d
ôïõ êáôáëüãïõ êáé ãéá êÜðïéï óõíäõáóìü d øçößùí äåí õðÜñ÷ïõí áíôßóôïé÷åò
ôéìÝò êëåéäéþí, ôüôå ï áíôßóôïé÷ïò äåßêôçò Ý÷åé ôéìÞ NULL. Ç ðáñáëëáãÞ áõôÞ
Ý÷åé ùò áðïôÝëåóìá ôá÷ýôåñç áíåðéôõ÷Þ áíáæÞôçóç êáé áðëïýóôåñç äéáäéêáóßá
338 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

äéÜóðáóçò êÜäùí. Ôáõôü÷ñïíá üìùò Ý÷åé ìåãáëýôåñåò áðáéôÞóåéò ÷þñïõ ãéáôß


èá ÷ñåéÜæïíôáé ðïëëïß êÜäïé ìå ëßãåò åããñáöÝò ï êáèÝíáò êáé åðïìÝíùò üóï
ìåãáëýôåñïò ï êÜäïò, ôüóï ðåñéóóüôåñïò êáé ï ìç ÷ñçóéìïðïéçìÝíïò ÷þñïò.
ÈåùñçôéêÜ, áí ç ðåñéåêôéêüôçôá åíüò êÜäïõ åßíáé ëéãüôåñï áðü 50%, ôüôå
åßíáé ðéèáíü íá ìçí õðÜñ÷åé êÜðïéïò Üëëïò êÜäïò êáôÜëëçëïò þóôå ïé äýï ôïõò
íá óõã÷ùíåõèïýí óå Ýíá íÝï êÜäï. ÄçëáäÞ, äåí õðÜñ÷åé åããýçóç üôé ç ðåñéåêôé-
êüôçôá êÜèå êÜäïõ åßíáé ôïõëÜ÷éóôïí 50%. Ùóôüóï, áí:

• ôï ðëÞèïò ôùí åããñáöþí, n, åßíáé ìåãÜëïò,

• ç ÷ùñçôéêüôçôá ôùí êÜäùí åßíáé åðßóçò ìåãÜëç, êáé

• ôá êëåéäéÜ äéáìïéñÜæïíôáé ïìïéüìïñöá ìåôáîý ôùí êÜäùí,

ôüôå áðïäåéêíýåôáé üôé åßíáé ìçäáìéíÞ ç ðéèáíüôçôá íá ðÝóåé êÜôù áðü 50% ç ðå-
ñéåêôéêüôçôá åíüò êÜäïõ. Ç ôåëåõôáßá õðüèåóç óçìáßíåé üôé ç ÷ùñçôéêüôçôá ôùí
êÜäùí åßíáé ðåñßðïõ ç ßäéá, Üñá üëïé ïé êÜäïé äéáóðþíôáé ðåñßðïõ ôáõôü÷ñïíá.
Óå êÜðïéá ÷ñïíéêÞ óôéãìÞ, ëïéðüí, êÜðïéïé êÜäïé èá Ý÷ïõí ðåñéåêôéêüôçôá ðåñß
ôï 100%, åíþ Üëëïé èá Ý÷ïõí ðåñéåêôéêüôçôá ðåñß ôï 50%.
Ç ìÝóç ðåñéåêôéêüôçôá ôùí êÜäùí åßíáé ðåñßðïõ 69%, Üñá ç ìÝóç ôéìÞ ôïõ
n
ðëÞèïõò ôùí êÜäùí ôïõ áñ÷åßïõ åßíáé Bkf r×ln 2 . Ç ìÝóç ôéìÞ ôïõ ðëÞèïõò ôùí
n
åéóüäùí ôïõ êáôáëüãïõ åßíáé Bkf r×(ln 2)2 . Áðü ôçí ôåëåõôáßá ó÷Ýóç öáßíåôáé
üôé üôáí ôï áñ÷åßï äéïãêùèåß áñêåôÜ, áíôéóôïß÷ùò äéïãêþíåôáé êáé ï êáôÜëïãïò.
Óå åîáéñåôéêÝò ðåñéðôþóåéò ï êáôÜëïãïò ìðïñåß íá ãßíåé ôüóï ìåãÜëïò, þóôå íá
ìçí ÷ùñÜ óôçí êýñéá ìíÞìç, ïðüôå èá ðñÝðåé íá áðïèçêåõèåß óôç äåõôåñåýïõóá
ìíÞìç êáé èá áðáéôïýíôáé åðéðëÝïí ðñïóðåëÜóåéò óôï äßóêï ãéá åðåîåñãáóßá ôïõ
ðßíáêá. Áõôü áðïôåëåß Ýíá óïâáñü ìåéïíÝêôçìá ôçò ìåèüäïõ. Áõôü ôï ðñüâëçìá
åðéëýåôáé óå ìßá ðáñáëëáãÞ ôçò ìåèüäïõ ðïõ ëÝãåôáé åêèåôéêüò êáôáêåñìáôéóìüò
ìå ðåñéïñéóìÝíï êáôÜëïãï êáé ðáñïõóéÜæåôáé óôç óõíÝ÷åéá. ¸íá Üëëï ìåéïíÝ-
êôçìá ôçò ìåèüäïõ åßíáé üôé äåí ðñïóöÝñåôáé ãéá åñùôÞóåéò ðåñéï÷Þò, üðùò ãéá
ðáñÜäåéãìá ç äïìÞ ôïõ Â+ -äÝíäñïõ.

13.4 Åêèåôéêüò Êáôáêåñìáôéóìüò ìå ÐåñéïñéóìÝíï ÊáôÜ-


ëïãï
Báóéêü ìåéïíÝêôçìá ôçò ðñïçãïýìåíçò ìåèüäïõ åßíáé ï áíåîÝëåãêôïò äéðëáóéá-
óìüò ôïõ ìåãÝèïõò ôïõ êáôáëüãïõ. ¸íá Üëëï ìåéïíÝêôçìá ôçò ìåèüäïõ åßíáé
üôé åðåéäÞ ïé åããñáöÝò êáôáíÝìïíôáé éóïðßèáíá óôïõò êÜäïõò, ãé’ áõôü ïé êÜäïé
äéáóðþíôáé ðåñßðïõ ôáõôü÷ñïíá. ÅðïìÝíùò åíþ ôï êüóôïò ôçò åéóáãùãÞò åã-
ãñáöþí äéáôçñåßôáé ðåñßðïõ óôáèåñü, ðåñéïäéêÜ ôï êüóôïò áõôü Ý÷åé åîÜñóåéò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 339

ðïõ ïöåßëïíôáé óôéò ðïëëÝò êáé ôáõôü÷ñïíåò äéáóðÜóåéò ôùí êÜäùí ôïõ áñ÷åßïõ
êáé ôïõ êáôáëüãïõ. Ç ïñãÜíùóç ôïõ åêèåôéêïý êáôáêåñìáôéóìïý ìå ðåñéïñé-
óìÝíï êáôÜëïãï, ðïõ ðñïôÜèçêå áðü ôï Lomet [Lomet 1983], åðéëýåé êáé ôá äýï
ðñïâëÞìáôá.
¼óïí áöïñÜ óôï ðñþôï ìåéïíÝêôçìá, ï êáôÜëïãïò äåí ìðïñåß íá õðåñâåß
Ýíá ìÝãéóôï ìÝãåèïò ðïõ êáèïñßæåôáé áðü ôç äéáèÝóéìç êýñéá ìíÞìç. ÄçëáäÞ,
ôï ðëÞèïò ôùí óåëßäùí ðïõ óõìðåñéëáìâÜíïíôáé óå Ýíáí êáôÜëïãï åßíáé äýíáìç
ôïõ äýï êáé Üñá äéáäï÷éêÜ äéðëáóéÜæåôáé ìÝ÷ñé ôïõ óçìåßïõ íá öèÜóåé óôéò 2max
óåëßäåò. Ãéá ðáñÜäåéãìá, ãéá ìåãÜëá áñ÷åßá ôï ìÝãåèïò áõôü èá ìðïñïýóå íá
åßíáé 64, 128 ê.ï.ê. óåëßäåò. ¸ôóé ï êáôÜëïãïò äéðëáóéÜæåôáé ìÝ÷ñé íá öèÜóåé
áõôü ôï ïñéáêü ìÝãåèïò êáé åðïìÝíùò ðáñáìÝíåé óôáèåñü êáé ôï ðëÞèïò ôùí
êÜäùí ðïõ äåéêôïäïôïýíôáé áðü ôïí êáôÜëïãï. ¸ôóé, ìåôÜ áðü áõôü ôï óçìåßï
ôï áñ÷åßï ìåãáëþíåé áõîÜíïíôáò ü÷é ôï ðëÞèïò ôùí êÜäùí áëëÜ ôï ìÝãåèüò ôïõò.
¼óïí áöïñÜ óôï äåýôåñï ìåéïíÝêôçìá, ï ìåôáó÷çìáôéóìüò ôïõ êëåéäéïý óå
ôÝôïéá áñ÷åßá áêïëïõèåß Ýíáí áñéèìü âçìÜôùí. Áñ÷éêÜ, ôá êëåéäéÜ ìåôáó÷ç-
ìáôßæïíôáé ìå âÜóç ìßá óõíÜñôçóç þóôå íá ðñïêýøåé ìßá ïìïéüìïñöç êáôáíïìÞ.
¾óôåñá, ôï áðïôÝëåóìá ôçò óõíÜñôçóçò áíáêáôáíÝìåôáé åêèåôéêÜ ìå âÜóç ôïí
ôýðï:
exhash(k) = 2h(k) − 1
üðïõ k åßíáé ôï êëåéäß, h(k) åßíáé ôï áðïôÝëåóìá ôïõ ðñþôïõ ìåôáó÷çìáôéóìïý,
êáé exhash(k) åßíáé ôï áðïôÝëåóìá ôïõ äåýôåñïõ. Ôåëéêü áðïôÝëåóìá åßíáé ç
ïìïéüìïñöç êáôáíïìÞ íá áíôéêáôáóôáèåß ìå ìßá Üëëç ðïõ äéáêñßíåôáé ãéá ôç
óõóóþñåõóç ôùí êëåéäéþí ðñïò ôï êÜôù Üêñï ôïõ äéáóôÞìáôïò ôùí äéåõèýíóåùí.
¸ôóé ïé êÜäïé äåí äÝ÷ïíôáé ôïí ßäéï áñéèìü åããñáöþí êáé ç åðßäïóç ôçò åéóá-
ãùãÞò åßíáé ðåñßðïõ óôáèåñÞ óå üëç ôç äéÜñêåéá ôçò æùÞò ôïõ áñ÷åßïõ. Óôïí Ðß-
íáêá 13.3 ðáñáôçñïýìå üôé ç áðüóôáóç ìåôáîý äéáäï÷éêþí ôéìþí ôçò exhash(k)
ìåãáëþíåé êáèþò ïé ôéìÝò ôçò h(k) áõîÜíïíôáé. Ãéá ðáñÜäåéãìá, áí êáé ç áðü-
óôáóç ìåôáîý äéáäï÷éêþí ôéìÝò ôçò h(k) åßíáé 0,067, åí ôïýôïéò ç áðüóôáóç ôùí
ðñþôùí äýï ôéìþí ôçò exhash(k) åßíáé 0,47, åíþ ç áðüóôáóç ôùí ôåëåõôáßùí
ôéìþí ôçò exhash(k) åßíáé 0,90.

h(k) exhash(k) h(k) exhash(k) h(k) exhash(k) h(k) exhash(k)


0,000 0,000 0,267 0,203 0,533 0,447 0,800 0,741
0,067 0,047 0,333 0,260 0,600 0,516 0,867 0,823
0,133 0,097 0,400 0,320 0,667 0,662 0,933 0,910
0,200 0,149 0,467 0,382 0,733 0,662 1,000 1,000

Ðßíáêáò 13.3: ÅöáñìïãÞ åêèåôéêïý ìåôáó÷çìáôéóìïý.


340 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

Ôá ðñþôá bits ôïõ exhash(k) êáèïñßæïõí ôç óåëßäá ôïõ êáôáëüãïõ, üðïõ åßíáé
áðïèçêåõìÝíïò ï äåßêôçò ðñïò ôïí êáôÜëëçëï êÜäï. Ç åðéëïãÞ ôçò óåëßäáò (áðü
ôï óýíïëï ôùí óåëßäùí ôïõ êÜäïõ), üðïõ èá ðñÝðåé íá óõíå÷éóèåß ç áíáæÞôçóç,
ãßíåôáé ìå âÜóç ìåñéêÜ áðü ôá åðüìåíá bits áðü ôï exhash(k). Áêüìç óå êÜèå
êÜäï áíôéóôïé÷åß ìßá ðåñéï÷Þ õðåñ÷åßëéóçò, ðïõ åßíáé ïñãáíùìÝíç ùò äõáäéêü
äÝíäñï ðïõ ïíïìÜæåôáé ï-äÝíäñï (áðü ôï overflow). Ï êáôÜëïãïò ãéá áõôü ôï
äÝíäñï áðïèçêåýåôáé óôçí ðñþôç óåëßäá ôïõ áíôßóôïé÷ïõ êÜäïõ. ÊáôÜ ðáñüìïéï
ôñüðï, ç äéá÷åßñéóç ôçò ðåñéï÷Þò õðåñ÷åßëéóçò ãßíåôáé ìå ôá åðüìåíá bits ôïõ
exhash(k).

00
-
000 4
01
0- Â 10
Á 001 1
11
0-
010 2
1 ÄÝíäñï
- õðåñ÷åßëéóçò
011 2
0 -
1 000 1 00
à 100 8 001 6 01
- ¡ Å
- Ä 010 -
101 2 01
0 011 -?
Æ
110 1 1 Ç 100
101 ¡
? 0- 110 1
111 1 ?-
?
111 È
Êýñéá ìíÞìç Äåõôåñåýïõóá ìíÞìç

Ó÷Þìá 13.8: Åêèåôéêüò êáôáêåñìáôéóìüò ìå ðåñéïñéóìÝíï êáôÜëïãï.

Ïé ðñïçãïýìåíåò Ýííïéåò äéáóáöçíßæïíôáé ìå ôï ðáñÜäåéãìá ôïõ Ó÷Þìáôïò


13.8. ÁñéóôåñÜ öáßíåôáé ï êáôÜëïãïò ðïõ Ý÷åé öèÜóåé óôá üñéá ôçò áíÜðôõîÞò
ôïõ, åðåéäÞ max=3. Ï êáôÜëïãïò ðåñéÝ÷åé äåßêôåò ðñïò ôïõò êýñéïõò êÜäïõò. Ïé
äýï ôåëåõôáßïé äåßêôåò áíáöÝñïíôáé óôïí ßäéï êÜäï, ãåãïíüò ðïõ Üëëùóôå åßíáé
äõíáôü êáé óôç ìÝèïäï ôïõ áðëïý åðåêôáôïý êáôáêåñìáôéóìïý.
Áò õðïôåèåß üôé ðñÝðåé íá áíáæçôçèåß ôï êëåéäß ìå ôéìÞ 204. ¸óôù üôé
exhash(204) = .00110011002 . ÅðåéäÞ ï êáôÜëïãïò áðïôåëåßôáé áðü ïêôþ óåëß-
äåò, èåùñïýíôáé ôá ôñßá ðñþôá bits ãéá ôçí ðñïóðÝëáóç ôïõ êáôáëüãïõ, äçëáäÞ
ôá 001. ¢ñá ç áíáæÞôçóç êáôåõèýíåôáé óôç äåýôåñç óåëßäá ôïõ êáôáëüãïõ, ôç
óåëßäá Á. ÅðåéäÞ ç åßóïäïò ôïõ ìåãÝèïõò óôïí êáôÜëïãï åßíáé 1, ï áíôßóôïé-
÷ïò äåßêôçò áíáöÝñåôáé óå êÜäï ìå ìßá ìüíï óåëßäá. ¢ñá ôåëéêÜ, ç áíáæÞôçóç
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 341

ôåñìáôßæåôáé óôïí êÜäï  ôïõ Ó÷Þìáôïò 13.8.

Óôç óõíÝ÷åéá, áò õðïôåèåß üôé ðñÝðåé íá áíáæçôçèåß ôï êëåéäß 641. ÊáôÜ ôïí
ßäéï ôñüðï, Ýóôù üôé éó÷ýåé exhash(641) = .10001011002 . Ôá ôñßá ðñþôá bits
åßíáé ôá 100, Üñá ç áíáæÞôçóç êáôåõèýíåôáé óôçí ðÝìðôç óåëßäá ôïõ êáôáëüãïõ,
ôç óåëßäá Ã. ÅðåéäÞ ç åßóïäïò ôïõ ìåãÝèïõò óôïí êáôÜëïãï åßíáé 8, ï áíôßóôïé÷ïò
äåßêôçò áíáöÝñåôáé óå êÜäï ìå ïêôþ óåëßäåò êáé óõíåðþò ðñÝðåé íá ÷ñçóéìï-
ðïéçèïýí ôá ôñßá åðüìåíá bits ãéá ôç äéåõêñßíçóç ôçò óõãêåêñéìÝíçò óåëßäáò,
üðïõ ðñÝðåé íá óõíå÷éóèåß ç áíáæÞôçóç. ÁõôÜ ôá bits åßíáé 010 êáé óõíåðþò ç
áíáæÞôçóç óõíå÷ßæåôáé óôçí ôñßôç óåëßäá, ôç óåëßäá Ä. Áí ç óåëßäá Ä äåí ðåñéÝ-
÷åé ôï êëåéäß, ôüôå ç áíáæÞôçóç ðñÝðåé íá óõíå÷éóèåß óôï ï-äÝíäñï. Óôç óåëßäá
Ä õðÜñ÷åé äåßêôçò ðïõ áíáöÝñåôáé óôçí ðñþôç óåëßäá ôïõ äÝíäñïõ, ôç óåëßäá Å
ôïõ êáôáëüãïõ ôïõ äÝíäñïõ. Áí ôï ôÝôáñôï êáé ôï ðÝìðôï bit åßíáé 00 Þ 01, ôüôå
ôï êëåéäß ðåñéÝ÷åôáé óôç óåëßäá Å Þ óôç óåëßäá Æ, áíôéóôïß÷ùò. ÅéäÜëëùò, áí ôï
ôÝôáñôï bit åßíáé 1, ôüôå ç áíáæÞôçóç óõíå÷ßæåôáé óôç óåëßäá Ç. ¸ôóé, óôçí ðåñß-
ðôùóç áíáæÞôçóçò ôïõ êëåéäéïý 641 áðáéôïýíôáé ôñåéò ðñïóðåëÜóåéò óôï äßóêï,
äçëáäÞ äéáäï÷éêÜ óôéò óåëßäåò Ä, Å êáé Æ. Áí ðáñïõóéáóèåß ôï öáéíüìåíï íá
÷ñåéáóèïýí ðåñéóóüôåñï áðü äýï ðñïóðåëÜóåéò, ôüôå ïé äåßêôåò áëëÜæïõí þóôå
íá óõíôïìåõèåß ç äéáäéêáóßá. ¸ôóé ï äåßêôçò ôçò óåëßäáò Ä äåí èá äåß÷íåé ðëÝïí
óôç óåëßäá Å áëëÜ óôç óåëßäá Æ.

ÔÝëïò, áò õðïôåèåß üôé ðñÝðåé íá áíáæçôçèåß ôï êëåéäß 670. ÊáôÜ ôïí ßäéï
ôñüðï, éó÷ýåé exhash(670) = .10010010112 . Ôá ôñßá ðñþôá bits åßíáé ôá 100,
Üñá ç áíáæÞôçóç êáé ðÜëé êáôåõèýíåôáé óôç óåëßäá Ã. Ôá ôñßá åðüìåíá bits åßíáé
100 êáé óõíåðþò ç áíáæÞôçóç óõíå÷ßæåôáé óôçí ðÝìðôç óåëßäá ðïõ ïíïìÜæåôáé
Ç. Áí ôï êëåéäß äåí åßíáé áðïèçêåõìÝíï óôç óåëßäá Ç, ôüôå ç áíáæÞôçóç ðñÝðåé
íá óõíå÷éóèåß óôï ï-äÝíäñï. Óôç óåëßäá Ç õðÜñ÷åé äåßêôçò ðïõ áíáöÝñåôáé óôç
óåëßäá È, ðïõ åßíáé ôåñìáôéêüò êüìâïò ôïõ ï-äÝíäñïõ. ÄçëáäÞ, ôåëéêÜ ôï êëåéäß
670 âñßóêåôáé Þ óôç óåëßäá Ç Þ óôç óåëßäá È.

¼ðùò áíáöÝñèçêå üôáí Ýíáò êÜäïò ãåìßóåé, ôüôå ôï ìÝãåèïò ôïõ äéðëáóéÜæå-
ôáé êáé åíçìåñþíåôáé êáôÜëëçëá ç áíôßóôïé÷ç åßóïäïò ôïõ êáôáëüãïõ. Ï êÜäïò
ìåôáöÝñåôáé áðü ôï óõãêåêñéìÝíï óçìåßï ôïõ äßóêïõ êáé åðáíá-áðïèçêåýåôáé
óå êÜðïéá Üëëç ðåñéï÷Þ ôïõ äßóêïõ þóôå íá ìçí ÷ñåéÜæïíôáé äýï ðñïóðåëÜóåéò.
Ìßá Üëëç óõíçèéóìÝíç ôå÷íéêÞ åßíáé íá áöÞíïíôáé åããñáöÝò óôçí õðåñ÷åßëéóç
ðáñÜ íá äéðëáóéÜæåôáé óõíå÷þò ôï ìÝãåèïò ôïõ êÜäïõ, ïðüôå ìå áõîçìÝíï êü-
óôïò áíáæÞôçóçò åðéôõã÷Üíåôáé êáëýôåñç ÷ñÞóç ôïõ ÷þñïõ. Óå ó÷Ýóç ìå ôçí
áðëÞ ìÝèïäï ôïõ åðåêôáôïý êáôáêåñìáôéóìïý õðÜñ÷ïõí ôá åîÞò ðëåïíåêôÞìáôá:
äåí ÷ñåéÜæåôáé ðñïóðÝëáóç óôï äßóêï ãéá ôïí êáôÜëïãï, åíþ áðáéôåßôáé ìüíï ìßá
ðñïóðÝëáóç óôï äßóêï áí äåí õðÜñ÷åé õðåñ÷åßëéóç.
342 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

13.5 Ãñáììéêüò Êáôáêåñìáôéóìüò


Áðü Üðïøç ÷þñïõ ç ìÝèïäïò áõôÞ, ðïõ ðñïôÜèçêå áðü ôïí Litwin [Litwin 1980]
êáé ãíþñéóå ðïëëÝò åðåêôÜóåéò ìå ðáñáëëáãÝò. Áí êáé åßíáé äéáöïñåôéêÞ áðü ôéò
ðñïçãïýìåíåò ãéáôß äåí Ý÷åé êáôÜëïãï, Ý÷åé ùóôüóï êáé áñêåôÝò ïìïéüôçôåò ìå
áõôÝò. Óôï êëåéäß ìßáò åããñáöÞò åöáñìüæåôáé ìßá óõíÜñôçóç êáôáêåñìáôéóìïý
(êáôÜ ôá ãíùóôÜ) êáé áðïìïíþíïíôáé ôá ôåëåõôáßá (áíôß ôá ðñþôá) k bits ôïõ
áðïôåëÝóìáôïò. Ãéá ðáñÜäåéãìá, áí áñ÷éêÜ ôï áñ÷åßï Ý÷åé ïêôþ êÜäïõò ÷ùñçôé-
êüôçôáò ôñéþí åããñáöþí ï êáèÝíáò, ôüôå áðïìïíþíïíôáé ôá ôñßá ôåëåõôáßá bits
ôïõ áðïôåëÝóìáôïò ôçò óõíÜñôçóçò ôïõ êáôáêåñìáôéóìïý ãéá ôïí åíôïðéóìü ôïõ
êáôÜëëçëïõ êÜäïõ. Óôï Ó÷Þìá 13.9 ðáñïõóéÜæåôáé áõôÞ ç ðåñßðôùóç, üðïõ ôï
áñ÷åßï Ý÷åé óõíïëéêÜ ïêôþ åããñáöÝò.

000 56 4 = 0000 0100


001 113 193 5 = 0000 0101
010 10 146 10 = 0000 1010
011 19 19 = 0001 0011
100 4 56 = 0011 1000
101 5 113 = 0111 0001
110 146 = 1001 0010
111 193 = 1100 0001

Ó÷Þìá 13.9: Ãñáììéêüò êáôáêåñìáôéóìüò ìå ÷ñÞóç ôñéþí bits.

Ôï áñ÷åßï áõîÜíåé ìå äéáäï÷éêÝò äéáóðÜóåéò ôùí êÜäùí, üðïõ ïé åããñáöÝò


åíüò êÜäïõ ðïõ Ý÷ïõí êïéíÜ ôá ôåëåõôáßá k bits, ìïéñÜæïíôáé óå äýï êÜäïõò
áíáëüãùò ìå ôçí ôéìÞ ôùí ôåëåõôáßùí k+1 bits. Óôï Ó÷Þìá 13.9 ïé åããñáöÝò ìå
êëåéäéÜ 113 êáé 193 åßíáé áðïèçêåõìÝíåò óôïí êÜäï, ðïõ ÷áñáêôçñßæåôáé áðü ôá
ôñßá øçößá 001. ¢ñá áí åðñüêåéôï íá äéáóðáóèåß ï êÜäïò 001, ôüôå ïé åããñáöÝò
113 êáé 193 èá áðïèçêåýïíôáí êáé ðÜëé óôïí ßäéï êÜäï ãéáôß Ý÷ïõí ßäéá ôá ôåëåõ-
ôáßá ôÝóóåñá bits, äçëáäÞ 0001. ¼ìùò äåí èá óõíÝâáéíå ôï ßäéï óôçí ðåñßðôùóç
ðïõ èá Ýðñåðå íá äéáóðáóèåß ï êÜäïò 010, ðïõ ðåñéÝ÷åé ôéò åããñáöÝò ìå êëåéäéÜ
10 êáé 146, åðåéäÞ ïé åããñáöÝò áõôÝò ôåëéêÜ èá áðïèçêåýïíôáí óå äéáöïñåôéêïýò
êÜäïõò. Ç äéáäéêáóßá áõôÞ öáßíåôáé óôï Ó÷Þìá 13.10, üðïõ Ý÷ïõí äéáóðáóèåß ïé
ôñåéò ðñþôïé êÜäïé ìåôÜ ôçí åéóáãùãÞ ðÝíôå íÝùí åããñáöþí.
¸ôóé, üìùò ìåñéêïß êÜäïé ðåñéÝ÷ïõí åããñáöÝò ìå êëåéäéÜ ðïõ Ý÷ïõí k êïéíÜ
bits, åíþ Üëëïé ðåñéÝ÷ïõí åããñáöÝò ìå êëåéäéÜ ðïõ Ý÷ïõí k+1 êïéíÜ bits. ÏñéáêÞ
ôéìÞ (boundary value) ïíïìÜæåôáé ç ôéìÞ ðÝñá áðü ôçí ïðïßá ïé êÜäïé äéáêñßíï-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 343

0000
0001 113 193
0010 90 146
* 011 19
100 4 12 52 - 100
101 5
110 12 = 0000 1100
111 71 52 = 0011 0100
1000 56 71 = 0100 0111
1001 90 = 0101 1010
1010 10 100 = 0110 0100

Ó÷Þìá 13.10: Ãñáììéêüò êáôáêåñìáôéóìüò ìå ÷ñÞóç ôñéþí êáé ôåóóÜñùí bits.

íôáé áðü ôá ôåëåõôáßá k bits. Óôçí åðéêåöáëßäá êÜèå áñ÷åßïõ ãñáììéêïý êáôá-
êåñìáôéóìïý áðïèçêåýåôáé ç ïñéáêÞ ôéìÞ êáé ç áíôßóôïé÷ç ôéìÞ ôïõ k. Óôï Ó÷Þìá
13.10 ïé ôéìÝò áõôÝò åßíáé 011 êáé 3 áíôéóôïß÷ùò.

13.5.1 ÐñïóðÝëáóç ÅããñáöÞò


ÊáôÜ ôçí áíáæÞôçóç åããñáöÞò áðïìïíþíïíôáé ôá ôåëåõôáßá k bits áðü ôï áðïôÝ-
ëåóìá ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý. Áí ç ôéìÞ ðïõ ðñïêýðôåé ìå ÷ñÞóç ôùí k
bits åßíáé ìéêñüôåñç áðü ôçí ïñéáêÞ ôéìÞ, ôüôå ÷ñçóéìïðïéïýíôáé k+1 bits. ¸ôóé,
áí óôï áñ÷åßï ôïõ ðáñáäåßãìáôïò ôïõ Ó÷Þìáôïò 13.10 áíáæçôåßôáé ìßá åããñáöÞ
ìå ôåëåõôáßá bits ôá 1000 Þ ôá 1101, ôüôå ÷ñçóéìïðïéïýíôáé 4 Þ 3 bits áðü áõôÜ,
áíôéóôïß÷ùò.
Ç åðßäïóç ôçò áíáæÞôçóçò óå áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý åßíáé ðïëý
êáëÞ êáé ðñïóåããßæåé ôç ìßá ðñïóðÝëáóç óôï äßóêï. Áí ç ÷ùñçôéêüôçôá ôïõ
êÜäïõ Bkf r åßíáé 50, åíþ ï ðáñÜãïíôáò öüñôéóçò Lf åßíáé 75%, ôüôå ç åðéôõ÷Þò
êáé ç áíåðéôõ÷Þò áíáæÞôçóç áðáéôïýí 1.05 êáé 1.27 ðñïóðåëÜóåéò, áíôéóôïß÷ùò.
Õðü áõôÝò ôéò óõíèÞêåò ôï ÷ñïíéêü êüóôïò ãéá ôçí áíáæÞôçóç åßíáé:
Taccess (success) = 1.05 × (s + r + dtt)
Taccess (unsuccess) = 1.27 × (s + r + dtt)
Ç ãíùóôÞ áðü ôï ìÜèçìá ôùí Äïìþí ÄåäïìÝíùí äïìÞ ôïõ êáôáêåñìáôéóìïý
ìå îå÷ùñéóôÝò áëõóßäåò ìðïñåß íá õëïðïéçèåß êáé ùò Ýíá óôáôéêü áñ÷åßï óå ðå-
ñéâÜëëïí äåõôåñåýïõóáò ìíÞìçò. Óõãêñßíïíôáò ôéò åðéäüóåéò åíüò áñ÷åßïõ ãñáì-
ìéêïý êáôáêåñìáôéóìïý êáé åíüò óôáôéêïý áñ÷åßïõ êáôáêåñìáôéóìïý ìå áëõóßäåò,
344 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

ðáñáôçñïýìå üôé óôçí ðñþôç ðåñßðôùóç ï áñéèìüò ôùí ðñïóðåëÜóåùí åßíáé óõíÞ-
èùò ìåãáëýôåñïò, üôáí ï ðáñÜãïíôáò öüñôéóçò åßíáé ßäéïò. Áõôü ïöåßëåôáé óôï
ãåãïíüò üôé ïé åããñáöÝò äåí êáôáíÝìïíôáé ïìïéüìïñöá ìåôáîý ôùí êÜäùí óôï
áñ÷åßï ôïõ ãñáììéêïý êáôáêåñìáôéóìïý. Ïé êÜäïé ðïõ áíáöÝñïíôáé ìå k bits
äÝ÷ïíôáé óõíÞèùò ðåñéóóüôåñåò åããñáöÝò áð’ üôé ïé êÜäïé ðïõ áíáöÝñïíôáé ìå
k+1 bits. ¼ìùò, áò ðñïóå÷èåß üôé ï áñéèìüò ôùí ðñïóðåëÜóåùí äåí åîáñôÜôáé
áðü ôïí áñéèìü ôùí åããñáöþí óôï áñ÷åßï. ÄçëáäÞ, áêüìç êáé áí óôï áñ÷åßï åé-
óá÷èïýí ðïëëáðëÜóéåò åããñáöÝò ç åðßäïóç èá ðáñáìåßíåé óôáèåñÞ. Áõôü åßíáé
ôï ìåãÜëï ðëåïíÝêôçìá ôçò ìåèüäïõ áõôÞò Ýíáíôé ôùí Üëëùí ìåèüäùí ïñãÜíù-
óçò áñ÷åßùí êáé éäéáßôåñá Ýíáíôé ôçò áðëÞò ôå÷íéêÞò êáôáêåñìáôéóìïý ìå ÷ñÞóç
áëõóßäùí.

13.5.2 ÅéóáãùãÞ ÅããñáöÞò


Ç äéáäéêáóßá åéóáãùãÞò óå áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý èá äïèåß ìå ôç
âïÞèåéá åíüò ðáñáäåßãìáôïò. Áò õðïôåèåß üôé Ýíá áñ÷åßï áðïôåëåßôáé áðü ïêôþ
êýñéïõò êÜäïõò ìå ÷ùñçôéêüôçôá äÝêá åããñáöþí. ¸óôù, åðßóçò, üôé ï ðáñÜ-
ãïíôáò öüñôéóçò äåí ðñÝðåé íá õðåñâåß ôï 70%. Åêôüò áðü ôçí êýñéá ðåñéï÷Þ
õðÜñ÷åé êáé ç ðåñéï÷Þ õðåñ÷åßëéóçò, üðïõ ÷ñçóéìïðïéïýíôáé áëõóßäåò üðùò áêñé-
âþò êáé óôçí áðëÞ óôáôéêÞ ìÝèïäï.

*000 @¡
¡ @¡
@¡@¡
@¡@¡@¡@
001 @¡
¡ @¡
@¡ @¡
@¡@ -
010 @¡
¡ @¡
@¡ @@
¡@¡@¡¡@¡@¡@ @
¡¡@@
¡
011 @¡
¡ @

100 @¡
¡ @¡
@¡ @¡
@
101 @¡
¡ @@
@¡ ¡@
¡¡@¡@¡@¡@
110 @¡
¡ ¡@
@@ ¡@
¡@ ¡@¡
111 @@
¡ ¡@
¡@ ¡@
¡
0000 @¡
¡ @¡
@¡ @
*001 @¡
¡ @¡
@¡ @¡@¡ @¡
@¡ @¡
@ -
010 @¡
¡ @¡
@¡ @@¡@ ¡@
¡@ ¡@
¡@¡ @
¡¡@@
¡
011 @¡
¡ @

100 @¡
¡ @¡
@¡ @@¡ -
101 @¡
¡ @¡
@¡ @@
¡¡ @¡
@¡ @¡
@¡ @ @
¡
110 @¡
¡ @@
@¡ ¡@
¡@ ¡@
¡@¡@
¡
111 @¡
¡ ¡@
@@ ¡@¡
1000 @@
¡ ¡@
¡@ ¡

Ó÷Þìá 13.11: ÅðÝêôáóç áñ÷åßïõ ãñáììéêïý êáôáêåñìáôéóìïý.

Óôï Ó÷Þìá 13.11 ðáñïõóéÜæåôáé Ýíá áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý ìå


56 åããñáöÝò óå ìßá óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ. ÅðïìÝíùò, ï ðáñÜãïíôáò öüñ-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 345

ôéóçò åßíáé áêñéâþò 70%. Áí ðñïóôåèïýí Üëëåò 7 åããñáöÝò, ôüôå ÷ñåéÜæåôáé


Ýíáò áêüìç êÜäïò, þóôå ï ðáñÜãïíôáò öüñôéóçò íá ðáñáìåßíåé óôï 70%. Äç-
ëáäÞ, ãåíéêÜ üôáí åéóÜãïíôáé Lf ×Bkf r åããñáöÝò, ôüôå ôï áñ÷åßï áðïêôÜ áêüìç
Ýíáí êÜäï. ¸ôóé, ï ðñþôïò êÜäïò ðïõ ÷áñáêôçñßæåôáé áðü ôç óõìâïëïóåéñÜ 000
äéáóðÜóèçêå êáé ðñïÝêõøáí äýï êÜäïé ìå áíôßóôïé÷åò óõìâïëïóåéñÝò 0000 êáé
1000. Ç äéá÷åßñéóç ôùí åéóáãùãþí ãßíåôáé ìå âÜóç ôéò ðëçñïöïñßåò ðïõ õðÜñ-
÷ïõí áðïèçêåõìÝíåò óôçí åðéêåöáëßäá ôïõ áñ÷åßïõ, ôçí ïñéáêÞ ôéìÞ êáé ôçí ôéìÞ
ôïõ k.

*00 4 12
01 5
10 10
11 19 71 175 - 215

(á)
000 56
000 56 001 113
*01 5 *10 10
- 215
10 10 11 19 71 175
11 19 71 175 - 215 100 4 12 52 - 100
100 4 12 52 101 5

(â) åéóáãùãÞ 52, 56 (ã) åéóáãùãÞ 100, 113

Ó÷Þìá 13.12: ÃñáììéêÞ äéÜóðáóç êÜäùí.

Ç äéÜóðáóç ôùí êÜäùí êáé ç ôáêôïðïßçóç ôçò õðåñ÷åßëéóçò åßíáé áíåîÜñ-


ôçôá ãåãïíüôá. Ç õðåñ÷åßëéóç äåí ðñïêáëåß áðáñáßôçôá äéÜóðáóç áëëÜ ïýôå
êáé ç äéÜóðáóç ìåéþíåé áðáñáßôçôá ôçí õðåñ÷åßëéóç. ¸ôóé, ç óåéñÜ äéÜóðáóçò
ôùí êÜäùí ãßíåôáé êõêëéêÜ áðü ôçí áñ÷Þ ðñïò ôï ôÝëïò êáé ðÜëé áðü ôçí áñ÷Þ,
Üó÷åôá áðü ôï ðïéüò êÜäïò õðåñ÷åéëßæåé ðñþôïò. ¸íá ðáñÜäåéãìá äéáäï÷éêþí
åéóáãùãþí äßíåôáé óôï Ó÷Þìá 13.12, üðïõ áñ÷éêÜ ç äïìÞ áðïôåëåßôáé áðü ôÝó-
óåñéò êÜäïõò ìå ÷ùñçôéêüôçôá ôñåéò åããñáöÝò. Áí ï ðáñÜãïíôáò öüñôéóçò äåí
ðñÝðåé íá õðåñâåß ôï 67%, ôüôå ôï ðïëý ïêôþ åããñáöÝò ìðïñïýí íá áðïèçêåõ-
èïýí óôï áñ÷åßï õðü áõôÞ ôç ìïñöÞ. ÁõôÞ ç êáôÜóôáóç ðáñïõóéÜæåôáé óôï Ó÷Þìá
13.12á, üðïõ ï ôÝôáñôïò êÜäïò óõíïäåýåôáé áðü áëõóßäá õðåñ÷åßëéóçò. Ìå ôçí
åéóáãùãÞ ôùí äýï åããñáöþí ìå êëåéäéÜ 52 êáé 56 ðñÝðåé íá äéáóðáóèåß ï ðñþôïò
êÜäïò, üðùò öáßíåôáé óôï Ó÷Þìá 13.12â. Óôç óõíÝ÷åéá, ìå ôçí åéóáãùãÞ ôùí äýï
346 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

åããñáöþí ìå êëåéäéÜ 100 êáé 113 ðñÝðåé íá äéáóðáóèåß ï äåýôåñïò êÜäïò. Ç


íÝá êáôÜóôáóç ðáñïõóéÜæåôáé óôï Ó÷Þìá 13.12ã, üðïõ ðëÝïí öáßíåôáé üôé äýï
êÜäïé Ý÷ïõí áëõóßäá õðåñ÷åßëéóçò. Ï ôÝôáñôïò êÜäïò èá äéáóðáóèåß ìåôÜ ôçí
åéóáãùãÞ ôåóóÜñùí áêüìç åããñáöþí.
ÐåéñáìáôéêÜ áðïôåëÝóìáôá Ý÷ïõí äåßîåé üôé óå áñ÷åßï ãñáììéêïý êáôáêåñìá-
ôéóìïý ìå Bkf r=50 êáé Lf =75% áðáéôïýíôáé êáôÜ ìÝóï üñï 2,62 ðñïóðåëÜóåéò
óôï äßóêï êáôÜ ôçí åéóáãùãÞ ìßáò íÝáò åããñáöÞò. ÁõôÞ ç ôéìÞ åîçãåßôáé ùò åîÞò.
Êáô’ áñ÷Þí ìßá ðñïóðÝëáóç áðáéôåßôáé ãéá íá Ýñèåé óôçí êýñéá ìíÞìç ï êýñéïò
êÜäïò. Ìå ðéèáíüôçôá 1/Bkf r (ãéá ôçí áêñßâåéá ìå áêüìç ìåãáëýôåñç ðéèáíü-
ôçôá) èá äçìéïõñãçèåß Ýíáò íÝïò êÜäïò. Ôüôå èá ðñÝðåé ïé åããñáöÝò ôïõ áñ÷éêïý
êÜäïõ íá êáôáíåìçèïýí óôïõò äýï êÜäïõò. Áõôü óçìáßíåé üôé èá ãßíïõí Üëëåò
äýï ðñïóðåëÜóåéò óôï äßóêï ãéá ôçí åðáíá-áðïèÞêåõóÞ ôïõò. ÅðéðëÝïí, áí ï
áñ÷éêüò êÜäïò äéáèÝôåé êáé áëõóßäá õðåñ÷åßëéóçò, ôüôå åßíáé áðáñáßôçôï íá ðñï-
óðåëáóèåß êáé áõôÞ. ÔåëéêÜ, ðñïêýðôåé üôé ôï ÷ñïíéêü êüóôïò ãéá ìßá åéóáãùãÞ
åßíáé:
s + r + dtt s + r + dtt + 2r + s + r + dtt
Tinsert = Taccess (success) + 2r + +
Bkf r Lf × Bkf r
Áí Bkf r=50 êáé Lf =0.75, ôüôå ôï êüóôïò áõôü éóïýôáé ìå:
µ ¶ µ ¶
1 2 1
Tinsert = 1.27 + + × (s + r + dtt) + 1 + × 2r
50 37 37
= 74ms = 2.34 × 31.8ms = 2.34 × (s + r + dtt)

ðïõ ðñïóåããßæåé ðïëý ôçí ðåéñáìáôéêÞ ôéìÞ. Ôï áîéïðñüóåêôï åßíáé üôé ôï êüóôïò
åéóáãùãÞò ìßáò åããñáöÞò åßíáé ëßãï ðåñéóóüôåñï áðü äýï ðñïóðåëÜóåéò óôï äß-
óêï. ÄçëáäÞ, öáßíåôáé üôé ôï êüóôïò áõôü åßíáé ó÷åôéêÜ ìåãÜëï êáé ìÜëéóôá áí
óõãêñéèåß ìå ôï áíôßóôïé÷ï êüóôïò åéóáãùãÞò óå óôáôéêü áñ÷åßï êáôáêåñìáôéóìïý
ìå áëõóßäåò. Ùóôüóï, ôá öáéíüìåíá áðáôïýí. Ôï êüóôïò åéóáãùãÞò åããñáöÞò
óå áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý óõìðåñéëáìâÜíåé êáé ôï êüóôïò ôïðéêÞò
áíáäéïñãÜíùóçò. ÁíôéèÝôùò, óôï óôáôéêü áñ÷åßï ç áíáäéïñãÜíùóç ãßíåôáé ðå-
ñéïäéêÜ. Óå ôåëåõôáßá áíÜëõóç, ç åéóáãùãÞ äåí åßíáé ÷ñïíïâüñá ðñÜîç.

13.5.3 ÄéáãñáöÞ ÅããñáöÞò


Ç äéáãñáöÞ åããñáöÞò ìðïñåß íá ãßíåé êáôÜ ðïëëïýò ôñüðïõò. Ìßá ëýóç åßíáé íá
Ýñèïõí óôçí êýñéá ìíÞìç üëåò ôéò åããñáöÝò ôïõ êÜäïõ êáé ôçò áëõóßäáò õðåñ-
÷åßëéóçò êáé íá ìåôáöåñèåß ç ôåëåõôáßá ôçò áëõóßäáò óôç èÝóç ôçò åããñáöÞò ðïõ
äéáãñÜöåôáé. Áí ç åããñáöÞ ðïõ ðñüêåéôáé íá äéáãñáöåß åßíáé ôåëåõôáßá óôçí
áëõóßäá, ôüôå áðëþò åëåõèåñþíåôáé ï ÷þñïò. Áí ï áñéèìüò ôùí åããñáöþí ôïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 347

áñ÷åßïõ åßíáé êáôÜ Bkf r × Lf ìéêñüôåñïò áðü áõôüí ðïõ õðáãïñåýåôáé áðü
ôï óõãêåêñéìÝíï ðáñÜãïíôá öüñôéóçò, ôüôå ôï áñ÷åßï óõññéêíþíåôáé êáôÜ Ýíá
êÜäï.
Õðü áõôÝò ôéò óõíèÞêåò ôï ÷ñïíéêü êüóôïò ãéá ôç äéáãñáöÞ åããñáöÞò åßíáé:

Tdelete = Taccess (unsuccess) + 2r

Áõôüò ï ôýðïò äåí óõìðåñéëáìâÜíåé ôï êüóôïò óõññßêíùóçò ôïõ áñ÷åßïõ. Ç


ðéèáíüôçôá ãéá ôï ãåãïíüò áõôü åßíáé ðñáêôéêÜ ìéêñÞ áí õðïôåèåß üôé ï ñõèìüò
Üöéîçò åããñáöþí åßíáé ìåãáëýôåñïò áðü ôï ñõèìü äéáãñáöþí.

0000 @¡
¡ @¡
@¡@
*001 @¡
¡ @¡
@¡ @¡@¡@¡
@¡@¡
@ -
010 @¡
¡ @¡
@¡ @@¡@¡@
¡@¡@
¡@¡ @
¡¡@@
¡
011 @¡
¡ @

100 @¡
¡ @¡
@¡ @¡@ -
101 @¡
¡ @¡
@¡ @@
¡¡ @¡
@¡ @¡
@¡ @ @
¡
110 @¡
¡ @@
@¡ ¡@
¡@ ¡@
¡@¡@
¡
111 @¡
¡ ¡@
@@ ¡@¡
1000 @@
¡ ¡@
¡@ ¡

*000 @¡
¡ @¡
@¡@¡
@@¡¡
@¡@
001 @
¡¡ @¡
@¡ ¡¡
@@ @@
¡¡@@¡
010 ¡@
@ ¡@
¡@ ¡@
¡@¡@
¡¡@¡@
011 @
¡
100 @¡
¡ @¡
@¡@¡
@ -
101 @¡
¡ @¡
@¡ @¡
@¡ @¡
@¡@¡@¡@ @
¡
110 @¡
¡ ¡@
@@ ¡@
¡@ ¡@
¡¡@@¡
111 @@
¡ ¡@
¡@ ¡@
¡

Ó÷Þìá 13.13: Óõññßêíùóç áñ÷åßïõ ãñáììéêïý êáôáêåñìáôéóìïý.

Áðü áëãïñéèìéêÞ Üðïøç ç äéáäéêáóßá óõññßêíùóçò êáôÜ ôéò äéáãñáöÝò åßíáé


ç áíôßóôñïöç ôçò äéáäéêáóßáò äéÜóðáóçò ëüãù åéóáãùãþí. Ðáñáêïëïõèþíôáò
ôï ðëÞèïò åããñáöþí ôïõ áñ÷åßïõ äéáðéóôþíåôáé ðüôå õðÜñ÷ïõí Bkf r × Lf åã-
ãñáöÝò ëéãüôåñï áðü ôï óõãêåêñéìÝíï ðáñÜãïíôá öüñôéóçò. Ôüôå ï ôåëåõôáßïò
êÜäïò óõã÷ùíåýåôáé ìå ôïí êÜäï ðïõ Ý÷åé êïéíÜ ôá k ôåëåõôáßá bits. ¸íá ðáñÜ-
äåéãìá óõññßêíùóçò ëüãù äéáãñáöþí öáßíåôáé óôï Ó÷Þìá 13.13, üðïõ ôï áñ÷åßï
ãñáììéêïý êáôáêåñìáôéóìïý áðïôåëåßôáé áðü 9 êÜäïõò ìå ÷ùñçôéêüôçôá äÝêá åã-
ãñáöÝò áíÜ êÜäï. Áò õðïôåèåß üôé äéáãñÜöïíôáé ôÝóóåñéò åããñáöÝò áðü ôïí êÜäï
010, äýï åããñáöÝò áðü ôïí êÜäï 011 êáé ìßá áðü ôïí êÜäï 1000, ïðüôå áðáéôåß-
ôáé óõññßêíùóç ôïõ áñ÷åßïõ. Áðü ôïõò äýï êÜäïõò 0000 êáé 1000 äçìéïõñãåßôáé
Ýíáò, ï êÜäïò 000 ìå ôéò åããñáöÝò ôùí äýï ðñïçãïýìåíùí.
348 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

13.5.4 ÅîáíôëçôéêÞ ÁíÜãíùóç Áñ÷åßïõ


¼ðùò óôç óôáôéêÞ Ýêäïóç ôïõ áñ÷åßïõ êáôáêåñìáôéóìïý, Ýôóé êáé ï ãñáììéêüò
êáôáêåñìáôéóìüò äåí äéáôçñåß ôçí ôÜîç ôùí êëåéäéþí ôùí åããñáöþí. ¢ñá, áí
õðÜñ÷åé ìßá ëßóôá üëùí ôùí êëåéäéþí ôùí åããñáöþí, ôüôå ï ÷ñüíïò ãéá ôçí åîá-
íôëçôéêÞ áíÜãíùóç ôïõ áñ÷åßïõ éóïýôáé ìå:

Texhaustive = n × 1.05 × (s + r + dtt)

Áí äåí åíäéáöÝñåé íá äïèïýí óôï ÷ñÞóôç ïé åããñáöÝò ôáîéíïìçìÝíåò ìå âÜóç ôçí


ôéìÞ êÜðïéïõ êëåéäéïý, ôüôå ç äéáäéêáóßá åðéôá÷ýíåôáé êáé áðëþò óáñþíåôáé ôï
áñ÷åßï áðü ôçí áñ÷Þ ùò ôï ôÝëïò. Ùóôüóï, åîáéôßáò ôïõ êåíïý ÷þñïõ óôï ôÝëïò
ôùí êÜäùí, ç åîáíôëçôéêÞ áõôÞ áíÜãíùóç åßíáé âñáäýôåñç áðü ôçí áíôßóôïé÷ç óå
Ýíá áñ÷åßï óùñïý. Ôïíßæåôáé ùóôüóï üôé ç ìÝèïäïò ìðïñåß íá õëïðïéçèåß Ýôóé
þóôå ïé êýñéåò óåëßäåò ôïõ áñ÷åßïõ íá êáôáëáìâÜíïõí óõíå÷üìåíåò èÝóåéò óôï
äßóêï, êáé åðïìÝíùò íá åíôïðßæïíôáé ìå áðëïýò õðïëïãéóìïýò ôçò ìåôáôüðéóçò
(offset).

13.5.5 Âåëôéþóåéò Ãñáììéêïý Êáôáêåñìáôéóìïý


Ëüãù ôçò ìç ýðáñîçò êáôáëüãïõ ï ãñáììéêüò êáôáêåñìáôéóìüò åßíáé ç ðëÝïí
åíäéáöÝñïõóá ôå÷íéêÞ äõíáìéêþí ôõ÷áßùí áñ÷åßùí êáé Ý÷åé ãíùñßóåé ðïëëÝò âåë-
ôéþóåéò. Óôç óõíÝ÷åéá áíáöÝñïíôáé åðéãñáììáôéêÜ ìüíï äýï áðü áõôÝò. Óýìöùíá
ìå ôï ãñáììéêü êáôáêåñìáôéóìü ìå ìåñéêÝò åðåêôÜóåéò (partial expansions), ðïõ
ðñïôÜèçêå áðü ôïí Larson [Larson 1980], üôáí ï ðáñÜãïíôáò ÷ñçóéìïðïßçóçò
÷þñïõ õðåñâåß ôçí ðñïêáèïñéóìÝíç ôéìÞ, ôüôå äåí äéáóðÜôáé ìüíï Ýíáò êÜäïò
áëëÜ ïé åããñáöÝò åíüò æåýãïõò áíáäéáíÝìïíôáé ìåôáîý ôñéþí êÜäùí. Ïé êÜäïé
åíüò æåýãïõò áðÝ÷ïõí Bkf r/2 êÜäïõò êáé åðéëÝãïíôáé ãñáììéêÜ ìÝ÷ñé íá ôåëåéþ-
óïõí, ïðüôå Ý÷åé óõìâåß ìßá ìåñéêÞ äéÜóðáóç. Óôç óõíÝ÷åéá ìå ðáñüìïéá ôå÷íéêÞ
åðéëÝãïíôáé ôñéÜäåò êÜäùí ìÝ÷ñé ôï ðÝñáò ôçò äåýôåñçò ìåñéêÞò äéÜóðáóçò êáé
ôçí ïëïêëÞñùóç ìßáò ðëÞñïõò åðÝêôáóçò. Ç ìÝèïäïò áõôÞ âåëôéþíåé ôçí åðßäïóç
ôçò áíáæÞôçóçò êáé ôç ÷ñÞóç ôïõ ÷þñïõ ìå ôßìçìá ôï áõîçìÝíï êüóôïò åéóáãùãÞò
óå ó÷Ýóç ìå ôçí áñ÷éêÞ ìÝèïäï. Ìßá Üëëç åðÝêôáóç ôçò áñ÷éêÞò ìåèüäïõ Ýãéíå
áðü ôïí Tharp [Tharp 1987] êáé ëÝãåôáé ãñáììéêüò êáôáêåñìáôéóìüò ìå ðñïôå-
ñáéüôçôá äéÜóðáóçò (priority splitting). Áí ãßíåé õðÝñâáóç ôçò êáèïñéóìÝíçò
ôéìÞò ôïõ ðáñÜãïíôá ÷ñçóéìïðïßçóçò ÷þñïõ, ôüôå äßíåôáé ðñïôåñáéüôçôá óôç äéÜ-
óðáóç ôïõ êÜäïõ ìå ôç ìåãáëýôåñç áëõóßäá õðåñ÷åßëéóçò. ÂÝâáéá êÜèå êÜäïò
äéáóðÜôáé ìßá ìüíï öïñÜ êáôÜ ôç äéÜñêåéá ìßáò åðÝêôáóçò-äéðëáóéáóìïý ôïõ
áñ÷åßïõ áêüìç êáé áí óõíå÷þò äÝ÷åôáé åããñáöÝò óôçí õðåñ÷åßëéóÞ ôïõ. Ãéá ôçí
õëïðïßçóç áõôÞò ôçò ìåèüäïõ áðáéôïýíôáé åðéðëÝïí äïìÝò ðïõ üìùò åßíáé ó÷åôéêÜ
ìéêñÝò êáé áðïèçêåýïíôáé óôçí êýñéá ìíÞìç. ÔÝëïò, Ý÷åé áíáðôõ÷èåß êáé óõíäõá-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 349

óôéêÞ ìÝèïäïò ôùí äýï áõôþí ðáñáëëáãþí, äçëáäÞ ãñáììéêüò êáôáêåñìáôéóìüò


ìå ìåñéêÝò åðåêôÜóåéò êáé ðñïôåñáéüôçôá äéÜóðáóçò, ç ïðïßá ðïõ åðéäåéêíýåé
áíþôåñç åðßäïóç óå ó÷Ýóç ìå ôéò äýï ðñïçãïýìåíåò ðáñáëëáãÝò [Manolo 94].
ÂáóéêÜ âÝâáéá, ãéá üëåò ôéò ðáñáëëáãÝò ôïõ ãñáììéêïý êáôáêåñìáôéóìïý éó÷ýåé
ç ãåíéêÞ ðáñáôÞñçóç üôé ç áíáæÞôçóç ãßíåôáé ìå ìßá ðåñßðïõ ðñïóðÝëáóç óôï
äßóêï. ¼ìùò, ç äïìÞ áõôÞ äåí ðñïóöÝñåôáé ãéá åñùôÞìáôá ðåñéï÷Þò, ôá ïðïßá
áðáíôþíôáé ðïëý áðïäïôéêÜ áðü ôá Â+ -äÝíäñá.

13.6 Óýíïøç
Ï êáôáêåñìáôéóìüò áðïôåëåß ìßá ìÝèïäï ïñãÜíùóçò äåäïìÝíùí, ç ïðïßá Ý÷åé
÷ñçóéìïðïéçèåß ìå åðéôõ÷ßá ôüóï óôçí êýñéá üóï êáé óôç äåõôåñåýïõóá ìíÞìç.
Ôï âáóéêü ÷áñáêôçñéóôéêü ôïõ êáôáêåñìáôéóìïý åßíáé ç äéáóðïñÜ ôùí äåäïìÝ-
íùí óå êÜäïõò ìå ôõ÷áßï ôñüðï. Ãéá ôï ëüãï áõôü ÷ñçóéìïðïéïýíôáé áíôßóôïé÷åò
óõíáñôÞóåéò êáôáêåñìáôéóìïý. Ç ôõ÷áßá äéáóðïñÜ ôùí äåäïìÝíùí åðéôá÷ýíåé ôç
äéáäéêáóßá áíáæÞôçóçò åíüò êëåéäéïý, üìùò áðïôñÝðåé ôçí õðïóôÞñéîç åñùôçìÜ-
ôùí ðåñéï÷Þò.
Ç åðéëïãÞ ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý èåùñåßôáé ðïëý óçìáíôéêÞ ãéá
ôçí åðßäïóç ôçò ìåèüäïõ. Óôü÷ïò ôçò óõíÜñôçóçò åßíáé ç áðïöõãÞ ôùí óõãêñïý-
óåùí. Óýãêñïõóç Ý÷ïõìå üôáí ãéá äýï äéáöïñåôéêÝò ôéìÝò êëåéäéþí Ý÷ïõìå ôçí
ßäéá ôéìÞ ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý. ¸÷ïõí ðñïôáèåß ðïëëÝò ðïëéôéêÝò
åðßëõóçò ôùí óõãêñïýóåùí, ôüóï óå ðåñéâÜëëïí êýñéáò üóï êáé óå ðåñéâÜëëïí
äåõôåñåýïõóáò ìíÞìçò.
Óôç âéâëéïãñáößá Ý÷ïõí ðñïôáèåß áñêåôÝò ïñãáíþóåéò áñ÷åßùí äõíáìéêïý
êáôáêåñìáôéóìïý, åê ôùí ïðïßùí ïé ãíùóôüôåñåò åßíáé ïé åîÞò: á) äõíáìéêüò
êáôáêåñìáôéóìüò, â) åðåêôáôüò êáôáêåñìáôéóìüò, ã) åêèåôéêüò êáôáêåñìáôéóìüò
ìå ðåñéïñéóìÝíï êáôÜëïãï êáé ä) ãñáììéêüò êáôáêåñìáôéóìüò.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


13.1. Ðïéüò åßíáé ï åëÜ÷éóôïò êáé ï ìÝãéóôïò áñéèìüò êÜäùí ðïõ áðáéôïýíôáé
áðü áñ÷åßï äõíáìéêïý êáôáêåñìáôéóìïý ìå Bkf r=2 ãéá ôçí áðïèÞêåõóç 10 åã-
ãñáöþí, áí üëåò êáôåõèýíïíôáé óôï ßäéï äõáäéêü äÝíäñï ôïõ êáôáëüãïõ;

13.2. Óå áñ÷åßï äõíáìéêïý êáôáêåñìáôéóìïý ìå Bkf r=2 íá åéóá÷èïýí äéáäï-


÷éêÜ ïé åããñáöÝò ìå ôéìÝò êëåéäéþí 42, 57, 16, 52, 66, 77, 12, 25, 21 êáé 33. Íá
èåùñçèïýí ïé óõíáñôÞóåéò h1 (key), h2 (key) êáèþò êáé ç øåõäïôõ÷áßá ãåííÞôñéá
ôïõ Êåöáëáßïõ 13.2. Ç Üóêçóç íá åðáíáëçöèåß åöáñìüæïíôáò ôçí ðáñáëëáãÞ
ôçò áíáâïëÞò äéÜóðáóçò ìå β=1,5.
350 ÊåöÜëáéï 13. Êáôáêåñìáôéóìüò

13.3. Íá ó÷åäéáóèåß ç ìïñöÞ åíüò áñ÷éêÜ êåíïý áñ÷åßïõ åðåêôáôïý êáôáêåñìá-


ôéóìïý êáôÜ ôçí åéóáãùãÞ äéáäï÷éêÜ ôùí êëåéäéþí 27, 18, 29, 28, 42, 13 êáé 16.
Ùò óõíÜñôçóç êáôáêåñìáôéóìïý íá ëçöèåß ç h(key) = key mod 11, þóôå áðü
ôá êëåéäéÜ áõôÜ íá ðñïêýøïõí ôåôñáøÞöéïé äõáäéêïß áñéèìïß êáé íá èåùñçèåß
êÜäïò ÷ùñçôéêüôçôáò ôñéþí åããñáöþí. Óôç óõíÝ÷åéá íá äéáãñáöïýí ôá êëåéäéÜ
16, 29 êáé 13. Ç Üóêçóç íá åðéëõèåß èåùñþíôáò áñ÷éêÜ ôá ðñþôá bits êáé êáôüðéí
ôá ôåëåõôáßá bits.

13.4. Íá åðéëõèåß ç ðñþôç Üóêçóç èåùñþíôáò üôé ïé äåßêôåò ôïõ êáôáëüãïõ ìðï-
ñïýí íá ðÜñïõí ôéìÝò NULL.

13.5. Ðïéüò åßíáé ï åëÜ÷éóôïò áñéèìüò bits ðïõ áðáéôåßôáé óå áñ÷åßï åðåêôáôïý
êáôáêåñìáôéóìïý ìå

• 10.000 åããñáöÝò êáé ÷ùñçôéêüôçôá 25 åããñáöÝò áíÜ êÜäï,

• 100.000 åããñáöÝò êáé ÷ùñçôéêüôçôá 10 åããñáöÝò áíÜ êÜäï, êáé

• 1000.000 åããñáöÝò êáé ÷ùñçôéêüôçôá 8 åããñáöÝò áíÜ êÜäï.

ÐïéÜ åßíáé ç ðéèáíüôçôá íá ìçí õðÜñ÷ïõí óõíþíõìá óå áñ÷åßï ìå 10.000 åã-


ãñáöÝò, üôáí ç óõíÜñôçóç êáôáêåñìáôéóìïý äßíåé ôéìÝò óôá äéáóôÞìáôá 1..216 ,
1..224 êáé 1..232 .

13.6. Óå åêèåôéêü áñ÷åßï ìå ðåñéïñéóìÝíï êáôÜëïãï ï êáôÜëïãïò áðïôåëåßôáé


áðü ôÝóóåñéò óåëßäåò ìå ôÝóóåñá æåõãÜñéá êëåéäéþí-äåéêôþí áíÜ óåëßäá, åíþ
êÜèå óåëßäá äåäïìÝíùí ìðïñåß íá áðïèçêåýóåé äýï åããñáöÝò. Ç óõíÜñôçóç
êáôáêåñìáôéóìïý äßíåé ïêôáøÞöéïõò äõáäéêïýò áñéèìïýò. Ôá ðñþôá äýï øçößá
ðñïóäéïñßæïõí ôç óåëßäá ôïõ êáôáëüãïõ, åíþ ôá äýï åðüìåíá ðñïóäéïñßæïõí ôç
äéåýèõíóç ôçò óåëßäáò äåäïìÝíùí. Íá ó÷åäéáóèåß ôï áðïôÝëåóìá ôçò åéóáãùãÞò
ôùí åããñáöþí ìå êëåéäéÜ 255, 200, 56, 64, 155, 67, 43, 12, 205, 132, 128, 144 êáé 79.

13.7. Óå áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý ìå Bkf r=20 êáé Lf =0.7 ðñüêåéôáé


íá åéóá÷èïýí n=200.000 åããñáöÝò. Ðüóåò óåëßäåò ðñÝðåé íá äåóìåõèïýí óôçí
êýñéá ðåñéï÷Þ êáé ðüóá bits ðñÝðåé íá ÷ñçóéìïðïéçèïýí ãéá ôç äéåõèõíóéïäü-
ôçóç; Ç Üóêçóç íá åðáíáëçöèåß ãéá Bkf r=30, Lf =0.6 êáé n=100.000.

13.8. Óå áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý ìå Bkf r=2 êáé Lf =0.5 íá åéóá-


÷èïýí äéáäï÷éêÜ ïé åããñáöÝò ìå ôéìÝò êëåéäéþí 42, 57, 16, 52, 66, 77, 12, 25, 21
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 351

êáé 33. Áñ÷éêÜ ôï áñ÷åßï áðïôåëåßôáé áðü ôÝóóåñéò êÜäïõò. Ïé ôéìÝò ôùí êëåé-
äéþí íá ìåôáôñáðïýí óå åðôáøÞöéïõò äõáäéêïýò áñéèìïýò êáé íá áðïìïíùèïýí
ôá ôåëåõôáßá øçößá. Ç Üóêçóç íá åðáíáëçöèåß ãéá Bkf r=3 êáé Lf =0.67.

13.9. Óôï áñ÷åßï ôçò ðñïçãïýìåíçò Üóêçóçò íá åéóá÷èïýí äÝêá åããñáöÝò, þóôå
íá ðñïêëçèåß õðåñ÷åßëéóç ìå áëõóßäá äýï êÜäùí.

13.10. Óå áñ÷åßï ãñáììéêïý êáôáêåñìáôéóìïý ìå Bkf r=3, Lf =0.67 êáé ôÝó-


óåñéò áñ÷éêïýò êÜäïõò åéóÜãïíôáé äéáäï÷éêÜ ïé åðüìåíåò 24 åããñáöÝò ìå ôéìÝò
êëåéäéþí 42, 57, 16, 52, 66, 77, 12, 25, 21, 33, 32, 14, 50, 49, 47, 7, 56, 13, 62, 27, 31,
41, 30, 4, 10 êáé 6. Ðïéü åßíáé ôá áñ÷éêü ìÝãåèïò ôïõ áñ÷åßïõ; Ðüóá øçößá èá
÷ñçóéìïðïéçèïýí äéáäï÷éêÜ; ÐïéÜ èá åßíáé ç äïìÞ ôïõ áñ÷åßïõ ìå ôéò äéáäï÷éêÝò
åðåêôÜóåéò;

13.11. Íá åðáíáëçöèåß ç ðñïçãïýìåíç Üóêçóç åöáñìüæïíôáò ôçí ðáñáëëáãÞ


ôïõ ãñáììéêïý êáôáêåñìáôéóìïý ìå ìåñéêÝò åðåêôÜóåéò.

13.12. Íá åðáíáëçöèåß ç ðñïçãïýìåíç Üóêçóç åöáñìüæïíôáò ôçí ðáñáëëáãÞ


ôïõ ãñáììéêïý êáôáêåñìáôéóìïý ìå ðñïôåñáéüôçôá äéÜóðáóçò.

13.13. Íá äïèïýí ðáñáäåßãìáôá, üðïõ ãéá äýï óõãêåêñéìÝíá óýíïëá äåäïìÝíùí,


ç õëïðïßçóç ôïõ áñ÷åßïõ ôïõ ãñáììéêïý êáôáêåñìáôéóìïý íá Ý÷åé (á) ëéãüôåñåò
óåëßäåò, êáé (â) ðåñéóóüôåñåò óåëßäåò áðü ôçí õëïðïßçóç ôïõ åðåêôáôïý êáôá-
êåñìáôéóìïý.

13.14. Ìå ôá äåäïìÝíá ôïõ Ó÷Þìáôïò 13.2 íá ó÷åäéáóèåß ç áíôßóôïé÷ç äïìÞ ãéá


ôéò ðåñéðôþóåéò ôïõ åðåêôáôïý êáôáêåñìáôéóìïý êáé ôïõ ãñáììéêïý êáôáêåñìá-
ôéóìïý.

13.15. Ìå ôá äåäïìÝíá ôïõ Ó÷Þìáôïò 13.9 íá ó÷åäéáóèåß ç áíôßóôïé÷ç äïìÞ ãéá


ôéò ðåñéðôþóåéò ôïõ äõíáìéêïý êáôáêåñìáôéóìïý êáé ôïõ åðåêôáôïý êáôáêåñìá-
ôéóìïý.
14
Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá
ÅñùôçìÜôùí

Ç äéáôýðùóç åíüò åñùôÞìáôïò ðñïò ôï ÓÄÂÄ ðñáãìáôïðïéåßôáé óõíÞèùò óå ìßá


ãëþóóá ÂÜóçò ÄåäïìÝíùí õøçëïý åðéðÝäïõ (üðùò ç SQL). Ïé ãëþóóåò áõôÝò
áðïäåóìåýïõí ôï ÷ñÞóôç áðü ëåðôïìÝñåéåò õëïðïßçóçò êáèþò äåí ðåñéÝ÷ïõí ôïí
ôñüðï åêôÝëåóçò ôïõ åñùôÞìáôïò. Ç ìÝèïäïò ðïõ èá åðéëåãåß ãéá ôçí åêôÝëåóç ôïõ
åñùôÞìáôïò êáé ôçí åîáãùãÞ ôïõ áðïôåëÝóìáôïò åßíáé õðåõèõíüôçôá ôïõ ÓÄÂÄ.
Ðñéí ôçí åêôÝëåóç åíüò åñùôÞìáôïò ðñïçãåßôáé ôï óôÜäéï ôçò âåëôéóôïðïßç-
óçò (optimization) [Chaudhuri 1998]. Ôï áñ÷éêü åñþôçìá ðïõ õðïâÜëåé ï ÷ñÞ-
óôçò ìðïñåß íá ôñïðïðïéçèåß, Ýôóé þóôå íá ìåéùèåß ï ÷ñüíïò åðåîåñãáóßáò. Åðß-
óçò, óôï óôÜäéï áõôü ðñïóäéïñßæåôáé ç óåéñÜ ðñïóðÝëáóçò ôùí äåäïìÝíùí, ðïéïß
êáôÜëïãïé èá ÷ñçóéìïðïéçèïýí, ðüóç ìíÞìç èá äåóìåõèåß, ðïéÜ áñ÷åßá äåäïìÝ-
íùí áðáéôïýíôáé ãéá ôçí åðåîåñãáóßá. ÌåôÜ ôïí ðñïóäéïñéóìü ôùí ðáñáãüíôùí
áõôþí äçìéïõñãåßôáé Ýíá ðëÜíï åêôÝëåóçò åñùôÞìáôïò (query execution plan)
ðïõ ðåñéÝ÷åé üëåò ôéò áðáñáßôçôåò ðëçñïöïñßåò ãéá ôçí åðåîåñãáóßá ôïõ åñùôÞ-
ìáôïò. Åêôüò áðü ôç óåéñÜ åêôÝëåóçò ôùí ðñÜîåùí, ôï ðëÜíï åêôÝëåóçò ðåñéÝ÷åé
êáé ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðïéÜ ìÝèïäïò èá ÷ñçóéìïðïéçèåß ãéá ôçí åðå-
îåñãáóßá êÜèå ðñÜîçò. Ãéá ðáñÜäåéãìá, áí Ý÷ïõìå ïñßóåé Ýíáí êáôÜëïãï ãéá

353
354 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

ìßá óôÞëç, ôüôå ìðïñïýìå íá åêôåëÝóïõìå ìßá ðñÜîç åðéëïãÞò åßôå ÷ñçóéìïðïéþ-
íôáò ôïí êáôÜëïãï åßôå ÷ùñßò. Ôï ðëÜíï åêôÝëåóçò äéï÷åôåýåôáé óôç ìç÷áíÞ
åêôÝëåóçò (execution engine), üðïõ ãßíåôáé ç åðåîåñãáóßá ôïõ åñùôÞìáôïò êáé
ç ðáñáãùãÞ ôïõ ôåëéêïý áðïôåëÝóìáôïò. Ç äéáäéêáóßá ðáñáãùãÞò ôïõ ðëÜíïõ
åêôÝëåóçò ðáñïõóéÜæåôáé äéáãñáììáôéêÜ óôï Ó÷Þìá 14.1.

Ε ρ ώ τ η  α S Q L

Α ν ά λ υ σ η Ε ρ ω τ ή  α τ ο ς Σ

χ ή  α Β ά σ η ς

 ε δ ο  έ ν ω ν

Ε ρ ώ τ η ) α σ ε ε σ ω τ ε ρ ι κ ή α ν α π α ρ ά σ τ α σ η

Κ α τ ά λ ο γ ο ς

υ σ τ ή  α τ ο ς
Β ε λ τ ι σ τ ο π ο ι η τ ή ς

Α λ γ ε β ρ ι κ ο ί

Μ ε τ α σ χ η  α τ ι σ  ο ί

Π α ρ α γ ω γ ή Ε κ τ ί  η σ η

Π λ ά ν ο υ Κ ό σ τ ο υ ς Π λ ά ν ο υ

τ α τ ι σ τ ι κ ά

Ε κ τ έ λ ε σ η ς Ε κ τ έ λ ε σ η ς

 ε δ ο  έ ν α

Μ έ θ ο δ ο ι

Υ λ ο π ο ί η σ η ς

Π ρ ά ξ ε ω ν

Α π ο δ ο τ ι κ ό π λ ά ν ο ε κ τ έ λ ε σ η ς

 ε δ ο  έ ν α Β ά σ η ς
Μ η χ α ν ή Ε κ τ έ λ ε σ η ς

Α π ο τ έ λ ε σ  α

Ó÷Þìá 14.1: ÐáñáãùãÞ ðëÜíïõ åêôÝëåóçò åñùôÞìáôïò.

¼óï ðïëõðëïêüôåñï åßíáé ôï åñþôçìá, ôüóï äõóêïëåýåé ôï óôÜäéï ôçò âåëôé-


óôïðïßçóçò. Åðßóçò, åßíáé ðñïöáíÝò üôé üóï ðåñéóóüôåñïõò ðßíáêåò ÷ñçóéìïðïéåß
ôï åñþôçìá, ôüóï áõîÜíåôáé ï ÷ñüíïò åðåîåñãáóßáò ôïõ åñùôÞìáôïò. ÓõíÞèùò,
åñùôÞìáôá ðïõ ðåñéÝ÷ïõí ðñÜîåéò óýíäåóçò ìåôáîý ðéíÜêùí áðáéôïýí ðåñéóóü-
ôåñï ÷ñüíï ãéá ôçí åêôÝëåóÞ ôïõò. Ïé óçìáíôéêüôåñïé ëüãïé ãéá ôçí êáèõóôÝñçóç
óôçí åêôÝëåóç åíüò åñùôÞìáôïò óõíïøßæïíôáé ùò åîÞò:
• ÐñïóðåëÜóåéò óôï äßóêï. Áðáéôåßôáé ÷ñüíïò ãéá íá äéáâáóèåß ìßá ìïíÜäá
ðëçñïöïñßáò áðü ôï äßóêï. Óôïõò óýã÷ñïíïõò äßóêïõò ï ìÝóïò ÷ñüíïò
ðñïóðÝëáóçò åßíáé ìéêñüôåñïò áðü 10ms, ïðüôå èåùñçôéêÜ ìðïñïýìå íá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 355

Ý÷ïõìå 1000 ðñïóðåëÜóåéò áíÜ äåõôåñüëåðôï. Ëéãüôåñåò ðñïóðåëÜóåéò


óçìáßíåé ìéêñüôåñïò ÷ñüíïò åðåîåñãáóßáò. Ãéá íá ðåôý÷ïõìå ìéêñüôåñïõò
÷ñüíïõò ðñïóðÝëáóçò ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ðïëëÝò óõóêåõÝò
äßóêùí óå ðáñáëëçëßá.

• Êýêëïé CPU. ¼ôáí ôá äåäïìÝíá âñßóêïíôáé óôçí êýñéá ìíÞìç, ðñÝðåé íá


ðñáãìáôïðïéçèåß ç êáôÜëëçëç åðåîåñãáóßá þóôå íá ëÜâïõìå ôï áðïôÝëå-
óìá. Áí óôï åñþôçìá õðÜñ÷ïõí ðïëýðëïêåò ðñÜîåéò, èá áðáéôçèåß ðåñéó-
óüôåñïò ÷ñüíïò ãéá ôçí åêôÝëåóÞ ôïõ.

• ÄéáèÝóéìç ìíÞìç. ¼óï ðåñéóóüôåñç êýñéá ìíÞìç åßíáé äéáèÝóéìç, ôüóï


ðåñéóóüôåñá äåäïìÝíá ìðïñïýí íá áðïèçêåõèïýí. ¸ôóé, ìåéþíåôáé ç ðé-
èáíüôçôá íá áðáéôçèåß ðñïóðÝëáóç óôï äßóêï, äéüôé åßíáé ðïëý ðéèáíü ôá
äåäïìÝíá ðïõ áíáæçôïýìå íá âñßóêïíôáé Þäç óôçí êýñéá ìíÞìç.

Ôï ðñüâëçìá ôçò åýñåóçò ôïõ âÝëôéóôïõ ôñüðïõ åêôÝëåóçò åíüò åñùôÞìá-


ôïò åßíáé áñêåôÜ äýóêïëç êáé ÷ñïíïâüñá äéáäéêáóßá. Óôü÷ïò åßíáé íá âñåèåß
Ýíá éêáíïðïéçôéêü áðü Üðïøç êüóôïõò ðëÜíï åêôÝëåóçò, ÷ùñßò íá áöéåñùèåß
ìåãÜëï ÷ñïíéêü äéÜóôçìá ãéá ôïí ðñïóäéïñéóìü ôïõ. ¸ôóé, ôï ðëÜíï åêôÝëåóçò
ðïõ ðáñÜãåôáé áí êáé äåí åßíáé ôï âÝëôéóôï äõíáôü óôéò ðåñéóóüôåñåò ðåñéðôþ-
óåéò ìåéþíåé óçìáíôéêÜ ôï ÷ñüíï åðåîåñãáóßáò ôïõ åñùôÞìáôïò. Áõôü óõìâáßíåé
åðåéäÞ, üðùò èá áíáëõèåß êáé óôç óõíÝ÷åéá, ï áñéèìüò ôùí äõíáôþí ðëÜíùí åêôÝ-
ëåóçò åßíáé ðïëý ìåãÜëïò ìå áðïôÝëåóìá ç åýñåóç ôïõ áðïëýôùò âÝëôéóôïõ íá
ìçí åßíáé åöéêôÞ ëáìâÜíïíôáò õð’ üøç ôïõò ÷ñïíéêïýò ðåñéïñéóìïýò. ÅðïìÝíùò,
óõìâéâáæüìáóôå êáé ìå Ýíá "ó÷åäüí âÝëôéóôï" ðëÜíï åêôÝëåóçò, ôï ïðïßï óõíÞèùò
ðñïóäéïñßæåôáé ìå âÜóç ôï ðëÞèïò ôùí ðñïóðåëÜóåùí óôï äßóêï. Ç äéáäéêáóßá
ôçò âåëôéóôïðïßçóçò áðïôåëåßôáé áðü ôá åîÞò óôÜäéá:

• ÁëëáãÞ ôïõ ôñüðïõ äéáôýðùóçò ôïõ åñùôÞìáôïò ìÝóù áëãåâñéêþí ìåôá-


ó÷çìáôéóìþí, þóôå íá ðñïêýøåé Ýíá óýíïëï éóïäýíáìùí åñùôçìÜôùí êáé
íá åðéëÝîïõìå ôï áðïäïôéêüôåñï,

• Ðñïóäéïñéóìüò ôùí åíáëëáêôéêþí ëýóåùí ãéá ôçí õëïðïßçóç ôùí ðñÜîåùí


ôçò ó÷åóéáêÞò Üëãåâñáò ðïõ ðåñéÝ÷ïíôáé óôï åñþôçìá, êáé

• ¸ëåã÷ïò ôïõ êüóôïõò åðåîåñãáóßáò ôùí äéáöüñùí ðñÜîåùí ôïõ åñùôÞ-


ìáôïò, þóôå íá ðñïóäéïñéóèåß ç óåéñÜ åêôÝëåóçò êáé ç ìÝèïäïò ðïõ èá
÷ñçóéìïðïéçèåß ãéá êÜèå ðñÜîç.

Ç äéáäéêáóßá ôçò âåëôéóôïðïßçóçò ìðïñåß íá åßíáé äõíáìéêÞ (dynamic) Þ óôá-


ôéêÞ (static). Óôç äõíáìéêÞ âåëôéóôïðïßçóç ôï åñþôçìá âåëôéóôïðïéåßôáé êÜèå
356 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

öïñÜ ðïõ áðáéôåßôáé ç åðåîåñãáóßá ôïõ. Ìå ôïí ôñüðï áõôü õðÜñ÷åé ç åããýçóç
üôé ðÜíôá ôï åðéëåãüìåíï ðëÜíï åêôÝëåóçò åðéëÝãåôáé ìå âÜóç ôá ôñÝ÷ïíôá äå-
äïìÝíá ôçò âÜóçò. Ôï ìåéïíÝêôçìá åßíáé üôé êÜèå öïñÜ ðñÝðåé íá äáðáíçèåß Ýíá
÷ñïíéêü äéÜóôçìá ãéá ôçí ïëïêëÞñùóç ôçò äéáäéêáóßáò âåëôéóôïðïßçóçò. ÁíôéèÝ-
ôùò, ç óôáôéêÞ âåëôéóôïðïßçóç åíåñãåß ìßá ìüíï öïñÜ óå êÜèå åñþôçìá, êé Ýôóé
áðïöåýãåôáé ôï åðéðëÝïí ÷ñïíéêü êüóôïò ãéá ôçí åðéëïãÞ åíüò êáëïý ðëÜíïõ áðÜ-
íôçóçò. Ùóôüóï, ïé áëëáãÝò ðïõ ðñáãìáôïðïéïýíôáé óôç âÜóç ëüãù åéóáãùãþí,
äéáãñáöþí êáé åíçìåñþóåùí áëëÜæïõí, óôç ãåíéêÞ ðåñßðôùóç, ôçí áðüäïóç ôùí
äéáöïñåôéêþí ðëÜíùí åêôÝëåóçò. ¸ôóé, Ýíá ðëÜíï ðïõ èåùñåßôáé êáëü ãéá ôç
óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ, ìðïñåß íá ìçí åßíáé ôüóï áðïäïôéêü ôçí åðüìåíç
öïñÜ ðïõ èá áðáéôçèåß ç åðåîåñãáóßá ôïõ åñùôÞìáôïò, ëüãù ôùí áëëáãþí óôç
ÂÜóç ÄåäïìÝíùí. Óçìåéþíåôáé üôé óôáôéêÞ êáé äõíáìéêÞ âåëôéóôïðïßçóç ìðïñïýí
íá óõíäõáóèïýí Ýôóé þóôå íá ðñïêýøåé Ýíá õâñéäéêü ó÷Þìá.

14.1 Áëãåâñéêïß Ìåôáó÷çìáôéóìïß


Ïé áëãåâñéêïß ìåôáó÷çìáôéóìïß ÷ñçóéìïðïéïýí éóïäõíáìßåò ìåôáîý åêöñÜóåùí
ôçò ó÷åóéáêÞò Üëãåâñáò, þóôå ôï åñþôçìá ðïõ ðñïêýðôåé íá åßíáé éóïäýíáìï ìå
ôï áñ÷éêü, äçëáäÞ íá äßíåé ôï ßäéï áðïôÝëåóìá. Ìå ôçí åöáñìïãÞ ôùí áëãåâñéêþí
ìåôáó÷çìáôéóìþí ìðïñïýìå íá äçìéïõñãÞóïõìå ðïëëÜ äéáöïñåôéêÜ ðëÜíá åêôÝ-
ëåóçò åíüò åñùôÞìáôïò, êáé óôç óõíÝ÷åéá íá åðéëÝîïõìå Ýíá áðïäïôéêü ðëÜíï
ãéá ôçí åðåîåñãáóßá ôïõ.
Ãéá ôçí ðåñéãñáöÞ ôùí áëãåâñéêþí ìåôáó÷çìáôéóìþí ÷ñçóéìïðïéïýíôáé ôá
åîÞò óýìâïëá:

• X, Y , Z åßíáé åêöñÜóåéò ó÷åóéáêÞò Üëãåâñáò,

• a, a1 , ..., aN , b, b1 , ..., bN , c, c1 , ..., cN åßíáé óôÞëåò åíüò Þ ðåñéóóïôÝñùí


ðéíÜêùí,

• A, B, C åßíáé óýíïëá óôçëþí, êáé

• p, q, w åßíáé óõíèÞêåò.

Óôç óõíÝ÷åéá ðáñáèÝôïõìå ìåñéêïýò êáíüíåò ìåôáó÷çìáôéóìïý åêöñÜóåùí,


ïé ïðïßïé ìðïñïýí íá ÷ñçóéìïðïéçèïýí ãéá ôï ìåôáó÷çìáôéóìü ôïõ áñ÷éêïý åñùôÞ-
ìáôïò óå Üëëï éóïäýíáìü ôïõ. Ïé áðïäåßîåéò ïñèüôçôáò ôùí êáíüíùí ìðïñïýí
íá âñåèïýí óôçí åñãáóßá [Aho 1979].

1. σp∧q∧w (X) = σp (σq (σw (X)))

2. σp (σq (X)) = σq (σp (X))


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 357

3. ΠA ΠB ΠC (X) = ΠA (X)

4. Πa1 ,...,aN (σp (X)) = σp (Πa1 ,...,aN (X))

5. X × Y = Y × X êáé X 1 Y = Y 1 X

6. σp (X × Y ) = (σp (X)) × Y êáé σp (X 1q Y ) = (σp (X)) 1q Y σp∧q (X × Y )


= (σp (X) × (σq (Y )) êáé σp∧q (X 1w Y ) = (σp (X) 1w (σq (Y ))

7. ΠA∨B (X 1p Y ) = (ΠA (X)) 1p (ΠB (Y )))

8. X ∪ Y = Y ∪ X êáé X ∩ Y = Y ∩ X

9. σp (X ∪ Y ) = σp (X) ∪ σp (Y ) σp (X ∩ Y ) = σp (X) ∩ σp (Y ) σp (X − Y ) =
σp (X) − σp (Y )

10. ΠA (X ∪ Y ) = ΠA (X) ∪ ΠA (Y )

11. (X 1 Y ) × Z = X 1 (Y × Z) êáé (X 1 Y ) 1 Z = X 1 (Y 1 Z)
(X 1p Y ) 1q∧w Z = X 1p∧w (Y 1q Z)

12. (X ∪ Y ) ∪ Z = X ∪ (Y ∪ Z) (X ∩ Y ) ∪ Z = X ∩ (Y ∩ Z)

Óå êÜèå Ýêöñáóç ó÷åóéáêÞò Üëãåâñáò áíôéóôïé÷åß êáé Ýíá äÝíäñï Ýêöñá-


óçò (expression tree), ôï ïðïßï ðåñéãñÜöåé ó÷çìáôéêÜ ôéò ðñÜîåéò ðïõ ëáìâÜíïõí
÷þñá. ÊáôÜ óõíÝðåéá, ï êÜèå êáíüíáò ìåôáôñÝðåé ôï Ýíá äÝíäñï Ýêöñáóçò óå
Ýíá Üëëï éóïäýíáìü ôïõ. ÊÜèå åóùôåñéêüò êüìâïò ôïõ äÝíäñïõ áíôéðñïóùðåýåé
ìßá ðñÜîç ôçò ó÷åóéáêÞò Üëãåâñáò, åíþ êÜèå åîùôåñéêüò êüìâïò (öýëëï) áíôé-
ðñïóùðåýåé Ýíáí ðßíáêá ôçò âÜóçò. Ç ñïÞ ôùí äåäïìÝíùí ãßíåôáé "áðü êÜôù
ðñïò ôá åðÜíù". Ìßá æåýîç ìåôáîý äýï êüìâùí äçëþíåé üôé ôï áðïôÝëåóìá ôïõ ÷á-
ìçëüôåñïõ êüìâïõ ìåôáâéâÜæåôáé ùò åßóïäïò óôïí õøçëüôåñï êüìâï. Óôï Ó÷Þìá
14.2 ðáñïõóéÜæåôáé ï ôñüðïò åöáñìïãÞò ôùí êáíüíùí 4 êáé 7, êáèþò êáé ôá
äÝíäñá Ýêöñáóçò ðñéí êáé ìåôÜ ôï ìåôáó÷çìáôéóìü.
¸óôù ôï åðüìåíï åñþôçìá SQL ìå ôï ïðïßï áíáæçôïýìå ôïõò ôßôëïõò ôùí ãíù-
óôéêþí ðåñéï÷þí êáé ôïõò ôßôëïõò ôùí ¢ñèñùí, Ýôóé þóôå ïé ãíùóôéêÝò ðåñéï÷Ýò
ôïõ áðïôåëÝóìáôïò íá Ý÷ïõí ðåñéóóüôåñï áðü 100 óõíäñïìçôÝò:

SELECT ¢ñèñï.ôßôëïò, ÃíùóôéêÞ_Ðåñéï÷Þ.ôßôëïò


FROM ¢ñèñï, ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò=ÃíùóôéêÞ_Ðåñéï÷Þ.êùäéêüò
AND ÃíùóôéêÞ_Ðåñéï÷Þ.áñéèìüò_óõíäñïìçôþí>100;
358 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí
Π α 1 α N

σ p

, … ,

Π α 1 α N

Κ α ν ό ν α ς 4

σ p

, … ,

Χ Χ

Κ α ν ό ν α ς 1 1

Ζ
Χ

Χ Υ
Υ Ζ

Ó÷Þìá 14.2: ÄÝíäñá Ýêöñáóçò êáé ìåôáó÷çìáôéóìïß.

ÐáñáôçñÞóôå üôé ðñüêåéôáé ãéá Ýíá åñþôçìá ðïõ ðåñéÝ÷åé óýíäåóç êáé ôïí ðåñéï-
ñéóìü üôé ï áñéèìüò ôùí óõíäñïìçôþí ìßáò ãíùóôéêÞò ðåñéï÷Þò ðñÝðåé íá åßíáé
ìåãáëýôåñïò áðü 100. Ôï ðñüâëçìá ðïõ Ý÷åé íá áíôéìåôùðßóåé ï âåëôéóôïðïéçôÞò
ôïõ ÓÄÂÄ åßíáé ï ðñïóäéïñéóìüò ôïõ ôñüðïõ ðñáãìáôïðïßçóçò ôçò åðåîåñãáóßáò
ôïõ åñùôÞìáôïò. ¼ðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 14.3, ï âåëôéóôïðïéçôÞò Ý÷åé óôç
äéÜèåóÞ ôïõ ôñåéò äéáöïñåôéêÝò ìåèïäïëïãßåò åêôÝëåóçò ôïõ åñùôÞìáôïò, áðü ôéò
ïðïßåò èá åðéëåãåß ìßá. Ï ôñüðïò ðáñáãùãÞò ôùí ôñéþí äéáöïñåôéêþí äÝíäñùí
ìå âÜóç ôïõò êáíüíåò ìåôáó÷çìáôéóìïý áöÞíåôáé ùò Üóêçóç ãéá ôïí áíáãíþóôç.
Ìå ðïéüí ôñüðï èá åðéëåãåß ôï áðïäïôéêüôåñï ðëÜíï åêôÝëåóçò; Ç áðÜíôçóç èá
äïèåß óôç óõíÝ÷åéá áöïý ðñþôá ìåëåôçèïýí ìåñéêÜ áêüìç âáóéêÜ æçôÞìáôá.

14.2 ÅõñéóôéêÞ Âåëôéóôïðïßçóç


Ç åõñéóôéêÞ âåëôéóôïðïßçóç ÷ñçóéìïðïéåß ôïõò êáíüíåò ìåôáó÷çìáôéóìïý ôùí åê-
öñÜóåùí ôçò ó÷åóéáêÞò Üëãåâñáò ìå óôü÷ï ôçí ðáñáãùãÞ åíüò áðïäïôéêïý ðëÜ-
íïõ åêôÝëåóçò ôïõ åñùôÞìáôïò. Ç ìåèïäïëïãßá áõôÞ êáëåßôáé åõñéóôéêÞ, äéüôé äåí
åããõÜôáé ðÜíôïôå üôé ôï ðëÜíï åêôÝëåóçò ðïõ èá ðñïêýøåé èá åßíáé ôï âÝëôéóôï.
Åðßóçò, ôéò ðåñéóóüôåñåò öïñÝò ç áðüäïóç åíüò ðëÜíïõ åêôÝëåóçò äåí åîáñôÜôáé
ìüíï áðü ôï åßäïò ôùí ðñÜîåùí ðïõ ìåôÝ÷ïõí óôï åñþôçìá áëëÜ êáé áðü Üëëåò
ðáñáìÝôñïõò, üðùò ôï ðëÞèïò ôùí ãñáììþí ôùí ðéíÜêùí ðïõ óõììåôÝ÷ïõí óôï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 359
Π Γ ν ω σ τ ι κ ή D Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς , Ά ρ θ ρ ο . κ ω δ ι κ ό ς D γ ν ω σ τ ι κ ή ς D π ε ρ ι ο χ ή ς Π Γ ν ω σ τ ι κ ή D Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς , Ά ρ θ ρ ο . κ ω δ ι κ ό ς D γ ν ω σ τ ι κ ή ς D π ε ρ ι ο χ ή ς

σ α ρ ι θ  ό ς  σ υ ν δ ρ ο  η τ ώ ν > 1 0 0

Γ ν ω σ τ ι κ ή , Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς = Ά ρ θ ρ ο . κ ω δ ι κ ό ς , γ ν ω σ τ ι κ ή ς , π ε ρ ι ο χ ή ς

Γ ν ω σ τ ι κ ή , Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς = Ά ρ θ ρ ο . κ ω δ ι κ ό ς , γ ν ω σ τ ι κ ή ς , π ε ρ ι ο χ ή ς

σ α ρ ι θ  ό ς  σ υ ν δ ρ ο  η τ ώ ν > 1 0 0

Ά ρ θ ρ ο

Γ ν ω σ τ ι κ ή  Π ε ρ ι ο χ ή Γ ν ω σ τ ι κ ή  Π ε ρ ι ο χ ή Ά ρ θ ρ ο

( α )

( β )

Π Γ ν ω σ τ ι κ ή D Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς , Ά ρ θ ρ ο . κ ω δ ι κ ό ς D γ ν ω σ τ ι κ ή ς D π ε ρ ι ο χ ή ς

Γ ν ω σ τ ι κ ή , Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς = Ά ρ θ ρ ο . κ ω δ ι κ ό ς , γ ν ω σ τ ι κ ή ς , π ε ρ ι ο χ ή ς

Π κ ω κ

Π κ ω κ ω κ ή ή

δ ι ό ς , τ ί τ λ ο ς

δ ι ό ς  γ ν σ τ ι ς  π ε ρ ι ο χ ς , τ ί τ λ ο ς

σ α ρ ι θ  ό ς  σ υ ν δ ρ ο  η τ ώ ν > 1 0 0

Ά ρ θ ρ ο

Π κ ω κ

δ ι ό ς , τ ί τ λ ο ς , α ρ ι θ  ό ς  σ υ ν δ ρ ο  η τ ώ ν

Γ ν ω σ τ ι κ ή  Π ε ρ ι ο χ ή

( γ )

Ó÷Þìá 14.3: ÅíáëëáêôéêÜ ðëÜíá åêôÝëåóçò ãéá åñþôçìá ðáñáäåßãìáôïò.

åñþôçìá. Ùóôüóï, ç åõñéóôéêÞ âåëôéóôïðïßçóç õëïðïéåßôáé åýêïëá êáé ëüãù ôçò


ãñÞãïñçò åêôÝëåóÞò ôçò ìðïñåß íá ÷ñçóéìïðïéçèåß ôüóï óå óôáôéêÞ üóï êáé óå
äõíáìéêÞ âåëôéóôïðïßçóç, êáèþò äåí åðéöÝñåé óçìáíôéêÞ åðéâÜñõíóç óôï ÷ñüíï
åðåîåñãáóßáò ôïõ åñùôÞìáôïò.

Åõñéóôéêüò Êáíüíáò 1: Ïé ðñÜîåéò ôçò åðéëïãÞò ðñÝðåé íá åêôåëïýíôáé üóï íùñß-


ôåñá ãßíåôáé.
360 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

¼ðùò åßíáé ãíùóôü, ç ðñÜîç ôçò åðéëïãÞò ìåéþíåé ôï ðëÞèïò ôùí ãñáììþí ìßáò
ó÷Ýóçò. ÅðïìÝíùò, ìå ôç ÷ñÞóç ôïõ êáíüíá ìåôáó÷çìáôéóìïý 1 ìðïñïýìå íá
äéáóðÜóïõìå ìßá ðñÜîç åðéëïãÞò ìå óýíèåôç óõíèÞêç óå áðëïýóôåñåò êáé óôç
óõíÝ÷åéá ìå ôç ÷ñÞóç ôùí êáíüíùí 2, 4, 6 êáé 9 ìðïñïýìå íá ôñïðïðïéÞóïõìå ôï
áñ÷éêü äÝíäñï Ýêöñáóçò, Ýôóé þóôå ïé ðñÜîåéò åðéëïãÞò íá åêôåëåóèïýí óå üóï
ãßíåôáé ÷áìçëüôåñï åðßðåäï.

Åõñéóôéêüò Êáíüíáò 2: Ïé ðñÜîåéò ôçò ðñïâïëÞò ðñÝðåé íá åêôåëïýíôáé üóï íùñß-


ôåñá ãßíåôáé.
Ç ðñÜîç ôçò ðñïâïëÞò ìåéþíåé ôï ðëÞèïò ôùí óôçëþí, êáé åðïìÝíùò ôï óõíïëéêü
ìÝãåèïò ôùí äåäïìÝíùí. Ìå ôç ÷ñÞóç ôïõ êáíüíá ìåôáó÷çìáôéóìïý 3 êáé óôç
óõíÝ÷åéá ôùí êáíüíùí 4, 7 êáé 10 ôñïðïðïéïýìå ôï äÝíäñï Ýêöñáóçò, Ýôóé þóôå
ïé ðñïâïëÝò íá åêôåëïýíôáé óå üóï ôï äõíáôüí ÷áìçëüôåñï åðßðåäï.

Åõñéóôéêüò Êáíüíáò 3: Ç ðñÜîç ôïõ êáñôåóéáíïý ãéíïìÝíïõ óõíäõÜæåôáé ìå ôç


óõíèÞêç ôçò ðñÜîçò åðéëïãÞò, Ýôóé þóôå íá äçìéïõñãçèåß ìßá ðñÜîç óýíäåóçò.
Ôï êáñôåóéáíü ãéíüìåíï äýï ðéíÜêùí åßíáé ìßá áñêåôÜ ÷ñïíïâüñá ðñÜîç, äéüôé
õðïëïãßæåé üëá ôá äõíáôÜ æåýãç ðëåéÜäùí ìåôáîý ôùí ðéíÜêùí. ÅðïìÝíùò, ÷ñç-
óéìïðïéþíôáò ôç óõíèÞêç ôçò åðéëïãÞò ðïõ åíäå÷ïìÝíùò õðÜñ÷åé óôï åñþôçìá,
ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ìßá ðñÜîç óýíäåóçò, ç ïðïßá åßíáé ÷ñïíéêÜ áðï-
äïôéêüôåñç óå ó÷Ýóç ìå ôï êáñôåóéáíü ãéíüìåíï. Ï êáíüíáò áõôüò ÷ñçóéìïðïéåß
ôïí ïñéóìü ôçò óýíäåóçò θ, ï ïðïßïò áíáöÝñåé: σθ (X × Y ) = X 1θ Y .

Åõñéóôéêüò Êáíüíáò 4: Ïé ðñÜîåéò åðéëïãÞò êáé óýíäåóçò, ïé ïðïßåò ðáñÜãïõí ôï


ìéêñüôåñï áðïôÝëåóìá ðñÝðåé íá åêôåëïýíôáé ðñþôåò.
Óôü÷ïò ôïõ êáíüíá áõôïý åßíáé íá ðåñéïñéóèåß ôï ìÝãåèïò ôùí åíäéÜìåóùí áðïôå-
ëåóìÜôùí åêôåëþíôáò ðñþôá ôéò ðñÜîåéò ðïõ ðåñéïñßæïõí ôï ìÝãåèïò ôùí äåäïìÝ-
íùí. Áí ôï ìÝãåèïò ôùí åíäéÜìåóùí áðïôåëåóìÜôùí åßíáé ìéêñü, ôüôå ïé åðüìåíåò
ðñÜîåéò èá åêôåëåóèïýí áðïäïôéêüôåñá. ÐáñáôçñÞóôå üôé ãéá íá åöáñìïóèåß ï
êáíüíáò áðáéôåßôáé ç ãíþóç ôïõ ìåãÝèïõò ôïõ áðïôåëÝóìáôïò ðïõ ðáñÜãïõí ïé
ðñÜîåéò åðéëïãÞò êáé óýíäåóçò. Ç åêôßìçóç ôïõ ìåãÝèïõò ðñáãìáôïðïéåßôáé ìå
ôç âïÞèåéá óôáôéóôéêþí óôïé÷åßùí, ç ÷ñÞóç ôùí ïðïßùí èá ìåëåôçèåß óôç óõíÝ÷åéá.

Åõñéóôéêüò Êáíüíáò 5: Ïé êïéíÝò åêöñÜóåéò ðñÝðåé íá õðïëïãßæïíôáé ìßá ìüíï


öïñÜ.
Áí ìßá Ýêöñáóç åìöáíßæåôáé ðïëëÝò öïñÝò óôï ßäéï åñþôçìá, ôüôå õðïëïãßæå-
ôáé ìüíï ìßá öïñÜ, êáé ôï áðïôÝëåóìá áðïèçêåýåôáé ãéá íá ÷ñçóéìïðïéçèåß óôç
óõíÝ÷åéá. Ç åöáñìïãÞ ôïõ êáíüíá åßíáé åöéêôÞ áí ôï áðïôÝëåóìá ôçò ðñÜîçò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 361

åßíáé áñêåôÜ ìéêñü þóôå íá ìðïñåß íá áðïèçêåõèåß óôçí êýñéá ìíÞìç. Áí ôï


áðïôÝëåóìá ðñÝðåé íá áðïèçêåõèåß óôç äåõôåñåýïõóá ìíÞìç, ôüôå ç ÷ñÞóç ôïõ
êáíüíá Ý÷åé íüçìá ìüíï áí ôï êüóôïò ðñïóðÝëáóçò óôï äßóêï åßíáé ìéêñüôåñï
áðü ôï êüóôïò åðáíá-õëïðïãéóìïý ôçò Ýêöñáóçò.

ÃåíéêÜ áíáìÝíåôáé ç åöáñìïãÞ ôùí åõñéóôéêþí êáíüíùí âåëôéóôïðïßçóçò íá


Ý÷åé êáëü áðïôÝëåóìá óå ó÷Üóç ìå ôçí áðüäïóç ôïõ ôåëéêïý ðëÜíïõ åêôÝëåóçò.
Áò åîåôÜóïõìå Ýíá ðáñÜäåéãìá üðïõ ç åõñéóôéêÞ âåëôéóôïðïßçóç äåí êáôáöÝñíåé
íá åðéëÝîåé Ýíá áðïäïôéêü ðëÜíï åêôÝëåóçò. ¸óôù ôï åñþôçìá σθ (X 1 Y ), üðïõ
X, Y åßíáé ðßíáêåò êáé θ ìßá óõíèÞêç ðïõ ÷ñçóéìïðïéåß ìüíï óôÞëåò ôïõ ðßíáêá
Y . Óýìöùíá ìå ôïí ðñþôï åõñéóôéêü êáíüíá, èá ðñÝðåé ç ðñÜîç ôçò åðéëïãÞò íá
åêôåëåóèåß ðñéí áðü ôçí ðñÜîç ôçò óýíäåóçò. ÅðïìÝíùò, ôï äÝíäñï Ýêöñáóçò
ìåôáó÷çìáôßæåôáé ìå ôç ÷ñÞóç ôïõ êáíüíá ìåôáó÷çìáôéóìïý åêöñÜóåùí ôýðïõ 6,
üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 14.4.

Y
σ

X Y X

Ó÷Þìá 14.4: ÅöáñìïãÞ åõñéóôéêïý êáíüíá 1 óôï åñþôçìá σθ (X 1 Y ).

ÕðïèÝôïõìå üôé ôï ìÝãåèïò ôïõ ðßíáêá X åßíáé áñêåôÜ ìéêñüôåñï ôïõ Y êáé
üôé õðÜñ÷åé Ýíáò êáôÜëïãïò óýíäåóçò ìåôáîý ôùí X êáé Y , ï ïðïßïò äåí ÷ñçóé-
ìïðïéåß ôéò óôÞëåò ðïõ áíáöÝñïíôáé óôç óõíèÞêç θ. ÅðïìÝíùò, ç åêôÝëåóç ôçò
ðñÜîçò ôçò åðéëïãÞò ðñéí ôçí ðñÜîç ôçò óýíäåóçò ßóùò íá ìçí Ý÷åé ôï åðéèõìçôü
áðïôÝëåóìá áðü ðëåõñÜò êüóôïõò åðåîåñãáóßáò. Áõôü óõìâáßíåé åðåéäÞ ìåôÜ ôçí
åêôÝëåóç ôçò ðñÜîçò åðéëïãÞò óôïí ðßíáêá X èá ðñÝðåé íá åîåôáóèïýí ïé ãñáì-
ìÝò ôïõ Y ìßá-ðñïò-ìßá, äéüôé äåí ìðïñåß íá ãßíåé ÷ñÞóç ôïõ êáôáëüãïõ óýíäåóçò.
Ôï ãåãïíüò áõôü ßóùò áõîÞóåé ôï êüóôïò åðåîåñãáóßáò êáé åðïìÝíùò ç åðéëïãÞ
åíüò áðïäïôéêïý ðëÜíïõ åêôÝëåóçò íá ìçí åßíáé åðéôõ÷Þò. Ôï ðáñÜäåéãìá ðïõ
áíáöÝñèçêå èá ãßíåé ðåñéóóüôåñï êáôáíïçôü üôáí ìåëåôçèïýí ïé ôñüðïé åðåîåñ-
ãáóßáò ôùí ðñÜîåùí ôçò ó÷åóéáêÞò Üëãåâñáò óôçí åðüìåíç ðáñÜãñáöï.
362 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

14.3 Õëïðïßçóç ÐñÜîåùí êáé Åêôßìçóç Êüóôïõò


Ôá ðåñéóóüôåñá óõóôÞìáôá, åêôüò áðü ôçí åõñéóôéêÞ âåëôéóôïðïßçóç, ÷ñçóéìï-
ðïéïýí êáé ôå÷íéêÝò åêôßìçóçò êüóôïõò ôùí ðñÜîåùí ðïõ ìåôÝ÷ïõí óôï åñþôçìá,
ìå óôü÷ï ç åðéëïãÞ ôïõ ôåëéêïý ðëÜíïõ åêôÝëåóçò íá åßíáé üóï ôï äõíáôüí åðá-
êñéâÝóôåñç. ÁõôÞ ç ìåèïäïëïãßá êáëåßôáé âåëôéóôïðïßçóç âáóéóìÝíç óôï êüóôïò
(cost-based optimization), ç ïðïßá óå áíôßèåóç ìå ôçí åõñéóôéêÞ âåëôéóôïðïßçóç,
ëáìâÜíåé õð’ üøç åêôüò áðü ôçí áëãåâñéêÞ Ýêöñáóç ôïõ åñùôÞìáôïò êáé ôéò äõ-
íáôÝò åðéëïãÝò ðïõ õðÜñ÷ïõí ãéá ôçí åêôÝëåóç ôùí ðñÜîåùí ðïõ ìåôÝ÷ïõí óôï
åñþôçìá. Ç ìÝèïäïò åêôÝëåóçò ìßáò ðñÜîçò ôçò ó÷åóéáêÞò Üëãåâñáò åíäå÷ïìÝ-
íùò äéáöÝñåé áðü óýóôçìá óå óýóôçìá, êáèþò äýï äéáöïñåôéêÜ ÓÄÂÄ ìðïñåß
íá ÷ñçóéìïðïéïýí äéáöïñåôéêÝò ìåèüäïõò åðåîåñãáóßáò ôçò ßäéáò ðñÜîçò. Óôç
óõíÝ÷åéá åîåôÜæïõìå ôïõò óõíçèÝóôåñïõò áëãïñßèìïõò åðåîåñãáóßáò ôùí ðñÜ-
îåùí ôçò ó÷åóéáêÞò Üëãåâñáò, äßíïíôáò ìáèçìáôéêÝò åêöñÜóåéò ãéá ôï êüóôïò
ôçò êÜèå ìßáò. ËáìâÜíïíôáò õð’ üøç üôé ç ðñïóðÝëáóç óôï äßóêï åßíáé ìßá ÷ñï-
íïâüñá ëåéôïõñãßá óå ó÷Ýóç ìå ôçí ðñïóðÝëáóç äåäïìÝíùí óôçí êýñéá ìíÞìç, ôï
êüóôïò ôçò êÜèå ðñÜîçò åêöñÜæåé ôïí áíáìåíüìåíï áñéèìü ðñïóðåëÜóåùí óôï
äßóêï.
Ôï ÓÄÂÄ äéáôçñåß óôáôéóôéêÝò ðëçñïöïñßåò ó÷åôéêÜ ìå ôá áðïèçêåõìÝíá
äåäïìÝíá, Ýôóé þóôå ç åêôßìçóç ãéá ôï êüóôïò ìßáò ðñÜîçò íá åßíáé üóï ãßíåôáé
åðáêñéâÝò. Ïé óçìáíôéêüôåñåò áðü ôéò ðëçñïöïñßåò áõôÝò ðáñïõóéÜæïíôáé óôïí
Ðßíáêá 14.1. Ïé ôéìÝò ôùí f anI , heightI êáé lI áöïñïýí óå êáôáëüãïõò, åíþ ïé
õðüëïéðåò ðëçñïöïñßåò áöïñïýí óå ðßíáêåò ôçò ÂÄ.

Óýìâïëï ÐåñéãñáöÞ
nT áñéèìüò ãñáììþí ôïõ ðßíáêá T
bT áñéèìüò óåëßäùí ãéá ôçí áðïèÞêåõóç ôïõ ðßíáêá T
bf rT áñéèìüò ãñáììþí ôïõ T ðïõ áðïèçêåýïíôáé óå ìßá óåëßäá
sT ìÝãåèïò ôïõ ðßíáêá T óå ÷áñáêôÞñåò (bytes)
d(T, a) áñéèìüò äéáêñéôþí ôéìþí ôçò óôÞëçò a ôïõ ðßíáêá T
sc(T, a) ìÝóïò áñéèìüò ãñáììþí ðïõ éêáíïðïéïýí óõíèÞêç éóüôçôáò ôçò óôÞëçò a
f anI ï ìÝóïò áñéèìüò ðáéäéþí (fanout) ôïõ äåíäñéêïý êáôáëüãïõ i
heightI ôï ýøïò ôïõ äåíäñéêïý êáôáëüãïõ i
lI ï áñéèìüò ôùí öýëëùí ôïõ êáôáëüãïõ i

Ðßíáêáò 14.1: ÓôáôéóôéêÝò ðëçñïöïñßåò ðïõ áðïèçêåýïíôáé óôïí êáôÜëïãï óõ-


óôÞìáôïò ôïõ ÓÄÂÄ.

Óçìåéþíåôáé üôé ãéá íá ðåôý÷ïõìå ôç ìÝãéóôç äõíáôÞ áêñßâåéá êáôÜ ôçí åêôß-
ìçóç êüóôïõò ôùí ðñÜîåùí èá ðñÝðåé ïé óôáôéóôéêÝò ðëçñïöïñßåò íá åíçìåñþíï-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 363

íôáé üðïôå Ý÷ïõìå áëëáãÝò (åéóáãùãÝò, äéáãñáöÝò, åíçìåñþóåéò) óôá äåäïìÝíá


ôùí ðéíÜêùí. Ç óõíå÷Þò åíçìÝñùóç ôùí óôáôéóôéêþí ðëçñïöïñéþí åéóÜãåé Ýíá
óçìáíôéêü êüóôïò. Ãéá ôï ëüãï áõôü, ïé åíçìåñþóåéò ôùí óôáôéóôéêþí ðëçñï-
öïñéþí ðñáãìáôïðïéïýíôáé óõíÞèùò óå ÷ñïíéêÜ äéáóôÞìáôá üðïõ ï öüñôïò ôïõ
óõóôÞìáôïò åßíáé ìéêñüò, þóôå íá åðéöÝñïõí ëéãüôåñåò êáèõóôåñÞóåéò óôçí åðå-
îåñãáóßá ôùí åñùôçìÜôùí.
Ãéá íá äéá÷ùñßóïõìå ôéò äéáöïñåôéêÝò ìåèüäïõò åðåîåñãáóßáò ôùí ðñÜîåùí
÷ñçóéìïðïéïýìå ôï óõìâïëéóìü Si ãéá ôçí åðéëïãÞ, Pi ãéá ôçí ðñïâïëÞ, Ji ãéá ôç
óýíäåóç, üðïõ i äçëþíåé ôç ìÝèïäï åðåîåñãáóßáò ôçò áíôßóôïé÷çò ðñÜîçò.

14.3.1 ÅðéëïãÞ
Îåêéíïýìå ôçí ðåñéãñáöÞ ôùí áëãïñßèìùí åðåîåñãáóßáò ôùí ðñÜîåùí ôçò ó÷å-
óéáêÞò Üëãåâñáò ìå ôçí ðñÜîç ôçò åðéëïãÞò, ç ïðïßá åßíáé áðëÞ óôçí õëïðïßçóÞ
ôçò. Óôü÷ïò åßíáé íá ðñïóäéïñéóèïýí ïé ãñáììÝò ôïõ ðßíáêá, ïé ïðïßåò éêáíï-
ðïéïýí ìßá óõíèÞêç θ ðïõ ìðïñåß íá åßíáé áðëÞ Þ óýíèåôç, êáé íá ìåôÝ÷ïõí óå
áõôÞ ìßá Þ ðåñéóóüôåñåò óôÞëåò ôïõ ðßíáêá. Áíáëüãùò ìå ôç öýóç ôçò óõíèÞêçò
ïé áëãüñéèìïé åðåîåñãáóßáò ðïéêßëïõí.

ÃñáììéêÞ áíáæÞôçóç (S1 )


Ç ãñáììéêÞ áíáæÞôçóç (linear scan) êáëåßôáé åðßóçò êáé ðëÞñçò áíáæÞôçóç ðß-
íáêá (full table scan) äéüôé åîåôÜæïíôáé ìßá-ðñïò-ìßá üëåò ïé ãñáììÝò ôïõ ðßíáêá
ðñïêåéìÝíïõ íá äéáðéóôùèåß áí éêáíïðïéåßôáé Þ ü÷é ç óõíèÞêç θ. Óçìåéþíåôáé üôé
ç ãñáììéêÞ áíáæÞôçóç åßíáé áíáðüöåõêôç üôáí ï ðßíáêáò äåí åßíáé ôáîéíïìçìÝ-
íïò Þ åßíáé ôáîéíïìçìÝíïò ùò ðñïò ìßá óôÞëç ðïõ äåí óõììåôÝ÷åé óôç óõíèÞêç θ.
Ç ãñáììéêÞ áíáæÞôçóç åßíáé ï ìüíïò ôñüðïò åðåîåñãáóßáò ôçò ðñÜîçò åðéëïãÞò
üôáí ï ðßíáêáò åßíáé áðïôÝëåóìá Üëëùí ðñÜîåùí (åíäéÜìåóï áðïôÝëåóìá) êáé
äåí Ý÷åé ôáîéíïìçèåß Þ äåí õðÜñ÷ïõí êáôÜëïãïé ðïõ íá ìðïñïýí íá ÷ñçóéìïðïéç-
èïýí.
ÅðåéäÞ ãéá ôïí ðñïóäéïñéóìü ôùí ãñáììþí ôïõ ðßíáêá ðïõ éêáíïðïéïýí ôç
óõíèÞêç ðñÝðåé íá åîåôáóèïýí üëåò ïé ãñáììÝò, ôï êüóôïò óå áñéèìü ðñïóðåëÜ-
óåùí åßíáé CS1 = bT . Áí ç áíáæÞôçóç ðñáãìáôïðïéåßôáé ìå âÜóç óõíèÞêç éóüôç-
ôáò óå óôÞëç ðïõ åßíáé êëåéäß, ôüôå ôï ðïëý ìßá ãñáììÞ ôïõ ðßíáêá èá éêáíïðïéåß
ôç óõíèÞêç. Óôç ìÝóç ðåñßðôùóç èá áðáéôçèåß ç åîÝôáóç ôïõ ìéóïý ðßíáêá Ýùò
üôïõ âñåèåß ç áíáæçôïýìåíç ôéìÞ ôïõ êëåéäéïý. ÅðïìÝíùò, óôçí ðåñßðôùóç áõôÞ
ðñïêýðôåé üôé ôï ó÷åôéêü êüóôïò åßíáé:

CS1 = bT /2
364 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

ÄõáäéêÞ áíáæÞôçóç (S2 )


Ç äõáäéêÞ áíáæÞôçóç (binary search) ìðïñåß íá ÷ñçóéìïðïéçèåß óå ôáîéíïìçìÝíï
ðßíáêá, üôáí ç óõíèÞêç ðåñéÝ÷åé ôåëåóôÞ éóüôçôáò ùò ðñïò ôç óôÞëç ìå âÜóç ôçí
ïðïßá åßíáé ôáîéíïìçìÝíïò ï ðßíáêáò. Ôï êüóôïò åðåîåñãáóßáò Ý÷åé ùò åîÞò:

sc(T, a)
CS2 = dlog2 (bT )e + d e−1
bf rT
Óôçí åîßóùóç áõôÞ ôï ðñþôï ìÝñïò ôïõ áèñïßóìáôïò åßíáé ôï ðëÞèïò ôùí ðñï-
óðåëÜóåùí ãéá ôïí ðñïóäéïñéóìü ôçò ðñþôçò ãñáììÞò ðïõ éêáíïðïéåß ôç óõíèÞêç
éóüôçôáò. Ôï äåýôåñï ìÝñïò ôïõ áèñïßóìáôïò åßíáé ôï ðëÞèïò ôùí ðñïóðåëÜóåùí
ðïõ áðáéôåßôáé ãéá ôçí áíÜãíùóç üëùí ôùí ãñáììþí ðïõ éêáíïðïéïýí ôç óõíèÞêç
éóüôçôáò. Åö’ üóïí ôï ðëÞèïò ôùí ãñáììþí áõôþí åßíáé sc(T, a) áðáéôïýíôáé
dsc(T, a)/bf rT e ðñïóðåëÜóåéò, èåùñþíôáò üôé ç áðïèÞêåõóç ôùí ãñáììþí óôï
äßóêï áêïëïõèåß ôç äéÜôáîç ôçò ôáîéíüìçóçò. ÅðåéäÞ ç ìßá áðü ôéò ðñïóðåëÜóåéò
áõôÝò Ý÷åé Þäç ðñáãìáôïðïéçèåß, áöáéñåßôáé ìßá ðñïóðÝëáóç (−1).
Áí ç óôÞëç áðïôåëåß êëåéäß ãéá ôïí ðßíáêá, ôüôå éó÷ýåé d(T, a) = 1, ïðüôå ôï
êüóôïò ôçò åðéëïãÞò ìå äõáäéêÞ áíáæÞôçóç éóïýôáé ìå ôï êüóôïò ôçò åýñåóçò ôçò
ðñþôçò ãñáììÞò ðïõ éêáíïðïéåß ôç óõíèÞêç:

CS2 = dlog2 (bT )e

Áí ç óôÞëç äåí áðïôåëåß êëåéäß ãéá ôïí ðßíáêá, ôüôå äå÷üìáóôå üôé sc(T, a) =
nT /d(T, a).

Éóüôçôá óôï Ðñùôåýïí Êëåéäß ìå ×ñÞóç Êáôáëüãïõ (S3 )


Áí ç óõíèÞêç ôçò åðéëïãÞò ðåñéëáìâÜíåé õðïóõíèÞêç éóüôçôáò óôï ðñùôåýïí
êëåéäß, êáé õðÜñ÷åé êáôÜëïãïò (äÝíäñï Þ ðßíáêáò êáôáêåñìáôéóìïý) ìå âÜóç
ôï êëåéäß, ôüôå ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôçí áíáæÞôçóç ôïõ êëåéäéïý ðïõ
éêáíïðïéåß ôç óõíèÞêç. Áðáéôïýíôáé ôüóåò ðñïóðåëÜóåéò üóï åßíáé ôï ýøïò ôïõ
êáôáëüãïõ êáé ìßá åðéðëÝïí ãéá ôçí ðñïóðÝëáóç ôçò óåëßäáò ôïõ ðßíáêá, üðïõ
âñßóêåôáé áðïèçêåõìÝíç ç ãñáììÞ ìå ôçí áíáæçôïýìåíç ôéìÞ ôïõ êëåéäéïý:

CS3 = heightI + 1

Éóüôçôá óå ÓôÞëç ðïõ äåí åßíáé Êëåéäß ìå ×ñÞóç Êáôáëüãïõ (S4 )


Áí ç óõíèÞêç åðéëïãÞò ðåñéÝ÷åé óýãêñéóç éóüôçôáò óå ó÷Ýóç ìå óôÞëç ðïõ äåí
åßíáé êëåéäß êáé õðÜñ÷åé êáôÜëïãïò ïìáäïðïßçóçò (clustering index), ôüôå ìðï-
ñåß íá ÷ñçóéìïðïéçèåß ãéá ôïí ðñïóäéïñéóìü ôùí ãñáììþí ðïõ éêáíïðïéïýí ôç
óõíèÞêç. Ôïíßæåôáé üôé áðü ôç óôéãìÞ ðïõ ç óôÞëç äåí åßíáé êÜðïéï êëåéäß ôïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 365

ðßíáêá, ç óõíèÞêç éóüôçôáò åíäÝ÷åôáé íá éêáíïðïéåßôáé ãéá ðåñéóóüôåñåò áðü ìßá


ãñáììÝò. Áðü ôéò óôáôéóôéêÝò ðëçñïöïñßåò ãíùñßæïõìå üôé sc(T, a) ãñáììÝò ôïõ
ðßíáêá éêáíïðïéïýí ôç óõíèÞêç éóüôçôáò ãéá ôç óôÞëç a óå ìßá ôõðéêÞ ðåñßðôùóç.
Ãéá ôçí áðïèÞêåõóç ôùí ãñáììþí áõôþí áðáéôïýíôáé dsc(T, a)/bf rT e óåëßäåò.
ÅðïìÝíùò, ôï óõíïëéêü êüóôïò ôçò åðåîåñãáóßáò åßíáé:

sc(T, a)
CS4 = heightI + d e
bf rT

Áí ï êáôÜëïãïò äåí ïìáäïðïéåß ôéò ãñáììÝò ùò ðñïò ôç óõãêåêñéìÝíç óôÞëç


(äåõôåñåýùí êáôÜëïãïò), ôüôå óôç ÷åéñüôåñç ðåñßðôùóç êÜèå ãñáììÞ ôïõ ðßíáêá
X èá åßíáé áðïèçêåõìÝíç óå äéáöïñåôéêÞ óåëßäá äåäïìÝíùí. ÅðïìÝíùò, óôçí
ðåñßðôùóç áõôÞ:
CS4 = heightI + sc(T, a)

Áíéóüôçôá ìå ×ñÞóç Ðñùôåýïíôïò Êáôáëüãïõ (S5 )


Áí ç óõíèÞêç åðéëïãÞò ðåñéëáìâÜíåé áíéóüôçôá êáé õðÜñ÷åé ðñùôåýïí êáôÜëï-
ãïò, ôüôå áõôüò ìðïñåß íá ÷ñçóéìïðïéçèåß ùò åîÞò: áñ÷éêÜ ðñïóäéïñßæåôáé ç
ãñáììÞ ôïõ ðßíáêá ç ïðïßá éêáíïðïéåß ôç óõíèÞêç éóüôçôáò, êáé óôç óõíÝ÷åéá
ðñïóðåëáýíïíôáé üëåò ïé ðñïçãïýìåíåò Þ üëåò ïé åðüìåíåò ãñáììÝò áíáëüãùò
ìå ôç óõíèÞêç áíéóüôçôáò (>, <, ≥, ≤). Ôïíßæåôáé üôé ç ìÝèïäïò ôïõ êáôáêåñ-
ìáôéóìïý äåí ìðïñåß íá ÷ñçóéìïðïéçèåß óôçí ðåñßðôùóç áõôÞ, äéüôé õðïóôçñßæåé
ìüíï áíáæÞôçóç éóüôçôáò. Ãéá ôéò ðåñéðôþóåéò a ≤ v êáé a < v (üðïõ a åßíáé
ç óôÞëç êáé v åßíáé ìßá ôéìÞ) äåí áðáéôåßôáé ç ÷ñÞóç ôïõ êáôáëüãïõ. Åö’ üóïí
Ý÷ïõìå êáôÜëïãï ïìáäïðïßçóçò îåêéíïýìå áðü ôçí áñ÷Þ ôïõ áñ÷åßïõ üðïõ åßíáé
áðïèçêåõìÝíïò ï ðßíáêáò êáé åðéóôñÝöïõìå üëåò ôéò ãñáììÝò ìÝ÷ñé íá óõíáíôÞ-
óïõìå ôç ãñáììÞ ìå ôéìÞ v.
ÕðïèÝôïíôáò üôé ïé ìéóÝò ãñáììÝò ôïõ ðßíáêá èá éêáíïðïéïýí ôç óõíèÞêç
áíéóüôçôáò, ôï êüóôïò ôçò åðåîåñãáóßáò ìå ÷ñÞóç ðñùôåýïíôïò êáôáëüãïõ åßíáé:

bT
CS5 = heightI +
2
Áíéóüôçôá ìå ×ñÞóç Äåõôåñåýïíôïò Êáôáëüãïõ (S6 )
Áí ç óõíèÞêç ðåñéÝ÷åé ôåëåóôÞ áíéóüôçôáò êáé õðÜñ÷åé äåõôåñåýùí êáôÜëïãïò
B+ -äÝíäñïõ ãéá ôç óôÞëç, ôüôå ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôïí ðñïóäéïñéóìü
ôùí ãñáììþí ðïõ éêáíïðïéïýí ôç óõíèÞêç. ¼ðùò åßíáé ãíùóôü, ôá öýëëá ôïõ Â+ -
äÝíäñïõ åßíáé ïñãáíùìÝíá ìå óõíäåäåìÝíç ëßóôá. ÅðïìÝíùò, áí ðñïóäéïñéóèåß
ç ôéìÞ ðïõ éêáíïðïéåß ôç óõíèÞêç éóüôçôáò, ìðïñïýìå íá ðñïóðåëÜóïõìå ôéò åðü-
ìåíåò ôéìÝò áêïëïõèþíôáò ôïõò äåßêôåò. Áêïëïõèþíôáò ôïõò äåßêôåò åããñáöþí
366 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

ðïõ åðßóçò õðÜñ÷ïõí óôá öýëëá ôïõ Â+ -äÝíäñïõ, ìðïñïýìå íá ðñïóðåëÜóïõìå


ôéò áíôßóôïé÷åò ãñáììÝò ôïõ ðßíáêá ðïõ éêáíïðïéïýí ôç óõíèÞêç. ÕðïèÝôïíôáò
üôé ïé ìéóÝò ãñáììÝò ôïõ ðßíáêá éêáíïðïéïýí ôç óõíèÞêç áíéóüôçôáò ï áñéèìüò
ôùí ðñïóðåëÜóåùí Ý÷åé ùò åîÞò:
lI nT
CS6 = heightI + +
2 2
Ìå üìïéï ôñüðï ìðïñïýìå íá åðåîåñãáóèïýìå êáé åñùôÞìáôá ðåñéï÷Þò
(range queries) ôá ïðïßá èÝôïõí åðÜíù êáé êÜôù öñÜãìá óôçí ôéìÞ ìßáò óôÞëçò
(ð.÷., 10 ≤ áñéèìüò óõíäñïìçôþí ≤ 100).

ÅðéëïãÞ ìå Óýíèåôç ÓõíèÞêç


Ïé ðñïáíáöåñèÝíôåò áëãüñéèìïé ìðïñïýí íá ÷ñçóéìïðïéçèïýí óå ðåñéðôþóåéò
üðïõ ç óõíèÞêç åßíáé áðëÞ. Ôé ãßíåôáé üìùò üôáí ç óõíèÞêç ðåñéÝ÷åé ðïëëÝò
õðïóõíèÞêåò óõíäõáóìÝíåò ìå ôïõò ëïãéêïýò ôåëåóôÝò ∧ êáé ∨; Áí ç óýíèåôç
óõíèÞêç åðéëïãÞò áðïôåëåßôáé áðü áðëïýóôåñåò óõíèÞêåò óõíäõáóìÝíåò ìå ôïí
ôåëåóôÞ ∧ (conjunctive selection), ôüôå äéáêñßíïõìå ôéò åîÞò ðåñéðôþóåéò:

• Áí ìßá áðü ôéò óôÞëåò ðïõ óõììåôÝ÷ïõí óôç óõíèÞêç Ý÷åé êáôÜëïãï Þ ï
ðßíáêáò åßíáé ôáîéíïìçìÝíïò ùò ðñïò ôéò ôéìÝò ôçò óôÞëçò áõôÞò, ôüôå ìðïñåß
íá ÷ñçóéìïðïéçèåß Ýíáò áðü ôïõò áëãïñßèìïõò åðåîåñãáóßáò ôçò ðñÜîçò
åðéëïãÞò ìå âÜóç ôç óõãêåêñéìÝíç óôÞëç. Ïé åðéóôñåöüìåíåò ãñáììÝò ôïõ
ðßíáêá åëÝã÷ïíôáé óôç óõíÝ÷åéá ìßá-ðñïò-ìßá ùò ðñïò ôçí éêáíïðïßçóç
ôùí õðïëïßðùí óõíèçêþí. ÔåëéêÜ, åðéóôñÝöïíôáé ìüíï ïé ãñáììÝò ðïõ
éêáíïðïéïýí üëåò ôéò áðëïýóôåñåò óõíèÞêåò.

• Áí ç óõíèÞêç ôçò åðéëïãÞò ðåñéÝ÷åé ìßá Þ ðåñéóóüôåñåò áðëïýóôåñåò óõíèÞ-


êåò éóüôçôáò êáé õðÜñ÷åé êáôÜëïãïò Þ äïìÞ êáôáêåñìáôéóìïý ãéá ôéò óôÞëåò
áõôÝò (composite index), ôüôå ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôïí êáôÜëïãï
þóôå íá ðñïóäéïñéóèåß Ýíá óýíïëï ãñáììþí. Óôç óõíÝ÷åéá, üðùò êáé óôçí
ðñïçãïýìåíç ðåñßðôùóç, ïé ãñáììÝò åëÝã÷ïíôáé ìßá-ðñïò-ìßá ãéá íá ðñïó-
äéïñéóèåß áí éêáíïðïéïýí ôéò õðüëïéðåò óõíèÞêåò.

• Áí õðÜñ÷ïõí äåõôåñåýïíôåò êáôÜëïãïé ãéá ìßá Þ ðåñéóóüôåñåò óôÞëåò ôïõ


ðßíáêá êáé ç óõíèÞêç åðéëïãÞò ðåñéÝ÷åé áðëïýóôåñåò óõíèÞêåò éóüôçôáò,
ôüôå ãéá ôïí ðñïóäéïñéóìü ôçò áðÜíôçóçò ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå
ôïõò äåßêôåò åããñáöþí (record pointers), ðïõ âñßóêïíôáé óôá öýëëá ôïõ
êáôáëüãïõ. Óôï ðñþôï óôÜäéï, ëïéðüí, óõãêåíôñþíïíôáé ïé äåßêôåò åããñá-
öþí ãéá êÜèå áíáæÞôçóç äåõôåñåýïíôïò êáôáëüãïõ. Óôï äåýôåñï óôÜäéï,
ðñïóäéïñßæïíôáé ïé êïéíïß äåßêôåò åããñáöþí. Áí õðÜñ÷ïõí óôÞëåò ãéá ôéò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 367

ïðïßåò äåí õðÜñ÷åé äéáèÝóéìïò äåõôåñåýùí êáôÜëïãïò, ôüôå ðñïóðåëáýíï-


íôáé ïé áíôßóôïé÷åò åããñáöÝò êáé åëÝã÷ïíôáé ìßá-ðñïò-ìßá áí éêáíïðïéïýí
Þ ü÷é ôéò õðüëïéðåò óõíèÞêåò.

¸óôù üôé ç óõíèÞêç åðéëïãÞò áðïôåëåßôáé áðü õðïóõíèÞêåò ðïõ óõíäõÜæï-


íôáé ìå ôïí ôåëåóôÞ ∨. Óôçí ðåñßðôùóç áõôÞ áðáéôåßôáé ç ýðáñîç êáôáëüãùí Þ
äéÜôáîçò ôùí äåäïìÝíùí ãéá üëåò ôéò õðïóõíèÞêåò. Ç ðñÜîç ôçò åðéëïãÞò åêôåëåß-
ôáé îå÷ùñéóôÜ ãéá êÜèå õðïóõíèÞêç êáé óôç óõíÝ÷åéá ðñáãìáôïðïéåßôáé Ýíùóç
ôùí áðïôåëåóìÜôùí. Áí õðÜñ÷åé Ýóôù êáé ìßá õðïóõíèÞêç ãéá ôçí ïðïßá äåí
ìðïñåß íá ÷ñçóéìïðïéçèåß êÜðïéïò êáôÜëïãïò, ôüôå ç ìüíç ëýóç åßíáé ç ãñáììéêÞ
áíáæÞôçóç êáôÜ ôçí ïðïßá åëÝã÷ïíôáé üëåò ïé õðïóõíèÞêåò ôáõôü÷ñïíá ãéá êÜèå
ãñáììÞ ôïõ ðßíáêá ðïõ åîåôÜæåôáé.

14.3.2 ÐñïâïëÞ
Õðåíèõìßæåôáé üôé ç ðñÜîç ôçò ðñïâïëÞò åðéóôñÝöåé ôéò ôéìÝò åíüò õðïóõíüëïõ
óôçëþí åíüò ðßíáêá Þ ìßáò Ýêöñáóçò. Ç åðåîåñãáóßá ôçò ðñÜîçò ôçò ðñïâïëÞò
áðïôåëåßôáé áðü äýï óôÜäéá: á) áðáëïéöÞ ôùí óôçëþí ðïõ äåí áíáöÝñïíôáé óôï
åñþôçìá êáé â) áðáëïéöÞ ôùí äéðëïôýðùí (ãñáììþí ìå ßäéåò ôéìÝò óå üëåò ôéò
åðéëåãüìåíåò óôÞëåò). Ãéá ôï äåýôåñï óôÜäéï, ðïõ åßíáé êáé äõóêïëüôåñï, ìðïñåß
íá ÷ñçóéìïðïéçèåß ôáîéíüìçóç Þ êáôáêåñìáôéóìüò.

ÐñïâïëÞ ìå Ôáîéíüìçóç (P1 )


Ïé ãñáììÝò ôáîéíïìïýíôáé ùò ðñïò üëåò ôéò óôÞëåò, Ýôóé þóôå áí äýï Þ ðåñéóóüôå-
ñåò ãñáììÝò Ý÷ïõí ßäéåò ôéìÝò ãéá ôéò áíôßóôïé÷åò óôÞëåò íá åßíáé ãåéôïíéêÝò óôçí
ôåëéêÞ äéÜôáîç. Ìå ôïí ôñüðï áõôü, áí ìßá ãñáììÞ åìöáíßæåôáé ðåñéóóüôåñï áðü
ìßá öïñÜ, ôüôå ïé åðéðëÝïí åìöáíßæåéò äéáãñÜöïíôáé áðü ôï ôåëéêü áðïôÝëåóìá.

ÐñïâïëÞ ìå Êáôáêåñìáôéóìü (P2 )


Áñ÷éêÜ åöáñìüæåôáé ìßá óõíÜñôçóç êáôáêåñìáôéóìïý h(x1 , ..., xN ) ç ïðïßá ëáì-
âÜíåé õð’ üøç üëåò ôéò óôÞëåò ðïõ ìáò åíäéáöÝñïõí. ÊÜèå öïñÜ ðïõ åðéëÝãåôáé
ï êÜäïò üðïõ áíôéóôïé÷åß ìßá ãñáììÞ, ðñáãìáôïðïéåßôáé Ýëåã÷ïò ãéá ôï áí õðÜñ-
÷åé üìïéá ãñáììÞ óôï óõãêåêñéìÝíï êÜäï. Áí âñåèåß ãñáììÞ ìå ôéò ßäéåò ôéìÝò
óôçëþí, ôüôå ç íÝá ãñáììÞ äåí åéóÜãåôáé óôïí êÜäï. ÁíôéèÝôùò, áí äåí õðÜñ÷åé
üìïéá ãñáììÞ, ôüôå ç íÝá ãñáììÞ åéóÜãåôáé óôïí êÜäï êáé ç ìÝèïäïò óõíå÷ßæåôáé
ìÝ÷ñé íá åîáíôëçèïýí üëåò ïé ãñáììÝò.

14.3.3 Óýíäåóç
Ç ðñÜîç ôïõ êáñôåóéáíïý ãéíïìÝíïõ êáé ôçò óýíäåóçò åßíáé ïé ðëÝïí ÷ñïíïâüñåò
ðñÜîåéò êáé åðïìÝíùò áðáéôïýíôáé áðïäïôéêïß áëãüñéèìïé ãéá ôçí åðåîåñãáóßá
368 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

ôïõò [Mishra 1992]. Ôï ãåãïíüò áõôü ïäÞãçóå ôïõò åñåõíçôÝò óôçí áíÜðôõîç
ðïëëþí áëãïñßèìùí åðåîåñãáóßáò ìå óôü÷ï ôçí ôá÷ýôåñç åðåîåñãáóßá. ËáìâÜ-
íïíôáò õð’ üøç üôé ç ðñÜîç ôçò óýíäåóçò åêôåëåßôáé ðïëý óõ÷íÜ, ç ýðáñîç áðï-
äïôéêþí ìåèüäùí åðåîåñãáóßáò óõìâÜëåé óçìáíôéêÜ óôçí êáëýôåñç áðüäïóç ôïõ
ÓÄÂÄ.

ÌÝèïäïò ÅìöùëéáóìÝíùí Âñü÷ùí (J1 )


Ç ìÝèïäïò åìöùëéáóìÝíùí âñü÷ùí (nested-loop join) åßíáé ç áðëïýóôåñç ìÝèï-
äïò åðåîåñãáóßáò ôçò ðñÜîçò ôçò óýíäåóçò ìåôáîý äýï ó÷Ýóåùí X êáé Y . Ãéá
êÜèå ìßá áðü ôéò ãñáììÝò x ∈ X åëÝã÷ïõìå áí õðÜñ÷ïõí ãñáììÝò y ∈ Y , Ýôóé
þóôå íá éêáíïðïéåßôáé ç óõíèÞêç ôçò óýíäåóçò. Åßíáé ðñïöáíÝò üôé ç áðüäïóç
ôçò ìåèüäïõ äåí åßíáé éäéáßôåñá õøçëÞ, äéüôé åîåôÜæïíôáé üëá ôá äõíáôÜ æåýãç
ãñáììþí ìåôáîý ôùí äýï ðéíÜêùí. Äýï åßíáé ôá âáóéêÜ ðëåïíåêôÞìáôá ôçò ìåèü-
äïõ: á) ç åýêïëç õëïðïßçóÞ ôçò êáé â) ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ïðïéáäÞðïôå
óõíèÞêç óýíäåóçò θ. Ç áðüäïóç ôçò ìåèüäïõ áíáìÝíåôáé íá åßíáé éêáíïðïéçôéêÞ
ãéá ìéêñÜ ìåãÝèç ðéíÜêùí, ïðüôå ïé ãñáììÝò ôùí ðéíÜêùí åßíáé áðïèçêåõìÝíåò
óôçí êýñéá ìíÞìç ãéá ãñÞãïñç ðñïóðÝëáóç. Óôçí ðåñßðôùóç áõôÞ ôï êüóôïò
óýíäåóçò éóïýôáé ìå ôïí áñéèìü ðñïóðåëÜóåùí ôùí óåëßäùí ôùí äýï ðéíÜêùí,
Üñá:
CJ1 = bX + bY
¸óôùóáí nX êáé nY ôï ðëÞèïò ôùí ãñáììþí ôùí ðéíÜêùí X êáé Y . Ãéá
êÜèå ãñáììÞ ôïõ X ðñÝðåé íá åîåôáóèïýí üëåò ïé ãñáììÝò ôïõ Y . Óôç ÷åéñüôåñç
ðåñßðôùóç ìüíï ìßá óåëßäá äåäïìÝíùí áðü êÜèå ðßíáêá ìðïñåß íá âñßóêåôáé
óôçí êýñéá ìíÞìç, åðïìÝíùò ôï êüóôïò ôçò óýíäåóçò èá åßíáé:

CJ1 = nX · bY + bX

ÌÝèïäïò ÅìöùëéáóìÝíùí Âñü÷ùí ìå Óåëßäåò (J2 )


Óå ðåñßðôùóç ðïõ ôá ìåãÝèç ôùí ðéíÜêùí äåí åðéôñÝðïõí ôçí åîïëïêëÞñïõ
áðïèÞêåõóç óôçí êýñéá ìíÞìç, ÷ñçóéìïðïéåßôáé ç ìÝèïäïò åìöùëéáóìÝíùí âñü-
÷ùí êáôÜ óåëßäåò (block nested-loop join). Ç ðñïóðÝëáóç óôéò ãñáììÝò ôùí
ðéíÜêùí ðñáãìáôïðïéåßôáé ôìçìáôéêÜ, Ýôóé þóôå íá äéáâÜæåôáé êÜèå öïñÜ Ýíá
óýíïëï ãñáììþí êáé ü÷é êÜèå ãñáììÞ ÷ùñéóôÜ üðùò óôçí ðñïçãïýìåíç ìÝèïäï.
Ìå ôïí ôñüðï áõôü ðñáãìáôïðïéïýíôáé ëéãüôåñåò ðñïóðåëÜóåéò óôï äßóêï êáé ç
ðñÜîç ôçò óýíäåóçò åêôåëåßôáé áðïäïôéêüôåñá.
Óôç ÷åéñüôåñç ðåñßðôùóç, ìüíï ìßá óåëßäá äåäïìÝíùí áðü êÜèå ðßíáêá ìðï-
ñåß íá âñßóêåôáé óôçí êýñéá ìíÞìç. ÅðïìÝíùò, ôï êüóôïò óýíäåóçò åßíáé:

CJ2 = bX · bY + bX
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 369

Áí ïëüêëçñïé ïé ðßíáêåò âñßóêïíôáé óôçí êýñéá ìíÞìç ôüôå:

CJ2 = bX + bY

ÌÝèïäïò ÅìöùëéáóìÝíùí Âñü÷ùí ìå ÊáôÜëïãï (J3 )


ÐáñáôçñÞóôå üôé ìå ôçí ðñïçãïýìåíç ìÝèïäï êÜèå ãñáììÞ x ∈ X åëÝã÷åôáé
ìå üëåò ôéò ãñáììÝò y ∈ Y . Áí ï ðßíáêáò Y äéáèÝôåé Ýíáí êáôÜëïãï ùò ðñïò
ôç óôÞëç ìå âÜóç ôçí ïðïßá ïñßæåôáé ç óõíèÞêç ôçò óýíäåóçò, ôüôå ìðïñåß íá
÷ñçóéìïðïéçèåß ï êáôÜëïãïò áõôüò ãéá íá âåëôéùèåß ç áðüäïóç ôçò ìåèüäïõ. Ãéá
êÜèå ãñáììÞ x ∈ X ðñáãìáôïðïéåßôáé ìßá áíáæÞôçóç óôïí êáôÜëïãï þóôå íá
âñåèïýí ãñáììÝò ôïõ ðßíáêá Y ðïõ Ý÷ïõí ôçí ßäéá ôéìÞ óôç óõãêåêñéìÝíç óôÞëç.
Óôçí ïõóßá, ãéá êÜèå ãñáììÞ ôïõ ðßíáêá X ðñáãìáôïðïéåßôáé ìßá ðñÜîç åðéëïãÞò
ìå êáôÜëïãï óôïí ðßíáêá Y .
¸óôùóáí nX êáé nY ôï ðëÞèïò ôùí ãñáììþí ôùí ðéíÜêùí X êáé Y . Ãéá êÜèå
ãñáììÞ ôïõ X åêôåëåßôáé ìßá ðñÜîç åðéëïãÞò óôïí ðßíáêá Y ÷ñçóéìïðïéþíôáò ôï
äéáèÝóéìï êáôÜëïãï. Ôï ðëÞèïò ôùí ðñïóðåëÜóåùí óôï äßóêï åßíáé:

CJ3 = bX + nX · C

üðïõ C åßíáé ôï êüóôïò åðéëïãÞò ìå ÷ñÞóç êáôáëüãïõ, ôï ïðïßï åîåôÜóáìå óå


ðñïçãïýìåíåò ðáñáãñÜöïõò.
Ç ìÝèïäïò áõôÞ ïíïìÜæåôáé ìÝèïäïò åìöùëéáóìÝíùí âñü÷ùí ìå êáôÜëïãï
(indexed loop join) êáé ÷ñçóéìïðïéåßôáé óõíÞèùò áí ç óõíèÞêç ôçò óýíäåóçò ðå-
ñéÝ÷åé ôïí ôåëåóôÞ éóüôçôáò (=). Ùóôüóï, áí ôï åðéôñÝðåé ç öýóç ôïõ êáôáëüãïõ,
ç ìÝèïäïò ìðïñåß íá ÷ñçóéìïðïéçèåß êáé ìå Üëëïõò ôåëåóôÝò üðùò ≥ êáé ≤. Ãéá
ðáñÜäåéãìá, ï êáôÜëïãïò åíüò B+ -äÝíäñïõ åðéôñÝðåé ôç ÷ñÞóç ôùí ôåëåóôþí
áõôþí óå áíôßèåóç ìå ôç ìÝèïäï ôïõ êáôáêåñìáôéóìïý. Óôï Ó÷Þìá 14.5 áðåéêïíß-
æïíôáé ïé ôñåéò ìÝèïäïé åðåîåñãáóßáò ôçò ðñÜîçò ôçò óýíäåóçò ðïõ óôçñßæïíôáé
óå åìöùëéáóìÝíïõò âñü÷ïõò.

ÌÝèïäïò Ôáîéíüìçóçò-Óõã÷þíåõóçò (J4 )


Ç ìÝèïäïò ôçò ôáîéíüìçóçò-óõã÷þíåõóçò (sort-merge) ìðïñåß íá ÷ñçóéìïðïéç-
èåß ãéá ôçí åðåîåñãáóßá ôçò ðñÜîçò ôçò öõóéêÞò óýíäåóçò Þ ôçò óýíäåóçò θ üôáí
Ý÷ïõìå óõíèÞêç éóüôçôáò. ¸óôù üôé æçôåßôáé ç öõóéêÞ óýíäåóç ôùí ðéíÜêùí X
êáé Y . Õðåíèõìßæåôáé üôé ç öõóéêÞ óýíäåóç ôùí X êáé Y ðåñéÝ÷åé ôéò ãñáììÝò
ôùí äýï ðéíÜêùí ãéá ôéò ïðïßåò õðÜñ÷åé ôáýôéóç ùò ðñïò ôéò ôéìÝò ôùí êïéíþí óôç-
ëþí. Ç ìÝèïäïò ðñïûðïèÝôåé üôé êáé ïé äýï ðßíáêåò åßíáé ôáîéíïìçìÝíïé ùò ðñïò
ôéò êïéíÝò óôÞëåò. Áí áõôü äåí éó÷ýåé, ôüôå áñ÷éêÜ ïé ðßíáêåò ôáîéíïìïýíôáé êáé
óôç óõíÝ÷åéá åêôåëåßôáé ôï äåýôåñï óôÜäéï ðïõ óõã÷ùíåýåé ôéò ãñáììÝò ôùí ðéíÜ-
êùí. Åö’ üóïí êáé ïé äýï ðßíáêåò åßíáé ôáîéíïìçìÝíïé ùò ðñïò ôéò êïéíÝò óôÞëåò,
370 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí
Π ί ν α κ α ς X Π ί ν α κ α ς Y Π ί ν α κ α ς X Π ί ν α κ α ς Y

( α ) ε  φ ω λ ι α  έ ν ο ι β ρ ό γ χ ο ι ( n e s t e d + l o o p ) ( β ) ε  φ ω λ ι α  έ ν ο ι β ρ ό γ χ ο ι  ε ε λ ί δ ε ς ( b l o c k n e s t e d + l o o p )

σ σ σ

Π ί ν α κ α ς Y

Π ί ν α κ α ς X

Κ α τ ά λ ο γ ο ς γ ι α τ η

τ ή λ η π ο υ

υ   ε τ έ χ ε ι τ η

σ σ

υ ν θ ή κ η ν δ ε η ς

σ σ ύ σ

( γ ) ε  φ ω λ ι α  έ ν ο ι β ρ ό γ χ ο ι  ε κ α τ ά λ ο γ ο ( i n d e x e d n e s t e d + l o o p )

Ó÷Þìá 14.5: Ôñåéò ìÝèïäïé åðåîåñãáóßáò óýíäåóçò ìå åìöùëéáóìÝíïõò âñü÷ïõò.

ç êÜèå ãñáììÞ ôïõ ðßíáêá äéáâÜæåôáé ìßá ìüíï öïñÜ. Óçìåéþóôå ôç äéáöïñÜ ìå
ôç ìÝèïäï ôùí åìöùëéáóìÝíùí âñü÷ùí, üðïõ ï Ýíáò åê ôùí äýï ðéíÜêùí äéáâÜ-
æåôáé ðïëëÝò öïñÝò áõîÜíïíôáò óçìáíôéêÜ ôï êüóôïò åðåîåñãáóßáò. Óôï Ó÷Þìá
14.6 áðåéêïíßæåôáé Ýíá ðáñÜäåéãìá öõóéêÞò óýíäåóçò ìå ôç ìÝèïäï ôáîéíüìçóçò-
óõã÷þíåõóçò. Ðéï óõãêåêñéìÝíá, áñéóôåñÜ ðáñïõóéÜæåôáé ôï æåýãïò ôùí áñ÷éêþí
ó÷Ýóåùí, óôï êÝíôñï ôï æåýãïò ôùí ó÷Ýóåùí ìåôÜ áðü ôáîéíüìçóç, åíþ óôá äåîéÜ
ðáñïõóéÜæåôáé ç ôåëéêÞ ó÷Ýóç ìåôÜ ôç óõã÷þíåõóç.

a y1 y2 a y1 y2
9 11 12 1 1 2 a x1 x2 y1 y2
a x1 x2 a x1 x2
1 3 4 1 3 4 1 1 2 1 2
9 2 4 1 1 2
7 7 8 6 5 6 1 1 2 3 4
5 1 2 5 1 2
6 5 6 7 7 8 6 2 4 5 6
6 2 4 6 2 4
8 9 10 8 9 10 9 2 4 11 12
1 1 2 9 2 4
1 1 2 9 11 12 9 2 4 13 14
9 13 14 9 13 14

(á) (â) (ã)

Ó÷Þìá 14.6: ÖõóéêÞ óýíäåóç ìå ôç ìÝèïäï ôáîéíüìçóçò-óõã÷þíåõóçò.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 371

ÕðïèÝôïíôáò üôé ïé ðßíáêåò åßíáé Þäç ôáîéíïìçìÝíïé ùò ðñïò ôéò óôÞëåò óýí-
äåóçò, ôï êüóôïò ôçò åðåîåñãáóßáò åßíáé:

CJ4 = bX + bY

åðåéäÞ êÜèå óåëßäá äåäïìÝíùí ôïõ êÜèå ðßíáêá äéáâÜæåôáé ìßá ìüíï öïñÜ. Áí
ðñÝðåé íá ðñïçãçèåß ôáîéíüìçóç ôùí ðéíÜêùí ôüôå óôï áíùôÝñù êüóôïò ðñÝðåé
íá ðñïóôåèåß êáé ôï êüóôïò ôçò ôáîéíüìçóçò ôï ïðïßï áíáëýåôáé óå åðüìåíç
ðáñÜãñáöï.

ÌÝèïäïò Êáôáêåñìáôéóìïý (J5 )


¼ðùò ç ìÝèïäïò ôáîéíüìçóçò-óõã÷þíåõóçò Ýôóé êáé ç ìÝèïäïò óýíäåóçò ìå êáôá-
êåñìáôéóìü ÷ñçóéìïðïéåßôáé ãéá ôçí åðåîåñãáóßá öõóéêÞò óýíäåóçò Þ óýíäåóçò
θ ìå óõíèÞêç éóüôçôáò. Óôï ðñþôï óôÜäéï ÷ñçóéìïðïéåßôáé ìßá óõíÜñôçóç êáôá-
êåñìáôéóìïý ç ïðïßá ïìáäïðïéåß ôéò ãñáììÝò ôùí äýï ðéíÜêùí óå êÜäïõò. Ôï
áðïôÝëåóìá ôçò åöáñìïãÞò ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý åßíáé äýï óýíïëá
êÜäùí ðïõ ðåñéÝ÷ïõí ãñáììÝò ôùí äýï ðéíÜêùí ìå ßäéá ôéìÞ êáôáêåñìáôéóìïý
ãéá ôéò óôÞëåò óýíäåóçò. Ç óõíÜñôçóç êáôáêåñìáôéóìïý ðñÝðåé íá êáôáíÝìåé
ïìïéüìïñöá ôéò ãñáììÝò ôùí ðéíÜêùí óôïõò êÜäïõò ìå ôõ÷áßï ôñüðï, Ýôóé þóôå
üëïé ïé êÜäïé íá Ý÷ïõí ðåñßðïõ ôïí ßäéï áñéèìü äåäïìÝíùí. Óôï äåýôåñï óôÜäéï,
åëÝã÷ïíôáé ôá æåýãç ôùí êÜäùí áðü ôá äýï óýíïëá óôïõò ïðïßïõò áíôéóôïé÷åß ç
ßäéá ôéìÞ ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý. Åäþ ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå
åßôå ôç ìÝèïäï åìöùëéáóìÝíùí âñü÷ùí åßôå ôç ìÝèïäï ôáîéíüìçóçò-óõã÷þíåõóçò.
a y1 y2
9 11 12
a x1 x2 1 3 4
9 2 4 7 7 8
5 1 2 6 5 6
6 2 4 8 9 10
1 1 2 1 1 2
9 13 14
10 1 1

Ó÷Þìá 14.7: ÖõóéêÞ óýíäåóç ìå ôç ìÝèïäï ôïõ êáôáêåñìáôéóìïý.

Óôï Ó÷Þìá 14.7 ðáñïõóéÜæåôáé Ýíá ðáñÜäåéãìá óýíäåóçò ìå ôç ìÝèïäï ôïõ


êáôáêåñìáôéóìïý. Èåùñïýìå üôé ç óõíÜñôçóç êáôáêåñìáôéóìïý åßíáé ç h(x) =
x mod 9 ç ïðïßá åöáñìüæåôáé óôéò ôéìÝò ôçò êïéíÞò óôÞëçò a. ÐáñáôçñÞóôå üôé
äýï ãñáììÝò ìå ßäéá ôéìÞ óôçí êïéíÞ óôÞëç Ý÷ïõí ôçí ßäéá ôéìÞ êáôáêåñìáôéóìïý.
¼ìùò, äýï äéáöïñåôéêÝò ôéìÝò ôçò óôÞëçò ìðïñïýí íá äþóïõí åðßóçò ôçí ßäéá
372 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

ôéìÞ êáôáêåñìáôéóìïý. Ãéá ðáñÜäåéãìá, ïé ôéìÝò 1 êáé 10 ôçò óôÞëçò a êáôáêåñ-


ìáôßæïíôáé óôïí ßäéï êÜäï. Ãéá ôï ëüãï áõôü ôï äåýôåñï óôÜäéï åðåîåñãáóßáò
åßíáé áðáñáßôçôï ãéá ôïí ðñïóäéïñéóìü ôïõ ôåëéêïý áðïôåëÝóìáôïò.
Ãéá ôçí åêôßìçóç ôïõ êüóôïõò ôçò óýíäåóçò ìå êáôáêåñìáôéóìü õðïèÝôïõìå
üôé äåí óõìâáßíåé õðåñ÷åßëéóç óå êÜðïéï êÜäï êáé üôé ï ðßíáêáò êáôáêåñìáôé-
óìïý ìðïñåß íá áðïèçêåõèåß óôçí êýñéá ìíÞìç. ÅðïìÝíùò, ôï êüóôïò åðåîåñ-
ãáóßáò ðåñéëáìâÜíåé: á) áíÜãíùóç ôùí ãñáììþí ôùí ðéíÜêùí, â) äçìéïõñãßá
êáé áðïèÞêåõóç ôùí êÜäùí óôï äßóêï, êáé ã) áíÜãíùóç ôùí êÜäùí. Óýìöùíá
ìå ôá ðñïçãïýìåíá, ï áñéèìüò ðñïóðåëÜóåùí ðïõ áðáéôïýíôáé ãéá ôçí åêôÝëåóç
ôçò ðñÜîçò åßíáé:
CJ5 = 3 · (bX + bY )

ÌÝèïäïò Êáôáëüãïõ Óýíäåóçò (J6 )


ÐïëëÝò öïñÝò ðáñáôçñåßôáé ôï öáéíüìåíï ìßá ðñÜîç óýíäåóçò íá åêôåëåßôáé ðïë-
ëÝò öïñÝò. Óå ìßá ôÝôïéá ðåñßðôùóç ìßá êáëÞ ðñáêôéêÞ åßíáé ôï áðïôÝëåóìá ôçò
óýíäåóçò íá áðïèçêåýåôáé Ýôóé þóôå íá ìðïñåß íá ÷ñçóéìïðïéçèåß óôç óõíÝ÷åéá
÷ùñßò íá áðáéôåßôáé ï åê íÝïõ õðïëïãéóìüò ôïõ áðïôåëÝóìáôïò. Ç áðïèÞêåõóç
ôïõ áðïôåëÝóìáôïò ôçò óýíäåóçò ðñáãìáôïðïéåßôáé ìå ôç âïÞèåéá åíüò êáôáëü-
ãïõ óýíäåóçò (join index), ï ïðïßïò åßíáé Ýíáò ðßíáêáò ìå äýï óôÞëåò a êáé b. Óôç
óôÞëç a áðïèçêåýïíôáé äåßêôåò ðñïò ôéò ãñáììÝò ôïõ ðñþôïõ ðßíáêá êáé óôç óôÞëç
b äåßêôåò ðñïò ôéò ãñáììÝò ôïõ äåýôåñïõ. ÅíáëëáêôéêÜ ìðïñïýí íá ÷ñçóéìïðïéç-
èïýí ôéìÝò êëåéäéþí ôùí äýï ðéíÜêùí. ÊÜèå ãñáììÞ ôïõ êáôáëüãïõ óýíäåóçò
ðñïóäéïñßæåé Ýíá æåýãïò ãñáììþí ôï ïðïßï éêáíïðïéåß ôç óõíèÞêç ôçò óýíäåóçò.
Ôçí åðüìåíç öïñÜ ðïõ èá æçôçèåß ç åðåîåñãáóßá ôçò ðñÜîçò ôçò óýíäåóçò, ôï
áðïôÝëåóìá åßíáé Þäç Ýôïéìï óôïí êáôÜëïãï óýíäåóçò. Ôï ìüíï ðïõ áðáéôåßôáé
åßíáé ç ðñïóðÝëáóç ôïõ êáôáëüãïõ êáé óôç óõíÝ÷åéá ç ðñïóðÝëáóç ôùí ãñáì-
ìþí ôùí äýï ðéíÜêùí. Ç ìÝèïäïò åîõðçñåôåß ðåñéóóüôåñï éóï-óõíäÝóåéò ðáñÜ
óõíäÝóåéò ìå ôõ÷üíôåò ôåëåóôÝò θ.
Ç ÷ñÞóç ôïõ êáôáëüãïõ óýíäåóçò áõîÜíåé ôçí áðïäïôéêüôçôá ôçò ðñÜîçò ôçò
óýíäåóçò üôáí áðáéôåßôáé ç åêôÝëåóç ôçò ðñÜîçò ðïëëÝò öïñÝò. Ùóôüóï, êÜèå
öïñÜ ðïõ ðñáãìáôïðïéïýíôáé åéóáãùãÝò, äéáãñáöÝò Þ åíçìåñþóåéò äåäïìÝíùí
óôïõò ðßíáêåò ðïõ óõììåôÝ÷ïõí óôç óýíäåóç, ðñÝðåé íá åíçìåñþíåôáé êáé ï êáôÜ-
ëïãïò óýíäåóçò áí Ý÷åé ðñïêýøåé íÝï æåýãïò ãñáììþí ôùí äýï ðéíÜêùí ôï ïðïßï
éêáíïðïéåß ôç óõíèÞêç óýíäåóçò (Þ åðßóçò ðñÝðåé íá äéáãñáöåß êÜðïéï æåýãïò
áðü ôïí êáôÜëïãï).

14.3.4 ¸íùóç, ÔïìÞ êáé ÄéáöïñÜ


Ç åðåîåñãáóßá ôùí ðñÜîåùí áõôþí ðñáãìáôïðïéåßôáé óå äýï óôÜäéá: á) ôáîé-
íüìçóç ôùí ðéíÜêùí ìå âÜóç ôéò êïéíÝò óôÞëåò êáé â) óõíäõáóìüò ôùí äéáôÜ-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 373

îåùí þóôå íá ðñïêýøåé ôï ôåëéêü áðïôÝëåóìá. ÌåôÜ ôçí ôáîéíüìçóç áðáéôåßôáé


ìüíï ìßá áíÜãíùóç ôçò êÜèå ãñáììÞò, üðùò êáé óôçí ðåñßðôùóç ôçò óýíäåóçò
ìå ôáîéíüìçóç-óõã÷þíåõóç. Ãéá ôçí ðñÜîç ôçò Ýíùóçò (X ∪ Y ) êÜèå ãñáììÞ
åããñÜöåôáé ìßá ìüíï öïñÜ óôï ôåëéêü áðïôÝëåóìá (áðáëïéöÞ äéðëïôýðùí). Ãéá
ôçí ðñÜîç ôçò ôïìÞò (X ∩ Y ) óôï ôåëéêü áðïôÝëåóìá ðåñéëáìâÜíïíôáé ìüíï ïé
êïéíÝò ãñáììÝò. ÔÝëïò, ãéá ôçí ðñÜîç ôçò äéáöïñÜò (X − Y ) óôï áðïôÝëåóìá
ðåñéëáìâÜíïíôáé ìüíï ïé ãñáììÝò ðïõ áíÞêïõí óôïí ðßíáêá X áëëÜ ü÷é óôïí Y .
ÅíáëëáêôéêÜ, ìðïñåß íá ÷ñçóéìïðïéçèåß ç ìÝèïäïò ôïõ êáôáêåñìáôéóìïý ãéá
ôçí åðåîåñãáóßá ôùí ðñÜîåùí Ýíùóçò, ôïìÞò êáé äéáöïñÜò. Áñ÷éêÜ åöáñìüæå-
ôáé ç óõíÜñôçóç êáôáêåñìáôéóìïý óôïí ðßíáêá X. Óôç óõíÝ÷åéá, áêïëïõèåß ç
åöáñìïãÞ ôçò óõíÜñôçóçò êáôáêåñìáôéóìïý óôïí ðßíáêá Y . Åö’ üóïí äýï êïéíÝò
ãñáììÝò x ∈ X êáé y ∈ Y êáôáêåñìáôßæïíôáé óôçí ßäéá èÝóç, åßíáé åýêïëï íá
ðñïóäéïñßóïõìå áí ç ãñáììÞ y èá óõììåôÝ÷åé Þ ü÷é óôï ôåëéêü áðïôÝëåóìá. Ãéá
ôçí ðñÜîç ôçò Ýíùóçò ç ãñáììÞ y äåí èá åããñáöåß óôï áðïôÝëåóìá áí õðÜñ÷åé
Þäç Üëëç êïéíÞ ãñáììÞ. Ãéá ôçí ðñÜîç ôçò ôïìÞò, ç ãñáììÞ y èá åããñáöåß óôï
áðïôÝëåóìá ìüíï áí õðÜñ÷åé êáé Üëëç êïéíÞ ãñáììÞ x ∈ X. ÔÝëïò, ãéá ôçí ðñÜîç
ôçò óýíäåóçò áí õðÜñ÷åé ãñáììÞ x üìïéá ìå ôçí y, ôüôå êáìßá äåí èá åããñáöåß
óôï ôåëéêü áðïôÝëåóìá.

14.3.5 Ôáîéíüìçóç
Ç ôáîéíüìçóç ÷ñçóéìïðïéåßôáé åßôå Ýììåóá ùò åíäéÜìåóï óôÜäéï êáôÜ ôçí åðåîåñ-
ãáóßá Üëëùí ðñÜîåùí (ð.÷., óýíäåóç ìå ôáîéíüìçóç-óõã÷þíåõóç) åßôå Üìåóá êá-
ôüðéí åíôïëÞò ôïõ ÷ñÞóôç (ð.÷., ìÝóù ôçò åíôïëÞò ORDER BY ôçò SQL). ËáìâÜ-
íïíôáò õð’ üøç üôé Ýíá ÓÄÂÄ äéá÷åéñßæåôáé ìåãÜëåò ðïóüôçôåò äåäïìÝíùí, óôç
ãåíéêÞ ðåñßðôùóç Ýíáò ðßíáêáò äåí åßíáé äõíáôüí íá áðïèçêåõèåß åîïëïêëÞñïõ
óôçí êýñéá ìíÞìç. ÅðïìÝíùò, ôï ÓÄÂÄ ðñÝðåé íá äéáèÝôåé áðïäïôéêÝò ìåèüäïõò
åîùôåñéêÞò ôáîéíüìçóçò (external sorting).
Ç ðëÝïí äéáäåäïìÝíç ìÝèïäïò åîùôåñéêÞò ôáîéíüìçóçò åßíáé ç ôáîéíüìçóç
ìå óõã÷þíåõóç (mergesort). ¸óôù N ôï ðëÞèïò ôùí ãñáììþí ôïõ ðßíáêá ðñïò
ôáîéíüìçóç êáé n ôï ðëÞèïò ôùí ãñáììþí ðïõ ìðïñïýí íá áðïèçêåõèïýí óôçí
êýñéá ìíÞìç. Ôá âÞìáôá ôçò ìåèüäïõ äßäïíôáé óôï Ó÷Þìá 14.8.
Ï áñéèìüò n ôùí ãñáììþí ðïõ ìðïñïýí íá áðïèçêåõèïýí óôçí êýñéá ìíÞìç
ðñïóäéïñßæåôáé áðü ôï ðïóü ôçò äéáèÝóéìçò ìíÞìçò ðïõ Ý÷åé äåóìåõèåß ãéá ôçí
ðñÜîç ôçò ôáîéíüìçóçò. Ï áñéèìüò ôùí ôáîéíïìçìÝíùí ôìçìÜôùí ðïõ óõã÷ùíåýï-
íôáé ìðïñåß íá åßíáé ìåãáëýôåñïò áðü äýï. Óôç ãåíéêÞ ðåñßðôùóç óõã÷ùíåýïíôáé
m ôáîéíïìçìÝíá ôìÞìáôá ôáõôü÷ñïíá êáé ç ìÝèïäïò êáëåßôáé ôáîéíüìçóç ìå
óõã÷þíåõóç m äñüìùí (m-way mergesort). Óçìåéþíåôáé üôé ðñÝðåé íá õðÜñ÷åé
äéáèÝóéìç ôïõëÜ÷éóôïí ìßá óåëßäá ìíÞìçò ãéá ôçí áðïèÞêåõóç ôïõ áðïôåëÝóìá-
374 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

1. Ï ðßíáêáò äéá÷ùñßæåôáé óå M =dN/ne ôìÞìáôá, ìå ôï ðïëý n ãñáììÝò


ôï êáèÝíá.
2. Ôá M ôìÞìáôá ôáîéíïìïýíôáé îå÷ùñéóôÜ, ÷ñçóéìïðïéþíôáò Ýíáí
áëãüñéèìï ôáîéíüìçóçò êýñéáò ìíÞìçò (ð.÷., heapsort, quicksort).
3. Ôá M ôáîéíïìçìÝíá ôìÞìáôá óõã÷ùíåýïíôáé áíÜ äýï êáé ëáìâÜíïõìå
M/2 ôáîéíïìçìÝíá ôìÞìáôá ìå äéðëÜóéï áñéèìü ãñáììþí ôï êáèÝíá.
4. Ôï âÞìá 3 åðáíáëáìâÜíåôáé ìÝ÷ñé íá ðñïêýøåé ìüíï Ýíá ôáîéíïìçìÝíï
ôìÞìá ìå N ãñáììÝò.

Ó÷Þìá 14.8: Áëãüñéèìïò åîùôåñéêÞò ôáîéíüìçóçò ìå óõã÷þíåõóç.

ôïò. ÊÜèå öïñÜ ðïõ ç óåëßäá åîüäïõ ãåìßóåé, áðïèçêåýåôáé óôï äßóêï. ÌåôÜ
ôï ðÝñáò ôçò äéáäéêáóßáò ôáîéíüìçóçò ï ôáîéíïìçìÝíïò ðßíáêáò åßíáé áðïèç-
êåõìÝíïò óôï äßóêï ôïõ óõóôÞìáôïò êáé ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ðåñáéôÝñù
ðñÜîåéò (ð.÷., áðáëïéöÞ äéðëïôýðùí).
Óôï Ó÷Þìá 14.9 áðåéêïíßæåôáé Ýíá ðáñÜäåéãìá ôáîéíüìçóçò ìå óõã÷þíåõóç 2
äñüìùí. Åéäéêüôåñá, ï áñ÷éêüò ðßíáêáò ôïõ Ó÷Þìáôïò 14.9á ðåñéÝ÷åé 12 ãñáììÝò,
åíþ ï áñéèìüò ôùí áñ÷éêþí ôìçìÜôùí åßíáé M =12/3=4, üðùò ðáñïõóéÜæåôáé óôï
Ó÷Þìá 14.9â, üðïõ ôï êÜèå áñ÷éêü ôìÞìá áðïôåëåßôáé áðü 3 ãñáììÝò. Óôï Ó÷Þìá
14.9ã áñéèìüò ôùí ôáîéíïìçìÝíùí ôìçìÜôùí åßíáé 2, åíþ êÜèå ôìÞìá áðïôåëåß-
ôáé áðü 6 ãñáììÝò. ÔÝëïò, óôï Ó÷Þìá 14.9ä ðáñïõóéÜæåôáé ç ôåëéêÞ ó÷Ýóç. Ç
ôáîéíüìçóç ðñáãìáôïðïéåßôáé ùò ðñïò ôç óôÞëç a.

a x1 x2 5 1 2 a x1 x2
1 1 2
9 2 4 6 2 4 1 1 1 1 1 2
5 1 2 9 2 4 2 2 5 1 1 1
6 2 4 1 1 2 5 1 2 2 2 5
1 1 2 1 1 1 6 2 4 3 5 5
1 1 1 2 2 5 9 2 4 4 5 5
2 2 5 5 1 2
3 5 5 3 5 5
3 5 5 5 2 2
4 5 5 4 5 5
4 5 5 6 2 4
8 6 7 5 2 2
8 6 7 7 7 7
5 2 2 7 7 7
7 7 7 8 6 7
7 7 7 8 6 7
9 0 0 9 2 4
9 0 0 9 0 0
5 2 2 9 0 0

(á) (â) (ã) (ä)

Ó÷Þìá 14.9: Ôáîéíüìçóç ìå óõã÷þíåõóç äýï äñüìùí.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 375

14.4 ÅîáãùãÞ ÁðïôåëÝóìáôïò


Óôéò ðñïçãïýìåíåò ðáñáãñÜöïõò ìåëåôÞóáìå ôïõò áëãïñßèìïõò åðåîåñãáóßáò
ôùí ðñÜîåùí ôçò ó÷åóéáêÞò Üëãåâñáò. ¸íá åñþôçìá üìùò áðïôåëåßôáé áðü Ýíá
óýíïëï ðñÜîåùí ðïõ ó÷çìáôßæïõí ôï ðëÜíï åêôÝëåóçò ôïõ åñùôÞìáôïò. ÅðïìÝ-
íùò, ðñÝðåé íá ìåëåôçèåß êáé ï ôñüðïò óõíäõáóìïý ôùí áðïôåëåóìÜôùí ôùí åíäéÜ-
ìåóùí ðñÜîåùí ãéá ôçí ðáñáãùãÞ ôïõ ôåëéêïý áðïôåëÝóìáôïò. ÃåíéêÜ õðÜñ÷ïõí
äýï ìÝèïäïé ãéá ôçí åîáãùãÞ ôïõ áðïôåëÝóìáôïò åíüò åñùôÞìáôïò. Ç ðñþôç ìÝ-
èïäïò áðïèçêåýåé ôá åíäéÜìåóá áðïôåëÝóìáôá Ýôóé þóôå óôç óõíÝ÷åéá íá ÷ñçóé-
ìïðïéçèïýí áðü Üëëåò ðñÜîåéò ðïõ âñßóêïíôáé óå õøçëüôåñï åðßðåäï óôï ðëÜíï
åêôÝëåóçò. Ç ìÝèïäïò êáëåßôáé åðåîåñãáóßá ìå ðñïóùñéíÞ áðïèÞêåõóç (ma-
terialized processing). Ç äåýôåñç ìÝèïäïò äéáöÝñåé êáèþò äåí ÷ñçóéìïðïéåßôáé
åíäéÜìåóç áðïèÞêåõóç ôùí áðïôåëåóìÜôùí. ÊÜèå öïñÜ ðïõ Ýíá óýíïëï äåäïìÝ-
íùí åßíáé äéáèÝóéìï, äéï÷åôåýåôáé óôçí åðüìåíç ðñÜîç. Ç ìÝèïäïò áõôÞ êáëåßôáé
åðåîåñãáóßá ìå äéï÷Ýôåõóç (pipeline processing). Ôïíßæåôáé üôé ðïëëÝò öïñÝò
ìðïñåß íá åöáñìïóèåß ìüíï ç ðñþôç ìÝèïäïò, ëüãù ôçò öýóçò ôùí ðñÜîåùí ðïõ
ëáìâÜíïõí ÷þñá.

14.4.1 Åðåîåñãáóßá ìå ÐñïóùñéíÞ ÁðïèÞêåõóç


Èåùñåßóôå ôï äÝíäñï Ýêöñáóçò ôïõ Ó÷Þìáôïò 14.10. ÊáôÜ ôçí åðåîåñãáóßá ìå
ðñïóùñéíÞ áðïèÞêåõóç ç åðåîåñãáóßá îåêéíÜ áðü ôï êáôþôåñï åðßðåäï. Ôá
áðïôåëÝóìáôá áðïèçêåýïíôáé óå ðñïóùñéíïýò ðßíáêåò þóôå íá åßíáé äéáèÝóéìá
ãéá ôçí åêôÝëåóç Üëëùí ðñÜîåùí. Óôï ðáñÜäåéãìá, áñ÷éêÜ åêôåëåßôáé ç ðñÜîç
åðéëïãÞò óôïí ðßíáêá ÃíùóôéêÞ Ðåñéï÷Þ êáé ôï áðïôÝëåóìá áðïèçêåýåôáé óå ðñï-

Τ ε λ ι κ ό α π ο τ έ λ ε σ e α

Π Γ ν ω σ τ ι κ ή D Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς , Ά ρ θ ρ ο . κ ω δ ι κ ό ς D γ ν ω σ τ ι κ ή ς D π ε ρ ι ο χ ή ς

Γ ν ω σ τ ι κ ή , Π ε ρ ι ο χ ή . κ ω δ ι κ ό ς = Ά ρ θ ρ ο . κ ω δ ι κ ό ς , γ ν ω σ τ ι κ ή ς , π ε ρ ι ο χ ή ς

Π ρ ο σ ω ρ ι ν ή α π ο θ ή κ ε υ σ η

Π ρ ο σ ω ρ ι ν ή α π ο θ ή κ ε υ σ η

α π ο τ ε λ έ σ e α τ ο ς γ ι α τ η ν

α π ο τ ε λ έ σ e α τ ο ς γ ι α τ η ν

π ρ ά ξ η τ η ς σ ύ ν δ ε σ η ς

π ρ ά ξ η τ η ς ε π ι λ ο γ ή ς

σ α ρ ι θ  ό ς  σ υ ν δ ρ ο  η τ ώ ν > 1 0 0

Ά ρ θ ρ ο

Γ ν ω σ τ ι κ ή  Π ε ρ ι ο χ ή

Ó÷Þìá 14.10: ÐñïóùñéíÞ áðïèÞêåõóç åíäéÜìåóùí áðïôåëåóìÜôùí.


376 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

óùñéíü ðßíáêá T1 . Óôç óõíÝ÷åéá åêôåëåßôáé ç ðñÜîç ôçò óýíäåóçò ìåôáîý ôùí
ðéíÜêùí T1 êáé ¢ñèñï êáé ôï áðïôÝëåóìá áðïèçêåýåôáé óôïí ðñïóùñéíü ðßíáêá
T2 . ÔÝëïò, åêôåëåßôáé ç ðñÜîç ôçò ðñïâïëÞò ðïõ âñßóêåôáé óôï áíþôåñï åðßðåäï
ôïõ äÝíäñïõ Ýêöñáóçò êáé ðáñÜãåôáé ôï ôåëéêü áðïôÝëåóìá.
Óçìåéþíåôáé üôé ôï óõíïëéêü êüóôïò åðåîåñãáóßáò åßíáé ìåãáëýôåñï áðü ôï
Üèñïéóìá ôïõ êüóôïõò ôùí åðéìÝñïõò ðñÜîåùí, äéüôé ç ðñïóùñéíÞ áðïèÞêåõóç
ôùí åíäéÜìåóùí áðïôåëåóìÜôùí åéóÜãåé Ýíá åðéðëÝïí êüóôïò óôçí åðåîåñãáóßá
ôïõ åñùôÞìáôïò.

14.4.2 Åðåîåñãáóßá ìå Äéï÷Ýôåõóç


Ôï óõíïëéêü êüóôïò åðåîåñãáóßáò åíüò åñùôÞìáôïò ìðïñåß íá ìåéùèåß óçìáíôéêÜ
áðïöåýãïíôáò ôçí ðáñáãùãÞ ðñïóùñéíþí ðéíÜêùí. Áõôü åðéôõã÷Üíåôáé ÷ñçóé-
ìïðïéþíôáò ôçí ôå÷íéêÞ äéï÷Ýôåõóçò (pipelining), üðïõ áõôü åßíáé åöéêôü. ÊÜèå
öïñÜ ðïõ ìßá ðñÜîç ðáñÜãåé ìßá ãñáììÞ, áõôÞ äéï÷åôåýåôáé óôçí åðüìåíç ðñÜîç
÷ùñßò åíäéÜìåóç áðïèÞêåõóç. Ãéá ðáñÜäåéãìá, óôï äÝíäñï Ýêöñáóçò ôïõ Ó÷Þìá-
ôïò 14.10, üôáí ç ðñþôç ãñáììÞ ôçò ðñÜîçò ôçò åðéëïãÞò åßíáé äéáèÝóéìç, ìðïñåß
íá äéï÷åôåõèåß áð’ åõèåßáò óôçí ðñÜîç ôçò óýíäåóçò. Ìå ôïí ôñüðï áõôü áðï-
öåýãåôáé ç ðñïóùñéíÞ áðïèÞêåõóç ôùí áðïôåëåóìÜôùí êáé áõîÜíåôáé ç ôá÷ýôçôá
åðåîåñãáóßáò.

14.5 Óýíïøç
Ðñéí ôç åêôÝëåóç åíüò åñùôÞìáôïò ðñïçãåßôáé ôï óôÜäéï ôçò âåëôéóôïðïßçóçò.
Ôï åñþôçìá ôïõ ÷ñÞóôç ìðïñåß íá ôñïðïðïéçèåß Ýôóé þóôå íá ìåéùèåß ï ÷ñüíïò
åðåîåñãáóßáò. Åðßóçò, óôï óôÜäéï áõôü ðñïóäéïñßæåôáé ç óåéñÜ ðñïóðÝëáóçò ôùí
äåäïìÝíùí, ðïéïß êáôÜëïãïé èá ÷ñçóéìïðïéçèïýí, ðüóç ìíÞìç èá äåóìåõèåß, ðïéÜ
áñ÷åßá äåäïìÝíùí áðáéôïýíôáé ãéá ôçí åðåîåñãáóßá. ÌåôÜ ôïí ðñïóäéïñéóìü
ôùí ðñïçãïõìÝíùí, äçìéïõñãåßôáé Ýíá ðëÜíï åêôÝëåóçò åñùôÞìáôïò, ôï ïðïßï
ðåñéÝ÷åé üëåò ôéò áðáñáßôçôåò ðëçñïöïñßåò ãéá ôçí åðåîåñãáóßá ôïõ åñùôÞìáôïò.
Åêôüò áðü ôç óåéñÜ åêôÝëåóçò ôùí ðñÜîåùí, ôï ðëÜíï åêôÝëåóçò ðåñéÝ÷åé êáé
ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðïéÜ ìÝèïäïò èá ÷ñçóéìïðïéçèåß ãéá ôçí åðåîåñãáóßá
êÜèå ðñÜîçò.
Äýï åßíáé ïé âáóéêÝò ìÝèïäïé âåëôéóôïðïßçóçò ðïõ åöáñìüæïíôáé óôá ÓÄÂÄ:
á) åõñéóôéêÞ âåëôéóôïðïßçóç ðïõ ÷ñçóéìïðïéåß êáíüíåò ìåôáó÷çìáôéóìïý ôïõ áñ-
÷éêïý åñùôÞìáôïò êáé â) âåëôéóôïðïßçóç âáóéóìÝíç óôï êüóôïò ôùí ðñÜîåùí.
Óôç äåýôåñç ìÝèïäï ÷ñçóéìïðïéåßôáé åêôßìçóç ãéá ôï êüóôïò ôçò êÜèå ðñÜîçò
ðïõ óõììåôÝ÷åé óôï åñþôçìá, Ýôóé þóôå íá Ý÷ïõìå ìßá óõíïëéêÞ åêôßìçóç ãéá ôï
êüóôïò üëïõ ôïõ åñùôÞìáôïò. Ôï ðáñáãüìåíï ðëÜíï åêôÝëåóçò ôïõ åñùôÞìáôïò
äéï÷åôåýåôáé óôç ìç÷áíÞ åêôÝëåóçò ðñïò åðåîåñãáóßá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 377

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


14.1. Ôé ïíïìÜæåôáé âåëôéóôïðïßçóç êáé ðïéÜ ç ÷ñçóéìüôçôÜ ôçò óôçí åðåîåñãáóßá
åñùôçìÜôùí áðü Ýíá ÓÄÂÄ;

14.2. ÐåñéãñÜøôå óõíïðôéêÜ ôçí åõñéóôéêÞ âåëôéóôïðïßçóç êáé ôç âåëôéóôïðïßçóç


âáóéóìÝíç óôï êüóôïò åðåîåñãáóßáò.

14.3. ÐïéÜ ç âáóéêÞ äéáöïñÜ ìåôáîý ôçò óôáôéêÞò êáé ôçò äõíáìéêÞò âåëôéóôï-
ðïßçóçò; ÁíáöÝñáôå ìåéïíåêôÞìáôá êáé ðëåïíåêôÞìáôá.

14.4. ÐïéÝò ïé äéáöïñÝò ôçò åðåîåñãáóßáò ìå åíäéÜìåóç áðïèÞêåõóç êáé ìå


äéï÷Ýôåõóç;

14.5. Èåùñåßóôå ôéò ó÷Ýóåéò R1 (a,b,c) êáé R2 (a,f,g). ÐåñéãñÜøôå ôïí ôñüðï
åðåîåñãáóßáò ôçò ðñÜîçò öõóéêÞò óýíäåóçò ÷ñçóéìïðïéþíôáò ôéò äéáöïñåôéêÝò
ìåèüäïõò óýíäåóçò ðïõ õðÜñ÷ïõí.

14.6. Èåùñåßóôå ôéò ó÷Ýóåéò R1 (a,b,c) êáé R2 (c,d,e). Ç ó÷Ýóç R1 Ý÷åé 30000 ãñáì-
ìÝò êáé ç ó÷Ýóç R2 Ý÷åé 60000 ãñáììÝò. Ãíùñßæïõìå åðßóçò üôé 20 åããñáöÝò ôçò
R1 êáé 30 åããñáöÝò ôçò R2 ìðïñïýí íá áðïèçêåõèïýí óå ìßá óåëßäá äßóêïõ. Íá
åêôéìçèåß ôï ðëÞèïò ôùí ðñïóðåëÜóåùí ðïõ áðáéôïýíôáé ãéá ôïí õðïëïãéóìü ôçò
óýíäåóçò ôùí äýï ó÷Ýóåùí ÷ñçóéìïðïéþíôáò á) ôç ìÝèïäï ôùí åìöùëéáóìÝíùí
âñü÷ùí, â) ôç ìÝèïäï ôùí åìöùëéáóìÝíùí âñü÷ùí ìå ôìÞìáôá êáé ã) ôç ìÝèïäï
óýíäåóçò ìå êáôáêåñìáôéóìü.
2·(N −1))!
14.7. Áðïäåßîôå üôé áí Ý÷ïõìå N ó÷Ýóåéò, ôüôå õðÜñ÷ïõí (N −1)! äéáöïñåôéêïß
ôñüðïé ãéá ôçí åêôÝëåóç ôçò óýíäåóçò.

14.8. Äßíåôáé ç áêïëïõèßá áñéèìþí: 10, 15, 5, 22, 25, 30, 20, 40, 35, 45, 42, 43, 44,
60, 50. Åöáñìüóôå ôç ìÝèïäï ôáîéíüìçóçò ìå óõã÷þíåõóç äýï äñüìùí ãéá ôçí
ôáîéíüìçóç ôçò áêïëïõèßáò óå öèßíïõóá äéÜôáîç.

14.9. Äßíåôáé ôï áêüëïõèï åñþôçìá SQL:

SELECT ÓõíäñïìçôÞò.êùäéêüò, ÓõíäñïìçôÞò.üíïìá,


ÃíùóôéêÞ_Ðåñéï÷Þ.ôßôëïò
FROM ÓõíäñïìçôÞò, ÓõíäñïìÞ, ÃíùóôéêÞ_Ðåñéï÷Þ
WHERE ÓõíäñïìçôÞò.êùäéêüò=êùäéêüò_óõíäñïìçôÞ AND
êùäéêüò_ãíùóôéêÞò_ðåñéï÷Þò=ÃíùóôéêÞ_Ðåñéï÷Þ.êùäéêüò;
378 ÊåöÜëáéï 14. Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí

Íá âñåèïýí äéáöïñåôéêÜ ðëÜíá åêôÝëåóçò ãéá ôï åñþôçìá áõôü, êÜíïíôáò äéêÝò


óáò õðïèÝóåéò ó÷åôéêÜ ìå ôïõò êáôáëüãïõò ðïõ õðÜñ÷ïõí óôéò óôÞëåò ôïõ ðßíáêá.

14.10. Íá åêôåëÝóåôå ôçí ðñÜîç ôçò öõóéêÞò óýíäåóçò ÷ñçóéìïðïéþíôáò ôñåéò áðü
ôïõò ôñüðïõò åðåîåñãáóßáò ðïõ ìåëåôÞèçêáí êáé íá óõãêñßíåôå ôéò ìåèüäïõò ùò
ðñïò ôï êüóôïò åðåîåñãáóßáò.
15
Äéá÷åßñéóç Óõíáëëáãþí

ÐïëëÝò öïñÝò õðÜñ÷åé ç áíÜãêç ãéá áôïìéêÞ åêôÝëåóç (atomic execution) åíüò
óõíüëïõ ëåéôïõñãéþí. Áõôü óçìáßíåé üôé áí Ýóôù êáé ìßá ëåéôïõñãßá áðïôý÷åé,
ç åðåîåñãáóßá áðïôõã÷Üíåé óôï óýíïëü ôçò. ¸íá óýíïëï ëåéôïõñãéþí ôï ïðïßï
áðïôåëåß ìßá ëïãéêÞ ëåéôïõñãéêÞ ìïíÜäá êáëåßôáé óõíáëëáãÞ (transaction). Ïé
ëåéôïõñãßåò ìßáò óõíáëëáãÞò ìðïñåß íá ðåñéÝ÷ïõí åíôïëÝò áíÜãíùóçò, åéóáãùãÞò,
äéáãñáöÞò Þ åíçìÝñùóçò ôùí äåäïìÝíùí ôçò ÂÄ. Ôçí åõèýíç ãéá ôçí ïëïêëç-
ñùìÝíç Þ ü÷é åðåîåñãáóßá ôùí óõíáëëáãþí Ý÷åé áðïêëåéóôéêÜ êáé ìüíï ôï ÓÄÂÄ,
êáé ðïéü óõãêåêñéìÝíá ôï ôìÞìá ôïõ ÓÄÂÄ ðïõ åßíáé õðåýèõíï ãéá ôç äéá÷åßñéóç
ôùí óõíáëëáãþí (transaction manager). ÌåôÜ ôçí åðåîåñãáóßá ìßáò óõíáëëáãÞò
ôá äåäïìÝíá ðñÝðåé íá éêáíïðïéïýí üëïõò ôïõò ðåñéïñéóìïýò áêåñáéüôçôáò ðïõ
Ý÷ïõí ïñéóèåß êáôÜ ôï ó÷åäéáóìü ôçò âÜóçò. Ãéá ðáñÜäåéãìá, ç áíÜëçøç åíüò
ðïóïý áðü Ýíáí ôñáðåæéêü ëïãáñéáóìü ðñÝðåé íá óõíïäåýåôáé áðü åíçìÝñùóç
ôïõ ëïãáñéáóìïý, äéáöïñåôéêÜ äåí õðÜñ÷åé óõíÝðåéá óôá äåäïìÝíá ôçò âÜóçò.
Ôï ðñüâëçìá ôçò äéá÷åßñéóçò ôùí óõíáëëáãþí ãßíåôáé áêüìç äõóêïëüôåñï
ëáìâÜíïíôáò õð’ üøç üôé ôá óýã÷ñïíá ÓÄÂÄ Ý÷ïõí ôçí éêáíüôçôá íá åîõðçñå-
ôïýí ðïëëïýò ÷ñÞóôåò ôáõôü÷ñïíá. ÅðïìÝíùò, ðñÝðåé íá õðÜñ÷ïõí áîéüðéóôïé
ìç÷áíéóìïß åëÝã÷ïõ ôçò áêåñáéüôçôáò ôùí äåäïìÝíùí êáèþò ðïëëÝò óõíáëëáãÝò
ìðïñåß íá âñßóêïíôáé óå åîÝëéîç, ðñïóðåëáýíïíôáò (ðéèáíüôáôá) êïéíÜ äåäïìÝíá

379
380 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

[Bernstein 1987]. Áí åðéôñÝøïõìå óå äýï óõíáëëáãÝò íá åíçìåñþóïõí ôá ßäéá


äåäïìÝíá, ôüôå õðÜñ÷åé ìåãÜëç ðéèáíüôçôá áëëïßùóçò ôùí äåäïìÝíùí. Ôï ÓÄÂÄ
ìÝóù ôïõ åëÝã÷ïõ ôáõôï÷ñïíéóìïý (concurrency control) äéá÷åéñßæåôáé ôéò óõíáë-
ëáãÝò Ýôóé þóôå íá áðïöåýãïíôáé ïé ðáèïëïãéêÝò êáôáóôÜóåéò.
Ç ÂÄ ìðïñåß íá âñåèåß óå áóôáèÞ êáôÜóôáóç ìåôÜ áðü ìßá âëÜâç ôïõ óõ-
óôÞìáôïò, ðïõ ìðïñåß íá ïöåßëåôáé óå âëÜâç ôïõ öõóéêïý ìÝóïõ áðïèÞêåõóçò, Þ
ïðïéïõäÞðïôå Üëëïõ ìÝñïõò ôïõ óõóôÞìáôïò. ÌåôÜ ôçí áðïêáôÜóôáóç ôçò âëÜâçò
ðñÝðåé íá ðñáãìáôïðïéçèåß Ýëåã÷ïò ôùí äåäïìÝíùí, äéüôé ôç óôéãìÞ ôçò ðôþóçò
ôïõ óõóôÞìáôïò êÜðïéåò óõíáëëáãÝò ìðïñåß íá ðñáãìáôïðïéïýóáí åíçìåñþóåéò
óôá äåäïìÝíá ôçò âÜóçò. ÅðïìÝíùò õðÜñ÷åé ç áíÜãêç ãéá ìç÷áíéóìïýò åðáíÜ-
êôçóçò äåäïìÝíùí (data recovery), þóôå íá åðáíÝëèåé ç ÂÄ óôçí êáíïíéêÞ ôçò
êáôÜóôáóç üðïõ ðëçñïýíôáé üëïé ïé ðåñéïñéóìïß áêåñáéüôçôáò.

15.1 ÓõíáëëáãÝò
Ìßá óõíáëëáãÞ åßíáé óõíÞèùò ôï áðïôÝëåóìá ôçò åêôÝëåóçò åíüò ðñïãñÜììáôïò
ðïõ åßíáé ãñáììÝíï óå ìßá ãëþóóá ðñïãñáììáôéóìïý õøçëïý åðéðÝäïõ. ÐïëëÝò
öïñÝò ç óõíáëëáãÞ ïñéïèåôåßôáé ìå ôç ÷ñÞóç åêöñÜóåùí üðùò BEGIN TRANS-
ACTION êáé END TRANSACTION. Ïé åíôïëÝò ðïõ ðåñéêëåßïíôáé ìåôáîý ôùí
åêöñÜóåùí áõôþí ðñïóäéïñßæïõí ôç óõíáëëáãÞ.

15.1.1 ÊáôáóôÜóåéò Óõíáëëáãþí


Ìßá óõíáëëáãÞ åßôå èá ôåñìáôßóåé êáíïíéêÜ (committed) åðéöÝñïíôáò ìüíéìåò
áëëáãÝò óôç ÂÄ åßôå èá áðïññéöèåß (aborted) êáé ôá äåäïìÝíá èá åðáíÝëèïõí
óôçí ðñïçãïýìåíç êáôÜóôáóç. Ïé äýï áõôÝò êáôáóôÜóåéò åßíáé ïé ìïíáäéêÝò
êáôáóôÜóåéò ôåñìáôéóìïý ìßáò óõíáëëáãÞò. Ùóôüóï, ðñéí ôïí ôåñìáôéóìü ôçò ìßá
óõíáëëáãÞ ìðïñåß íá âñåèåß óå Üëëç åíäéÜìåóç êáôÜóôáóç. Ïé êáôáóôÜóåéò óôéò
ïðïßåò ìðïñåß íá õðåéóÝëèåé ìßá óõíáëëáãÞ ðáñïõóéÜæïíôáé óôï Ó÷Þìá 15.1 êáé
ðåñéãñÜöïíôáé óôç óõíÝ÷åéá:

• ÅíåñãÞ ÊáôÜóôáóç (active). Ç óõíáëëáãÞ åéóÝñ÷åôáé óôçí åíåñãÞ êáôÜ-


óôáóç êáôÜ ôçí áñ÷Þ ôçò åðåîåñãáóßáò ôçò êáé ðáñáìÝíåé óå áõôÞ åí’ üóù
åêôåëåßôáé.

• ÊáôÜóôáóç ÌåñéêÞò ÄÝóìåõóçò (partially committed). Ç óõíáëëáãÞ èå-


ùñåßôáé ìåñéêþò ïëïêëçñùìÝíç üôáí Ý÷åé ïëïêëçñùèåß êáé ç ôåëåõôáßá
åíôïëÞ ôçò óõíáëëáãÞò.

• ÊáôÜóôáóç Áðïôõ÷ßáò (failed). Ç óõíáëëáãÞ áðïôõã÷Üíåé üôáí ôï ÓÄÂÄ


áíôéëçöèåß üôé äåí ìðïñåß íá óõíå÷ßóåé ç ïìáëÞ åðåîåñãáóßá ôçò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 381

Ε ν ε ρ γ ή

Κ α τ ά σ τ α σ η

Κ α τ ά σ τ α σ η

Κ α τ ά σ τ α σ η

Μ ε ρ ι κ ή ς

Α π ο τ υ χ ί α ς

 έ σ  ε υ σ η ς

Κ α τ ά σ τ α σ η Κ α τ ά σ τ α σ η

 έ σ  ε υ σ η ς Α π ό ρ ρ ι ψ η ς

Ó÷Þìá 15.1: ÊáôáóôÜóåéò óõíáëëáãÞò.

• ÊáôÜóôáóç Áðüññéøçò (aborted). Ç óõíáëëáãÞ âñßóêåôáé óôçí êáôÜóôáóç


áõôÞ üôáí ôá äåäïìÝíá Ý÷ïõí åðáíÝëèåé óôçí ðñïçãïýìåíç óôáèåñÞ êáôÜ-
óôáóç, ðñéí ôçí áñ÷Þ ôçò åêôÝëåóçò ôçò óõíáëëáãÞò.

• ÊáôÜóôáóç ÄÝóìåõóçò (committed). Ç óõíáëëáãÞ Ý÷åé ïëïêëçñþóåé ôçí


åêôÝëåóÞ ôçò ìå åðéôõ÷ßá.

¼ôáí îåêéíÜ ç åðåîåñãáóßá ôçò óõíáëëáãÞò, åéóÝñ÷åôáé óôçí åíåñãÞ êáôÜ-


óôáóç êáé ðáñáìÝíåé ìÝ÷ñé íá á) ïëïêëçñùèåß êáé ç ôåëåõôáßá åíôïëÞ Þ â) äåí
ìðïñåß íá óõíå÷éóèåß ç åêôÝëåóÞ ôçò. Óôçí ðñþôç ðåñßðôùóç ç óõíáëëáãÞ åéóÝñ-
÷åôáé óôçí êáôÜóôáóç ìåñéêÞò ïëïêëÞñùóçò. ¼ëåò ïé åíôïëÝò Ý÷ïõí ïëïêëçñù-
èåß ìå åðéôõ÷ßá üìùò åíäÝ÷åôáé êÜðïéá áðü ôá áðïôåëÝóìáôá ôçò óõíáëëáãÞò íá
âñßóêïíôáé áêüìç óôçí êýñéá ìíÞìç. Áí ç åããñáöÞ ôùí äåäïìÝíùí óôï äßóêï
ðñáãìáôïðïéçèåß ìå åðéôõ÷ßá, ôüôå ç óõíáëëáãÞ åéóÝñ÷åôáé óôçí ôåñìáôéêÞ êáôÜ-
óôáóç ïëïêëÞñùóçò êáé ôåëåéþíåé ç åðåîåñãáóßá ôçò. Óôç äåýôåñç ðåñßðôùóç
åéóÝñ÷åôáé óôçí êáôÜóôáóç áðïôõ÷ßáò. Áõôü óçìáßíåé üôé êÜðïéá áðü ôéò åíôïëÝò
ôçò óõíáëëáãÞò äåí ìðüñåóå íá ïëïêëçñùèåß ìå åðéôõ÷ßá. Óôï óçìåßï ôï ÓÄÂÄ
ðñÝðåé íá åðáíáöÝñåé ôá äåäïìÝíá óôçí ðñïçãïýìåíç êáôÜóôáóç óõíÝðåéáò (roll-
back). Óôç óõíÝ÷åéá ç óõíáëëáãÞ åéóÝñ÷åôáé óôçí êáôÜóôáóç áðüññéøçò êáé ôï
ÓÄÂÄ Ý÷åé äýï åðéëïãÝò: á) ôçí åðáíåêêßíçóç ôçò óõíáëëáãÞò áðü ôçí áñ÷Þ Þ
â) ôçí êáôáóôñïöÞ ôçò óõíáëëáãÞò.
382 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

Áí ìßá óõíáëëáãÞ Ý÷åé Þäç åéóÝëèåé óôçí ôåñìáôéêÞ êáôÜóôáóç ïëïêëÞñùóçò,


ïé áëëáãÝò ðïõ Ý÷åé åðéöÝñåé óôç âÜóç äåí ìðïñïýí íá áíáêëçèïýí. Ï ìüíïò
ôñüðïò ãéá íá ãßíåé áõôü åßíáé íá äçìéïõñãçèåß ìßá íÝá óõíáëëáãÞ ðïõ íá åðéöÝ-
ñåé ôéò áêñéâþò áíôßèåôåò áëëáãÝò. ÅðåéäÞ üìùò áõôü äåí åßíáé ðÜíôïôå åöéêôü,
ç åõèýíç áöÞíåôáé óôï ÷ñÞóôç.

15.1.2 Éäéüôçôåò Óõíáëëáãþí


Ï äéá÷åéñéóôÞò óõíáëëáãþí ôïõ ÓÄÂÄ ðñÝðåé íá éêáíïðïéåß ôéò åðüìåíåò âáóéêÝò
éäéüôçôåò ôùí óõíáëëáãþí, ïé ïðïßåò åßíáé ãíùóôÝò ùò ACID éäéüôçôåò, áðü ôéò
ëÝîåéò áôïìéêüôçôá (atomicity), óõíÝðåéá (consistency), áðïìüíùóç (isolation)
êáé ìïíéìüôçôá (durability).

• Áôïìéêüôçôá. Áí õðÜñ÷åé Ýóôù êáé ìßá åíôïëÞ ôçò óõíáëëáãÞò ç ïðïßá


áðïôõã÷Üíåé íá åêôåëåóèåß, ôüôå ïëüêëçñç ç óõíáëëáãÞ áðïôõã÷Üíåé åðß-
óçò.

• ÓõíÝðåéá. Ç óõíáëëáãÞ ðñÝðåé íá ìåôáôñÝðåé ôç ÂÄ áðü ìßá êáôÜóôáóç


óõíÝðåéáò óå Üëëç. Ç óõíÝðåéá ó÷åôßæåôáé Üìåóá ìå ôçí ïñèüôçôá ôùí äå-
äïìÝíùí ôçò âÜóçò êáé åßíáé åõèýíç ôüóï ôïõ ÓÄÂÄ üóï êáé ôùí ðñïãñáì-
ìÜôùí åöáñìïãÞò ðïõ åðéöÝñïõí áëëáãÝò óôç ÂÄ. Ïé ìç÷áíéóìïß áêåñáéü-
ôçôáò äåäïìÝíùí äåí åðáñêïýí ãéá ôçí åããýçóç ôçò óõíÝðåéáò. ÈåùñÞóôå
ôç ìåôáöïñÜ åíüò ðïóïý áðü Ýíáí ôñáðåæéêü ëïãáñéáóìü óå Üëëïí. Ç
áöáßñåóç ôïõ ðïóïý áðü ôïí ðñþôï ëïãáñéáóìü ðñÝðåé íá óõíïäåýåôáé
áðü ôçí ðñüóèåóç ôïõ ðïóïý óôï äåýôåñï. Áí ôï ðïóü ðïõ áöáéñåßôáé
äéáöÝñåé áðü áõôü ðïõ ðñïóôßèåôáé, ôüôå ôá äåäïìÝíá ôçò âÜóçò äåí Ý÷ïõí
óõíÝðåéá (äåí åßíáé óùóôÜ).

• Áðïìüíùóç. ÊÜèå óõíáëëáãÞ ðñÝðåé íá åêôåëåßôáé áíåîÜñôçôá áðü Üëëåò


óõíáëëáãÝò.

• Ìïíéìüôçôá. Áí ìßá óõíáëëáãÞ ïëïêëçñùèåß ìå åðéôõ÷ßá, ôüôå ïé áëëáãÝò


ðïõ Ý÷åé åðéöÝñåé êáôáãñÜöïíôáé ìüíéìá óôç ÂÄ êáé äåí ìðïñïýí íá áíá-
êëçèïýí.

15.2 ¸ëåã÷ïò Ôáõôï÷ñïíéóìïý


Ç åðåîåñãáóßá óõíáëëáãþí óå Ýíá ÓÄÂÄ Ý÷åé ðïëëÜ êïéíÜ óçìåßá ìå ôçí åêôÝ-
ëåóç äéáäéêáóéþí óå Ýíá ëåéôïõñãéêü óýóôçìá. ÈåùñÞóôå Ýíá óýíïëï óõíáëëá-
ãþí ðïõ áíáìÝíïõí ãéá åðåîåñãáóßá. ¸íáò ôñüðïò åðåîåñãáóßáò åßíáé ç áêï-
ëïõèéáêÞ Þ óåéñéáêÞ åêôÝëåóç üðïõ ïé óõíáëëáãÝò åêôåëïýíôáé ç ìßá ìåôÜ ôçí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 383

Üëëç. Ç åêôÝëåóç ìßáò óõíáëëáãÞò îåêéíÜ ìüëéò ïëïêëçñùèåß ç åêôÝëåóç ôçò


ðñïçãïýìåíçò. Ç óåéñéáêÞ åêôÝëåóç ôùí óõíáëëáãþí ìðïñåß íá åðéöÝñåé óçìá-
íôéêÝò êáèõóôåñÞóåéò ìå áðïôÝëåóìá íá ìåéþíåôáé ç áðüäïóç ôïõ óõóôÞìáôïò.
Ïé ëüãïé ðïõ ïäÞãçóáí åñåõíçôÝò êáé êáôáóêåõáóôÝò óôç ìåëÝôç ôçò ôáõôü÷ñïíçò
åêôÝëåóçò ðïëëþí óõíáëëáãþí åßíáé ïé åîÞò:

• Ìßá óõíáëëáãÞ áðïôåëåßôáé áðü ðïëëÜ äéáöïñåôéêÜ ôìÞìáôá åê ôùí ïðïßùí


Üëëá áðáéôïýí ðåñéóóüôåñï ÷ñüíï áðü ôçí êåíôñéêÞ ìïíÜäá åðåîåñãáóßáò
(CPU) êáé Üëëá áðáéôïýí ðåñéóóüôåñåò ðñïóðåëÜóåéò óôï äßóêï. Ï äßóêïò
êáé ç CPU ôïõ óõóôÞìáôïò ìðïñïýí íá ëåéôïõñãïýí ðáñÜëëçëá åîõðçñå-
ôþíôáò Ýôóé äéáöïñåôéêÜ ôìÞìáôá ôçò ßäéáò óõíáëëáãÞò Þ äéáöïñåôéêþí
óõíáëëáãþí. Ôï ÷ñïíéêü äéÜóôçìá êáôÜ ôï ïðïßï ï äßóêïò ôïõ óõóôÞìáôïò
åßíáé áðáó÷ïëçìÝíïò ìå ôçí áíÜãíùóç Þ áðïèÞêåõóç äåäïìÝíùí åê ìÝñïõò
ìßáò óõíáëëáãÞò, ç CPU ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôçí åêôÝëåóç õðï-
ëïãéóìþí ãéá ëïãáñéáóìü ìßáò Üëëçò óõíáëëáãÞò. Ôï áðïôÝëåóìá åßíáé üôé
áõîÜíåôáé ï áñéèìüò ôùí óõíáëëáãþí ðïõ ïëïêëçñþíïíôáé óôç ìïíÜäá ôïõ
÷ñüíïõ (throughput).

• ¸íá óýíïëï óõíáëëáãþí ìðïñåß íá ðåñéëáìâÜíåé óõíáëëáãÝò ðïõ Ý÷ïõí ìé-


êñÝò áðáéôÞóåéò êáé ìðïñïýí íá ïëïêëçñùèïýí ãñÞãïñá êáé óõíáëëáãÝò ìå
ðåñéóóüôåñåò áðáéôÞóåéò ç åêôÝëåóç ôùí ïðïßùí ìðïñåß íá áðáéôåß ìåãÜëá
÷ñïíéêÜ äéáóôÞìáôá. ×ñçóéìïðïéþíôáò óåéñéáêÞ åêôÝëåóç óõíáëëáãþí ìßá
ìéêñÞ óõíáëëáãÞ ßóùò ÷ñåéáóèåß íá ðåñéìÝíåé ðïëý ÷ñüíï ãéá ôçí ïëïêëÞ-
ñùóç ìßáò ìåãáëýôåñçò. Ç ôáõôü÷ñïíç åêôÝëåóç ôùí óõíáëëáãþí óõìâÜë-
ëåé óôç ìåßùóç ôùí êáèõóôåñÞóåùí (waiting time) êáé ôïõ ìÝóïõ ÷ñüíïõ
åêôÝëåóçò ôùí óõíáëëáãþí (mean response time).

Ç ôáõôü÷ñïíç åêôÝëåóç ðïëëþí óõíáëëáãþí, ùóôüóï, åíäÝ÷åôáé íá åðéöÝñåé


ðñïâëÞìáôá óôçí áêåñáéüôçôá êáé óõíÝðåéá ôùí äåäïìÝíùí ôçò ÂÄ. Áí üëåò ïé
óõíáëëáãÝò ðñáãìáôïðïéïýí ìüíï ëåéôïõñãßåò áíÜãíùóçò ôüôå äåí õðÜñ÷åé êßí-
äõíïò ãéá ôá äåäïìÝíá. ¼ìùò åíäÝ÷åôáé êÜðïéåò áðü ôéò óõíáëëáãÝò íá ðñáãìá-
ôïðïéïýí åíçìåñþóåéò óå äåäïìÝíá ðïõ ðñïóðåëáýíïíôáé áðü Üëëåò. Ï óùóôüò
óõíôïíéóìüò ôùí óõíáëëáãþí åßíáé åõèýíç ôïõ ÓÄÂÄ, ôï ïðïßï ìÝóù ôïõ ìç÷á-
íéóìþí åëÝã÷ïõ ôáõôï÷ñïíéóìïý (concurrency control) åããõÜôáé ôçí ïìáëÞ åêôÝ-
ëåóç ôùí óõíáëëáãþí. Áò åîåôÜóïõìå ôñåéò ðåñéðôþóåéò üðïõ ï óõíôïíéóìüò ôùí
óõíáëëáãþí åßíáé áðáñáßôçôïò êáé ìðïñåß íá åðéëýóåé óçìáíôéêÜ ðñïâëÞìáôá
ðïõ åìöáíßæïíôáé áðü ôçí ôáõôü÷ñïíç åêôÝëåóç ôùí óõíáëëáãþí.
Óôçí ðñþôç ðåñßðôùóç åîåôÜæïõìå ôï ðñüâëçìá ôçò ÷áìÝíçò åíçìÝñùóçò
(lost update problem). Ôï ðñüâëçìá áõôü ìðïñåß íá åìöáíéóèåß üôáí äýï óõíáë-
ëáãÝò ðñáãìáôïðïéïýí áíÜãíùóç êáé áðïèÞêåõóç óôá ßäéá äåäïìÝíá. ¸óôù ïé
384 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

R e a d ( A ) ;

S u m : = 0 ;

R e a d ( A ) ;

A : = A  N ;

R e a d ( A ) ;

A : = A  N ;

S u m : = S u m + A ;

W r i t e ( A ) ;

R e a d ( A ) ;

R e a d ( A ) ;

A : = A + M ;

R e a d ( X ) ;

A : = A + M ;

X : = X  N ;

W r i t e ( A ) ;
.

W r i t e ( A ) ;

W r i t e ( X ) ;

R e a d ( B ) ;

R e a d ( X ) ;

W r i t e ( A ) ; R e a d ( B ) ;

u m : = u m + X ;

s s

R e a d ( Y ) ;

B : = B + N ;

u m : = u m + Y ;

s s

W r i t e ( B ) ;

R e a d ( Y ) ;

Y : = Y + N ;

ς ς ς

ο ο ο

W r i t e ( Y ) ;

ό ν ό ν ό ν

ρ ρ ρ

χ χ χ

( α ) Χ α + έ ν η Ε ν η + έ ρ ω σ η ( β ) Λ α ν θ α σ + έ ν η Α ν ά γ ν ω σ η ( γ ) Λ α ν θ α σ + έ ν η Ά θ ρ ο ι σ η

Ó÷Þìá 15.2: Ôñßá ðñïâëÞìáôá áðü ôçí ôáõôü÷ñïíç åêôÝëåóç óõíáëëáãþí.

äýï óõíáëëáãÝò ðïõ áðåéêïíßæïíôáé óôï Ó÷Þìá 15.2á üðïõ ðáñïõóéÜæåôáé ç áë-
ëçëïõ÷ßá åêôÝëåóçò ôùí åíôïëþí ôùí äýï óõíáëëáãþí. Ç óõíáëëáãÞ Ó2 äéáâÜæåé
ôçí ôéìÞ ôïõ A ðñéí íá êáôá÷ùñéóèåß ç íÝá ôéìÞ áðü ôç Ó1, êáé áðïèçêåýåé ôç
íÝá ôéìÞ ôïõ A óôç ÂÄ ìåôÜ áðü ôç Ó1. Ôï áðïôÝëåóìá ôçò åêôÝëåóçò áõôÞò åßíáé
üôé ç åíçìÝñùóç ôïõ A áðü ôç Ó1 Ý÷åé ÷áèåß.
Ôï äåýôåñï ðñüâëçìá ðïõ åîåôÜæïõìå åßíáé ôï ðñüâëçìá ôçò ëáíèáóìÝíçò
áíÜãíùóçò (dirty read), ôï ïðïßï áðåéêïíßæåôáé óôï Ó÷Þìá 15.2â. Ôï ðñüâëçìá
áõôü åìöáíßæåôáé üôáí ìßá óõíáëëáãÞ ðñáãìáôïðïéåß áëëáãÝò óôá äåäïìÝíá êáé
ãéá êÜðïéï ëüãï áðïôõã÷Üíåé. Ðñéí ôçí åðáíáöïñÜ ôùí äåäïìÝíùí óôçí áñ-
÷éêÞ êáôÜóôáóç êÜðïéá Üëëç óõíáëëáãÞ äéáâÜæåé ôá äåäïìÝíá ìå áðïôÝëåóìá
íá ðñáãìáôïðïéåßôáé ìßá ëáíèáóìÝíç áíÜãíùóç. Óôï ðáñÜäåéãìá ôïõ ó÷Þìáôïò,
ç óõíáëëáãÞ Ó1 áëëÜæåé ôçí ôéìÞ ôïõ A êáé Ýóôù üôé áìÝóùò ìåôÜ áðïôõã÷Üíåé.
ÁìÝóùò ìåôÜ, ç óõíáëëáãÞ Ó2 äéáâÜæåé ôçí ôéìÞ ôïõ A ðñïóèÝôåé ôï M êáé óôç
óõíÝ÷åéá áðïèçêåýåé ôç íÝá ôéìÞ ôïõ A. Ç ôéìÞ ôïõ A ðïõ äéáâÜæåôáé áðü ôç Ó2
åßíáé ëáíèáóìÝíç, äéüôé ç Ó1 Ý÷åé áðïôý÷åé êáé åðïìÝíùò, ç ôéìÞ ôïõ A Ýðñåðå
íá Ý÷åé áðïêáôáóôáèåß ìå ôçí ðñïçãïýìåíç ôéìÞ (ðñéí ôçí áëëáãÞ ôçò Ó1).
Ôï ôñßôï ðñüâëçìá ðïõ åîåôÜæïõìå áöïñÜ óôçí ðáñáãùãÞ óõãêåíôñùôéêþí
óôïé÷åßùí (ð.÷., Üèñïéóìá, ìÝóï üñï) áðü ôá äåäïìÝíá ôçò ÂÄ. Ðéï óõãêåêñéìÝíá
åîåôÜæïõìå ôï ðñüâëçìá ôçò ëáíèáóìÝíçò Üèñïéóçò (incorrect summary) ôï ïðïßï
áðåéêïíßæåôáé óôï Ó÷Þìá 15.2ã. Ç óõíáëëáãÞ Ó1 äéáâÜæåé êÜðïéá äåäïìÝíá êáé
ðáñÜãåé ôï Üèñïéóìá ôùí äåäïìÝíùí áõôþí. Ùóôüóï, êÜðïéá äåäïìÝíá åíçìåñþ-
íïíôáé áðü ôç Ó2 ðñéí íá äéáâáóèïýí áðü ôç Ó1 (üðùò ôï X), åíþ êÜðïéá Üëëá
äåäïìÝíá åíçìåñþíïíôáé áðü ôç Ó2 ìåôÜ ôçí áíÜãíùóÞ ôïõò áðü ôç Ó1 (üðùò ôï
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 385

Y ). Ôï ôåëéêü áðïôÝëåóìá ôçò Üèñïéóçò åßíáé ëáíèáóìÝíï.

15.2.1 Óåéñéïðïßçóç Óõíáëëáãþí


Ôï ÓÄÂÄ ðñÝðåé íá óõíôïíßæåé ôçí åêôÝëåóç ôùí ôáõôü÷ñïíùí óõíáëëáãþí ìå
óôü÷ï íá äéáôçñçèåß ç óõíÝðåéá ôùí äåäïìÝíùí. Ï ôñüðïò óõíôïíéóìïý êáé
åêôÝëåóçò åíüò óõíüëïõ óõíáëëáãþí êáëåßôáé ÷ñïíïäéÜãñáììá (schedule). Ôï
ÓÄÂÄ ðñÝðåé íá åðéëÝîåé Ýíá ÷ñïíïäéÜãñáììá ðïõ íá éêáíïðïéåß ôéò áðáéôÞóåéò
óõíÝðåéáò ôùí äåäïìÝíùí.
¸íá ÷ñïíïäéÜãñáììá åêôÝëåóçò óõíáëëáãþí êáëåßôáé óåéñéáêü ÷ñïíïäéÜ-
ãñáììá (serial schedule) üôáí ïé åíôïëÝò ìßáò óõíáëëáãÞò äåí ðåñéðëÝêïíôáé
÷ñïíéêÜ ìå åíôïëÝò ôùí Üëëùí óõíáëëáãþí. Óôï Ó÷Þìá 15.3 ðáñïõóéÜæïíôáé äýï
óåéñéáêÜ ÷ñïíïäéáãñÜììáôá åêôÝëåóçò ôùí óõíáëëáãþí Ó1 êáé Ó2.
Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

R e a d ( A ) ;

R e a d ( A ) ;

A : = A + M ;

A : = A  N ;

W r i t e ( A ) ; W r i t e ( A ) ;

R e a d ( B ) ;

R e a d ( A ) ;

B : = B + N ;

A : = A  N ;

W r i t e ( B ) ;

W r i t e ( A ) ;

R e a d ( B ) ;
R e a d ( A ) ;

A : = A + M ;
B : = B + N ;

W r i t e ( B ) ;

W r i t e ( A ) ;

ς ς

ο ο

ό ν ό ν

ρ ρ

χ χ

Ó÷Þìá 15.3: Äýï óåéñéáêÜ ÷ñïíïäéáãñÜììáôá åêôÝëåóçò óõíáëëáãþí Ó1 êáé Ó2.

Áí õðïèÝóïõìå üôé Ý÷ïõìå n óõíáëëáãÝò, ï áñéèìüò ôùí äõíáôþí óåéñéáêþí


÷ñïíïäéáãñáììÜôùí éóïýôáé ìå ôïí áñéèìü ôùí äéáôÜîåùí ôùí n óõíáëëáãþí.
ÅðïìÝíùò õðÜñ÷ïõí n! äõíáôÜ óåéñéáêÜ ÷ñïíïäéáãñÜììáôá åêôÝëåóçò. ¼ôáí
ïé óõíáëëáãÝò åêôåëïýíôáé ôáõôü÷ñïíá, ôï ÷ñïíïäéÜãñáììá åêôÝëåóçò óõíÞèùò
äåí åßíáé óåéñéáêü. Áõôü óõìâáßíåé åðåéäÞ ï ôñüðïò åêôÝëåóçò ôùí óõíáëëáãþí
åîáñôÜôáé êáé áðü ôï ëåéôïõñãéêü óýóôçìá, ðïõ äéáìïéñÜæåé ôïõò ðüñïõò (CPU,
äßóêï) ìåôáîý ôùí óõíáëëáãþí. Ï ôñüðïò åêôÝëåóçò ôùí óõíáëëáãþí ïñßæåôáé
áðü ôç ìÝèïäï ÷ñïíïäñïìïëüãçóçò ðïõ ÷ñçóéìïðïéåß ôï ëåéôïõñãéêü óýóôçìá êáé
åðïìÝíùò äåí ìðïñïýìå íá ãíùñßæïõìå ìå áêñßâåéá ôï ÷ñüíï åêôÝëåóçò ôçò êÜèå
åíôïëÞò ìßáò óõíáëëáãÞò. Ôï åñþôçìá ðïõ ðñïêýðôåé åßíáé ìå ðïéïí ôñüðï ôï
ÓÄÂÄ èá åããõçèåß üôé ôï åðéëåãüìåíï ÷ñïíïäéÜãñáììá äéáôçñåß ôç óõíÝðåéá ôùí
äåäïìÝíùí ôçò ÂÄ. Ãéá íá óõìâåß áõôü èá ðñÝðåé ôï ÷ñïíïäéÜãñáììá åêôÝëå-
386 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

óçò óõíáëëáãþí íá åßíáé éóïäýíáìï ìå êÜðïéï óåéñéáêü ÷ñïíïäéÜãñáììá. Äýï


÷ñïíïäéáãñÜììáôá êáëïýíôáé éóïäýíáìá áí ìåôÜ ôçí åêôÝëåóÞ ôïõò åðéöÝñïõí
ôéò ßäéåò áëëáãÝò óôç ÂÄ. Ç ðáñáãùãÞ åíüò ÷ñïíïäéáãñÜììáôïò åêôÝëåóçò óõ-
íáëëáãþí éóïäýíáìïõ ìå Ýíá óåéñéáêü ÷ñïíïäéÜãñáììá êáëåßôáé óåéñéïðïßçóç
(serializability) êáé Ý÷åé äýï ìïñöÝò: á) óåéñéïðïßçóç óýãêñïõóçò (conflict seri-
alizability) êáé â) óåéñéïðïßçóç üøçò (view serializability). Óôç ìåëÝôç ðïõ áêï-
ëïõèåß åóôéÜæïõìå óôéò åíôïëÝò áíÜãíùóçò (read) êáé áðïèÞêåõóçò (write). Ïé
õðüëïéðåò åíôïëÝò ìßáò óõíáëëáãÞò äåí åðçñåÜæïõí ôç óåéñéïðïßçóç.

Óåéñéïðïßçóç Óýãêñïõóçò
ÈåùñÞóôå Ýíá ÷ñïíïäéÜãñáììá åêôÝëåóçò óõíáëëáãþí S êáé äýï ÷ñïíéêÜ óõ-
íå÷üìåíåò åíôïëÝò Ei êáé Ej ôùí óõíáëëáãþí Ó1 êáé Ó2 , áíôéóôïß÷ùò. Áí ïé Ei
êáé Ej áíáöÝñïíôáé óå äéáöïñåôéêÜ äåäïìÝíá, ôüôå ç óåéñÜ åêôÝëåóçò ôùí åíôï-
ëþí áõôþí ìðïñåß íá áëëÜîåé ÷ùñßò íá åðçñåÜæåôáé ôï áðïôÝëåóìá. Áí üìùò
ïé åíôïëÝò áíáöÝñïíôáé óôá ßäéá äåäïìÝíá D, ôüôå ç óåéñÜ åêôÝëåóçò Ý÷åé óç-
ìáóßá. Åö’ üóïí ìáò åíäéáöÝñïõí ìüíï ïé åíôïëÝò áíÜãíùóçò êáé áðïèÞêåõóçò
äéáêñßíïõìå ôéò åîÞò ðåñéðôþóåéò:
1. Ei = read(D) êáé Ej = read(D). Ç óåéñÜ åêôÝëåóçò äåí Ý÷åé óçìáóßá
åðåéäÞ êáé ïé äýï óõíáëëáãÝò äéáâÜæïõí ôá ßäéá äåäïìÝíá.

2. Ei = read(D) êáé Ej = write(D). Áí ç Ei åêôåëåóèåß ðñéí ôçí Ej , ôüôå


ç íÝá ôéìÞ ðïõ èÝôåé ç Ej óôï D äåí åßíáé ïñáôÞ áðü ôçí Ei . Áí ç Ej
åêôåëåóèåß ðñéí áðü ôçí Ei , ôüôå ç Ei èá äéáâÜóåé ôç íÝá ôéìÞ ðïõ èÝôåé ç
Ej . ÅðïìÝíùò, ç óåéñÜ åêôÝëåóçò ôùí åíôïëþí Ý÷åé óçìáóßá ãéá ôçí ðïñåßá
ôçò åêôÝëåóçò.

3. Ei = read(D) êáé Ej = write(D). Ç ðåñßðôùóç áõôÞ åßíáé üìïéá ìå ôçí


ðñïçãïýìåíç.

4. Ei = write(D) êáé Ej = write(D). ÖáéíïìåíéêÜ ç óåéñÜ åêôÝëåóçò äåí


Ý÷åé óçìáóßá. Ùóôüóï, ç ôéìÞ ôïõ D ðïõ èá äéáâáóèåß áðü ôçí åðüìåíç
åíôïëÞ áíÜãíùóçò åîáñôÜôáé áðü ôï ðïéÜ åíôïëÞ áðïèÞêåõóçò åêôåëÝóèçêå
ôåëåõôáßá.
ÐáñáôçñÞóôå üôé ç ìïíáäéêÞ ðåñßðôùóç üðïõ ç óåéñÜ åêôÝëåóçò äåí åðçñåÜæåé ôï
áðïôÝëåóìá ôïõ ÷ñïíïäéáãñÜììáôïò åßíáé üôáí êáé ïé äýï åíôïëÝò åßíáé åíôïëÝò
áíÜãíùóçò. Áí ôïõëÜ÷éóôïí ìßá åíôïëÞ åßíáé åíôïëÞ áðïèÞêåõóçò, ôüôå ïé åíôïëÝò
Ei êáé Ej âñßóêïíôáé óå óýãêñïõóç (conflict).
Áí ïé åíôïëÝò Ei êáé Ej äåí âñßóêïíôáé óå óýãêñïõóç, ôüôå ìðïñïýìå íá
áëëÜîïõìå ôç óåéñÜ åêôÝëåóçò êáé íá äçìéïõñãÞóïõìå Ýíá íÝï ÷ñïíïäéÜãñáììá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 387

åêôÝëåóçò S 0 . Ôï ÷ñïíïäéÜãñáììá S 0 åßíáé éóïäýíáìï ìå ôï S åðåéäÞ üëåò ïé


åíôïëÝò äéáôçñïýí ôçí ßäéá óåéñÜ åêôüò áðü ôéò äýï åíôïëÝò ôùí ïðïßùí ç óåéñÜ
åêôÝëåóçò Ý÷åé áëëÜîåé. Áí Ýíá ÷ñïíïäéÜãñáììá åêôÝëåóçò S ìðïñåß íá ìåôá-
ó÷çìáôéóèåß óå Ýíá Üëëï ÷ñïíïäéÜãñáììá S 0 ÷ñçóéìïðïéþíôáò áëëáãÝò óôç óåéñÜ
åêôÝëåóçò ôùí åíôïëþí ôüôå ôá S êáé S 0 êáëïýíôáé éóïäýíáìá ùò ðñïò ôéò óõ-
ãêñïýóåéò (conflict equivalent). Ôï ÷ñïíïäéÜãñáììá S êáëåßôáé óåéñéïðïéÞóéìï
ùò ðñïò ôéò óõãêñïýóåéò áí åßíáé éóïäýíáìï ùò ðñïò ôéò óõãêñïýóåéò ìå Ýíá
óåéñéáêü ÷ñïíïäéÜãñáììá.
Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

R e a d (

X
R e a d ( R e a d (

X ) ; X ) ;

W r i t e (
) ;

X
W r i t e ( W r i t e (

X ) ; X ) ;

R e a d (
) ;

R e a d (

X ) ;
R e a d (

X ) ;
Y ) ;

W r i t e (

W r i t e (

X R e a d (
Y ) ;

Y
) ;

R e a d (

X
) ;

R e a d (

Y ) ;
W r i t e (
) ;

X
W r i t e (

W r i t e (

Y ) ;

R e a d (
X ) ;

Y
) ;

R e a d ( W r i t e (

Y Y
) ;

W r i t e (

Y
) ; ) ;

W r i t e (

Y
) ;

R e a d (

Y
) ;

) ;

W r i t e (

ο
ς

ο
Y ) ;
ς

ό ν ό ν ό ν

ρ ρ ρ

χ χ χ

( α ( β ( γ

) ) )

Ó÷Þìá 15.4: ÌåôáôñïðÞ ÷ñïíïäéáãñÜììáôïò ìå óåéñéïðïßçóç óýãêñïõóçò.

ÈåùñÞóôå ôï ÷ñïíïäéÜãñáììá åêôÝëåóçò ôïõ Ó÷Þìáôïò 15.4á. ÐáñáôçñÞóôå


üôé ç åíôïëÞ Write(X) ôçò óõíáëëáãÞò Ó2 äåí óõãêñïýåôáé ìå ôçí åíôïëÞ Read(Y )
ôçò Ó1, åðïìÝíùò ìðïñïýìå íá áëëÜîïõìå ôç óåéñÜ åêôÝëåóçò. Ôï éóïäýíáìï ÷ñï-
íïäéÜãñáììá ðïõ ðñïêýðôåé ðáñïõóéÜæåôáé óôï Ó÷Þìá 15.4â. Áí óõíå÷ßóïõìå ôçí
ßäéá äéáäéêáóßá áëëÜæïíôáò ôç óåéñÜ åêôÝëåóçò åíôïëþí ðïõ äåí óõãêñïýïíôáé,
öèÜíïõìå ôåëéêÜ óôï ÷ñïíïäéÜãñáììá åêôÝëåóçò ôïõ Ó÷Þìáôïò 15.4ã, ôï ïðïßï
åßíáé óåéñéáêü. ÅðïìÝíùò, Ý÷ïõìå äåßîåé üôé ôï áñ÷éêü ÷ñïíïäéÜãñáììá åßíáé
éóïäýíáìï ìå Ýíá óåéñéáêü ÷ñïíïäéÜãñáììá. Åßíáé üëá ôá ÷ñïíïäéáãñÜììáôá
éóïäýíáìá ìå êÜðïéï óåéñéáêü; Ç áðÜíôçóç åßíáé áñíçôéêÞ êáé óôï Ó÷Þìá 15.5
äßíïõìå Ýíá ðáñÜäåéãìá üðïõ ôï ÷ñïíïäéÜãñáììá (á) äåí åßíáé éóïäýíáìï ïýôå
ìå ôï (â) ïýôå ìå ôï (ã).

Óåéñéïðïßçóç ¼øçò
¸óôùóáí äýï ÷ñïíïäéáãñÜììáôá S êáé S 0 ðïõ ðåñéÝ÷ïõí ôá ßäéá óýíïëá óõíáë-
ëáãþí. Ôá S êáé S 0 Êáëïýíôáé éóïäýíáìá ùò ðñïò ôçí üøç (view equivalent) áí
ðëçñïýíôáé ïé åîÞò êáíüíåò:
• Ãéá êÜèå óôïé÷åßï äåäïìÝíùí D, áí ç óõíáëëáãÞ Ói äéáâÜæåé ôçí áñ÷éêÞ
388 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

R e a d ( X ) ; R e a d ( X ) ; W r i t e ( X ) ;

R e a d ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

ς ς ς

ο ο ο

ό ν ό ν ό ν

ρ ρ ρ

χ χ χ

( α ) ( β ) ( γ )

Ó÷Þìá 15.5: ×ñïíïäéÜãñáììá ðïõ äåí óåéñéïðïéåßôáé.

ôéìÞ ôïõ D óôï ÷ñïíïäéÜãñáììá S, ôüôå ç óõíáëëáãÞ Ói ðñÝðåé åðßóçò íá


äéáâÜæåé ôçí áñ÷éêÞ ôéìÞ ôïõ D óôï ÷ñïíïäéÜãñáììá S 0 .
• Ãéá êÜèå óôïé÷åßï äåäïìÝíùí D, áí ç óõíáëëáãÞ Ói åêôåëåß ôçí åíôïëÞ
Read(D) óôï ÷ñïíïäéÜãñáììá S êáé áõôÞ ç ôéìÞ Ý÷åé ðáñá÷èåß áðü ôç
óõíáëëáãÞ Ój , ôüôå ç Ói ðñÝðåé åðßóçò íá äéáâÜóåé ôçí ôéìÞ ðïõ ðáñÜãåé
ç Ój óôï ÷ñïíïäéÜãñáììá S 0 .
• Ãéá êÜèå óôïé÷åßï äåäïìÝíùí D, ç óõíáëëáãÞ ðïõ åêôåëåß ôçí ôåëåõôáßá
åíôïëÞ Write(D) óôï ÷ñïíïäéÜãñáììá S, ðñÝðåé íá åêôåëåß ôçí ôåëåõôáßá
åíôïëÞ Write(D) êáé óôï ÷ñïíïäéÜãñáììá S 0 .
Ïé ðñþôïé äýï êáíüíåò åããõþíôáé üôé ïé óõíáëëáãÝò êáé óôá äýï ÷ñïíïäéá-
ãñÜììáôá èá äéáâÜóïõí ôá ßäéá äåäïìÝíá êáé åðïìÝíùò èá åêôåëÝóïõí ôéò ßäéåò
ëåéôïõñãßåò óôá äåäïìÝíá. Ï ôñßôïò êáíüíáò, óå óõíäõáóìü ìå ôïõò äýï ðñþôïõò,
åããõÜôáé üôé ôï áðïôÝëåóìá ôçò óõíïëéêÞò åêôÝëåóçò ôùí óõíáëëáãþí èá åßíáé
ôï ßäéï êáé ãéá ôá äýï ÷ñïíïäéáãñÜììáôá êáé åðïìÝíùò èá åðéöÝñïõí ôï ßäéï
ôåëéêü áðïôÝëåóìá óôç ÂÄ. ¸íá ÷ñïíïäéÜãñáììá S êáëåßôáé óåéñéïðïéÞóéìï ùò
ðñïò ôçí üøç (view serializable) áí åßíáé éóïäýíáìï ùò ðñïò ôçí üøç ìå êÜðïéï
óåéñéáêü ÷ñïíïäéÜãñáììá. Óôï Ó÷Þìá 15.6 áðåéêïíßæïíôáé äýï ÷ñïíïäéáãñÜì-
ìáôá ôá ïðïßá åßíáé éóïäýíáìá ùò ðñïò ôçí üøç. ÅðåéäÞ ôï ÷ñïíïäéÜãñáììá ôïõ
Ó÷Þìáôïò 15.6â åßíáé óåéñéáêü, ôï ÷ñïíïäéÜãñáììá 15.6á åßíáé óåéñéïðïéÞóéìï
ùò ðñïò ôçí üøç.

15.2.2 Ìç÷áíéóìïß Êëåéäþìáôïò


¸íáò áðü ôïõò âáóéêüôåñïõò ìç÷áíéóìïýò óõíôïíéóìïý ôçò åêôÝëåóçò åíüò óõíü-
ëïõ óõíáëëáãþí óôçñßæåôáé óôç ÷ñÞóç êëåéäáñéþí (locks). Ç êëåéäáñéÜ áíôéóôïé-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 389

Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 3 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 3

R e a d ( X ) ;

R e a d ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

W r i t e ( X ) ;

( α ) ( β )

Ó÷Þìá 15.6: ×ñïíïäéÜãñáììá óåéñéïðïéÞóéìï ùò ðñïò ôçí üøç.

÷åß óå Ýíá ôìÞìá äåäïìÝíùí êáé ðñüêåéôáé ãéá ìßá ìåôáâëçôÞ ðïõ ðåñéãñÜöåé ôçí
êáôÜóôáóç ôïõ ôìÞìáôïò ôùí äåäïìÝíùí óå ó÷Ýóç ìå ôéò ëåéôïõñãßåò ðïõ åíåñ-
ãïýí óôá óõãêåêñéìÝíá äåäïìÝíá. Äýï åßíáé ïé âáóéêïß ôýðïé êëåéäáñéþí ðïõ
÷ñçóéìïðïéïýíôáé:

• êëåéäáñéÜ áíÜãíùóçò (read lock) Þ êëåéäáñéÜ äéáìïéñáóìïý (shared lock)


ðïõ åðéôñÝðåé óå ìßá óõíáëëáãÞ íá äéáâÜóåé ôá äåäïìÝíá áëëÜ ü÷é íá ôá
åíçìåñþóåé Þ íá ôá äéáãñÜøåé, êáé

• êëåéäáñéÜ áðïèÞêåõóçò (write lock) Þ áðïêëåéóôéêÞ êëåéäáñéÜ (exclusive


lock) ðïõ åðéôñÝðåé óå ìßá óõíáëëáãÞ íá äéáâÜóåé Þ íá åíçìåñþóåé ôá
äåäïìÝíá.

ÊÜèå öïñÜ ðïõ ìßá óõíáëëáãÞ èÝëåé íá ðñïóðåëÜóåé ìßá óåëßäá äåäïìÝ-
íùí æçôÜ íá ôçò ÷ïñçãçèåß ìßá êëåéäáñéÜ. ÅðåéäÞ ç áíÜãíùóç ôçò ßäéáò óåëßäáò
äåäïìÝíùí áðü ðïëëÝò óõíáëëáãÝò äåí äçìéïõñãåß ðñüâëçìá, åðéôñÝðåôáé íá ÷ï-
ñçãçèïýí ðïëëÝò êëåéäáñéÝò áíÜãíùóçò óå ðïëëÝò óõíáëëáãÝò. ÁíôéèÝôùò, ìßá
êëåéäáñéÜ áðïèÞêåõóçò ìðïñåß íá ÷ïñçãçèåß ìüíï óå ìßá óõíáëëáãÞ, äéüôé äåí
åðéôñÝðåôáé óå ðïëëÝò óõíáëëáãÝò íá åíçìåñþíïõí ôáõôü÷ñïíá ôçí ßäéá óåëßäá
äåäïìÝíùí. ¸ôóé, ãéá üóï äéÜóôçìá ìßá óõíáëëáãÞ Ý÷åé êëåéäáñéÜ áðïèÞêåõ-
óçò ãéá ìßá óåëßäá äåäïìÝíùí äåí åðéôñÝðåôáé ç ÷ïñÞãçóç êëåéäáñéÜò óå Üëëåò
óõíáëëáãÝò. Ï ìç÷áíéóìüò êëåéäþìáôïò ëåéôïõñãåß ùò åîÞò:

• Ìßá óõíáëëáãÞ ðïõ áðáéôåß áíÜãíùóç äåäïìÝíùí æçôÜ áðü ôï óýóôçìá


íá ôçò ÷ïñçãçèåß ìßá êëåéäáñéÜ áíÜãíùóçò. Áí áðáéôåßôáé åíçìÝñùóç äå-
äïìÝíùí, ôüôå æçôÜ ìßá êëåéäáñéÜ áðïèÞêåõóçò.
390 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

• Áí äåí õðÜñ÷åé Üëëç êëåéäáñéÜ ãéá ôç óõãêåêñéìÝíç óåëßäá äåäïìÝíùí,


ôüôå ç êëåéäáñéÜ ÷ïñçãåßôáé óôç óõíáëëáãÞ.

• Áí õðÜñ÷åé Þäç Üëëç êëåéäáñéÜ ðïõ Ý÷åé ÷ïñçãçèåß óå Üëëç óõíáëëáãÞ,


ôüôå ðñáãìáôïðïéåßôáé Ýëåã÷ïò ãéá ôï áí èá ÷ïñçãçèåß ç êëåéäáñéÜ óôç íÝá
óõíáëëáãÞ ç ü÷é. Áí ç óåëßäá äåäïìÝíùí Ý÷åé êëåéäùèåß ìå ÷ñÞóç êëåéäá-
ñéÜò áíÜãíùóçò êáé ç íÝá óõíáëëáãÞ æçôÜ åðßóçò êëåéäáñéÜ áíÜãíùóçò,
ôüôå ôï óýóôçìá åðéôñÝðåé ôç ÷ïñÞãçóç ôçò êëåéäáñéÜò. Óå äéáöïñåôéêÞ
ðåñßðôùóç ç íÝá óõíáëëáãÞ ðñÝðåé íá ðåñéìÝíåé ìÝ÷ñé ç ðñïçãïýìåíç óõ-
íáëëáãÞ ïëïêëçñþóåé ôçí åñãáóßá ìå ôç óåëßäá äåäïìÝíùí êáé áðåëåõèå-
ñþóåé ôçí êëåéäáñéÜ.

• Ìßá óõíáëëáãÞ áðåëåõèåñþíåé ôçí êëåéäáñéÜ üôáí ç åêôÝëåóÞ ôçò ïëïêëç-


ñùèåß åßôå ìå åðéôõ÷ßá åßôå ìå áðïôõ÷ßá. Ïé ìüíéìåò áëëáãÝò óôá äåäïìÝíá
åßíáé ïñáôÝò áðü ôéò õðüëïéðåò óõíáëëáãÝò ìüíï ìåôÜ ôçí áðåëåõèÝñùóç
ôçò êëåéäáñéÜò áðïèÞêåõóçò áðü ôç óõíáëëáãÞ.

ÌåñéêÜ óõóôÞìáôá åðéôñÝðïõí óå ìßá óõíáëëáãÞ íá áëëÜîåé ôïí ôýðï ôçò


êëåéäáñéÜò ðïõ ôçò Ý÷åé ÷ïñçãçèåß. ÈåùñÞóôå ìßá óõíáëëáãÞ ðïõ Ý÷åé ìßá êëåé-
äáñéÜ áíÜãíùóçò óå ìßá óåëßäá äåäïìÝíùí. Áí áñãüôåñá ç óõíáëëáãÞ ðñÝðåé
íá åíçìåñþóåé êÜðïéá äåäïìÝíá ìðïñåß íá æçôÞóåé áíáâÜèìéóç (upgrade) ôçò
êëåéäáñéÜò áðü êëåéäáñéÜ áíÜãíùóçò óå êëåéäáñéÜ áðïèÞêåõóçò. ÁíôéèÝôùò, áí
ç åããñáöÞ ôùí äåäïìÝíùí Ý÷åé ïëïêëçñùèåß áëëÜ ç óõíáëëáãÞ äåí Ý÷åé ïëï-
êëçñþóåé ôçí áíÜãíùóç ôùí äåäïìÝíùí, ôüôå ìðïñåß íá æçôÞóåé õðïâÜèìéóç
(downgrade) ôçò êëåéäáñéÜò áðü áðïèÞêåõóçò óå áíÜãíùóçò.
Ï ìç÷áíéóìüò êëåéäþìáôïò üðùò áíáëýèçêå ðñïçãïõìÝíùò äåí äßíåé ðÜíôïôå
ëýóç óôï ðñüâëçìá ôçò óõíÝðåéáò ôùí äåäïìÝíùí. Ãéá ðáñÜäåéãìá, èåùñÞóôå ôï
÷ñïíïäéÜãñáììá åêôÝëåóçò ôïõ Ó÷Þìáôïò 15.7á. ÐñïóèÝôïíôáò ôéò êáôÜëëçëåò
åíôïëÝò Lock êáé Unlock êáôáëÞãïõìå óôï ÷ñïíïäéÜãñáììá óôï Ó÷Þìá 15.7â.
¸óôù üôé ïé áñ÷éêÝò ôéìÝò ãéá ôá äåäïìÝíá X êáé Y åßíáé X=100 êáé Y =400.
Áí åêôåëåóèåß ðñþôá ç óõíáëëáãÞ Ó1 êáé ìåôÜ ç Ó2 èá Ý÷ïõìå óôï ôÝëïò ôçò
åêôÝëåóçò êáé ôùí äýï óõíáëëáãþí X=220 êáé Y =330. Áí ç Ó2 åêôåëåóèåß
ðñéí ôç Ó1 ôüôå èá Ý÷ïõìå X=210 êáé Y =340. ¼ìùò ç åêôÝëåóç ôïõ ÷ñïíï-
äéáãñÜììáôïò ôïõ ðáñáäåßãìáôïò äßíåé X=220 êáé Y =340. Áõôü óçìáßíåé üôé
ôï ÷ñïíïäéÜãñáììá äåí åßíáé óåéñéïðïéÞóéìï. Ôï ðñüâëçìá åíôïðßæåôáé óôïí
ôñüðï äÝóìåõóçò êáé áðåëåõèÝñùóçò ôùí êëåéäáñéþí áðü ôéò óõíáëëáãÝò. Ç
áõèáßñåôç äÝóìåõóç Þ áðåëåõèÝñùóç êëåéäáñéþí ìðïñåß íá äçìéïõñãÞóåé óï-
âáñÜ ðñïâëÞìáôá óôç óõíÝðåéá ôùí äåäïìÝíùí. ¸íáò ìç÷áíéóìüò êëåéäþìáôïò
ðñÝðåé íá ðëçñåß ïñéóìÝíïõò êáíüíåò ðïõ íá åããõþíôáé ôç óõíÝðåéá ôùí äåäïìÝ-
íùí. Ïé êáíüíåò áõôïß ïñßæïõí Ýíá ðñùôüêïëëï êëåéäþìáôïò (locking protocol)
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 391

Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

R e a d ( X ) ; L o c k # W ( X ) ;

X : = X + 1 0 0 ; R e a d ( X ) ;

W r i t e ( X ) ; X : = X + 1 0 0 ;

W r i t e ( X ) ;

R e a d ( X ) ;

U n l o c k # W ( X ) ;

X : = X * 1 . 1 ;

L o c k # W ( X ) ;

W r i t e ( X ) ;

R e a d ( X ) ;

R e a d ( Y ) ;

X : = X * 1 . 1 ;

Y : = Y * 1 . 1 ;

W r i t e ( X ) ;

W r i t e ( Y ) ;

U n l o c k # W ( X ) ;

R e a d ( Y ) ;

L o c k # W ( Y )

Y : = Y # 1 0 0 ;

R e a d ( Y ) ;

W r i t e ( Y ) ;

Y : = Y * 1 . 1 ;

W r i t e ( Y ) ;

U n l o c k # W ( Y ) ;

L o c k # W ( Y ) ;

R e a d ( Y ) ;

Y : = Y # 1 0 0 ;

W r i t e ( Y ) ;

ς ς

ο ο

U n l o c k # W ( Y ) ;

ό ν ό ν

ρ ρ

χ χ

( α ) ( β )

Ó÷Þìá 15.7: ×ñÞóç ìç÷áíéóìïý êëåéäþìáôïò ìå ëáíèáóìÝíï áðïôÝëåóìá.

êáé åããõþíôáé üôé ôï ÷ñïíïäéÜãñáììá ðïõ ðñïêýðôåé åßíáé óåéñéïðïéÞóéìï. Óôç


óõíÝ÷åéá åîåôÜæïõìå äýï áðü ôá âáóéêüôåñá ðñùôüêïëëá êëåéäþìáôïò.

Ðñùôüêïëëï Êëåéäþìáôïò Äýï ÖÜóåùí


Ôï ðñùôüêïëëï êëåéäþìáôïò äýï öÜóåùí (2-phase locking protocol) ïñßæåé äýï
öÜóåéò ëåéôïõñãßáò ìßáò óõíáëëáãÞò:

1. öÜóç áíÜðôõîçò (growing phase) üðïõ ç óõíáëëáãÞ æçôÜ ôç ÷ïñÞãçóç êëåé-


äáñéþí êáé äåí åðéôñÝðåôáé ç áðåëåõèÝñùóç êëåéäáñéþí,

2. öÜóç óõññßêíùóçò (shrinking phase) üðïõ ç óõíáëëáãÞ áðåëåõèåñþíåé


êëåéäáñéÝò êáé äåí åðéôñÝðåôáé íá æçôÞóåé ôç ÷ïñÞãçóç íÝùí êëåéäáñéþí.

Áðïäåéêíýåôáé üôé áí êÜèå óõíáëëáãÞ éêáíïðïéåß ôïõò êáíüíåò ôïõ ðñùôïêüëëïõ


êëåéäþìáôïò äýï öÜóåùí, ôüôå ôï ÷ñïíïäéÜãñáììá ðïõ ðñïêýðôåé åßíáé ðÜíôïôå
óåéñéïðïéÞóéìï ùò ðñïò ôéò óõãêñïýóåéò. Ç áðüäåéîç âñßóêåôáé óôçí åñãáóßá
[Eswaran 1976].
Óôçí áñ÷Þ ôïõ êåöáëáßïõ ðåñéãñÜøáìå ôñßá ðñïâëÞìáôá ðïõ ìðïñïýí íá
åìöáíéóèïýí êáôÜ ôçí ôáõôü÷ñïíç åêôÝëåóç óõíáëëáãþí: á) ÷áìÝíç åíçìÝñùóç,
392 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

â) ëáíèáóìÝíç áíÜãíùóç êáé ã) ëáíèáóìÝíç Üèñïéóç. Ðáñáäåßãìáôá óõíáë-


ëáãþí ðïõ ðáñïõóéÜæïõí ôá ðñïâëÞìáôá áõôÜ áðåéêïíßæïíôáé óôï Ó÷Þìá 15.2.
Áò åîåôÜóïõìå ðùò ìðïñåß ôï ðñùôüêïëëï äýï öÜóåùí íá äþóåé ëýóç óôá äýï
ðñþôá. Ç åöáñìïãÞ ôïõ ðñùôïêüëëïõ ãéá ôï ôñßôï ðñüâëçìá áöÞíåôáé ùò Üóêçóç
ãéá ôïí áíáãíþóôç. Óôï Ó÷Þìá 15.8 ðáñïõóéÜæåôáé ç åöáñìïãÞ ôïõ ðñùôïêüë-
ëïõ äýï öÜóåùí ãéá ôï ðñüâëçìá ôçò ÷áìÝíçò åíçìÝñùóçò êáé ôçò ëáíèáóìÝíçò
áíÜãíùóçò.
Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2 Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

L o c k W ( A ) ;

L o c k W ( A ) ;

R e a d ( A ) ;

R e a d ( A ) ;

L o c k W ( A ) ;

A : = A N ;

A : = A N ;

W A I T ;

W r i t e ( A ) ;

W r i t e ( A ) ;

L o c k W ( A ) ;

L o c k W ( B ) ;
W A I T ;

W A I T ;

R e a d ( B ) ;
W A I T ;

W A I T ;

W A I T ;

B : = B + N ;

W A I T ;

W A I T ;

W r i t e ( B ) ;

W A I T ;

L o c k R ( B ) ;

W A I T ;

U n l o c k W ( B ) ;

W A I T ;

R e a d ( B ) ;

W A I T ;

U n l o c k W ( A ) ;

W A I T ;

U n l o c k R ( B ) ;

R e a d ( A ) ;

W A I T ;

R O L L B A C K ;

A : = A + M ;

W A I T ;

U n l o c k W ( A ) ;

W r i t e ( A ) ;

R e a d ( A ) ;

U n l o c k W ( A ) ;

ς ς

A : = A + M ;

ο ο

W r i t e ( A ) ;

ό ν ό ν

ρ ρ

U n l o c k W ( A ) ;

χ χ

( α ) Χ α , έ ν η Ε ν η , έ ρ ω σ η ( β ) Λ α ν θ α σ , έ ν η Α ν ά γ ν ω σ η

Ó÷Þìá 15.8: ÅöáñìïãÞ ðñùôïêüëëïõ êëåéäþìáôïò äýï öÜóåùí ãéá ÷ñïíïäéá-


ãñÜììáôá Ó÷Þìáôïò 15.2á êáé 15.2â.

Ðñùôüêïëëï Êëåéäþìáôïò ÂáóéóìÝíï óå ÃñÜöï


Áí äåí õðÜñ÷ïõí äéáèÝóéìåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôç óåéñÜ ðñáãìáôïðïßçóçò
ôùí ðñïóðåëÜóåùí ôùí äåäïìÝíùí áðü êÜèå óõíáëëáãÞ, ôüôå ç ÷ñÞóç ôïõ ðñù-
ôïêüëëïõ êëåéäþìáôïò äýï öÜóåùí êñßíåôáé áðáñáßôçôç ãéá ôçí ðáñáãùãÞ åíüò
óåéñéïðïéÞóéìïõ ùò ðñïò ôéò óõãêñïýóåéò ÷ñïíïäéáãñÜììáôïò. Ùóôüóï, óå ðïë-
ëÝò ðåñéðôþóåéò õðÜñ÷ïõí ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôïí ôñüðï ðñïóðÝëáóçò
ôùí äåäïìÝíùí êáé ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôçí ðëçñïöïñßá áõôÞ ãéá ôçí
ðáñáãùãÞ åíüò óåéñéïðïéÞóéìïõ ÷ñïíïäéáãñÜììáôïò ÷ùñßò íá ÷ñçóéìïðïéçèåß
ðñùôüêïëëï äýï öÜóåùí. Ç áðëïýóôåñç ìïñöÞ ðëçñïöïñßáò ðïõ ìðïñïýìå íá
åîÜãïõìå åßíáé ç óåéñÜ ðñáãìáôïðïßçóç ôùí ðñïóðåëÜóåùí ôùí äåäïìÝíùí áðü
ôéò óõíáëëáãÝò.
¸óôù D = {d1 , ..., dn } Ýíá óýíïëï n äåäïìÝíùí ðïõ ðñïóðåëáýíïíôáé áðü
ôéò óõíáëëáãÝò åßôå ãéá áíÜãíùóç åßôå ãéá áðïèÞêåõóç. Ïñßæïõìå ìßá ìåñéêÞ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 393

äéÜôáîç óôï óýíïëï D ùò åîÞò: ôá äåäïìÝíá di êáé dj óõíäÝïíôáé ìå ôç ó÷Ýóç ⇒


áí êÜèå óõíáëëáãÞ ðïõ ðñïóðåëáýíåé ôá di êáé dj ðñïóðåëáýíåé ôï di ðñéí áðü
ôï dj . Ç ìåñéêÞ äéÜôáîç ðïõ ïñßóèçêå åðéôñÝðåé ôçí áíáðáñÜóôáóç ôïõ óõíü-
ëïõ ùò êáôåõèõíüìåíï Üêõêëï ãñÜöï (directed acyclic graph). ÅéäéêÞ ðåñßðôùóç
ôïõ êáôåõèõíüìåíïõ Üêõêëïõ ãñÜöïõ åßíáé ï äåíäñéêüò ãñÜöïò, üðïõ åöáñìü-
æåôáé ôï äåíäñéêü ðñùôüêïëëï (tree protocol) ðïõ õðïóôçñßæåé ìüíï êëåéäáñéÝò
áíÜãíùóçò. Ôï äåíäñéêü ðñùôüêïëëï Ý÷åé ôïõò åîÞò êáíüíåò:

• Ç êÜèå óõíáëëáãÞ ìðïñåß íá æçôÞóåé ÷ïñÞãçóç ôçò ðñþôçò êëåéäáñéÜò óå


ïðïéïäÞðïôå äåäïìÝíï,

• Ìßá óõíáëëáãÞ ìðïñåß íá æçôÞóåé ôç ÷ïñÞãçóç êëåéäáñéÜò óôï äåäïìÝíï


dj ìüíï áí Ý÷åé Þäç êëåéäþóåé ôï äåäïìÝíï di êáé éó÷ýåé di ⇒ dj ,

• Ìßá óõíáëëáãÞ ìðïñåß íá áðåëåõèåñþóåé ìßá êëåéäáñéÜ ïðïéáäÞðïôå ÷ñï-


íéêÞ óôéãìÞ,

• ¸íá äåäïìÝíï ðïõ Ý÷åé êëåéäùèåß áðü ìßá óõíáëëáãÞ êáé óôç óõíÝ÷åéá ç
êëåéäáñéÜ Ý÷åé áðåëåõèåñùèåß, äåí åðéôñÝðåôáé íá êëåéäùèåß ãéá äåýôåñç
öïñÜ áðü ôç ßäéá óõíáëëáãÞ.

Áðïäåéêíýåôáé üôé êÜèå ÷ñïíïäéÜãñáììá ðïõ éêáíïðïéåß ôïõò êáíüíåò ôïõ


äåíäñéêïý ðñùôïêüëëïõ åßíáé óåéñéïðïéÞóéìï ùò ðñïò ôéò óõãêñïýóåéò. Óôï
Ó÷Þìá 15.9 áðåéêïíßæåôáé Ýíá ðáñÜäåéãìá äåíäñéêïý êáôåõèõíüìåíïõ ãñÜöïõ
êáé äýï óõíáëëáãÝò, åê ôùí ïðïßùí ç Ó2 ðáñáâéÜæåé ôï äåýôåñï êáíüíá ôïõ
äåíäñéêïý ðñùôïêüëëïõ.

Συναλλαγή Σ1 Συναλλαγή Σ2
d5 Εδώ έχουµε παραβίαση του
Lock-W(d5) δεύτερου κανόνα του δενδρικού
Lock-W(d9);
Read(d5) πρωτοκόλλου διότι ο προηγούµενος
Read(d9);
Lock(d2); κόµβος του δένδρου (d3) δεν έχει
Lock-W(d6);
d2 d4 d2 := d2 + d5; κλειδωθεί από τη συναλλαγή.
Read(d6);
Write(d2); d6 := d6 + d9;
Unlock-W(d5); Write(d6);
Unlock-W(d2); Unlock-W(d6);
d3 d8 d9 Unlock-W(d9);

d6 d7

Ó÷Þìá 15.9: ÅöáñìïãÞ äåíäñéêïý ðñùôïêüëëïõ êëåéäþìáôïò.


394 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

15.2.3 Äéá÷åßñéóç Áäéåîüäïõ


Ïé ìç÷áíéóìïß åëÝã÷ïõ ôáõôü÷ñïíùí ðñïóðåëÜóåùí ïé ïðïßïé âáóßæïíôáé óå ðñù-
ôüêïëëá êëåéäþìáôïò åíäÝ÷åôáé íá öÝñïõí ôï óýíïëï ôùí óõíáëëáãþí óå áäéÝ-
îïäï (deadlock). ¸íá óýíïëï óõíáëëáãþí âñßóêåôáé óå áäéÝîïäï üôáí êáìßá
óõíáëëáãÞ äåí åßíáé åöéêôü íá óõíå÷ßóåé ôçí åêôÝëåóÞ ôçò, ëüãù áíáìïíÞò ãéá
ôçí áðåëåõèÝñùóç êëåéäáñéþí. Áí üëåò ïé óõíáëëáãÝò áíáìÝíïõí ôçí áðåëåõèÝ-
ñùóç êÜðïéáò êëåéäáñéÜò áõôü äåí ðñüêåéôáé íá óõìâåß ðïôÝ, ìå áðïôÝëåóìá
êáìßá óõíáëëáãÞ íá ìçí ìðïñåß íá óõíå÷ßóåé ôçí åêôÝëåóÞ ôçò. Ôï áäéÝîïäï áðï-
ôåëåß ðáèïëïãéêÞ êáôÜóôáóç êáé ðñÝðåé íá áðïöåýãåôáé, äéüôé óõíÞèùò ïäçãåß óå
áíáãêáóôéêü ôåñìáôéóìü ìßáò óõíáëëáãÞò Ýôóé þóôå ïé õðüëïéðåò íá óõíå÷ßóïõí
ôçí åêôÝëåóÞ ôïõò. Ç äéá÷åßñéóç ôïõ áäéåîüäïõ ðñáãìáôïðïéåßôáé ãåíéêÜ ìå äýï
ìåèüäïõò:
1. áðïöõãÞ áäéåîüäïõ (deadlock prevention), üðïõ ôï óýóôçìá åëÝã÷åé ôçí
ðéèáíüôçôá íá óõìâåß áäéÝîïäï êáé ðñïóðáèåß íá ôï áðïöýãåé, êáé

2. áíáãíþñéóç áäéåîüäïõ êáé åðáíÜêôçóç (deadlock detection and recovery)


üðïõ ôï óýóôçìá åßíáé óå èÝóç íá áíáãíùñßóåé Ýíá áäéÝîïäï êáé ðñïâáßíåé
óå åíÝñãåéåò ãéá ôçí êáôÜñãçóÞ ôïõ.
Áí óå Ýíá óýóôçìá ôá áäéÝîïäá óõìâáßíïõí óõ÷íÜ ôüôå óõíéóôÜôáé ç ðñþôç ìÝ-
èïäïò. Ïé Ýëåã÷ïé ðïõ åêôåëåß ôï óýóôçìá ãéá ôçí áðïöõãÞ ôïõ áäéåîüäïõ åßíáé
÷ñïíïâüñïé. Ãéá ôï ëüãï áõôü, áí ôá áäéÝîïäá äåí óõìâáßíïõí óõ÷íÜ ðñïôéìÜôáé
ç äåýôåñç ìÝèïäïò ãéá ëüãïõò áðüäïóçò.

ÁðïöõãÞ Áäéåîüäïõ
Ìßá áðëÞ ìÝèïäïò ðïõ ÷ñçóéìïðïéåßôáé ãéá ôçí áðïöõãÞ ôïõ áäéåîüäïõ óå Ýíá
óýíïëï óõíáëëáãþí åßíáé ï ïñéóìüò åíüò ìÝãéóôïõ ÷ñïíéêïý äéáóôÞìáôïò ãéá ôçí
áíáìïíÞ ÷ïñÞãçóçò ìßáò êëåéäáñéÜò. Áí åîáíôëçèåß ôï ÷ñïíéêü äéÜóôçìá êáé ç
êëåéäáñéÜ äåí Ý÷åé áêüìç ÷ïñçãçèåß óôç óõíáëëáãÞ, ôï óýóôçìá ôåñìáôßæåé ôç
äéáäéêáóßá êáé ôçí åðáíáäçìéïõñãåß. Ç áðëÞ áõôÞ ìÝèïäïò áðïöõãÞò áäéåîüäïõ
÷ñçóéìïðïéåßôáé áðü ðïëëÜ ÓÄÂÄ ëüãù ôçò áðëüôçôÜò ôçò.
Ìßá Üëëç åíáëëáêôéêÞ ëýóç óôï ðñüâëçìá ôçò áðïöõãÞò áäéåîüäïõ óôçñß-
æåôáé óå ÷ñïíéêÝò óöñáãßäåò (timestamps). Óôçí åñãáóßá [Rosenkrantz 1978]
ðñïôåßíïíôáé äýï áëãüñéèìïé:

• Wait-Die. Óýìöùíá ìå ôç ìÝèïäï áõôÞ åðéôñÝðåé óå ìßá ðáëáéüôåñç óõ-


íáëëáãÞ (ìéêñÞ ÷ñïíéêÞ óöñáãßäá) íá ðåñéìÝíåé ôçí áðåëåõèÝñùóç ìßáò
êëåéäáñéÜò áðü ìßá íåüôåñç (ìåãáëýôåñç ÷ñïíéêÞ óöñáãßäá). ÄéáöïñåôéêÜ,
ç óõíáëëáãÞ ôåñìáôßæåôáé êáé ôï óýóôçìá ôçí åðáíåêêéíåß.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 395

• Wound-Wait. ÅðéôñÝðåôáé óå ìßá íåüôåñç óõíáëëáãÞ íá ðåñéìÝíåé ôçí


åêôÝëåóç ìßáò ðáëáéüôåñçò. Áí ç ðáëáéüôåñç óõíáëëáãÞ æçôÜ ôç ÷ïñÞãçóç
ìßáò êëåéäáñéÜò ðïõ åßíáé äåóìåõìÝíç áðü ìßá íåüôåñç óõíáëëáãÞ, ôüôå ç
íåüôåñç óõíáëëáãÞ ôåñìáôßæåôáé.

Áíáãíþñéóç êáé ÊáôÜñãçóç Áäéåîüäïõ


Ôï óýóôçìá ðñÝðåé íá åßíáé óå èÝóç íá ãíùñßæåé áí Ýíá óýíïëï óõíáëëáãþí
âñßóêåôáé óå áäéÝîïäï. ÅéäéêÜ áí ôï ÓÄÂÄ äåí äéáèÝôåé ìÝèïäï áðïöõãÞò áäéå-
îüäïõ, ç áíáãíþñéóç áäéåîüäïõ èåùñåßôáé áðáñáßôçôç. ÌåôÜ ôçí áíáãíþñéóç
åíüò áäéåîüäïõ ôï óýóôçìá ðñÝðåé íá åðáíáöÝñåé ôï óýíïëï óõíáëëáãþí óå ìßá
êáôÜóôáóç üðïõ íá ìðïñåß íá óõíå÷éóèåß ç åêôÝëåóÞ ôïõò.
Ç áíáãíþñéóç åíüò áäéåîüäïõ ìðïñåß íá äéáðéóôùèåß ìå ôçí áíáðáñÜóôáóç
ôïõ óõíüëïõ ôùí óõíáëëáãþí ìå ôç âïÞèåéá êáôåõèõíüìåíïõ ãñÜöïõ ðïõ êáëåßôáé
ãñÜöïò áíáìïíÞò (wait graph). Ï ãñÜöïò áõôüò áðïôåëåßôáé áðü Ýíá óýíïëï
êïñõöþí V êáé Ýíá óýíïëï áêìþí E. Ãéá êÜèå óõíáëëáãÞ õðÜñ÷åé êáé ìßá
áíôßóôïé÷ç êïñõöÞ óôï ãñÜöï. Áí óôï ãñÜöï õðÜñ÷åé áêìÞ ðïõ áñ÷ßæåé áðü ôçí
êïñõöÞ Ói êáé ôåëåéþíåé óôçí êïñõöÞ Ój , ôüôå áõôü óçìáßíåé üôé ç óõíáëëáãÞ Ói
áíáìÝíåé ìÝ÷ñé ç óõíáëëáãÞ Ój íá áðåëåõèåñþóåé ôçí êëåéäáñéÜ óå Ýíá ôìÞìá
äåäïìÝíùí ðïõ ðñÝðåé íá ðñïóðåëÜóåé ç Ói .
Áí óôï ãñÜöï áíáìïíÞò äåí õðÜñ÷åé êýêëïò, ôüôå äåí õðÜñ÷åé áäéÝîïäï.
ÁíôéèÝôùò, ç ýðáñîç Ýóôù êáé åíüò êýêëïõ óçìáßíåé üôé Ýíá õðïóýíïëï ôùí óõ-
íáëëáãþí âñßóêåôáé óå áäéÝîïäï. ÈåùñÞóôå ãéá ðáñÜäåéãìá ôïõò äýï ãñÜöïõò
áíáìïíÞò ôïõ Ó÷Þìáôïò 15.10. Ï ãñÜöïò 15.10á äåí ðåñéÝ÷åé êýêëï, åíþ ï ãñÜ-
öïò 15.10â ðåñéÝ÷åé Ýíáí êýêëï ðïõ ó÷çìáôßæåôáé áðü ôéò êïñõöÝò Ó2 , Ó3 , Ó8 , Ó9
êáé Ó10 .
Åö’ üóïí ç ýðáñîç êýêëïõ óôï ãñÜöï áíáìïíÞò óõíåðÜãåôáé ôçí ýðáñîç
áäéåîüäïõ ãéá Ýíá õðïóýíïëï óõíáëëáãþí, áñêåß íá ðñáãìáôïðïéåßôáé Ýëåã÷ïò
ôïõ ãñÜöïõ óå ôáêôÜ ÷ñïíéêÜ äéáóôÞìáôá. Ðüóï óõ÷íüò üìùò ðñÝðåé íá åßíáé
ï Ýëåã÷ïò; Áí óõìâáßíïõí óõ÷íÜ áäéÝîïäá ôüóï åðßóçò óõ÷íüò ðñÝðåé íá åßíáé
êáé ï Ýëåã÷ïò ôïõ ãñÜöïõ áíáìïíÞò. Ôï ÓÄÂÄ ìðïñåß íá äéáôçñåß óôáôéóôéêÜ
óôïé÷åßá ãéá ôïí áñéèìü ôùí áäéåîüäùí êáé ôç óõ÷íüôçôá åìöÜíéóÞò ôïõò êáé
áíáëüãùò íá ðñïóäéïñßæåôáé êáé ç óõ÷íüôçôá ôïõ åëÝã÷ïõ ãéá áäéÝîïäï.
Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôé åíáëëáêôéêÝò ëýóåéò õðÜñ÷ïõí ãéá ôçí êáôÜñ-
ãçóç ôïõ áäéåîüäïõ. Ç óõ÷íüôåñá ÷ñçóéìïðïéïýìåíç ìÝèïäïò åßíáé ï ôåñìá-
ôéóìüò ìßáò ç ðåñéóóïôÝñùí óõíáëëáãþí êáé ç åðáíáöïñÜ ôùí äåäïìÝíùí óôçí
êáôÜóôáóç ðïõ âñéóêüôáí ðñéí áðü ôçí åêôÝëåóç ôùí óõíáëëáãþí áõôþí (ROLL-
BACK1 ). Ç ìÝèïäïò áõôÞ áðïôåëåßôáé áðü ôá åîÞò âÞìáôá:
1
Ï üñïò ROLLBACK Ý÷åé áðïäïèåß ùò áêýñùóç Þ ïðéóèïäñüìçóç. Ãéá ëüãïõò êáèéÝñùóçò
396 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

Σ Σ

1 1

Σ Σ

2 3
5

Σ Σ Σ

2 10 6

7
Σ Σ

4 5
Σ Σ Σ

3 9 4

Σ Σ

6 8

(α) άκυκλος γράφος αναµονής (β) γράφος αναµονής µε κύκλο


(χωρίς αδιέξοδο) (ύπαρξη αδιεξόδου)

Ó÷Þìá 15.10: ÃñÜöïò áíáìïíÞò ÷ùñßò êýêëï (á) êáé ìå êýêëï (â).

1. ÅðéëïãÞ óõíáëëáãþí ãéá ROLLBACK. Ôï ðñþôï âÞìá ôçò ìåèüäïõ áöïñÜ


óôçí åðéëïãÞ ìßáò ç ðåñéóóïôÝñùí óõíáëëáãþí ãéá ôéò ïðïßåò ðñÝðåé íá
åêôåëåóèåß ç ëåéôïõñãßá ROLLBACK. Ç åðéëïãÞ ôùí óõíáëëáãþí ðñáã-
ìáôïðïéåßôáé ìå âÜóç ôï åëÜ÷éóôï êüóôïò. Óôïí ðñïóäéïñéóìü ôïõ êüóôïõò
óõììåôÝ÷ïõí ïé åîÞò ðáñÜãïíôåò:

• Ï ìÝ÷ñé óôéãìÞò ÷ñüíïò åêôÝëåóçò ôçò óõíáëëáãÞò êáé ï ÷ñüíïò ðïõ


õðïëåßðåôáé ãéá ôçí ïëïêëÞñùóç ôçò óõíáëëáãÞò.
• Ï áñéèìüò ôùí äåäïìÝíùí ðïõ Ý÷ïõí åíçìåñùèåß áðü ôç óõíáëëáãÞ.
• Ï áñéèìüò ôùí äåäïìÝíùí ðïõ ðñÝðåé íá ðñïóðåëáóèïýí áðü ôç óõ-
íáëëáãÞ.
• Ï áñéèìüò ôùí óõíáëëáãþí üðïõ èá åöáñìïóèåß ç ëåéôïõñãßá ROLL-
BACK.

2. ÅðéëïãÞ óçìåßïõ ROLLBACK. Óôï äåýôåñï âÞìá, ãéá ôéò óõíáëëáãÝò ðïõ
Ý÷ïõí åðéëåãåß ðñÝðåé íá ðñïóäéïñéóèåß ìÝ÷ñé ðïéï óçìåßï èá åöáñìïóèåß
ç ëåéôïõñãßá ROLLBACK. Ç áðëïýóôåñç ëýóç åßíáé íá ãßíåé åðáíáöïñÜ
ôçò óõíáëëáãÞò óôçí áñ÷Þ, êáôáñãþíôáò üëåò ôéò áëëáãÝò ðïõ Ý÷åé åðéöÝ-
ñåé óôá äåäïìÝíá. Ç ëýóç áõôÞ ðïëëÝò öïñÝò Ý÷åé ìåãÜëï êüóôïò, äéüôé
ç óõíáëëáãÞ ìðïñåß íá Ý÷åé åíçìåñþóåé Ýíá ìåãÜëï áñéèìü äåäïìÝíùí.
÷ñçóéìïðïéïýìå ôïí áããëéêü üñï.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 397

ÓõíÞèùò, ôï áäéÝîïäï êáôáñãåßôáé åöáñìüæïíôáò ROLLBACK óôéò ôåëåõ-


ôáßåò åíôïëÝò ôçò óõíáëëáãÞò.

3. ÁðïöõãÞ áôÝñìïíçò áíáìïíÞò. Ç áôÝñìïíç áíáìïíÞ (starvation) åßíáé


Ýíá öáéíüìåíï ðïõ ìðïñåß íá åìöáíéóèåß áí åðéëÝãåôáé óõíå÷þò ç ßäéá
óõíáëëáãÞ ãéá ôçí åöáñìïãÞ ôïõ ROLLBACK. Áõôü óçìáßíåé üôé óõíå-
÷þò ç ßäéá óõíáëëáãÞ åìðïäßæåôáé íá ïëïêëçñþóåé ôçí åêôÝëåóÞ ôçò. Ôï
ÓÄÂÄ ìðïñåß íá áðïôñÝøåé ôçí åðéëïãÞ ôçò ßäéáò óõíáëëáãÞò ðåñéóóüôåñï
áðü Ýíáí áñéèìü åðéëïãþí, äßíïíôáò Ýôóé ôçí åõêáéñßá óôç óõíáëëáãÞ íá
ïëïêëçñþóåé ôçí åðåîåñãáóßá ôçò.

15.2.4 Ìç÷áíéóìüò ×ñïíéêþí Óöñáãßäùí


ÌåëåôÞóáìå óôéò ðñïçãïýìåíåò ðáñáãñÜöïõò ôïí ôñüðï ÷ñÞóçò ôùí ìç÷áíéóìþí
êëåéäþìáôïò ãéá ôçí ðáñáãùãÞ åíüò óåéñéïðïéÞóéìïõ ÷ñïíïäéáãñÜììáôïò ðïõ
åããõÜôáé ôç óõíÝðåéá ôùí äåäïìÝíùí. ¸íáò åíáëëáêôéêüò ìç÷áíéóìüò åëÝã÷ïõ
ôáõôü÷ñïíùí óõíáëëáãþí åßíáé ï ìç÷áíéóìüò ÷ñïíéêþí óöñáãßäùí (timespamps),
ï ïðïßïò Ý÷åé áñêåôÝò äéáöïñÝò ìå ôï ìç÷áíéóìü êëåéäþìáôïò. Ï ìç÷áíéóìüò ÷ñï-
íéêþí óöñáãßäùí äåí ÷ñçóéìïðïéåß êëåéäáñéÝò ãéá ôçí ðñïóôáóßá ìßáò ðåñéï÷Þò
äåäïìÝíùí êáé åðïìÝíùò äåí õðÜñ÷åé ðåñßðôùóç íá äçìéïõñãçèåß áäéÝîïäï. Ç
÷ñïíéêÞ óöñáãßäá (timestamp) åßíáé ìßá ìåôáâëçôÞ ôáõôïðïßçóçò ç ïðïßá ðñïó-
äéïñßæåé ôç ÷ñïíéêÞ óôéãìÞ ôçò áñ÷Þò ôçò åêôÝëåóçò ìßáò óõíáëëáãÞò. Ìßá ÷ñï-
íéêÞ óöñáãßäá ðáñÜãåôáé åßôå áðü ôï ñïëüé ôïõ óõóôÞìáôïò (system clock) åßôå
åíçìåñþíïíôáò ôçí ôéìÞ ìßáò ìåôáâëçôÞò êÜèå öïñÜ ðïõ äçìéïõñãåßôáé ìßá íÝá
óõíáëëáãÞ. Ãéá ìßá óõíáëëáãÞ Ói ç ÷ñïíéêÞ óöñáãßäá óõìâïëßæåôáé ìå TS(Ói ).
¸óôù ìßá óõíáëëáãÞ ç ïðïßá åðéèõìåß ôçí áíÜãíùóç Þ ôçí åíçìÝñùóç ìßáò
óåëßäáò äåäïìÝíùí. Ç ðñïóðÝëáóç åðéôñÝðåôáé ìüíï áí ç ôåëåõôáßá åíçìÝ-
ñùóç óôï óõãêåêñéìÝíï ôìÞìá äåäïìÝíùí ðñáãìáôïðïéÞèçêå áðü ðáëáéüôåñç
óõíáëëáãÞ (ç ïðïßá èá Ý÷åé ìéêñüôåñç ÷ñïíéêÞ óöñáãßäá). Óå äéáöïñåôéêÞ ðåñß-
ðôùóç ðñáãìáôïðïéåßôáé ôåñìáôéóìüò êáé åðáíåêêßíçóç ôçò óõíáëëáãÞò. ÊáôÜ
ôçí åðáíåêêßíçóç ôçò óõíáëëáãÞò äçìéïõñãåßôáé íÝá ÷ñïíéêÞ óöñáãßäá. ×ñï-
íéêÝò óöñáãßäåò ïñßæïíôáé ü÷é ìüíï ãéá ôéò óõíáëëáãÝò áëëÜ êáé ãéá ôá äåäïìÝíá.
Óå êÜèå óåëßäá äåäïìÝíùí áíôéóôïé÷åß ìßá ÷ñïíéêÞ óöñáãßäá áíÜãíùóçò (read
timestamp) êáé ìßá ÷ñïíéêÞ óöñáãßäá áðïèÞêåõóçò (write timestamp). Ïé äýï
÷ñïíéêÝò óöñáãßäåò óõìâïëßæïíôáé ìå timestamp-W êáé timestamp-R áíôéóôïß÷ùò.
Ç ôéìÞ ôçò ÷ñïíéêÞò óöñáãßäáò áíÜãíùóçò åßíáé ç ôéìÞ ôçò ÷ñïíéêÞò óöñáãßäáò
ôçò óõíáëëáãÞò ðïõ ðñáãìáôïðïßçóå ôåëåõôáßá áíÜãíùóç óôç óåëßäá äåäïìÝíùí.
Ç ôéìÞ ôçò ÷ñïíéêÞò óöñáãßäáò áðïèÞêåõóçò åßíáé ç ÷ñïíéêÞ óöñáãßäá ôçò óõíáë-
ëáãÞò ðïõ ðñáãìáôïðïßçóå ôåëåõôáßá åíçìÝñùóç óôç óåëßäá äåäïìÝíùí. ÊÜèå
öïñÜ ðïõ ðñáãìáôïðïéåßôáé áíÜãíùóç Þ áðïèÞêåõóç ôçò óåëßäáò äåäïìÝíùí D,
398 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

åíçìåñþíïíôáé áíáëüãùò êáé ïé ôéìÝò timestamp-W(D) êáé timestamp-R(D). Óôç


óõíÝ÷åéá ðåñéãñÜöïíôáé äýï ðñùôüêïëëá ôáõôü÷ñïíçò åêôÝëåóçò óõíáëëáãþí ôá
ïðïßá óôçñßæïíôáé óôç ÷ñÞóç ÷ñïíéêþí óöñáãßäùí.

Ðñùôüêïëëï ÄéÜôáîçò ×ñïíéêþí Óöñáãßäùí


Óýìöùíá ìå ôç ðñùôüêïëëï áõôü, ïé ëåéôïõñãßåò áíÜãíùóçò êáé áðïèÞêåõóçò
åêôåëïýíôáé ìå âÜóç ôç äéÜôáîç ðïõ ïñßæåôáé áðü ôéò ÷ñïíéêÝò óöñáãßäåò. Ðéï
óõãêåêñéìÝíá:
• ¸óôù üôé ç óõíáëëáãÞ Ói åêôåëåß ëåéôïõñãßá áíÜãíùóçò óôç óåëßäá äå-
äïìÝíùí D. Äéáêñßíïõìå ôéò åîÞò ðåñéðôþóåéò:

1. Áí éó÷ýåé TS(Ói ) < timestamp-W(D), ôüôå ç óõíáëëáãÞ Ói ðñïóðáèåß


íá äéáâÜóåé ìßá ôéìÞ ôïõ D ç ïðïßá Ý÷åé Þäç áëëÜîåé áðü Üëëç óõ-
íáëëáãÞ. Óôçí ðåñßðôùóç áõôÞ ç ëåéôïõñãßá áíÜãíùóçò äéáêüðôåôáé.
2. Áí TS(Ói ) ≥ timestamp-W(D), ôüôå ç ëåéôïõñãßá áíÜãíùóçò åðéôñÝ-
ðåôáé íá ïëïêëçñùèåß êáé åíçìåñþíåôáé ç ôéìÞ timestamp-R(D) ùò
åîÞò: timestamp-R(D) = max{timestamp-R(D),TS(Ói )}.

• ¸óôù ôþñá üôé ç óõíáëëáãÞ Ói åêôåëåß ëåéôïõñãßá áðïèÞêåõóçò óôç óåëßäá


äåäïìÝíùí D. Äéáêñßíïõìå ôéò åîÞò ðåñéðôþóåéò:

1. Áí TS(Ói ) < timestamp-W(D), ôüôå ç óõíáëëáãÞ ðñïóðáèåß íá åíç-


ìåñþóåé ìßá ôéìÞ ðïõ Ý÷åé Þäç áëëÜîåé áðü Üëëç óõíáëëáãÞ. Óôçí
ðåñßðôùóç áõôÞ ç äéáäéêáóßá åããñáöÞò ôåñìáôßæåôáé êáé ìðáßíåé óå
ëåéôïõñãßá ï ìç÷áíéóìüò ROLLBACK ãéá ôç óõíáëëáãÞ Ói .
2. Áí TS(Ói ) < timestamp-R(D), ôüôå ç ôñÝ÷ïõóá ôéìÞ ôïõ D äéáâÜóèçêå
ðñïçãïõìÝíùò áðü Üëëç óõíáëëáãÞ. ÅðïìÝíùò, êáé óå áõôÞí ôçí ðåñß-
ðôùóç ç áðïèÞêåõóç äéáêüðôåôáé êáé ðñáãìáôïðïéåßôáé ROLLBACK.
3. Áí äåí éó÷ýåé êáìßá áðü ôéò äýï óõíèÞêåò, ôüôå ç ëåéôïõñãßá åããñáöÞò
ìðïñåß íá ïëïêëçñùèåß ÷ùñßò ðñüâëçìá êáé ç ÷ñïíéêÞ óöñáãßäá åã-
ãñáöÞò ôçò Ói åíçìåñþíåôáé ùò åîÞò: timestamp-W(D) = TS(Ói ).

ÊáôÜ ôçí åöáñìïãÞ ROLLBACK óå ìßá óõíáëëáãÞ, äçìéïõñãåßôáé íÝá ÷ñï-


íéêÞ óöñáãßäá êáé ç óõíáëëáãÞ îåêéíÜ ôçí åêôÝëåóÞ ôçò áðü ôçí áñ÷Þ.

Êáíüíáò ÁðïèÞêåõóçò ôïõ Thomas


Óýìöùíá ìå ôï ðñùôüêïëëï äéÜôáîçò ÷ñïíéêþí óöñáãßäùí, áí ìßá óõíáëëáãÞ
ðñïóðáèÞóåé íá áëëÜîåé ôçí ôéìÞ ìßáò óåëßäáò äåäïìÝíùí ç ïðïßá Ý÷åé Þäç åíç-
ìåñùèåß áðü Üëëç óõíáëëáãÞ (TS(Ói ) < timestamp-W(D)), ôüôå ç åêôÝëåóç ôçò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 399

óõíáëëáãÞò äéáêüðôåôáé êáé ðñáãìáôïðïéåßôáé ROLLBACK. Ùóôüóï, áõôü äåí


åßíáé áðáñáßôçôï, êáé áñêåß íá áãíïÞóïõìå áðëþò ôç ëåéôïõñãßá áðïèÞêåõóçò.
Ìå ôïí ôñüðï áõôü ìåéþíåôáé ôï êüóôïò ëåéôïõñãßáò êáé áõîÜíåôáé ç áðüäïóç ôïõ
óõóôÞìáôïò. ÈåùñÞóôå ôéò äýï óõíáëëáãÝò ðïõ áðåéêïíßæïíôáé óôï Ó÷Þìá 15.11.
Åö’ üóïí ç óõíáëëáãÞ Ó1 îåêéíÜ ôçí åêôÝëåóÞ ôçò íùñßôåñá áðü ôç óõíáëëáãÞ
Ó2 Ý÷ïõìå TS(Ó1 ) < TS(Ó2 ). Ðáñáôçñïýìå üôé óýìöùíá ìå ôï ðñùôüêïëëï äéÜ-
ôáîçò ÷ñïíéêþí óöñáãßäùí, ç åíôïëÞ write(X) ôçò óõíáëëáãÞò Ó2 èá åêôåëåóèåß
ìå åðéôõ÷ßá. Ùóôüóï, ç åíôïëÞ write(X) ôçò Ó1 èá äéáêïðåß êáé èá åöáñìïóèåß
ROLLBACK óôç óõíáëëáãÞ Ó1 , äéüôé éó÷ýåé ç ó÷Ýóç TS(Ó1 ) < timestamp-W(X).
Σ υ ν α λ λ α γ ή Σ 1 Σ υ ν α λ λ α γ ή Σ 2

R e a d ( ) ;

X
Η ε ν τ ο λ ή α π ο τ υ γ χ ά ν ε ι . Τ ο

R O L L B A C K δ ε ν ε ί ν α ι α π α ρ α ί τ η τ ο . W r i t e ( ) ;

W r i t e ( ) ;

ό ν

Ó÷Þìá 15.11: ÅöáñìïãÞ êáíüíá Thomas.

Ç åöáñìïãÞ ôïõ êáíüíá ôïõ Thomas ïäçãåß óå ìßá íÝá Ýêäïóç ôïõ ðñùôï-
êüëëïõ äéÜôáîçò ÷ñïíéêþí óöñáãßäùí. Ç äéá÷åßñéóç ôùí åíôïëþí áíÜãíùóçò
ðáñáìÝíåé ùò Ý÷åé. Ôï íÝï ðñùôüêïëëï äéáöÝñåé ìüíï ùò ðñïò ôç äéá÷åßñéóç ôùí
åíôïëþí áðïèÞêåõóçò. Óôçí ðåñßðôùóç áõôÞ Ý÷ïõìå:
1. Áí TS(Ói ) < timestamp-W(D), ôüôå ç óõíáëëáãÞ ðñïóðáèåß íá åíçìåñþóåé
ìßá ôéìÞ ðïõ Ý÷åé Þäç áëëÜîåé áðü Üëëç óõíáëëáãÞ. Óôçí ðåñßðôùóç áõôÞ
ç åíôïëÞ åããñáöÞò ìðïñåß íá áãíïçèåß ìå áóöÜëåéá.
2. Áí TS(Ói ) < timestamp-R(D), ôüôå ç ôñÝ÷ïõóá ôéìÞ ôïõ D äéáâÜóèçêå
ðñïçãïõìÝíùò áðü Üëëç óõíáëëáãÞ. ÅðïìÝíùò, óå áõôÞí ôçí ðåñßðôùóç ç
ëåéôïõñãßá áðïèÞêåõóçò äéáêüðôåôáé êáé ðñáãìáôïðïéåßôáé ROLLBACK.
3. Áí äåí éó÷ýåé êáìßá áðü ôéò äýï óõíèÞêåò, ôüôå ç ëåéôïõñãßá áðïèÞêåõóçò
ìðïñåß íá ïëïêëçñùèåß ÷ùñßò ðñüâëçìá êáé ç ÷ñïíéêÞ óöñáãßäá åããñáöÞò
ôçò Ói åíçìåñþíåôáé ùò åîÞò: timestamp-W(D) = TS(Ói ).
400 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

15.3 ÅðáíÜêôçóç ÄåäïìÝíùí


Ç åðáíÜêôçóç äåäïìÝíùí (data recovery) áðïôåëåß ìßá ðïëý óçìáíôéêÞ ëåé-
ôïõñãßá ôïõ ÓÄÂÄ ç ïðïßá áðáéôåßôáé óå ðåñéðôþóåéò âëÜâçò ôïõ óõóôÞìáôïò
ïé ïðïßåò ðñïêáëïýí ðñïóùñéíÞ äéáêïðÞ ëåéôïõñãßáò. Ãéá ðáñÜäåéãìá, óå ðåñß-
ðôùóç ðïõ êÜðïéïò äßóêïò ôïõ óõóôÞìáôïò ðáñïõóéÜæåé ðñïâëçìáôéêÞ ëåéôïõñãßá
õðÜñ÷åé óïâáñüò êßíäõíïò áðþëåéáò äåäïìÝíùí. Åðßóçò, óå ðåñßðôùóç áðüôïìçò
äéáêïðÞò ëåéôïõñãßáò ôïõ óõóôÞìáôïò, äåäïìÝíá ðïõ âñßóêïíôáé áðïèçêåõìÝíá
óôçí êýñéá ìíÞìç êáôáóôñÝöïíôáé ðñéí ôçí áðïèÞêåõóÞ ôïõò óôï äßóêï. Ïé óõ-
÷íüôåñåò áéôßåò ðïõ ïäçãïýí óå äéáêïðÞ ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò åßíáé:

• ðôþóç óõóôÞìáôïò, ëüãù åóöáëìÝíçò ëåéôïõñãßáò ôïõ õëéêïý Þ ôïõ ëïãé-


óìéêïý óõóôÞìáôïò,

• ðñüâëçìá óôï ìÝóï áðïèÞêåõóçò, ôï ïðïßï ìðïñåß íá ïöåßëåôáé óå êáôá-


óôñïöÞ ôçò ìáãíçôéêÞò åðéöÜíåéáò ôïõ äßóêïõ, ôïõ ìç÷áíéêïý Þ ôïõ çëå-
êôñïíéêïý õëéêïý ôïõ äßóêïõ,

• óöÜëìá ëïãéóìéêïý åöáñìïãÞò, ôï ïðïßï ïöåßëåôáé óõíÞèùò óå óöÜëìá


åêôÝëåóçò (run-time error) êáôÜ ôç äéÜñêåéá åíçìÝñùóçò ôùí äåäïìÝíùí
ôçò ÂÄ,

• öõóéêÜ áßôéá, üðùò ðõñêáãéÝò, óåéóìïß ê.ë.ð.

ÏðïéïäÞðïôå êáé áí åßíáé ôï áßôéï, ç áðüôïìç äéáêïðÞ ôçò ëåéôïõñãßáò ôïõ ÓÄÂÄ
ðñÝðåé íá áêïëïõèåßôáé áðü ôç ëåéôïõñãßá åðáíÜêôçóçò, Ýôóé þóôå ï êßíäõíïò
áðþëåéáò Þ áëëïßùóçò äåäïìÝíùí íá ðåñéïñéóèåß óôï åëÜ÷éóôï.

15.3.1 ÁðáéôÞóåéò ÅðáíÜêôçóçò


Ãéá íá åßíáé åöéêôÞ ç ëåéôïõñãßá ôçò åðáíÜêôçóçò äåäïìÝíùí, ôï ÓÄÂÄ ðñÝðåé
íá äéáèÝôåé:

• ìç÷áíéóìü äçìéïõñãßáò áíôéãñÜöùí áóöáëåßáò (backup) ãéá ôá äåäïìÝíá


ôçò ÂÄ,

• êáôáãñáöÞ çìåñïëïãßïõ (log) üðïõ íá áðïèçêåýåôáé ç êáôÜóôáóç ôçò êÜèå


óõíáëëáãÞò êáé ïé áëëáãÝò ðïõ Ý÷ïõí ðñáãìáôïðïéçèåß óôç ÂÄ,

• ìç÷áíéóìü ÷ñïíéêþí óçìåßùí åëÝã÷ïõ (checkpoints), ôá ïðïßá óçìáôïäï-


ôïýí ôéò óôéãìÝò ðïõ ïé áëëáãÝò ðïõ Ý÷ïõí åðéöÝñåé ïé óõíáëëáãÝò Ý÷ïõí
ãßíåé ìüíéìåò,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 401

• ìÝèïäï åðáíÜêôçóçò, ç ïðïßá ëáìâÜíïíôáò õð’ üøç ôá áíôßãñáöá áóöá-


ëåßáò, ôéò ðëçñïöïñßåò çìåñïëïãßïõ êáé ôá ÷ñïíéêÜ óçìåßá åëÝã÷ïõ, åðá-
íáöÝñåé ôç ÂÄ óå êáôÜóôáóç óõíÝðåéáò.
ÐåñéãñÜöïõìå óõíïðôéêÜ ôéò ôñåéò ðñþôåò ëåéôïõñãßåò, åíþ èá áíáöåñèïýìå
åêôåíÝóôåñá óôçí ôÝôáñôç. Ï ìç÷áíéóìüò ðáñáãùãÞò áíôéãñÜöùí áóöáëåßáò
ðñÝðåé íá ëåéôïõñãåß ÷ùñßò íá áðáéôåßôáé ç äéáêïðÞ ôçò ëåéôïõñãßáò ôïõ óõóôÞ-
ìáôïò. Óå ðïëëÝò ðåñéðôþóåéò ç ëåéôïõñãßá ôïõ óõóôÞìáôïò ðñÝðåé íá åßíáé óõ-
íå÷Þò êáé óå êáìßá ðåñßðôùóç äåí ðñÝðåé íá äéáêïðåß (ð.÷., óõóôÞìáôá éáôñéêþí
äåäïìÝíùí, Þ óõóôÞìáôá ðïõ õðïóôçñßæïõí óôñáôéùôéêÝò åöáñìïãÝò). ÓõíÞèùò
ïñßæåôáé êÜðïéï ÷ñïíéêü äéÜóôçìá ìåôÜ ôçí ðÜñïäï ôïõ ïðïßïõ ôá äåäïìÝíá ôçò
ÂÄ áíôéãñÜöïíôáé óå Üëëï ÷þñï áðïèÞêåõóçò. ÅðåéäÞ ôá áíôßãñáöá áóöáëåßáò
êáôáëáìâÜíïõí óçìáíôéêü ÷þñï óôï äßóêï, óõíÞèùò ìåôáöÝñïíôáé óå óõóêåõÝò
ìáãíçôéêþí ôáéíéþí. Ç ÷ñïíéêÜ áðïäïôéêüôåñç ìÝèïäïò äçìéïõñãßáò áíôéãñÜöùí
áóöáëåßáò åßíáé ç ëåãüìåíç áõîçôéêÞ (incremental) êáôÜ ôçí ïðïßá áíôéãñÜöï-
íôáé ôá äåäïìÝíá ðïõ Ý÷ïõí ìåôáâëçèåß áðü ôï ðñïçãïýìåíï áíôßãñáöï áóöá-
ëåßáò. ¸ôóé áðïöåýãåôáé ç åîïëïêëÞñïõ ÷ñïíïâüñá áíôéãñáöÞ ôùí äåäïìÝíùí
ôçò ÂÄ.
Ôï ÓÄÂÄ äéáôçñåß çìåñïëüãéï üðïõ êáôáãñÜöïíôáé äéÜöïñá ãåãïíüôá ç
ãíþóç ôùí ïðïßùí êñßíåôáé áðáñáßôçôç. Óôï çìåñïëüãéï áðïèçêåýïíôáé ðëç-
ñïöïñßåò ó÷åôéêÜ ìå åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò äåäïìÝíùí êáèþò
åðßóçò êáé ôá ÷áñáêôçñéóôéêÜ ôùí óõíáëëáãþí ðïõ ðñïêÜëåóáí áõôÝò ôéò ìå-
ôáâïëÝò. Óå ìåãÜëá óõóôÞìáôá ðïõ õðïóôçñßæïõí ìåãÜëï áñéèìü óõíáëëáãþí
êáèçìåñéíÜ (ð.÷., ôñáðåæéêÜ óõóôÞìáôá) ôï áñ÷åßï çìåñïëïãßïõ ìðïñåß íá åßíáé
áñêåôÜ ìåãÜëï (ð.÷., 10 GBytes). Ôï çìåñïëüãéï åßíáé Ýíá óçìáíôéêü âïÞèçìá
ãéá ôï ÓÄÂÄ êáé ìðïñåß íá ÷ñçóéìïðïéçèåß êáé ãéá ôïí Ýëåã÷ï ôçò áðüäïóçò ôïõ
óõóôÞìáôïò.
¸íá ÷ñïíéêü óçìåßï åëÝã÷ïõ ðñïóäéïñßæåé ôç ÷ñïíéêÞ óôéãìÞ åêôÝëåóçò ôùí
åîÞò åíåñãåéþí:
• ôï áñ÷åßï çìåñïëïãßïõ áíôéãñÜöåôáé áðü ôçí êýñéá ìíÞìç óôï äßóêï,

• ôá äåäïìÝíá ðïõ åßíáé áðïèçêåõìÝíá óôç áðïìïíùôéêÞ ìíÞìç, áíôéãñÜöï-


íôáé óôï äßóêï,

• óôï áñ÷åßï çìåñïëïãßïõ áðïèçêåýïíôáé ïé ðëçñïöïñßåò ðïõ áöïñïýí óôéò


óõíáëëáãÝò ðïõ åßíáé åíåñãÝò ôç óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ.
Ç ÷ñÞóç ôùí ÷ñïíéêþí óçìåßùí åëÝã÷ïõ âïçèÜ ôï ÓÄÂÄ óôçí áðïäïôéêüôåñç
åðáíÜêôçóç êáèþò ðñïóäéïñßæïíôáé åýêïëá ïé óõíáëëáãÝò ðïõ ðéèáíüí íá äç-
ìéïõñãÞóïõí áóõíÝðåéá ìåôÜ áðü áðüôïìç äéáêïðÞ ôïõ óõóôÞìáôïò. Óå êÜðïéåò
402 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

áðü áõôÝò ôéò óõíáëëáãÝò ðñÝðåé íá åöáñìïóèåß ç ëåéôïõñãßá ROLLBACK (Þ


UNDO, äçëáäÞ áêýñùóç) êáé óå êÜðïéåò Üëëåò ç ëåéôïõñãßá ROLLFORWARD
(Þ REDO, äçëáäÞ åðáíåêôÝëåóç). Ç ðñþôç ëåéôïõñãßá åßíáé ãíùóôÞ áðü ðñïç-
ãïýìåíç óõæÞôçóç êáé áöïñÜ óôçí êáôÜñãçóç ôùí áëëáãþí ðïõ Ý÷åé åðéöÝñåé ç
óõíáëëáãÞ. ÁíôéèÝôùò, ç äåýôåñç ëåéôïõñãßá åðáíáëáìâÜíåé ôçí åêôÝëåóç ìßáò
óõíáëëáãÞò ðïõ äåí ïëïêëçñþèçêå ëüãù äéáêïðÞò ôçò ëåéôïõñãßáò ôïõ óõóôÞìá-
ôïò. Ç ÷ñÞóç ôùí ëåéôïõñãéþí áõôþí èá ãßíåé ðëÝïí êáôáíïçôÞ êáôÜ ôç ìåëÝôç
ôùí ìåèüäùí åðáíÜêôçóçò ðïõ áêïëïõèåß.

15.3.2 ÌÝèïäïé ÅðáíÜêôçóçò


Ç ìÝèïäïò åðáíÜêôçóçò ðïõ åöáñìüæåôáé êÜèå öïñÜ åîáñôÜôáé áðü ôï ìÝãåèïò
ôçò êáôáóôñïöÞò ðïõ Ý÷åé õðïóôåß ç ÂÄ. Äéáêñßíïõìå äýï ðåñéðôþóåéò:

1. Ç ðñþôç ðåñßðôùóç áöïñÜ óå óçìáíôéêÞ áðþëåéá ôùí äåäïìÝíùí ôçò ÂÄ,


ðïõ ìðïñåß íá ïöåßëåôáé óå âëÜâç ôïõ äßóêïõ ôïõ óõóôÞìáôïò. Óôçí ðåñß-
ðôùóç áõôÞ áðáéôåßôáé ç åðáíÜêôçóç ôùí äåäïìÝíùí ÷ñçóéìïðïéþíôáò ôï
ðëÝïí ðñüóöáôï áíôßãñáöï áóöáëåßáò. Óôç óõíÝ÷åéá ÷ñçóéìïðïéåßôáé ôï
áñ÷åßï çìåñïëïãßïõ êáé åöáñìüæåôáé ç ëåéôïõñãßá ROLLFORWARD ãéá
ôéò óõíáëëáãÝò ðïõ ðñïêÜëåóáí ìåôáâïëÞ óôá äåäïìÝíá ôçò ÂÄ ìåôÜ ôï
ôåëåõôáßï ÷ñïíéêü óçìåßï åëÝã÷ïõ. Ç ìÝèïäïò áõôÞ ðñïûðïèÝôåé üôé ôï
áñ÷åßï çìåñïëïãßïõ äåí Ý÷åé õðïóôåß êáôáóôñïöÞ.

2. Ç äåýôåñç ðåñßðôùóç áöïñÜ óå êáôáóôÜóåéò áóõíÝðåéáò äåäïìÝíùí ÷ùñßò


íá óõíïäåýïíôáé áðü êáôáóôñïöÞ ôùí äåäïìÝíùí ôçò ÂÄ êáé ôïõ çìåñï-
ëïãßïõ. Ãéá ôéò ðåñéðôþóåéò áõôÝò ðñÝðåé íá åöáñìïóèïýí ïé ëåéôïõñãßåò
ROLLBACK êáé ROLLFORWARD óå óõãêåêñéìÝíåò óõíáëëáãÝò ç åêôÝ-
ëåóç ôùí ïðïßùí Ý÷åé ðñïêáëÝóåé ôçí áóõíÝðåéá. Óçìåéþíåôáé üôé óå ìßá
ôÝôïéá ðåñßðôùóç äåí áðáéôåßôáé ç ÷ñÞóç áíôéãñÜöïõ áóöáëåßáò. Ç åðáíÜ-
êôçóç ìðïñåß íá ðñáãìáôïðïéçèåß ìå ôá äåäïìÝíá ôçò ÂÄ ùò Ý÷ïõí ìåôÜ
ôçí åðáíåêêßíçóç ôïõ óõóôÞìáôïò êáé ôéò ðëçñïöïñßåò ôïõ áñ÷åßïõ çìåñï-
ëïãßïõ.

ÅóôéÜæïõìå óôç äåýôåñç ðåñßðôùóç êáé ðåñéãñÜöïõìå ôñåéò äéáöïñåôéêÝò ìåèü-


äïõò åðáíÜêôçóçò ðïõ ìðïñïýí íá ÷ñçóéìïðïéçèïýí.

ÌÝèïäïò ÊáèõóôåñçìÝíçò ÅíçìÝñùóçò


Ç ìÝèïäïò êáèõóôåñçìÝíçò åíçìÝñùóçò (deferred update) åíçìåñþíåé ôç ÂÄ
üôáí ç óõíáëëáãÞ Ý÷åé ïëïêëçñùèåß ìå åðéôõ÷ßá (commit). ¸ôóé, óå ðåñßðôùóç
áðïôõ÷ßáò ïëïêëÞñùóçò ôçò åêôÝëåóçò äåí èá áðáéôçèåß ç åöáñìïãÞ ôçò ëåé-
ôïõñãßáò ROLLBACK. Ùóôüóï, ìðïñåß íá áðáéôçèåß ç åöáñìïãÞ ôçò ëåéôïõñãßáò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 403

ROLLFORWARD ãéá ôéò óõíáëëáãÝò ðïõ ïëïêëÞñùóáí ìå åðéôõ÷ßá ôçí åêôÝ-


ëåóÞ ôïõò, üìùò äåí ðñüëáâáí íá áðïèçêåýóïõí ôá äåäïìÝíá óôç ÂÄ ëüãù ôçò
äéáêïðÞò ëåéôïõñãßáò ôïõ óõóôÞìáôïò. Ç ëåéôïõñãßá ôçò ìåèüäïõ êáèõóôåñçìÝ-
íçò åíçìÝñùóçò ÷ñçóéìïðïéåß ôï áñ÷åßï çìåñïëïãßïõ ùò åîÞò:

1. Óôçí áñ÷Þ ôçò åêôÝëåóçò ìßáò óõíáëëáãÞò åíçìåñþíåôáé ôï áñ÷åßï çìåñï-


ëïãßïõ ãéá ôï üôé ìßá íÝá óõíáëëáãÞ îåêßíçóå ôçí åêôÝëåóÞ ôçò (transaction
start).

2. ÊÜèå öïñÜ ðïõ åêôåëåßôáé åíôïëÞ áðïèÞêåõóçò (write) åíçìåñþíåôáé ôï


áñ÷åßï çìåñïëïãßïõ ìå ìßá åããñáöÞ ðïõ ðåñéÝ÷åé äåäïìÝíá ó÷åôéêÜ ìå ôá
äåäïìÝíá ðïõ áðïèçêåýïíôáé.

3. ¼ôáí ç óõíáëëáãÞ ïëïêëçñþóåé ôçí åêôÝëåóÞ ôçò êáé ðñéí ïé áëëáãÝò ãß-
íïõí ìüíéìåò, ôï áñ÷åßï çìåñïëïãßïõ åíçìåñþíåôáé ãéá ôï ãåãïíüò. Óôç
óõíÝ÷åéá, ôï áñ÷åßï çìåñïëïãßïõ áðïèçêåýåôáé óôï äßóêï êáé üëá ôá äå-
äïìÝíá ðïõ âñßóêïíôáé óôçí áðïìïíùôéêÞ ìíÞìç áðïèçêåýïíôáé óôï äßóêï.

4. Óå ðåñßðôùóç áðïôõ÷ßáò ïëïêëÞñùóçò ôçò åêôÝëåóçò ìßáò óõíáëëáãÞò ç


åíôïëÞ åããñáöÞò äåí åêôåëåßôáé êáé áãíïïýíôáé ôá äåäïìÝíá ôïõ áñ÷åßïõ
çìåñïëïãßïõ ðïõ áöïñïýí óôç óõíáëëáãÞ áõôÞ.

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôéò ëåéôïõñãßåò ðïõ åêôåëåß ç ìÝèïäïò êáèõ-


óôåñçìÝíçò åíçìÝñùóçò ìåôÜ áðü äéáêïðÞ ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò. Ç
ìÝèïäïò ëåéôïõñãåß ìå âÜóç ôá ðåñéå÷üìåíá ôïõ áñ÷åßïõ çìåñïëïãßïõ. Áñ÷éêÜ
äéáâÜæåôáé ç ôåëåõôáßá êáôá÷þñçóç ôïõ çìåñïëïãßïõ êáé óôç óõíÝ÷åéá ç áíÜ-
ãíùóç óõíå÷ßæåôáé ìÝ÷ñé íá óõíáíôÞóïõìå ôï ðñþôï (áðü ôï ôÝëïò) ÷ñïíéêü óç-
ìåßï åëÝã÷ïõ. ¸óôù [tc , tf ] ôï ÷ñïíéêü äéÜóôçìá ìåôáîý ôïõ ôåëåõôáßïõ ÷ñïíéêïý
óçìåßïõ åëÝã÷ïõ êáé ôçò ÷ñïíéêÞò óôéãìÞò äéáêïðÞò ôçò ëåéôïõñãßáò ôïõ óõóôÞ-
ìáôïò. Ç ìÝèïäïò Ý÷åé ùò åîÞò:

• Áí õðÜñ÷åé êáôá÷þñçóç óôï ÷ñïíéêü äéÜóôçìá [tc , tf ] ãéá óõíáëëáãÞ ðïõ


Ý÷åé îåêéíÞóåé ôçí åêôÝëåóÞ ôçò (transaction start) êáé Ý÷åé ïëïêëçñþóåé ôçí
åêôÝëåóÞ ôçò ìå åðéôõ÷ßá (transaction commit), ôüôå óôç óõíáëëáãÞ ðñÝðåé
íá åöáñìïóèåß ç ëåéôïõñãßá ROLLFORWARD. Ç ëåéôïõñãßá ROLLFOR-
WARD åêôåëåß üëåò ôéò åíôïëÝò åíçìÝñùóçò ÷ñçóéìïðïéþíôáò ôéò ðëçñï-
öïñßåò ðïõ Ý÷ïõí êáôá÷ùñéóèåß óôï çìåñïëüãéï. Ïé åíôïëÝò åíçìÝñùóçò
åêôåëïýíôáé ìå ôç óåéñÜ ðïõ åìöáíßæïíôáé óôï çìåñïëüãéï.

• Áí õðÜñ÷åé êáôá÷þñçóç óôï ÷ñïíéêü äéÜóôçìá [tc , tf ] ãéá óõíáëëáãÞ ðïõ


Ý÷åé îåêéíÞóåé ôçí åêôÝëåóÞ ôçò (transaction start) êáé Ý÷åé ôåñìáôéóèåß ìå
404 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

áðïôõ÷ßá (transaction abort), ôüôå äåí áðáéôåßôáé êáìßá åíÝñãåéá äéüôé ëüãù
ôçò êáèõóôåñçìÝíçò åíçìÝñùóçò ôá äåäïìÝíá ôçò ÂÄ äåí Ý÷ïõí ìåôáâëçèåß.

• Áí ç óõíáëëáãÞ Ý÷åé îåêéíÞóåé ôçí åêôÝëåóÞò ôçò óôï ÷ñïíéêü äéÜóôçìá


[tc , tf ] áëëÜ ëüãù ôçò äéáêïðÞò ëåéôïõñãßáò äåí Ý÷åé ïëïêëçñþóåé, ôüôå
ìðïñåß íá áãíïçèåß ìå áóöÜëåéá åðåéäÞ (üðùò êáé óôçí ðñïçãïýìåíç ðåñß-
ðôùóç) äåí Ý÷ïõí åðçñåáóèåß ôá äåäïìÝíá ôçò ÂÄ.

Óôï Ó÷Þìá 15.12 áðåéêïíßæåôáé Ýíá ðáñÜäåéãìá åöáñìïãÞò ôçò ìåèüäïõ êá-
èõóôåñçìÝíçò åíçìÝñùóçò. Ôï óýìâïëï "S" äçëþíåé ôçí áñ÷Þ åêôÝëåóçò ôçò óõ-
íáëëáãÞò (start), ôï óýìâïëï "C" äçëþíåé ôçí åðéôõ÷çìÝíç ïëïêëÞñùóç ôçò óõ-
íáëëáãÞò (commit) åíþ ôï óýìâïëï "A" äçëþíåé ôçí áðïôõ÷çìÝíç åêôÝëåóç ôçò
óõíáëëáãÞò (abort). Ç óõíáëëáãÞ Ó4 Ý÷åé ïëïêëçñþóåé ìå åðéôõ÷ßá ôçí åêôÝëåóÞ
ôçò ðñéí ôï ôåëåõôáßï ÷ñïíéêü óçìåßï åëÝã÷ïõ, ïðüôå äåí áðáéôåß êáìßá åíÝñãåéá.
Óôéò óõíáëëáãÝò Ó1 êáé Ó2 ðñÝðåé íá åöáñìïóèåß ç ëåéôïõñãßá ROLLFORWARD
äéüôé ç ÷ñïíéêÞ óôéãìÞ ïëïêëÞñùóÞò ôïõò âñßóêåôáé ìÝóá óôï äéÜóôçìá [tc , tf ].
Ôïíßæåôáé üôé áõôü åßíáé áðáñáßôçôï åðåéäÞ ôï çìåñïëüãéï áðïèçêåýåôáé óôï äß-
óêï ðñéí áðü ôá äåäïìÝíá ðïõ Ý÷ïõí åíçìåñþóåé ïé óõíáëëáãÝò. ÅðïìÝíùò, åíäÝ-
÷åôáé ç åíçìÝñùóç ôùí äåäïìÝíùí íá ìçí Ý÷åé ïëïêëçñùèåß ëüãù ôçò äéáêïðÞò
ëåéôïõñãßáò ôïõ óõóôÞìáôïò ôç ÷ñïíéêÞ óôéãìÞ tf . ÔÝëïò, ãéá ôéò óõíáëëáãÝò Ó3 ,
Ó5 êáé Ó6 äåí áðáéôåßôáé êáìßá åíÝñãåéá.
Σ 2
S C

Σ 1
S C

Σ 6
S A

Σ 4
S C

Σ 3
S

Σ 5
S

tc tf
χ ρ ό ν ο ς

χ ρ ο ν ι κ ό σ η  ε ί ο ε λ έ γ χ ο υ ι α κ ο π ή λ ε ι τ ο υ ρ γ ί α ς

Ó÷Þìá 15.12: ÅöáñìïãÞ ìåèüäïõ êáèõóôåñçìÝíçò åíçìÝñùóçò.

ÌÝèïäïò ¢ìåóçò ÅíçìÝñùóçò


Óå áíôßèåóç ìå ôçí ðñïçãïýìåíç ìÝèïäï, ç ìÝèïäïò ôçò Üìåóçò åíçìÝñùóçò (im-
mediate update) ðñáãìáôïðïéåß ôéò ìåôáâïëÝò óôç ÂÄ áìÝóùò ìåôÜ ôçí åêôÝëåóç
ôùí åíôïëþí áðïèÞêåõóçò, êáé ðñéí ôçí åðéôõ÷Þ ïëïêëÞñùóç ôçò óõíáëëáãÞò
(commit). ÅðïìÝíùò, óå ðåñßðôùóç áðïôõ÷ßáò ôçò åêôÝëåóçò ïé áëëáãÝò ðïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 405

ðñáãìáôïðïßçóå ç óõíáëëáãÞ óôç ÂÄ ðñÝðåé íá áíáêëçèïýí ìå ôç ëåéôïõñãßá


ROLLBACK. Ç ëåéôïõñãßá ôçò ìåèüäïõ Üìåóçò åíçìÝñùóçò ÷ñçóéìïðïéåß ôï
áñ÷åßï çìåñïëïãßïõ ùò åîÞò:

1. Óôçí áñ÷Þ ôçò åêôÝëåóçò ìßáò óõíáëëáãÞò ôï áñ÷åßï çìåñïëïãßïõ åíçìåñþ-


íåôáé üôé ìßá íÝá óõíáëëáãÞ îåêßíçóå ôçí åêôÝëåóÞ ôçò (transaction start).

2. ÊÜèå öïñÜ ðïõ åêôåëåßôáé åíôïëÞ áðïèÞêåõóçò åíçìåñþíåôáé ôï áñ÷åßï


çìåñïëïãßïõ ìå ìßá åããñáöÞ ðïõ ðåñéÝ÷åé äåäïìÝíá ó÷åôéêÜ ìå ôá äåäïìÝíá
ðïõ áðïèçêåýïíôáé.

3. ÌåôÜ ôçí åíçìÝñùóç ôïõ áñ÷åßïõ çìåñïëïãßïõ áêïëïõèåß åíçìÝñùóç ôùí


äåäïìÝíùí ôçò áðïìïíùôéêÞò ìíÞìçò. Ç åíçìÝñùóç ôùí äåäïìÝíùí óôï
äßóêï ðñáãìáôïðïéåßôáé üôáí ç áíôßóôïé÷ç óåëßäá ôçò áðïìïíùôéêÞò ìíÞìçò
áðïèçêåõèåß óôï äßóêï.

4. ÊáôÜ ôçí åðéôõ÷Þ ïëïêëÞñùóç ôçò óõíáëëáãÞò (transaction commit) åíçìå-


ñþíåôáé ôï çìåñïëüãéï.

¸íá ðïëý âáóéêü ÷áñáêôçñéóôéêü ôçò ìåèüäïõ åßíáé üôé ôï çìåñïëüãéï åíç-
ìåñþíåôáé ðñéí áðü ôçí åíçìÝñùóç ôùí äåäïìÝíùí ôçò ÂÄ. Óôçí áíôßèåôç ðåñß-
ðôùóç, áí ìåôÜ ôçí åíçìÝñùóç ôùí äåäïìÝíùí ôçò ÂÄ äéáêïðåß ç ëåéôïõñãßá ôïõ
óõóôÞìáôïò ðñéí ôçí åíçìÝñùóç ôïõ çìåñïëïãßïõ, ç äéáäéêáóßá ôçò åðáíÜêôçóçò
åßíáé áäýíáôç. Áò åîåôÜóïõìå óôç óõíÝ÷åéá ôéò ëåéôïõñãßåò ðïõ åêôåëåß ç ìÝèïäïò
Üìåóçò åíçìÝñùóçò ìåôÜ áðü äéáêïðÞ ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò. ¼ðùò
êáé ðñïçãïõìÝíùò, ôï tc ðñïóäéïñßæåé ôï ôåëåõôáßï ÷ñïíéêü óçìåßï åëÝã÷ïõ êáé
ôï tf ôç ÷ñïíéêÞ óôéãìÞ ôçò äéáêïðÞò ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò. Ç ìÝèïäïò
ëåéôïõñãåß ìå âÜóç ôá ðåñéå÷üìåíá ôïõ áñ÷åßïõ çìåñïëïãßïõ ùò åîÞò:

• Áí õðÜñ÷åé êáôá÷þñçóç óôï ÷ñïíéêü äéÜóôçìá [tc , tf ] ãéá óõíáëëáãÞ ðïõ


Ý÷åé îåêéíÞóåé ôçí åêôÝëåóÞ ôçò (transaction start) êáé Ý÷åé ïëïêëçñþóåé ôçí
åêôÝëåóÞ ôçò ìå åðéôõ÷ßá (transaction commit), ôüôå óôç óõíáëëáãÞ ðñÝðåé
íá åöáñìïóèåß ç ëåéôïõñãßá ROLLFORWARD. Ç ëåéôïõñãßá ROLLFOR-
WARD åêôåëåß üëåò ôéò åíôïëÝò åíçìÝñùóçò ÷ñçóéìïðïéþíôáò ôéò ðëçñï-
öïñßåò ðïõ Ý÷ïõí êáôá÷ùñéóèåß óôï çìåñïëüãéï. Ïé åíôïëÝò åíçìÝñùóçò
åêôåëïýíôáé ìå ôç óåéñÜ ðïõ åìöáíßæïíôáé óôï çìåñïëüãéï.

• Áí õðÜñ÷åé êáôá÷þñçóç óôï ÷ñïíéêü äéÜóôçìá [tc , tf ] ãéá óõíáëëáãÞ ðïõ


Ý÷åé îåêéíÞóåé ôçí åêôÝëåóÞ ôçò (transaction start) áëëÜ äåí Ý÷åé ïëïêëçñþ-
óåé ôçí åêôÝëåóÞ ôçò ìå åðéôõ÷ßá (transaction commit), ôüôå óôç óõíáëëáãÞ
406 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

ðñÝðåé íá åöáñìïóèåß ç ëåéôïõñãßá ROLLBACK. Ç ëåéôïõñãßá ROLL-


BACK åöáñìüæåôáé ëáìâÜíïíôáò õð’ üøç ôá äåäïìÝíá ôïõ çìåñïëïãßïõ ìå
ôçí áíôßóôñïöç óåéñÜ ðïõ åìöáíßæïíôáé.

ÐáñáôçñÞóôå üôé åíþ óôç ìÝèïäï êáèõóôåñçìÝíçò åíçìÝñùóçò äåí áðáéôåßôáé ç


ëåéôïõñãßá ROLLBACK, ç ìÝèïäïò Üìåóçò åíçìÝñùóçò áðáéôåß ôéò ëåéôïõñãßåò
ROLLBACK êáé ROLLFORWARD.

ÌÝèïäïò Óêéùäþí Óåëßäùí


Ç ìÝèïäïò ôùí óêéùäþí óåëßäùí (shadow paging) áðïôåëåß åíáëëáêôéêÞ ìÝèïäï
åðáíÜêôçóçò äåäïìÝíùí, ç ïðïßá äåí óôçñßæåôáé óôá ðåñéå÷üìåíá ôïõ áñ÷åßïõ
çìåñïëïãßïõ üðùò ïé äýï ðñïáíáöåñèåßóåò ìÝèïäïé [Lorie 1977]. Ç ÂÄ äéá÷ùñß-
æåôáé óå óåëßäåò óôáèåñïý ìåãÝèïõò. Ï ôñüðïò ïñãÜíùóçò ôùí óåëßäùí åßíáé
ðáñüìïéïò ìå áõôüí ðïõ ÷ñçóéìïðïéåß ôï ëåéôïõñãéêü óýóôçìá ãéá ôç äéá÷åßñéóç
ôçò êýñéáò ìíÞìçò.
¸óôù üôé ç ÂÄ áðïôåëåßôáé áðü n óåëßäåò áñéèìçìÝíåò áðü ôï 1 ìÝ÷ñé n.
Ç åýñåóç ìßáò óõãêåêñéìÝíçò óåëßäáò ðñáãìáôïðïéåßôáé ìå ôç âïÞèåéá ôïõ ðß-
íáêá óåëßäùí (page table). Ç áðïèÞêåõóç ôùí óåëßäùí óôï äßóêï äåí áêïëïõèåß
êÜðïéá óõãêåêñéìÝíç äéÜôáîç. Óôï Ó÷Þìá 15.13 áðåéêïíßæåôáé Ýíá ðáñÜäåéãìá
ðßíáêá óåëßäùí. ÐáñáôçñÞóôå üôé ç óåéñÜ áðïèÞêåõóçò äåí áêïëïõèåß ôç óåéñÜ
ðïõ ïñßæåé ï ðßíáêáò óåëßäùí.

πίνακας σελίδων
1
1
2
2
3 5
4
5
4

Ó÷Þìá 15.13: Ðßíáêáò óåëßäùí ï ïðïßïò äåéêôïäïôåß 5 óåëßäåò óôï äßóêï.

Ç ìÝèïäïò ôùí óêéùäþí óåëßäùí ÷ñçóéìïðïéåß äýï äéáöïñåôéêïýò ðßíáêåò


óåëßäùí ãéá ôç äéÜñêåéá æùÞò ìßáò óõíáëëáãÞò. Ïé ðßíáêåò áõôïß êáëïýíôáé ôñÝ-
÷ùí ðßíáêáò óåëßäùí (current page table) êáé óêéþäçò ðßíáêáò óåëßäùí (shadow
page table). Óôçí áñ÷Þ ôçò åêôÝëåóçò ôçò óõíáëëáãÞò ïé äýï ðßíáêåò åßíáé üìïéïé.
Ï óêéþäçò ðßíáêáò óåëßäùí ðáñáìÝíåé áìåôÜâëçôïò, åíþ ï ôñÝ÷ùí ðßíáêáò óåëß-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 407

äùí ìåôáâÜëëåôáé áíáëüãùò ìå ôéò åíôïëÝò åããñáöÞò ôçò óõíáëëáãÞò. Áò åîåôÜ-


óïõìå ôç ëåéôïõñãßá ôçò ìåèüäïõ êáôÜ ôçí åêôÝëåóç ìßáò åíôïëÞò áðïèÞêåõóçò
äåäïìÝíùí. ÕðïèÝôïõìå üôé ç óõíáëëáãÞ åíçìåñþíåé ôï ôìÞìá äåäïìÝíùí D ôï
ïðïßï âñßóêåôáé óôç óåëßäá p.

1. Áí ç óåëßäá p äåí âñßóêåôáé óôçí êýñéá ìíÞìç, ôüôå ðñáãìáôïðïéåßôáé ðñï-


óðÝëáóç óôï äßóêï.

2. Áí åßíáé ç ðñþôç öïñÜ ðïõ ðñáãìáôïðïéåßôáé áðïèÞêåõóç óôç óåëßäá, ôüôå


ï ôñÝ÷ùí ðßíáêáò óåëßäùí åíçìåñþíåôáé ùò åîÞò:

• Áñ÷éêÜ ðñïóäéïñßæåôáé ç èÝóç ìßáò á÷ñçóéìïðïßçôçò óåëßäáò p0 óôï


äßóêï,
• Óôç óõíÝ÷åéá äéáãñÜöïíôáé ôá ðåñéå÷üìåíá ôçò óåëßäáò p0 ,
• Åíçìåñþíåôáé ï ôñÝ÷ùí ðßíáêáò óåëßäùí Ýôóé þóôå ç èÝóç p íá äåß÷íåé
óôç óåëßäá p0 .

Óôï Ó÷Þìá 15.14 äßíïõìå Ýíá ðáñÜäåéãìá óêéþäïõò ðßíáêá óåëßäùí. ÕðïèÝ-
ôïõìå üôé ìßá óõíáëëáãÞ ðñáãìáôïðïéåß áëëáãÝò óôá äåäïìÝíá ðïõ åßíáé áðïèç-
êåõìÝíá óôéò óåëßäåò 4 êáé 5. Ïé áëëáãÝò áõôÝò ïäçãïýí óôç äÝóìåõóç äýï íÝùí
óåëßäùí üðïõ áðïèçêåýïíôáé ôá íÝá äåäïìÝíá. Ïé áñ÷éêÝò óåëßäåò ðáñáìÝíïõí
ùò Ý÷ïõí êáé áðåëåõèåñþíïíôáé ìüíï ìåôÜ áðü ôçí ïëïêëÞñùóç ôçò óõíáëëáãÞò.
σελίδες δίσκου
1 Σελίδα 1 1
τρέχον 2 Σελίδα 2 2 σκιώδης
πίνακας 3 3 πίνακας
σελίδων 4 Σελίδα 5 (νέα) 4 σελίδων
5 Σελίδα 3 5
Σελίδα 4 (παλιά)
Σελίδα 5 (παλιά)
Σελίδα 4 (νέα)

Ó÷Þìá 15.14: Óêéþäçò ðßíáêáò óåëßäùí (ç óõíáëëáãÞ åíçìåñþíåé äåäïìÝíá óôéò


óåëßäåò 4 êáé 5).

Ç åðáíÜêôçóç äåäïìÝíùí ìå ôç ìÝèïäïò ôùí óêéùäþí óåëßäùí åßíáé áðëïý-


óôåñç áðü ôéò ðñïçãïýìåíåò ìåèüäïõò. Ðñéí áðü ôçí åêôÝëåóç ôçò óõíáëëáãÞò
ï óêéþäçò ðßíáêáò óåëßäùí áðïèçêåýåôáé óôï äßóêï Ýôóé þóôå íá åßíáé äéáèÝóé-
ìïò. Óå ðåñßðôùóç äéáêïðÞò ëåéôïõñãßáò ôïõ óõóôÞìáôïò Þ áðïôõ÷ßáò åêôÝëåóçò
ôçò óõíáëëáãÞò, ï ôñÝ÷ùí ðßíáêáò óåëßäùí áãíïåßôáé êáé ëáìâÜíåôáé õð’ üøç ï
óêéþäçò ðßíáêáò óåëßäùí ï ïðïßïò ðáñáìÝíåé áìåôÜâëçôïò êáè’ üëç ôç äéÜñêåéá
408 ÊåöÜëáéï 15. Äéá÷åßñéóç Óõíáëëáãþí

åêôÝëåóçò ôçò óõíáëëáãÞò. Áí ç óõíáëëáãÞ ïëïêëçñùèåß ìå åðéôõ÷ßá, ôüôå ï


óêéþäçò ðßíáêáò óåëßäùí áíôéêáèßóôáôáé áðü ôïí ôñÝ÷ïíôá ðßíáêá óåëßäùí.

15.4 Óýíïøç
Ï óõíôïíéóìüò ôùí ðñïóðåëÜóåùí óå ìßá ÂÜóç ÄåäïìÝíùí ðñáãìáôïðïéåßôáé
ìå ôç âïÞèåéá ôùí óõíáëëáãþí. Ìßá óõíáëëáãÞ ðåñéÝ÷åé åíôïëÝò áíÜãíùóçò,
åéóáãùãÞò, äéáãñáöÞò êáé åíçìÝñùóçò äåäïìÝíùí. ÊÜèå óõíáëëáãÞ åêôåëåßôáé
áôïìéêÜ, ðïõ óçìáßíåé üôé åßôå èá åêôåëåóèïýí üëåò ïé åíôïëÝò ðïõ ðåñéÝ÷åé åßôå
êáìßá. Ïé âáóéêÝò éäéüôçôåò ôùí óõíáëëáãþí åßíáé ïé åîÞò: á) áôïìéêüôçôá, â)
óõíÝðåéá, ã) áðïìüíùóç êáé ä) ìïíéìüôçôá.
ÐïëëÝò öïñÝò åìöáíßæåôáé ôï ðñüâëçìá äýï Þ ðåñéóóüôåñïé ÷ñÞóôåò íá åíç-
ìåñþíïõí ìßá ðåñéï÷Þ äåäïìÝíùí, åíþ ôáõôü÷ñïíá Üëëïé ÷ñÞóôåò ðñïóðáèïýí íá
äéáâÜóïõí ôá ßäéá äåäïìÝíá. Ç ôáõôü÷ñïíç áíÜãíùóç êáé áðïèÞêåõóç ôçò ßäéáò
óåëßäáò äåäïìÝíùí äçìéïõñãåß ðáèïëïãéêÝò êáôáóôÜóåéò. Ôï ÓÄÂÄ åöáñìüæåé
ìç÷áíéóìïýò åëÝã÷ïõ ôùí ôáõôü÷ñïíùí ðñïóðåëÜóåùí. Äýï ôÝôïéïé ìç÷áíéóìïß
åßíáé ï ìç÷áíéóìüò êëåéäþìáôïò êáé ï ìç÷áíéóìüò ÷ñïíéêþí óöñáãßäùí. Áðáé-
ôåßôáé ðñïóï÷Þ êáôÜ ôçí åöáñìïãÞ êëåéäáñéþí Ýôóé þóôå íá áðïöåýãïíôáé ôá
áäéÝîïäá.
Ôï ÓÄÂÄ ðñÝðåé íá åðéôñÝðåé ôçí åðáíÜêôçóç ôùí äåäïìÝíùí óå ðåñéðôþóåéò
áðüôïìçò äéáêïðÞò ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò (ãéá ðáñÜäåéãìá óå ðåñß-
ðôùóç âëÜâçò ôçò óõóêåõÞò äåõôåñåýïõóáò ìíÞìçò). Ãéá ôï ëüãï áõôü ÷ñçóé-
ìïðïéåßôáé ôï çìåñïëüãéï óõíáëëáãþí üðïõ êáôáãñÜöïíôáé üëåò ïé ëåéôïõñãßåò
ìßáò óõíáëëáãÞò. ÊáôÜ ôç äéáäéêáóßá ôçò åðáíÜêôçóçò êÜðïéåò áðü ôéò óõíáë-
ëáãÝò èá åðáíåêôåëåóèïýí (REDO Þ ROLLFORWARD), åíþ êÜðïéåò Üëëåò èá
áíáéñåèïýí (UNDO Þ ROLLBACK). Ïé âáóéêÝò ìÝèïäïé åðáíÜêôçóçò åßíáé ïé
åîÞò: á) ìÝèïäïò êáèõóôåñçìÝíçò åíçìÝñùóçò, â) ìÝèïäïò Üìåóçò åíçìÝñùóçò
êáé ã) ìÝèïäïò ôùí óêéùäþí óåëßäùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


15.1. ÁíáöÝñåôå êáé ðåñéãñÜøôå ôá ôÝóóåñá âáóéêÜ ÷áñáêôçñéóôéêÜ ôùí óõíáë-
ëáãþí.

15.2. Ðüôå äýï óõíáëëáãÝò ðïõ åêôåëïýíôáé ôáõôü÷ñïíá ìðïñåß íá Ýëèïõí óå


óýãêñïõóç;

15.3. Íá ðåñéãñáöïýí ôá ôñßá ðñïâëÞìáôá ðïõ äçìéïõñãïýíôáé áí äåí õðÜñ÷åé


Ýëåã÷ïò ôáõôü÷ñïíùí ðñïóðåëÜóåùí.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 409

15.4. ÐåñéãñÜøôå óõíïðôéêÜ ôï ìç÷áíéóìü êëåéäþìáôïò äýï öÜóåùí (2PL). Ìå


ðïéüí ôñüðï ï ìç÷áíéóìüò áõôüò åîáóöáëßæåé ôç óåéñéïðïßçóç åíüò ÷ñïíïäéá-
ãñÜììáôïò;

15.5. Ôñåéò óõíáëëáãÝò A, B êáé C Ýñ÷ïíôáé óôï óýóôçìá ìå ôçí ßäéá óåéñÜ, êáé
åêôåëïýíôáé ôáõôü÷ñïíá. Ìðïñïýìå íá ðñïâëÝøïõìå ôï áðïôÝëåóìá áí ãíùñß-
æïõìå üôé ÷ñçóéìïðïéåßôáé ç ôå÷íéêÞ êëåéäþìáôïò äýï öÜóåùí; Íá äéêáéïëïãÞóåôå
ôçí áðÜíôçóÞ óáò.

15.6. Ðùò ìðïñåß íá óõìâåß Ýíá áäéÝîïäï; Ðùò ìðïñåß íá ãßíåé áíôéëçðôü üôé
õðÜñ÷åé áäéÝîïäï;

15.7. ÈåùñÞóôå ôéò åðüìåíåò óõíáëëáãÝò:

T1:
read(X);
read(Y );
if (X == 0) Y = Y + 1;
write(Y );

T2:
read(Y );
read(X);
if (Y == 0) X = X + 1;
write(X);

×ñçóéìïðïéþíôáò ôï ðñùôüêïëëï êëåéäþìáôïò äýï öÜóåùí (2PL) åéóÜãåôå ôéò


êáôÜëëçëåò åíôïëÝò äÝóìåõóçò êáé áðïäÝóìåõóçò êëåéäáñéþí. ÕðÜñ÷åé ðåñß-
ðôùóç ç åêôÝëåóç ôùí óõíáëëáãþí íá ïäçãÞóåé óå áäéÝîïäï;

15.8 ÅîçãÞóôå ôç ÷ñçóéìüôçôá ôùí ÷ñïíéêþí óçìåßùí åëÝã÷ïõ.

15.9 Íá ðåñéãñáöïýí áíáëõôéêÜ ïé ìÝèïäïé åðáíÜêôçóçò êáèõóôåñçìÝíçò åíçìÝ-


ñùóçò êáé Üìåóçò åíçìÝñùóçò.

15.10. Íá ðåñéãñáöåß ç ìÝèïäïò åðáíÜêôçóçò óêéùäþí óåëßäùí êáé íá óõãêñéèåß


ìå ôéò ôå÷íéêÝò âáóéóìÝíåò óôï çìåñïëüãéï áðü Üðïøç êüóôïõò.
16
ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

Ç áíÜãêç åöáñìïãÞò ìç÷áíéóìþí áóöáëåßáò, áí êáé ðïëëÝò öïñÝò óôï ðáñåëèüí


åß÷å õðïâáèìéóèåß Þ ðáñáâëåöèåß, óÞìåñá áíáãíùñßæåôáé üëï êáé ðåñéóóüôåñï
áðü åðé÷åéñÞóåéò êáé ïñãáíéóìïýò. Ç áëëáãÞ ðëåýóçò ïöåßëåôáé óôéò áõîáíü-
ìåíåò ðïóüôçôåò êñßóéìùí åôáéñéêþí äåäïìÝíùí ðïõ áðïèçêåýïíôáé óÞìåñá óôéò
âÜóåéò äåäïìÝíùí êáé óôçí áðïäï÷Þ üôé ïðïéáäÞðïôå áðþëåéá Þ ìç äéáèåóéìü-
ôçôÜ ôùí äåäïìÝíùí áõôþí èá ìðïñïýóå íá Ý÷åé ïëÝèñéá áðïôåëÝóìáôá. ÊáôÜ
óõíÝðåéá, ôá óõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí ðñÝðåé íá áóöáëéóèïýí êáôÜëëçëá
ãéá ôçí áíôéìåôþðéóç åíäå÷üìåíùí ðñÜîåùí íïèåßáò Þ êëïðÞò, ïé ïðïßåò ìðïñåß
íá ïäçãÞóïõí óå áðþëåéá ôçò åìðéóôåõôéêüôçôáò (confidentiality), ôçò áêåñáéü-
ôçôáò (integrity) Þ ôçò äéáèåóéìüôçôáò (availability) ôùí áðïèçêåõìÝíùí äåäïìÝ-
íùí. Ç íïèåßá êáé ç êëïðÞ åðçñåÜæïõí áñíçôéêÜ ü÷é ìüíï ôï ðåñéâÜëëïí ôïõ
óõóôÞìáôïò ÂÜóåùí ÄåäïìÝíùí áëëÜ êáé ïëüêëçñç ôçí åðé÷åßñçóç. Ç áðþëåéá
ôçò åìðéóôåõôéêüôçôáò ïäçãåß óå áðïêÜëõøç åõáßóèçôùí áôïìéêþí äåäïìÝíùí
ðñïóþðùí Þ äåäïìÝíùí êñßóéìçò óçìáóßáò ãéá ôçí åðé÷åßñçóç. Ç áðþëåéá ôçò
áêåñáéüôçôáò Ý÷åé ùò áðïôÝëåóìá ôçí åìöÜíéóç Üêõñùí Þ äéáâñùìÝíùí äåäïìÝ-
íùí ðïõ ßóùò åðçñåÜóïõí óïâáñÜ ôç ìåëëïíôéêÞ ëåéôïõñãßá ôçò åðé÷åßñçóçò.
Áðþëåéá ôçò äéáèåóéìüôçôáò õößóôáôáé üôáí ôá äåäïìÝíá Þ ôï óýóôçìá Þ êáé

411
412 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

ôá äýï äåí ìðïñïýí íá ðñïóðåëáóèïýí, ãåãïíüò ðïõ åðçñåÜæåé óïâáñÜ ôçí ïé-
êïíïìéêÞ áðüäïóç ôçò åðé÷åßñçóçò, éäéáßôåñá ìÜëéóôá áí ç åðé÷åßñçóç ðáñÝ÷åé
çëåêôñïíéêÝò õðçñåóßåò åéêïóéôåôñÜùñçò äéáèåóéìüôçôáò. Óå êÜðïéåò ðåñéðôþ-
óåéò, ïé éäéüôçôåò ôçò åìðéóôåõôéêüôçôáò, ôçò áêåñáéüôçôáò êáé ôçò äéáèåóéìüôçôáò
åßíáé ôüóï óôåíÜ óõíäåäåìÝíåò, þóôå ìßá ðñÜîç ðïõ ïäçãåß óå áðþëåéá ìßáò åî
áõôþí ôùí éäéïôÞôùí, èá ïäçãÞóåé Üìåóá êáé óå áðþëåéá ìßáò Üëëçò.
Ïé åãêëçìáôéêÝò ðñÜîåéò óôï ÷þñï ôïõ çëåêôñïíéêïý åìðïñßïõ Ý÷ïõí óÞìåñá
áõîçèåß óçìáíôéêÜ êáé áíáìÝíåôáé íá åíôáèïýí ôá åðüìåíá ÷ñüíéá. Ôá áíôßìå-
ôñá ãéá ôçí áíôéìåôþðéóç áðåéëþí óôá óõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí ðïéêßëïõí
áðü åëÝã÷ïõò óå öõóéêü åðßðåäï ìÝ÷ñé êáé ôçí ôáêôéêÞ åêôÝëåóç äéá÷åéñéóôéêþí
äéáäéêáóéþí ãéá ôïí Ýëåã÷ï ïñèüôçôáò (audit control) ôùí äåäïìÝíùí. Ç áóöÜ-
ëåéá âÜóåùí äåäïìÝíùí (database security) åßíáé ìßá ðïëý åõñåßá åðéóôçìïíéêÞ
ðåñéï÷Þ ðïõ ðñïóâëÝðåé óôçí åëá÷éóôïðïßçóç ôùí áðùëåéþí ðïõ ðñïêáëïýíôáé
êõñßùò áðü ðñïâëåðüìåíá ãåãïíüôá, ìå ôïí ïéêïíïìéêÜ áðïäïôéêüôåñï ôñüðï êáé
÷ùñßò ôïí õðåñâïëéêü ðåñéïñéóìü ôùí äéêáéùìÜôùí ôùí åîïõóéïäïôçìÝíùí ÷ñç-
óôþí ôïõ óõóôÞìáôïò [Castano 1995, Clark 1991, Fernandez 1981, Natan 2005].

16.1 Ó÷Ýóç ÁóöÜëåéáò ÂÜóåùí ÄåäïìÝíùí êáé ÁóöÜëåéáò


Ëåéôïõñãéêþí ÓõóôçìÜôùí
Ç áóöÜëåéá ÂÜóåùí ÄåäïìÝíùí êáôåß÷å ðÜíôïôå éäéáßôåñç èÝóç óôï ÷þñï ôçò
áóöÜëåéáò õðïëïãéóôþí äéüôé äéáöÝñåé óçìáíôéêÜ áðü ôçí áóöÜëåéá ôùí ëåéôïõñ-
ãéêþí óõóôçìÜôùí. Ç ìüíç ïìïéüôçôá áöïñÜ óôï ãåãïíüò üôé ëåéôïõñãéêÜ óõ-
óôÞìáôá êáé âÜóåéò äåäïìÝíùí äéá÷åéñßæïíôáé äåäïìÝíá. ¼ìùò, ôá ëåéôïõñãéêÜ
óõóôÞìáôá äåí ëáìâÜíïõí õð’ üøç ôïõò ôï ðåñéå÷üìåíï ôùí áñ÷åßùí ðïõ ðñïóôá-
ôåýïõí. Áðëþò åëÝã÷ïõí ôá äéêáéþìáôá ôùí ÷ñçóôþí ó÷åôéêÜ ìå ôç äçìéïõñãßá,
ôç äéáãñáöÞ, ôï Üíïéãìá Þ ôçí åíçìÝñùóç ôùí áñ÷åßùí áõôþí. ÁíôéèÝôùò, ïé
âÜóåéò äåäïìÝíùí óõó÷åôßæïõí Üìåóá ôá äéêáéþìáôá ôùí ÷ñçóôþí ôïõò ìå ôï ðå-
ñéå÷üìåíï ôùí áðïèçêåõìÝíùí äåäïìÝíùí. ºóùò, ÷áñáêôçñéóôéêü ðáñÜäåéãìá
åßíáé ç ðåñßðôùóç ìßáò ÂÜóçò ÄåäïìÝíùí ôïõ ìéóèïëïãßïõ ìßáò åðé÷åßñçóçò üðïõ
ïé ìéóèïß åðÜíù áðü Ýíá üñéï äéáôçñïýíôáé åìðéóôåõôéêïß.
Åõèýíç ôïõ ÓÄÂÄ åßíáé íá éêáíïðïéåß ôéò áðáéôÞóåéò áóöáëåßáò ðïõ äåí
ìðïñåß íá äéá÷åéñéóèåß ôï ëåéôïõñãéêü óýóôçìá. Ôï ÓÄÂÄ ìðïñåß íá åðéâÜëåé
áóöÜëåéá ôáõôü÷ñïíá êáé óå óõìðëÞñùóç ôùí ìç÷áíéóìþí ðñïóôáóßáò ôïõ ëåé-
ôïõñãéêïý óõóôÞìáôïò Þ íá åðéâÜëåé áóöÜëåéá üôáí ç ðñïóôáóßá ôùí äåäïìÝíùí
áðü ðëåõñÜò ëåéôïõñãéêïý óõóôÞìáôïò äåí õößóôáôáé. Óôçí ôåëåõôáßá ðåñßðôùóç,
ç ðñïóôáóßá ìðïñåß íá åðéôåõ÷èåß áí, ãéá ðáñÜäåéãìá, ôá äåäïìÝíá äéáôçñïýíôáé
åíôüò ôçò ÂÜóçò ÄåäïìÝíùí êñõðôïãñáöçìÝíá. Åðßóçò, ôï ÓÄÂÄ åßíáé êáôÜë-
ëçëï åñãáëåßï ãéá ôïí êáèïñéóìü åëÝã÷ùí áóöÜëåéáò êáé óå åðßðåäï åöáñìïãþí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 413

ëïãéóìéêïý ôùí ÷ñçóôþí. ¼ðùò äåß÷íåé ôï Ó÷Þìá 16.1, ç áóöÜëåéá ÂÜóåùí


ÄåäïìÝíùí ðåñéëáìâÜíåé ìç÷áíéóìïýò áóöÜëåéáò óå äéáöïñåôéêÜ åðßðåäá åíüò
õðïëïãéóôéêïý óõóôÞìáôïò.

Ε φ α ρ  ο γ έ ς

Υ π η ρ ε σ ί ε ς

Λ ε ι τ ο υ ρ γ ι κ ό Σ ύ σ τ η  α

Μ η χ α ν ι κ ό Μ έ ρ ο ς Η . Υ .

Ó÷Þìá 16.1: ÈÝóç ôçò áóöÜëåéáò ÂÜóåùí ÄåäïìÝíùí óå õðïëïãéóôéêü óýóôçìá.

16.2 Ï Ñüëïò ôïõ Äéá÷åéñéóôÞ ÂÜóåùí ÄåäïìÝíùí óôçí Åîïõ-


óéïäüôçóç ôùí ×ñçóôþí
Åîïõóéïäüôçóç (authorization) ïíïìÜæåôáé ç åê÷þñçóç óå Ýíá õðïêåßìåíï ôïõ
äéêáéþìáôïò ðñïóðÝëáóçò åíüò ÓÄÂÄ Þ ôïõ ðñïíïìßïõ åðåîåñãáóßáò åíüò áíôé-
êåéìÝíïõ áõôïý. Ï üñïò õðïêåßìåíï (subject) áíáöÝñåôáé óå Ýíá ÷ñÞóôç Þ ìßá
åöáñìïãÞ ëïãéóìéêïý, åíþ ï üñïò áíôéêåßìåíï (object) áíáöÝñåôáé óå Ýíá ðß-
íáêá ÂÜóçò ÄåäïìÝíùí, Ýíá ãíþñéóìá, ìßá ðëåéÜäá, ìßá üøç, ìßá äéáäéêáóßá,
ìßá óêáíäÜëç Þ ïðïéïäÞðïôå Üëëï áíôéêåßìåíï ìðïñåß íá äçìéïõñãçèåß åíôüò
ôïõ ÓÄÂÄ. Ïé Ýëåã÷ïé åîïõóéïäüôçóçò, ïé ïðïßïé ðñáãìáôïðïéïýíôáé óôï ðëáßóéï
áõôü, ðåñéëáìâÜíïõí ü÷é ìüíï ôçí åîÝôáóç ãéá ôï ðïéü óýóôçìá Þ áíôéêåßìåíï
åðéôñÝðåôáé ï êÜèå ÷ñÞóôçò íá ðñïóðåëÜóåé, áëëÜ êáé ðïéÝò áêñéâþò ëåéôïõñãßåò
ìðïñåß ï ÷ñÞóôçò íá åêôåëÝóåé óôï ÓÄÂÄ Þ áíôéóôïß÷ùò óôï áíôéêåßìåíï áõôü. Ç
äéáäéêáóßá ôçò åîïõóéïäüôçóçò ôïõ ÷ñÞóôç ðïõ áéôåßôáé ìßá ðñïóðÝëáóç ðñïû-
ðïèÝôåé ôçí áõèåíôéêïðïßçóÞ (authentication) ôïõ, äçëáäÞ ôçí ðéóôïðïßçóç üôé ï
÷ñÞóôçò åßíáé áõôüò ðïõ äçëþíåé ðùò åßíáé.
Ç áõèåíôéêïðïßçóç ôùí ÷ñçóôþí áðü ôï ëåéôïõñãéêü óýóôçìá äåí åîáóöáëßæåé
áðáñáéôÞôùò ðñüóâáóç êáé óôï ÓÄÂÄ. ÐïëëÝò öïñÝò, ìßá îå÷ùñéóôÞ êáé ðáñü-
ìïéá äéáäéêáóßá áðáéôåßôáé ãéá ôç ÷ïñÞãçóç óôïõò ÷ñÞóôåò ôïõ äéêáéþìáôïò íá
÷ñçóéìïðïéïýí ôï ÓÄÂÄ. Ç åõèýíç åîïõóéïäüôçóçò ÷ñÞóçò ôïõ ÓÄÂÄ óõíÞèùò
414 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

åíáðüêåéôáé óôï äéá÷åéñéóôÞ âÜóåùí äåäïìÝíùí, ï ïðïßïò ãéá ôï óêïðü áõôü Ý÷åé
êáèÞêïí íá äçìéïõñãåß ôïõò ëïãáñéáóìïýò ôùí ÷ñçóôþí ôïõ ÓÄÂÄ.
ÓõíäåäåìÝíï ìå êÜèå ëïãáñéáóìü ÷ñÞóôç åßíáé Ýíá üíïìá ÷ñÞóôç (username)
êáé Ýíá êùäéêü ðñüóâáóçò (password) , ôïí ïðïßï åðéëÝãåé ï ÷ñÞóôçò êáé åßíáé
ãíùóôü óôï ÓÄÂÄ. Ï êùäéêüò ðñüóâáóçò ðñÝðåé íá ðáñÝ÷åôáé óå êÜèå áðü-
ðåéñá óýíäåóçò ôïõ ÷ñÞóôç, þóôå íá åßíáé äõíáôü ôï ÓÄÂÄ íá åðéâåâáéþíåé ôçí
ôáõôüôçôá ðïõ ï ÷ñÞóôçò éó÷õñßæåôáé ðùò Ý÷åé. ¼ëá ôá åìðïñéêÜ ÓÄÂÄ Ý÷ïõí
ôç äõíáôüôçôá äéáôÞñçóçò ìßáò ëßóôáò Ýãêõñùí áíáãíùñéóôéêþí ïíïìÜôùí ÷ñç-
óôþí êáé óõíäåäåìÝíùí êùäéêþí ðñüóâáóçò, ç ïðïßá ìðïñåß íá äéáöÝñåé áðü
ôçí áíôßóôïé÷ç ëßóôá ðïõ äéáôçñåß ôï ëåéôïõñãéêü óýóôçìá. ¼ìùò, óå ðïëëÝò
ðåñéðôþóåéò ôá ÓÄÂÄ Ý÷ïõí ôç äõíáôüôçôá íá åìðëïõôßæïõí ôç ëßóôá áõôÞ êáé
ìå áíáãíùñéóôéêÜ ïíüìáôá ÷ñçóôþí ðïõ Ý÷ïõí äçìéïõñãçèåß áðü ôï äéá÷åéñéóôÞ
ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. Ç ëýóç áõôÞ áðïôñÝðåé ôçí áðáßôçóç áõèåíôéêï-
ðïßçóçò ÷ñçóôþí áðü ôï ÓÄÂÄ, üôáí ïé ÷ñÞóôåò Ý÷ïõí Þäç ðéóôïðïéçèåß áðü Ýíá
Ýìðéóôï êáé áóöáëÝò ëåéôïõñãéêü óýóôçìá.

16.3 ¸ëåã÷ïé ÐñïóðÝëáóçò


Ôá ÓÄÂÄ ðáñÝ÷ïõí äýï ôýðïõò åëÝã÷ïõ ðñïóðÝëáóçò ôï äéáêñéôéêü Ýëåã÷ï ðñï-
óðÝëáóçò (Discretional Access Control, DAC) êáé ôïí õðï÷ñåùôéêü Ýëåã÷ï ðñï-
óðÝëáóçò (Mandatory Access Control, MAC) ãéá ôç äéá÷åßñéóç ôïõ ðñïíïìßïõ
ðñïóðÝëáóçò äåäïìÝíùí. Áí êáé ï äéáêñéôéêüò Ýëåã÷ïò ðñïóðÝëáóçò ðáñÝ÷åôáé
áðü ôá ðåñéóóüôåñá åìðïñéêÜ ÓÄÂÄ, åßíáé ðïëý ëßãá ôá ÓÄÂÄ ðïõ õðïóôçñß-
æïõí ôïí õðï÷ñåùôéêü êáé ðïëý áõóôçñüôåñï ôýðï åëÝã÷ïõ ðñïóðÝëáóçò. Óôç
óõíÝ÷åéá èá áíáëýóïõìå ôéò äýï áõôÝò äéáöïñåôéêÝò äõíáôüôçôåò.

16.3.1 Äéáêñéôéêüò ¸ëåã÷ïò ÐñïóðÝëáóçò


Ï ôõðéêüò ôñüðïò åöïäéáóìïý äéáêñéôéêïý åëÝã÷ïõ ðñüóâáóçò óå Ýíá óýóôçìá
ÂÜóåùí ÄåäïìÝíùí âáóßæåôáé óôçí åê÷þñçóç êáé áíÜêëçóç ðñïíïìßùí (privi-
leges) ìÝóù åíôïëþí SQL [Polk 1993]. ¸íá ðñïíüìéï åðéôñÝðåé óå êÜðïéï ÷ñÞ-
óôç íá äçìéïõñãÞóåé Þ íá ðñïóðåëáýíåé (äçëáäÞ íá áíáãíþóåé, íá áðïèçêåýóåé
Þ íá ôñïðïðïéÞóåé) Ýíá áíôéêåßìåíï ôçò ÂÜóçò ÄåäïìÝíùí Þ óõãêåêñéìÝíåò óõ-
íéóôþóåò ôïõ ÓÄÂÄ. Ôá ðñïíüìéá åê÷ùñïýíôáé óôïõò ÷ñÞóôåò ìüíï áí ðñïáðáé-
ôïýíôáé óôá ðëáßóéá ôùí êáèçêüíôùí ôçò åñãáóßáò ôïõò, äçëáäÞ áí ïé ÷ñÞóôåò
äåí ìðïñïýí íá äéåêðåñáéþóïõí ôçí åñãáóßá ôïõò ÷ùñßò ôá ðñïíüìéá áõôÜ. Ç
êáôá÷ñçóôéêÞ åê÷þñçóç ìç áíáãêáßùí ðñïíïìßùí ìðïñåß íá ïäçãÞóåé óå äéÜñ-
ñçîç ôçò áóöÜëåéáò ôïõ óõóôÞìáôïò. Ôá ðñïíüìéá ðïõ ïñßæïíôáé áðü ôï ðñüôõðï
SQL åßíáé ôá åîÞò:
• SELECT: ôï ðñïíüìéï áíÜêôçóçò äåäïìÝíùí áðü Ýíá ðßíáêá,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 415

• INSERT: ôï ðñïíüìéï åéóáãùãÞò íÝùí ðëåéÜäùí óå Ýíá ðßíáêá,


• UPDATE: ôï ðñïíüìéï ôñïðïðïßçóçò áðïèçêåõìÝíùí ðëåéÜäùí óå Ýíá ðß-
íáêá,
• DELETE: ôï ðñïíüìéï äéáãñáöÞò áðïèçêåõìÝíùí ðëåéÜäùí áðü Ýíá ðß-
íáêá,
• REFERENCES: ôï ðñïíüìéï áíáöïñÜò ãíùñéóìÜôùí åíüò óõãêåêñéìÝíïõ
ðßíáêá óå ðåñéïñéóìïýò áêåñáéüôçôáò,
• USAGE: ôï ðñïíüìéï ÷ñÞóçò ðåäßùí ïñéóìïý.
Ôá ðñïíüìéá SELECT êáé UPDATE ìðïñïýí íá ðåñéïñéóèïýí óå óõãêåêñéìÝ-
íåò óôÞëåò åíüò ðßíáêá, ìç åðéôñÝðïíôáò ôçí áíÜãíùóç Þ áíôéóôïß÷ùò ôçí åíçìÝ-
ñùóç ôùí õðïëïßðùí óôçëþí ôïõ ðßíáêá. Ïìïßùò, ôï ðñïíüìéï REFERENCES
ìðïñåß íá ðåñéïñéóèåß óå óõãêåêñéìÝíåò óôÞëåò åíüò ðßíáêá, åðéôñÝðïíôáò ïé
óôÞëåò áõôÝò íá áíáöÝñïíôáé óå ðåñéïñéóìïýò îÝíïõ êëåéäéïý ãéá ôç äçìéïõñãßá
åíüò íÝïõ ðßíáêá, ÷ùñßò íá åðéôñÝðåé íá éó÷ýóåé áõôü êáé ãéá ôéò õðüëïéðåò óôÞëåò
ôïõ ðßíáêá.
Ç ãëþóóá SQL õðïóôçñßæåé ôï äéáêñéôéêü Ýëåã÷ï ðñïóðÝëáóçò ìÝóù ôùí
åíôïëþí GRANT êáé REVOKE. Ï ÷ñÞóôçò ðïõ äçìéïõñãåß Ýíá ðßíáêá ìå ôçí åíôïëÞ
CREATE TABLE, ãßíåôáé áõôïìÜôùò ï éäéïêôÞôçò (owner) ôïõ ðßíáêá êáé áðïêôÜ
áõôïäéêáßùò üëá ôá ðñïíüìéá åðß ôïõ áíôéêåéìÝíïõ áõôïý. Ïé õðüëïéðïé ÷ñÞóôåò
áñ÷éêÜ äåí Ý÷ïõí êáíÝíá ðñïíüìéï óôï íÝï ðßíáêá. Ãéá íá áðïêôÞóïõí êáé Üë-
ëïé ÷ñÞóôåò ðñïóðÝëáóç óôïí ðßíáêá, ðñÝðåé ï éäéïêôÞôçò ôïõ ðßíáêá íá ôïõò
åê÷ùñÞóåé ôá áðáñáßôçôá ðñïíüìéá ìÝóù ôçò åíôïëÞò GRANT. Ôï ÓÄÂÄ ðáñá-
êïëïõèåß áíåëëéðþò ôçí åê÷þñçóç êáé áíÜêëçóç ðñïíïìßùí óå Üëëïõò ÷ñÞóôåò,
êáé äéáóöáëßæåé üôé êÜèå óôéãìÞ ìüíï ïé ÷ñÞóôåò ðïõ äéáèÝôïõí ôá êáôÜëëçëá
ðñïíüìéá èá ìðïñïýí íá ðñïóðåëÜóïõí Ýíá áíôéêåßìåíï.
¼ôáí Ýíáò ÷ñÞóôçò äçìéïõñãåß ìßá üøç ìå ôçí åíôïëÞ CREATE VIEW, ãßíåôáé
áõôïìÜôùò ï éäéïêôÞôçò ôçò üøçò áëëÜ äåí áðïêôÜ áðáñáéôÞôùò ôá ðëÞñç äéêáé-
þìáôá óôçí üøç áõôÞ. Ãéá ôç äçìéïõñãßá ôçò üøçò, ï ÷ñÞóôçò ðñÝðåé íá äéáèÝôåé
ôï ðñïíüìéï åðéëïãÞò (SELECT) óå üëïõò ôïõò ðßíáêåò ðïõ óõììåôÝ÷ïõí óôç äç-
ìéïõñãßá ôçò üøçò. Ùóôüóï, ï éäéïêôÞôçò ôçò üøçò áðïêôÜ ôá ðñïíüìéá INSERT,
UPDATE êáé DELETE óôçí üøç ìüíï áí äéáôçñåß ôá ðñïíüìéá áõôÜ óå êÜèå
ðßíáêá ðïõ óõììåôÝ÷åé óôç äçìéïõñãßá ôçò óõãêåêñéìÝíçò üøçò.

Åê÷þñçóç Ðñïíïìßùí
¼ðùò áíáöÝñèçêå êáé ðñïçãïõìÝíùò, ãéá ôçí åê÷þñçóç ðñïíïìßùí åðß ôùí áíôé-
êåéìÝíùí ìßáò ÂÜóçò ÄåäïìÝíùí óå Üëëïõò ÷ñÞóôåò ÷ñçóéìïðïéåßôáé ç åíôïëÞ
416 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

GRANT. ÓõíÞèùò ç åíôïëÞ áõôÞ êáëåßôáé áðü ôïí éäéïêôÞôç åíüò ðßíáêá. Ç óý-
íôáîç ôçò åßíáé ç åîÞò:
GRANT <ëßóôá_ðñïíïìßùí> | ALL PRIVILEGES>
ON <ëßóôá_áíôéêåéìÝíùí>
TO <ëßóôá_÷ñçóôþí | PUBLIC>
[WITH GRANT OPTION];

Ç ëßóôá ðñïíïìßùí ó÷çìáôßæåôáé áðü Ýíá Þ ðåñéóóüôåñá áðü ôá åðüìåíá


ðñïíüìéá, äéá÷ùñéóìÝíá ìåôáîý ôïõò ìå êüììáôá:
• SELECT [<ëßóôá óôçëþí>]
• DELETE
• INSERT
• UPDATE [<ëßóôá óôçëþí>]
• REFERENCES [<ëßóôá óôçëþí>]
• USAGE
Ç ëßóôá áíôéêåéìÝíùí ìðïñåß íá ðåñéëáìâÜíåé ôá ïíüìáôá åíüò Þ ðåñéóóïôÝ-
ñùí ðéíÜêùí, üøåùí, ðåäßùí ïñéóìïý, ê.ô.ë., ç ëßóôá óôçëþí ôï üíïìá ìßáò Þ
ðåñéóóïôÝñùí óôçëþí åíüò ðßíáêá Þ ìßáò üøçò êáé ç ëßóôá ÷ñçóôþí ôï áíáãíù-
ñéóôéêü üíïìá ÷ñÞóôç åíüò Þ ðåñéóóïôÝñùí ÷ñçóôþí Þ ïìÜäùí ÷ñçóôþí. Ãéá åõ-
êïëßá, ç åíôïëÞ GRANT åðéôñÝðåé ôç ÷ñÞóç ôçò äåóìåõìÝíçò öñÜóçò ALL PRIV-
ILEGES ãéá ôçí åê÷þñçóç óå ÷ñÞóôåò üëùí ìáæß ôùí ðñïíïìßùí åðß åíüò Þ ðåñéó-
óïôÝñùí áíôéêåéìÝíùí. Ç åíôïëÞ GRANT ðáñÝ÷åé åðßóçò ôçí ëÝîç êëåéäß PUBLIC
ãéá ôçí åê÷þñçóç ðñïíïìßùí óå üëïõò ôïõò õðÜñ÷ïíôåò êáé ìåëëïíôéêïýò åîïõ-
óéïäïôçìÝíïõò ÷ñÞóôåò ôïõ ÓÄÂÄ.
Ç ðáñÜìåôñïò WITH GRANT OPTION ÷ïñçãåß óôïõò ÷ñÞóôåò ôçò ëßóôáò ëß-
óôá ÷ñçóôþí ôï äéêáßùìá íá åê÷ùñÞóïõí êáé óå Üëëïõò ÷ñÞóôåò ôá ðñïíüìéá ðïõ
áðÝêôçóáí óôá áíôéêåßìåíá ðïõ áíáöÝñïíôáé óôç ëßóôá áíôéêåéìÝíùí. Áí êáé áõ-
ôïß ïé ÷ñÞóôåò ÷ïñçãÞóïõí ôá ðñïíüìéá áõôÜ ìå ôçí ðáñÜìåôñï WITH GRANT
OPTION, ïé ÷ñÞóôåò ðïõ èá áðïêôÞóïõí ôá ðñïíüìéá ìðïñïýí åðßóçò íá ôá ÷ï-
ñçãÞóïõí óå Üëëïõò ÷ñÞóôåò. Áí ç äåóìåõìÝíç öñÜóç WITH GRANT OPTION äåí
åìöáíßæåôáé óå ìßá åíôïëÞ GRANT, ôüôå ï ÷ñÞóôçò ðïõ áðïêôÜ ôá óõãêåêñéìÝíá
ðñïíüìéá äåí Ý÷åé ôç äõíáôüôçôá íá ôá ÷ïñçãÞóåé óå Üëëïõò ÷ñÞóôåò. Ìå ôïí
ôñüðï áõôü, ï éäéïêôÞôçò åíüò áíôéêåéìÝíïõ äéáôçñåß ðëÞñç ãíþóç ãéá ôï ðïéïß
÷ñÞóôåò êáé ìå ðïéÜ ðñïíüìéá Ý÷ïõí äéêáéþìáôá ÷ñÞóçò áíôéêåéìÝíùí ðïõ ï ßäéïò
äçìéïýñãçóå.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 417

ÁíÜêëçóç Ðñïíïìßùí
Ãéá ôçí áíÜêëçóç ðñïíïìßùí åðß áíôéêåéìÝíùí ÷ñçóéìïðïéåßôáé ç åíôïëÞ REVOKE.
Ç åêôÝëåóç ôçò åíôïëÞò REVOKE ìðïñåß íá áíáêáëÝóåé üëá Þ ìåñéêÜ áðü ôá
ðñïíüìéá ðïõ åß÷áí åê÷ùñçèåß ðáëáéüôåñá ìÝóù ôçò åíôïëÞò GRANT. Ç óýíôáîç
ôçò REVOKE åßíáé ç åîÞò:

REVOKE [GRANT OPTION FOR] <ëßóôá_ðñïíïìßùí>


| ALL PRIVILEGES
ON <ëßóôá_áíôéêåéìÝíùí>
FROM <ëßóôá_÷ñçóôþí> | PUBLIC
[RESTRICT | CASCADE];

Ç Ýêöñáóç ALL PRIVILEGES áíáöÝñåôáé óå üëá ôá ðñïíüìéá ðïõ åß÷áí


÷ïñçãçèåß óôïõò ÷ñÞóôåò ôçò ëßóôáò ëßóôá ÷ñçóôþí áðü ôï ÷ñÞóôç ðïõ áíáêáëåß
ôá ðñïíüìéá áõôÜ. Ç ðñïáéñåôéêÞ äÞëùóç GRANT OPTION FOR åðéôñÝðåé ôï ðñï-
íüìéï ðïõ åß÷å åê÷ùñçèåß ìÝóù ôçò äÞëùóçò WITH GRANT OPTION ôçò åíôïëÞò
GRANT íá áíáêëçèåß îå÷ùñéóôÜ áðü ôá ßäéá ôá ðñïíüìéá åðß ôùí áíôéêåéìÝíùí.
Ìå ôçí ðñïóèÞêç ôçò Ýêöñáóçò RESTRICT, ç åíôïëÞ REVOKE èá áðïôý÷åé áí ôï
ðñïíüìéï Ý÷åé ÷ïñçãçèåß áðü ôï ÷ñÞóôç ðïõ ôï êáôÝ÷åé êáé óå Üëëïõò ÷ñÞóôåò Þ
áí ôï ÷ñçóéìïðïßçóå ãéá ôïí ïñéóìü üøåùí. Ç Ýêöñáóç RESTRICT åßíáé ç ðñïå-
ðéëåãìÝíç Ýêöñáóç. Ìå ôçí ðñïóèÞêç ôçò Ýêöñáóçò CASCADE ç åíôïëÞ REVOKE
èá åêôåëåóèåß êáé áõôïìÜôùò èá áíáêáëÝóåé ôá ðñïíüìéá áðü êÜèå ÷ñÞóôç ðïõ
áðÝêôçóå ôá ðñïíüìéá áõôÜ áðü ôï ÷ñÞóôç áðü ôïí ïðïßï áíáêáëïýíôáé êáé èá
êáôáóôñáöïýí üëåò ïé üøåéò ðïõ ó÷çìáôßóèçêáí ìå âÜóç ôá ðñïíüìéá áõôÜ.
Ç åêôÝëåóç ìßáò åíôïëÞò REVOKE áðü Ýíá ÷ñÞóôç Á ðñïò Ýíá Üëëï ÷ñÞóôç Â,
äåí åðçñåÜæåé ôá ðñïíüìéá ðïõ Ý÷ïõí ÷ïñçãçèåß óôï ÷ñÞóôç  áðü Üëëïõò ôñßôïõò
÷ñÞóôåò. Óõíåðþò, áí Ýíáò ÷ñÞóôçò C Ý÷åé ÷ïñçãÞóåé óôï ÷ñÞóôç  ôï ðñïíüìéï
ðïõ ï ÷ñÞóôçò Á áíáêáëåß, ôüôå ç åê÷þñçóç ôïõ ðñïíïìßïõ áðü ôï ÷ñÞóôç C
åðéôñÝðåé óôï ÷ñÞóôç  íá êÜíåé áêüìç ÷ñÞóç ôïõ óõãêåêñéìÝíïõ ðñïíïìßïõ.
Óôï ðáñÜäåéãìá ôïõ Ó÷Þìáôïò 16.2 ï ÷ñÞóôçò Á ùò éäéïêôÞôçò ìßáò õðïèåôéêÞò
ó÷Ýóçò employee åê÷ùñåß ôï ðñïíüìéï SELECT óôïõò ÷ñÞóôåò B êáé C (âÞìáôá
1 êáé 2, áíôéóôïß÷ùò) ìå ôç ÷ñÞóç ôçò ðáñáìÝôñïõ WITH GRANT OPTION. Ïé
÷ñÞóôåò  êáé C ìå ôç óåéñÜ ôïõò ÷ïñçãïýí ôï ðñïíüìéï áõôü óôï ÷ñÞóôç D
(âÞìáôá 3 êáé 4, áíôéóôïß÷ùò). Óôç óõíÝ÷åéá ï ÷ñÞóôçò D åê÷ùñåß ôï ðñïíüìéï
SELECT åðß ôçò ó÷Ýóçò employee óôïí ÷ñÞóôç E (âÞìá 5). ¼ôáí, ëïéðüí ï ÷ñÞóôçò
Á áíáêáëåß ôï ðñïíüìéï SELECT áðü ôï ÷ñÞóôç  ìå ôçí ðáñÜìåôñï CASCADE
(âÞìá 6), ôï ðñïíüìéï áíáêáëåßôáé áðü ôï ÷ñÞóôç Â, ü÷é üìùò êáé áðü ôï ÷ñÞóôç
D äéüôé ï ÷ñÞóôçò D Ý÷åé ëÜâåé ôï ßäéï ðñïíüìéï êáé áðü ôï ÷ñÞóôç C. Áí ï
÷ñÞóôçò C äåí åß÷å åê÷ùñÞóåé áõôü ôï ðñïíüìéï óôï ÷ñÞóôç D, ôüôå ç áíÜêëçóç
418 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

3 : G R A N T S E L E C T

1 : G R A N T S E L E C T

N E M P L E E
O O Y

N E M P L E E
O O Y

T H G R A N T P T N
W I O I O

T H G R A N T P T N
W I O I O

G R A N T S E L E C T
:
5

6 : R E V E S E L E C T
O K

N E M P L E E
O O Y

R M E M P L E E
F O O Y

C A S C A D E

D E

4 : G R A N T S E L E C T

G R A N T S E L E C T
2 :

N E M P L E E
O O Y

N E M P L E E
O O Y

T H G R A N T P T N
W I O I O

T H G R A N T P T N
W I O I O

Ó÷Þìá 16.2: ÓõíÝðåéåò ÷ñÞóçò ôçò åíôïëÞò REVOKE.

èá åß÷å äéáäï÷éêÜ áöáéñÝóåé ôï ðñïíüìéï SELECT ON employee ôüóï áðü ôï


÷ñÞóôç D üóï êáé áðü ôï ÷ñÞóôç E.
Ï äéáêñéôéêüò Ýëåã÷ïò ðñïóðÝëáóçò, áí êáé áðïôåëåóìáôéêüò, äéáèÝôåé ôçí
á÷ßëëåéï ðôÝñíá ôïõ, êáèþò õðÜñ÷åé ôñüðïò þóôå Ýíáò ìç-åîïõóéïäïôçìÝíïò ÷ñÞ-
óôçò íá åîáðáôÞóåé Ýíáí åîïõóéïäïôçìÝíï ÷ñÞóôç õðïêëÝðôïíôáò åõáßóèçôá äå-
äïìÝíá ôïõ. Ãéá ðáñÜäåéãìá, Ýóôù Ýíáò ÷ñÞóôçò Á ðïõ Ý÷åé õðü ôçí éäéïêôçóßá
ôïõ Ýíá ðßíáêá R ãéá ôç äéáôÞñçóç êáé åðåîåñãáóßá åõáßóèçôùí äåäïìÝíùí ôïõ
êáé Ýíáò êáêüâïõëïò ÷ñÞóôçò  ðïõ äåí äéáèÝôåé ðñïíüìéá ðñïóðÝëáóçò åðß ôïõ
ðßíáêá R. Óôç óõíÝ÷åéá, Ýóôù üôé ï êáêüâïõëïò ÷ñÞóôçò  äçìéïõñãåß Ýíá ðßíáêá
S êáé åê÷ùñåß ôï ðñïíüìéï INSERT åðß ôïõ S óôïí ÷ñÞóôç Á ÷ùñßò ìÜëéóôá ï
÷ñÞóôçò Á íá ãíùñßæåé ãéá ôï ãåãïíüò áõôü. ¸ðåéôá, ï êáêüâïõëïò ÷ñÞóôçò B
ôñïðïðïéåß êÜðïéá åöáñìïãÞ ëïãéóìéêïý ðïõ ÷ñçóéìïðïéåß ï åîïõóéïäïôçìÝíïò
÷ñÞóôçò Á ãéá ôçí åðéêïéíùíßá ôïõ ìå ôïí ðßíáêá R êáé ôçí ðñïóðÝëáóç ôùí
äåäïìÝíùí ôïõ (ð.÷., Ýíá äéáäñáóôéêü ãñáöéêü ðåñéâÜëëïí) êáé åíóùìáôþíåé êÜ-
ðïéåò êñõöÝò åíôïëÝò ãéá ôçí áíôéãñáöÞ åõáßóèçôùí äåäïìÝíùí áðü ôïí ðßíáêá
R, üðïõ Ý÷åé ðñüóâáóç ìüíï ï ÷ñÞóôçò Á, óôï íÝï ðßíáêá S ðïõ äçìéïõñãÞèçêå
áðü ôï ÷ñÞóôç Â. Ìå ôïí ôñüðï áõôü, ï ÷ñÞóôçò  ðïõ åßíáé ìç-åîïõóéïäïôçìÝíïò
ãéá áíÜãíùóç ôïõ ðßíáêá R åðéôõã÷Üíåé ôåëéêþò íá áðïêôÞóåé Ýíá áíôßãñáöï ôïõ
ðßíáêá áõôïý. Óôï ôÝëïò ôçò äéáäéêáóßáò ï êáêüâïõëïò ÷ñÞóôçò Â, ãéá íá êáëýøåé
ðëÞñùò ôéò åíÝñãåéÝò ôïõ, ìðïñåß íá ôñïðïðïéÞóåé êáé ðÜëé ôçí åöáñìïãÞ ëïãé-
óìéêïý ðïõ ÷ñçóéìïðïßçóå ùò äïýñåéï ßððï (trojan horse) ãéá ôçí åîáðÜôçóç ôïõ
åîïõóéïäïôçìÝíïõ ÷ñÞóôç Á, åðáíáöÝñïíôÜò ôçí óôçí áñ÷éêÞ ôçò ìïñöÞ, äçëáäÞ
÷ùñßò ôïí åíóùìáôùìÝíï êñõöü êþäéêá åíôïëþí.
Åßíáé öáíåñü üôé ÷ñåéÜæåôáé ìßá äéáöïñåôéêÞ ðïëéôéêÞ áóöáëåßáò ãéá ôçí áíôé-
ìåôþðéóç áõôÞò ôçò óïâáñÞò áäõíáìßáò ôïõ äéáêñéôéêïý åëÝã÷ïõ ðñïóðÝëáóçò.
Ç ðïëéôéêÞ áõôÞ åßíáé ï õðï÷ñåùôéêüò Ýëåã÷ïò ðñïóðÝëáóçò ðïõ áíáëýåôáé óôç
óõíÝ÷åéá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 419

16.3.2 Õðï÷ñåùôéêüò ¸ëåã÷ïò ÐñïóðÝëáóçò


Ï õðï÷ñåùôéêüò Ýëåã÷ïò ðñïóðÝëáóçò âáóßæåôáé óå ðïëéôéêÝò ðïõ äåí ìðïñïýí
íá ìåôáâëçèïýí áðü ôïõò ÷ñÞóôåò ôïõ ÓÄÂÄ. ÊÜèå áíôéêåßìåíï ÂÜóçò ÄåäïìÝ-
íùí óõíäÝåôáé ìå Ýíá âáèìü áóöáëåßáò (security class) êáé êÜèå ÷ñÞóôçò ìå Ýíá
âáèìü åîïõóéïäüôçóçò (security clearance) ãéá ôçí ðñïóðÝëáóç áíôéêåéìÝíùí óõ-
ãêåêñéìÝíùí âáèìþí áóöáëåßáò. Ôï ÓÄÂÄ åëÝã÷åé áí Ýíáò ÷ñÞóôçò åðéôñÝðåôáé
íá áíáãíþóåé Þ íá áðïèçêåýóåé Ýíá áíôéêåßìåíï ìå âÜóç êáíüíåò ðïõ óõãêñßíïõí
ôï âáèìü åîïõóéïäüôçóçò ôïõ ÷ñÞóôç ìå ôï âáèìü áóöáëåßáò ôïõ áíôéêåéìÝíïõ.
Áõôïß ïé êáíüíåò äéáóöáëßæïõí üôé ôá åõáßóèçôá äåäïìÝíá äåí èá êïéíïðïéç-
èïýí ðïôÝ óå êÜðïéï ÷ñÞóôç ðïõ äåí äéáèÝôåé ôçí êáôÜëëçëç åîïõóéïäüôçóç. Ôï
ðñüôõðï ôçò SQL äåí ðåñéëáìâÜíåé ìÝ÷ñé óÞìåñá õðïóôÞñéîç åíôïëþí ãéá ôçí
åðéâïëÞ ôïõ õðï÷ñåùôéêïý åëÝã÷ïõ ðñïóðÝëáóçò.
Ôï ðéï äçìïöéëÝò ðñùôüêïëëï ãéá ôçí ðåñéãñáöÞ ôïõ õðï÷ñåùôéêïý åëÝã÷ïõ
ðñïóðÝëáóçò ïíïìÜæåôáé ðñùôüêïëëï Bell-LaPadula [Bell 1974] êáé âáóßæåôáé
óôïõò ãíùóôïýò üñïõò õðïêåßìåíï, áíôéêåßìåíï, âáèìüò áóöáëåßáò êáé åîïõ-
óéïäüôçóç áóöáëåßáò. Óôç óõíÝ÷åéá ôçò åíüôçôáò èá èåùñçèåß üôé ï âáèìüò
åîïõóéïäüôçóçò åíüò õðïêåéìÝíïõ L Þ ï âáèìüò áóöáëåßáò åíüò áíôéêåéìÝíïõ Ï
óõìâïëßæåôáé ìå ôçí Ýêöñáóç class(L) êáé class(Ï), áíôéóôïß÷ùò. Åðßóçò, ãéá ëü-
ãïõò áðëüôçôáò èá èåùñçèåß üôé õðÜñ÷ïõí ôÝóóåñéò âáèìïß áóöáëåßáò: ï Üêñùò
áðüññçôïò (top secret, TS), ï áðüññçôïò (secret, S), ï åìðéóôåõôéêüò (confiden-
tial, C) êáé ï áäéáâÜèìéôïò (unclassified, U). ÔÝëïò ãéá ôç äéáâÜèìéóç áõôÞ èá
ïñéóèåß ç ôáîéíüìçóç TS > S > C > U, üðïõ A > B óçìáßíåé üôé ï âáèìüò Á
âñßóêåôáé óå õøçëüôåñï åðßðåäï áóöáëåßáò áðü ôïí âáèìü Â.
Ôï ðñùôüêïëëï Bell-LaPadula èÝôåé äýï ðåñéïñéóìïýò óå üëåò ôéò áíáãíþóåéò
êáé áðïèçêåýóåéò åðß ôùí áíôéêåéìÝíùí ôçò ÂÜóçò ÄåäïìÝíùí:

• Ðåñéïñéóìüò ÁðëÞò Áóöáëåßáò (ü÷é áíáãíþóåéò ðñïò ôá åðÜíù - no reads


up): Óôï õðïêåßìåíï L åðéôñÝðåôáé ç áíÜãíùóç ôïõ áíôéêåéìÝíïõ O ìüíï
áí class(L) ≥ class(O). Ãéá ðáñÜäåéãìá, óå Ýíá õðïêåßìåíï ìå åîïõóéïäü-
ôçóç âáèìïý áóöáëåßáò S åðéôñÝðåôáé ç áíÜãíùóç áðïññÞôùí áëëÜ êáé
áäéáâÜèìçôùí äåäïìÝíùí, áëëÜ óå Ýíá õðïêåßìåíï ìå åîïõóéïäüôçóç U
äåí åðéôñÝðåôáé ç áíÜãíùóç áðüññçôùí äåäïìÝíùí.

• Ðåñéïñéóìüò-* (ü÷é åããñáöÝò ðñïò ôá êÜôù - no writes down): Óôï õðï-


êåßìåíï L åðéôñÝðåôáé ç åããñáöÞ óôï áíôéêåßìåíï Ï ìüíï áí class(L) ≤
class(O). Ãéá ðáñÜäåéãìá, óå Ýíá õðïêåßìåíï ìå åîïõóéïäüôçóç S åðéôñÝ-
ðåôáé ç åããñáöÞ ìüíï óå áíôéêåßìåíá ìå âáèìü áóöáëåßáò S êáé åðÜíù.
Ìå ôïí ðåñéïñéóìü áõôü ìßá åöáñìïãÞ äïýñåéïõ ßððïõ äåí åßíáé äõíáôü
íá õðïâéâÜóåé ôï âáèìü áóöáëåßáò ìßáò áðüññçôçò ðëçñïöïñßáò, áíôé-
420 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

ãñÜöïíôÜò ôçí êáé äéáññÝïíôÜò ôçí óå áíôéêåßìåíá ìå ÷áìçëüôåñï âáèìü


áóöáëåßáò.
Áí óå êÜðïéá ÂÜóç ÄåäïìÝíùí ôáõôü÷ñïíá ìå ôï äéáêñéôéêü, êáèïñéóèåß êáé ï
õðï÷ñåùôéêüò Ýëåã÷ïò ðñïóðÝëáóçò, ôüôå ïé ðñïçãïýìåíïé ðåñéïñéóìïß åöáñìü-
æïíôáé ðñïóèåôéêÜ. Óõíåðþò ãéá ôçí áíÜãíùóç Þ áðïèÞêåõóç åíüò áíôéêåéìÝíïõ,
ï ÷ñÞóôçò èá ïöåßëåé íá êáôÝ÷åé ôá êáôÜëëçëá ðñïíüìéá ðïõ ðáñÝ÷ïíôáé ìÝóù
ôçò åíôïëÞò GRANT ôçò SQL êáé ôçí êáôÜëëçëç åîïõóéïäüôçóç áóöáëåßáò ðïõ
ïñßóèçêå ãéá ôï ÷ñÞóôç áõôü áðü ôï äéá÷åéñéóôÞ ôçò ÂÜóçò ÄåäïìÝíùí.

16.3.3 Ðïëõåðßðåäåò Ó÷Ýóåéò êáé Ðïëõóôéãìéïôõðßá


Ãéá ôçí åöáñìïãÞ ôçò ðïëéôéêÞò ôïõ õðï÷ñåùôéêïý åëÝã÷ïõ ðñïóðÝëáóçò óå ó÷å-
óéáêÝò âÜóåéò äåäïìÝíùí, Ýíáò âáèìüò áóöáëåßáò ðñÝðåé íá óõíäåèåß ìå êÜèå
ðßíáêá Þ ðëåéÜäá Þ ÷áñáêôçñéóôéêü. Óôç óõíÝ÷åéá èá èåùñçèåß üôé êÜèå ðëåéÜäá
Ý÷åé óõíäåèåß ìå Ýíá óõãêåêñéìÝíï âáèìü áóöáëåßáò. Ç êáôÜóôáóç áõôÞ ïäçãåß
óôçí Ýííïéá ôçò ðïëõåðßðåäçò ó÷Ýóçò (multilevel relation), ç ïðïßá åìöáíßæåé äéá-
öïñåôéêÝò ðëåéÜäåò óå ÷ñÞóôåò ìå äéáöïñåôéêÝò åîïõóéïäïôÞóåéò áóöáëåßáò. Ãéá
ðáñÜäåéãìá, Ýíáò ðßíáêáò Å÷èñéêÝò ÄõíÜìåéò óõíïäåõüìåíïò ìå Ýíá ÷áñáêôçñé-
óôéêü ðïõ öÝñåé ôï âáèìü áóöáëåßáò êÜèå ðëåéÜäáò åìöáíßæåôáé óôïí Ðßíáêá
16.1.
óôïé÷åßï å÷èñïý ðëÞèïò âáèìüò áóöáëåßáò
Óôñáôüðåäá 4 C
ÍáñêïðÝäéá 2 C
Õðüãåéá Íïóïêïìåßá 4 C
ÐõñáõëéêÝò ÅãêáôáóôÜóåéò 3 S
ÅãêáôáóôÜóåéò Ðõñçíéêþí ¼ðëùí 2 TS

Ðßíáêáò 16.1: Ó÷Ýóç Å÷èñéêÝò ÄõíÜìåéò ìå äéáâáèìéóìÝíç åõáßóèçôç óôñáôéù-


ôéêÞ ðëçñïöïñßá.

Ïé ÷ñÞóôåò ìå åîïõóéïäüôçóç áóöáëåßáò TS èá Ý÷ïõí ôç äõíáôüôçôá íá ðñï-


óðåëáýíïõí üëåò ôéò ðëåéÜäåò ôïõ ðßíáêá Å÷èñéêÝò ÄõíÜìåéò, ùóôüóï ïé ÷ñÞóôåò
ìå åîïõóéïäüôçóç S êáé C èá ìðïñïýí íá ðñïóðåëáýíïõí ìüíï ôéò ôÝóóåñéò êáé
ôéò ôñåéò ðñþôåò ðëåéÜäåò áíôéóôïß÷ùò, åíþ ïé ÷ñÞóôåò ìå åîïõóéïäüôçóç U äåí
èá Ý÷ïõí êáìßá ðñüóâáóç. ¸óôù üôé ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá åßíáé ôï
óôïé÷åßï å÷èñïý êáé üôé Ýíáò ÷ñÞóôçò ìå åîïõóéïäüôçóç U åðéèõìåß íá åéóÜãåé
óôïí ðßíáêá ôçí ðëåéÜäá <ÅãêáôáóôÜóåéò Ðõñçíéêþí ¼ðëùí, 1, U>. Ç åé-
óáãùãÞ áõôÞ áðïññßðôåôáé äéüôé ðáñáâéÜæåé ôïí ðåñéïñéóìü ôïõ ðñùôåýïíôïò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 421

êëåéäéïý. ¼ìùò ç áäõíáìßá åéóáãùãÞò áõôÞò ôçò ðëåéÜäáò ðëçñïöïñåß ôï ÷ñÞ-


óôç ìå åîïõóéïäüôçóç U, üôé ìßá Üëëç ðëåéÜäá õößóôáôáé óôïí ðßíáêá ìå ôï ßäéï
ðñùôåýïí êëåéäß êáé ìå âáèìü áóöáëåßáò õøçëüôåñï áðü U. Ôï ãåãïíüò áõôü
äéáññçãíýåé ôçí áðáßôçóç áóöáëåßáò ôïõ ðñþôïõ ðåñéïñéóìïý ôïõ ðñùôïêüëëïõ
Bell-LaPadula, óýìöùíá ìå ôïí ïðïßï ïé ÷ñÞóôåò äåí ðñÝðåé íá Ý÷ïõí ôç äõíáôü-
ôçôá óõìðåñáóìïý ðëçñïöïñßáò ìå âáèìü áóöáëåßáò õøçëüôåñï áðü ôï âáèìü
ðïõ ïé ÷ñÞóôåò áõôïß äéáèÝôïõí.

óôïé÷åßï å÷èñïý ðëÞèïò âáèìüò áóöáëåßáò


Óôñáôüðåäá 4 C
ÍáñêïðÝäéá 2 C
Õðüãåéá Íïóïêïìåßá 4 C
ÐõñáõëéêÝò ÅãêáôáóôÜóåéò 3 S
ÅãêáôáóôÜóåéò Ðõñçíéêþí ¼ðëùí 2 TS
ÅãêáôáóôÜóåéò Ðõñçíéêþí ¼ðëùí 1 U

Ðßíáêáò 16.2: ÅìöÜíéóç öáéíïìÝíïõ ðïëõóôéãìéïôõðßáò óå ðïëõåðßðåäï ðßíáêá.

Ôï ðñüâëçìá ôçò äéáññïÞò ðëçñïöïñßáò ðñïò êáôþôåñá åðßðåäá ìðïñåß íá


õðåñêåñáóèåß áí ôï ÷áñáêôçñéóôéêü âáèìüò áóöáëåßáò óõìðåñéëçöèåß óôï ó÷ç-
ìáôéóìü ôïõ ðñùôåýïíôïò êëåéäéïý ôïõ ðßíáêá. Ìå áõôÞ ôçí ðñïûðüèåóç êáé
ãéá ôï ðáñÜäåéãìá ðïõ ìåëåôÞèçêå ðñïçãïõìÝíùò, åðéôñÝðåôáé ç åéóáãùãÞ ôçò
íÝáò ðëåéÜäáò áðü ôï ÷ñÞóôç ìå åîïõóéïäüôçóç U, ïðüôå ôï íÝï óôéãìéüôõðï
ôïõ ðßíáêá åìöáíßæåôáé óôïí 16.2. Ôþñá, ïé ÷ñÞóôåò ìå åîïõóéïäüôçóç U âëÝ-
ðïõí ìüíï ôç íÝá ðëåéÜäá ðïõ åéóÞ÷èçêå, ïé ÷ñÞóôåò C âëÝðïõí ôéò ôñåéò ðñþôåò
ðëåéÜäåò êáé ôç íÝá ðëåéÜäá, åíþ ôÝëïò ïé ÷ñÞóôåò ìå åîïõóéïäüôçóç S êáé TS
âëÝðïõí óõíïëéêÜ ðÝíôå êáé Ýîé ðëåéÜäåò, áíôéóôïß÷ùò. Ôï áðïôÝëåóìá åßíáé ìßá
ó÷Ýóç ðïõ Ý÷åé äýï ðëåéÜäåò ìå ôçí ßäéá ôéìÞ óôï ÷áñáêôçñéóôéêü óôïé÷åßï å÷èñïý,
êÜôé ðïõ ìðïñåß íá ðñïêáëÝóåé óýã÷õóç. Ç óýã÷õóç áõôÞ ðáýåé íá õößóôáôáé
áí èåùñçèåß üôé ç ðëåéÜäá ìå ôïí õøçëüôåñï âáèìü áóöáëåßáò åßíáé ç ðëÝïí
áîéüðéóôç ìåôáîý ôùí äýï Þ áí õðÜñîåé öñïíôßäá þóôå íá åìöáíßæåôáé ìüíï ìßá
ðëåéÜäá áíÜ âáèìü åîïõóéïäüôçóçò ôïõ ÷ñÞóôç. Ôï öáéíüìåíï ýðáñîçò ïíôïôÞ-
ôùí ðïõ åìöáíßæïíôáé íá öÝñïõí äéáöïñåôéêÝò ôéìÝò óå ÷ñÞóôåò ìå äéáöïñåôéêÝò
åîïõóéïäïôÞóåéò áóöáëåßáò ïíïìÜæåôáé ðïëõóôéãìéïôõðßá (polyinstantiation) .
Ôá ðïëõåðßðåäá ÓÄÂÄ ïíïìÜæïíôáé Ýìðéóôá (trusted) äéüôé Ý÷ïõí ôç äõíá-
ôüôçôá íá äéá÷ùñßæïõí ôá äåäïìÝíá ìå âÜóç ôï âáèìü áóöáëåßáò ôïõò êáé íá
äéáóöáëßæïõí üôé åðéâÜëëïíôáé êáé ïé äýï ðåñéïñéóìïß ôïõ ðñùôïêüëëïõ Bell-
LaPadula. Óå ãåíéêÝò ãñáììÝò, áí êáé ï õðï÷ñåùôéêüò Ýëåã÷ïò ðñïóðÝëáóçò
422 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

áíôéìåôùðßæåé ìå åðéäåîéüôçôá Ýíá ìåßæïí åëÜôôùìá ôïõ äéáêñéôéêïý åëÝã÷ïõ ðñï-


óðÝëáóçò, åíôïýôïéò Ý÷åé ùò áäõíáìßá ôïõ ôçí áõóôçñüôçôá ôïõ ðåñéâÜëëïíôïò
ðïõ äçìéïõñãåß. Óôá ðåñéóóüôåñá ðïëõåðßðåäá ÓÄÂÄ ïé ðïëéôéêÝò ôïõ õðï÷ñå-
ùôéêïý åëÝã÷ïõ ðñïóðÝëáóçò åãêáèßóôáíôáé áðü ôïõò äéá÷åéñéóôÝò ôçò ÂÜóçò
ÄåäïìÝíùí êáé ïé ìç÷áíéóìïß ÷ïñÞãçóçò âáèìþí áóöáëåßáò ðïëëÝò öïñÝò åßíáé
Üêáìðôïé.

16.4 ÅðéâïëÞ ÁóöÜëåéáò ìÝóù ¼øåùí


¼ðùò áíáöÝñèçêå óôï ÊåöÜëáéï 6.5, ç üøç åßíáé ôï äõíáìéêü áðïôÝëåóìá åíüò
Þ ðåñéóóïôÝñùí ó÷åóéáêþí åñùôçìÜôùí ðïõ åöáñìüæïíôáé óå Ýíáí Þ ðåñéóóü-
ôåñïõò ðßíáêåò ìå óôü÷ï ôç äçìéïõñãßá åíüò íÝïõ ðßíáêá. Ç üøç åßíáé Ýíáò
åéêïíéêüò ðßíáêáò ðïõ óôçí ðñáãìáôéêüôçôá äåí õößóôáôáé ìÝóá óôç ÂÜóç Äå-
äïìÝíùí, áëëÜ ðáñÜãåôáé ìå áßôçìá åíüò ÷ñÞóôç, ôç óôéãìÞ ôïõ áéôÞìáôüò áõôïý.
Ï ìç÷áíéóìüò ôçò üøçò ðáñÝ÷åé Ýíá éó÷õñü êáé åõÝëéêôï ìç÷áíéóìü áóöá-
ëåßáò ãéá ôçí áðüêñõøç ôìçìÜôùí ôçò ÂÜóçò ÄåäïìÝíùí áðü óõãêåêñéìÝíïõò
÷ñÞóôåò. Äçìéïõñãþíôáò ìßá üøç êáé ðáñÝ÷ïíôáò óå êÜðïéï ÷ñÞóôç ôï ðñïíüìéï
ðñïóðÝëáóçò ôçò, ï ÷ñÞóôçò áõôüò äåí åßíáé åíÞìåñïò ãéá ôçí ýðáñîç ÷áñáêôç-
ñéóôéêþí Þ ðëåéÜäùí ðïõ åíäå÷ïìÝíùò áðïõóéÜæïõí áðü ôçí üøç. Åðßóçò, ìå ôçí
åê÷þñçóç óôï ÷ñÞóôç ôï ðñïíüìéï ðñïóðÝëáóçò ìüíï óôçí üøç, ï ÷ñÞóôçò áõôüò
äåí ìðïñåß íá ðñïóðåëáýíåé ôïõò ðßíáêåò áðü ôïõò ïðïßïõò ç üøç äçìéïõñãÞ-
èçêå. Ìå ôç ëýóç áõôÞ, ïé üøåéò åßíáé Ýíáò ðéï åõÝëéêôïò êáé ðåñéïñéóôéêüò
ìç÷áíéóìüò áóöáëåßáò áðü ôçí åê÷þñçóç óôï ÷ñÞóôç éäéáéôÝñùí ðñïíïìßùí ãéá
êÜèå ðßíáêá.
¸óôù ãéá ðáñÜäåéãìá ç üøç ÁíáëõôéêÞ Âáèìïëïãßá ðïõ äçìéïõñãåßôáé áðü
Ýíá ðßíáêá Öïéôçôïëüãéï, ï ïðïßïò ðåñéÝ÷åé ôïõò âáèìïýò üëùí ôùí öïéôçôþí áíÜ
ìÜèçìá:

CREATE VIEW ÁíáëõôéêÞ_Âáèìïëïãßá


AS
SELECT üíïìá_ìáèÞìáôïò,âáèìüò
FROM Öïéôçôïëüãéï
WHERE öïéôçôÞò=current_user();

Áí óôç óõíÝ÷åéá ôï ðñïíüìéï SELECT åðß ôçò üøçò áõôÞò äïèåß óå üëïõò ôïõò
öïéôçôÝò, ôüôå ï êÜèå öïéôçôÞò ðïõ êáëåß ôçí üøç èá ìðïñåß íá áíáêôÞóåé áðü
ôç ÂÜóç ÄåäïìÝíùí ìüíï ôïõò âáèìïýò ðïõ Ý÷åé åðéôý÷åé ï ßäéïò. Óõíåðþò, ìå
ôç ëýóç áõôÞ, äçìéïõñãåßôáé Ýíáò Ýëåã÷ïò ðñïóðÝëáóçò åðÜíù óôïí åõáßóèçôïõ
ðåñéå÷ïìÝíïõ ðßíáêá Öïéôçôïëüãéï.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 423

16.5 ÊñõðôïãñÜöçóç Åõáßóèçôçò Ðëçñïöïñßáò


ÊñõðôïãñÜöçóç (encryption) ïíïìÜæåôáé ç êùäéêïðïßçóç ôùí äåäïìÝíùí ìå Ýíá
åéäéêü áëãüñéèìï ðïõ êáèéóôÜ ôá äåäïìÝíá ìç áíáãíþóéìá áðü ôõ÷üí ëïãéóìéêü
÷ùñßò ôç ÷ñÞóç ôïõ êëåéäéïý áðïêñõðôïãñÜöçóçò (encryption key). Áí ôï ÓÄÂÄ
äéáôçñåß áðïèçêåõìÝíá åõáßóèçôá äåäïìÝíá, ßóùò åßíáé áðáñáßôçôç ç êñõðôï-
ãñÜöçóç ãéá ôçí ðñïöýëáîÞ ôïõò áðü ðéèáíÝò åîùôåñéêÝò áðåéëÝò Þ ðñïóðÜèåéåò
ðñïóðÝëáóÞò ôïõò áðü ìç åîïõóéïäïôçìÝíïõò ÷ñÞóôåò ôïõ óõóôÞìáôïò. ÊÜðïéá
ÓÄÂÄ ðáñÝ÷ïõí åéäéêÜ åñãáëåßá êñõðôïãñÜöçóçò ãéá ôï óêïðü áõôü. Ôï ÓÄÂÄ
ìðïñåß íá ðñïóðåëáýíåé ôá äåäïìÝíá (áöïý âåâáßùò ôá áðïêñõðôïãñáöÞóåé) áí
êáé õðÜñ÷åé ó÷åôéêÞ ìåßùóç ôçò áðüäïóçò ôïõ óõóôÞìáôïò ëüãù ôïõ ÷ñüíïõ ðïõ
áðáéôåßôáé ãéá ôçí áðïêñõðôïãñÜöçóÞ ôïõò. Óå ðïëëÝò ðåñéðôþóåéò åßíáé êáôáë-
ëçëüôåñï ç êñõðôïãñÜöçóç äåäïìÝíùí íá ðñáãìáôïðïéçèåß óôï ôåñìáôéêü ôïõ
åîõðçñåôïýìåíïõ (client) ãéá ôçí ðñïóôáóßá ôùí äåäïìÝíùí êáôÜ ôç ìåôáöïñÜ
ôïõò ðñïò ôïí åîõðçñÝôç (server) üðïõ âñßóêåôáé ç ÂÜóç ÄåäïìÝíùí.
Ãéá ôçí áðüêñõøç åõáßóèçôçò ðëçñïöïñßáò õðÜñ÷åé óÞìåñá ðëçèþñá ôå-
÷íéêþí êñõðôïãñÜöçóçò ðïõ äéá÷ùñßæåôáé óå äýï êáôçãïñßåò ôéò ôå÷íéêÝò ìç-
áíáóôñÝøéìçò (irreversible) êáé ôéò ôå÷íéêÝò áíáóôñÝøéìçò (reversible) êñõðôï-
ãñÜöçóçò. Ïé ðñþôåò, äåí åðéôñÝðïõí ôçí áðïêÜëõøÞ ôïõò ìå êáíÝíá ôñüðï ìåôÜ
ôçí êñõðôïãñÜöçóç ôùí äåäïìÝíùí. Ùóôüóï, ôá äåäïìÝíá ìðïñïýí íá ÷ñçóéìï-
ðïéçèïýí ãéá Ýãêõñç óôáôéóôéêÞ åðåîåñãáóßá. Ïé ìÝèïäïé áíáóôñÝøéìçò êñõðôï-
ãñÜöçóçò ÷ñçóéìïðïéïýíôáé óõ÷íüôåñá êáé áðïêáëýðôïõí ôçí êñõðôïãñáöçìÝíç
ðëçñïöïñßá ìüíï óå üóïõò êáôÝ÷ïõí ôï áðáñáßôçôï êëåéäß áðïêñõðôïãñÜöçóçò.
Ãéá ôç ìåôáâßâáóç åõáßóèçôùí äåäïìÝíùí ìå áóöÜëåéá ìÝóá áðü Ýíá ìç-áóöáëÝò
äßêôõï áðáéôåßôáé ç ÷ñÞóç åíüò êñõðôïóõóôÞìáôïò (cryptosystem), ðïõ åìöáíß-
æåôáé ó÷çìáôéêÜ óôï Ó÷Þìá 16.3 êáé ðåñéëáìâÜíåé:

• Ýíá êëåéäß êñõðôïãñÜöçóçò óå áëöáñéèìçôéêÞ ìïñöÞ ãéá ôçí êñõðôïãñÜ-


öçóç ôùí äåäïìÝíùí,
• Ýíá êñõðôïãñáöéêü áëãüñéèìï ðïõ ìåôáó÷çìáôßæåé ôá äåäïìÝíá (plaintext)

κ λ ε ι δ ί

κ λ ε ι δ ί

α π ο κ ρ υ π τ ο γ ρ ά φ η σ η ς

κ ρ υ π τ ο γ ρ ά φ η σ η ς

α π ο 

κ ρ υ π τ ο 

κ ρ υ π τ ο 

ε υ α ί σ θ η τ η

κ ρ υ π τ ο γ ρ α φ η  έ ν η
ε υ α ί σ θ η τ η

γ ρ α φ ι κ ό ς

γ ρ α φ ι κ ό ς

π λ η ρ ο φ ο ρ ί α

π λ η ρ ο φ ο ρ ί α

π λ η ρ ο φ ο ρ ί α

α λ γ ό ρ ι θ 

α λ γ ό ρ ι θ 

δ ι α κ ί ν η σ η  έ σ α α π ό

 ο ς

 ο ς

 η  α σ φ α λ έ ς δ ί κ τ υ ο

Ó÷Þìá 16.3: Ó÷çìáôéêÞ áíáðáñÜóôáóç êñõðôïóõóôÞìáôïò.


424 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

óå ìç áíáãíþóéìç ìïñöÞ (cyphertext) ìå ôç ÷ñÞóç ôïõ êëåéäéïý êñõðôïãñÜ-


öçóçò,

• Ýíá êëåéäß áðïêñõðôïãñÜöçóçò ãéá ôçí áðïêñõðôïãñÜöçóç ôùí äåäïìÝ-


íùí, êáé

• Ýíá áðïêñõðôïãñáöéêü áëãüñéèìï ðïõ åðáíáöÝñåé ôá äåäïìÝíá óôçí áñ-


÷éêÞ áíáãíþóéìÞ ôïõò ìïñöÞ ìå ôç ÷ñÞóç ôïõ êëåéäéïý áðïêñõðôïãñÜöçóçò.

Ìßá ôå÷íéêÞ ðïõ ïíïìÜæåôáé óõììåôñéêÞ êñõðôïãñÜöçóç (symmetric encryp-


tion) ÷ñçóéìïðïéåß ôï ßäéï êëåéäß ãéá ôçí êñõðôïãñÜöçóç êáé ãéá ôçí áðïêñõðôï-
ãñÜöçóç êáé âáóßæåôáé óå áóöáëåßò ãñáììÝò åðéêïéíùíßáò ãéá ôçí áóöáëÞ ìåôÜ-
äïóç ôïõ êëåéäéïý. Ùóôüóï, ïé ðåñéóóüôåñïé ÷ñÞóôåò äåí äéáèÝôïõí ðñüóâáóç
óå áóöáëåßò ãñáììÝò åðéêïéíùíßáò. ¸íá ó÷Þìá óõììåôñéêÞò êñõðôïãñÜöçóçò
åßíáé ï áëãüñéèìïò DES (Data Encryption Standard [NBS 1977]), ï ïðïßïò áíá-
ðôý÷èçêå áðü ôçí IBM. Ôï ó÷Þìá áõôü ÷ñçóéìïðïéåß Ýíá ìüíï êëåéäß ðïõ ðñÝðåé
íá äéáôçñåßôáé êñõöü, áí êáé ï áëãüñéèìïò äåí ÷ñåéÜæåôáé íá åßíáé êñõöüò. Ï áë-
ãüñéèìïò êñõðôïãñáöåß äåäïìÝíá ìå ôç ÷ñÞóç åíüò êëåéäéïý ìÞêïõò 56 bits áöïý
ðñþôá ôá ôåìá÷ßóåé óå ôìÞìáôá ìÞêïõò 64 bits. Ï áëãüñéèìïò DES óÞìåñá äåí
èåùñåßôáé ðïëý áóöáëÞò, ãé’ áõôü Ý÷ïõí áíáðôõ÷èåß âåëôéùìÝíåò åêäüóåéò ôïõ ìå
ìåãáëýôåñá êëåéäéÜ êáèþò êáé Üëëïé ôá÷ýôåñïé áëãüñéèìïé. Ãéá ðáñÜäåéãìá, Ýíá
ó÷Þìá ðïõ ïíïìÜæåôáé PGP (Pretty Good Privacy) ÷ñçóéìïðïéåß Ýíá óõììåôñéêü
áëãüñéèìï ôùí 128 bits ãéá ôç ìáæéêÞ êñõðôïãñÜöçóç ôùí äåäïìÝíùí.
ÊëåéäéÜ ìÞêïõò 64 bits óÞìåñá èåùñïýíôáé äéáóðÜóéìá áðü éó÷õñÜ óõóôÞìáôá
ìå åéäéêåõìÝíá ìç÷áíéêÜ åîáñôÞìáôá êáé õøçëü êüóôïò áãïñÜò. Ùóôüóï, óôçí
ôå÷íïëïãßá áõôÞ èá Ý÷åé ðñüóâáóç ìÝóá óôá åðüìåíá ÷ñüíéá ôï ïñãáíùìÝíï
Ýãêëçìá. Áí êáé õðÜñ÷åé ç áßóèçóç üôé êëåéäéÜ ìÞêïõò 80 bits èá åßíáé åðß-
óçò äéáóðÜóéìá óýíôïìá, ôï ðéèáíüôåñï åßíáé üôé êëåéäéÜ ìÞêïõò 128 bits èá
ðáñáìåßíïõí áäéÜññçêôá óôá åðüìåíá ÷ñüíéá. ¼ðùò áíáöÝñåôáé óôï âéâëßï
[Ramakrisnan 2003], áí èá ìðïñïýóáìå íá êáôáóêåõÜóïõìå Ýíá çëåêôñïíéêü
õðïëïãéóôÞ áñêåôÜ ãñÞãïñï þóôå íá äéáóðÜóåé ôïí áëãüñéèìï DES óå Ýíá äåõ-
ôåñüëåðôï, ôüôå ï õðïëïãéóôÞò áõôüò èá ÷ñåéáæüôáí ðåñßðïõ 149 ôñéóåêáôïììýñéá
÷ñüíéá ãéá íá äéáóðÜóåé Ýíá óõììåôñéêü áëãüñéèìï ôùí 128 bits.
Ìßá åðßóçò ðïëý ãíùóôÞ ôå÷íéêÞ êñõðôïãñÜöçóçò ÷ñçóéìïðïéåß äéáöïñå-
ôéêÜ êëåéäéÜ ãéá ôçí êñõðôïãñÜöçóç êáé ãéá ôçí áðïêñõðôïãñÜöçóç, êáé ãéá
ôï ëüãï ïíïìÜæåôáé áóýììåôñç êñõðôïãñÜöçóç (asymmetric encryption)). ¸íá
ðáñÜäåéãìá åöáñìïãÞò áóýììåôñçò êñõðôïãñÜöçóçò åßíáé ôï êñõðôïóýóôçìá
äçìïóßïõ êëåéäéïý, ôï ïðïßï ÷ñçóéìïðïéåß äýï êëåéäéÜ, ôï äçìüóéï êëåéäß (pub-
lic key) ðïõ åðéôñÝðåôáé íá äçìïóéåõèåß êáé ôï éäéùôéêü êëåéäß (private key) ðïõ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 425

ðñÝðåé íá ðáñáìåßíåé êñõöü. Ï áëãüñéèìïò êñõðôïãñÜöçóçò åðéôñÝðåôáé åðß-


óçò íá äçìïóéåõèåß Ýôóé þóôå ïðïéïóäÞðïôå åðéèõìåß íá óôåßëåé óå êÜðïéï ÷ñÞóôç
êñõðôïãñáöçìÝíá äåäïìÝíá, íá ìðïñåß íá ÷ñçóéìïðïéÞóåé ôï äçìïóßùò ãíùóôü
êëåéäß ôïõ ÷ñÞóôç óå óõíäõáóìü ìå ôïí áëãüñéèìï ðïõ ôï êñõðôïãñáöåß. ÌåôÜ
ôçí êñõðôïãñÜöçóç ôùí äåäïìÝíùí, ìüíï ï éäéïêôÞôçò ôïõ éäéùôéêïý êëåéäéïý
ìðïñåß íá ôá áðïêñõðôïãñáöÞóåé. Ôá êñõðôïóõóôÞìáôá äçìïóßïõ êëåéäéïý ìðï-
ñïýí åðßóçò íá ÷ñçóéìïðïéçèïýí ãéá ôçí áðïóôïëÞ øçöéáêÞò õðïãñáöÞò (digital
signature) ìå Ýíá ìÞíõìá ãéá ôçí áðüäåéîç üôé ôï ìÞíõìá ðñïÞëèå áðü ôï Üôïìï
ðïõ õðïóôçñßæåé ðùò ôï Ýóôåéëå. Ï äçìïöéëÝóôåñïò áëãüñéèìïò áóýììåôñçò êñõ-
ðôïãñÜöçóçò åßíáé ï RSA (ç ïíïìáóßá ðñïÝñ÷åôáé áðü ôá áñ÷éêÜ ôùí ôñéþí
åñåõíçôþí ðïõ ó÷åäßáóáí ôïí áëãüñéèìï [Rivest 1978]).
Óå ãåíéêÝò ãñáììÝò, ïé óõììåôñéêïß áëãüñéèìïé åßíáé ðïëý ôá÷ýôåñïé êáôÜ
ôçí åêôÝëåóÞ ôïõò áðü ôïõò áóýììåôñïõò. Ùóôüóï, óõ÷íÜ óôçí ðñÜîç ÷ñçóéìï-
ðïéïýíôáé ìáæß Ýôóé þóôå ï áëãüñéèìïò äçìïóßïõ êëåéäéïý íá ÷ñçóéìïðïéåßôáé ãéá
ôçí êñõðôïãñÜöçóç åíüò ôõ÷áßá ðáñáãüìåíïõ êëåéäéïý êáé ôï ôõ÷áßï áõôü êëåéäß
íá ÷ñçóéìïðïéåßôáé ãéá ôçí êñõðôïãñÜöçóç ôùí ðñáãìáôéêþí äåäïìÝíùí, ìå ôç
÷ñÞóç åíüò óõììåôñéêïý áëãïñßèìïõ [Denning 1983].

16.6 ÁóöÜëåéá Óôáôéóôéêþí ÂÜóåùí ÄåäïìÝíùí


ÓôáôéóôéêÞ (statistical) ïíïìÜæåôáé ç ÂÜóç ÄåäïìÝíùí ðïõ åðéôñÝðåé ôçí åêôÝ-
ëåóç åñùôçìÜôùí ãéá ôçí åîáãùãÞ óõíáèñïéóôéêÞò ðëçñïöïñßáò (ãéá ðáñÜäåéãìá
áèñïßóìáôá Þ ìÝóïõò üñïõò) áëëÜ äåí åðéôñÝðåé ôçí åêôÝëåóç åñùôçìÜôùí ðïõ
åîÜãïõí áôïìéêÞ ðëçñïöïñßá. Ãéá ðáñÜäåéãìá, ôï åñþôçìá "Ðïéüò åßíáé ï ìÝ-
óïò üñïò ôùí ìéóèþí ôùí åñãáæïìÝíùí;" åðéôñÝðåôáé åíäå÷ïìÝíùò íá åêôåëå-
óèåß, üìùò ôï åñþôçìá "Ðïéüò åßíáé ï ìéóèüò ôïõ åñãáæïìÝíïõ êõñßïõ Ãåùñãßïõ;"
ïðùóäÞðïôå äåí èá åêôåëåóèåß.
Ôï ÷áñáêôçñéóôéêü ãíþñéóìá ôùí óôáôéóôéêþí ÂÜóåùí ÄåäïìÝíùí åßíáé üôé
êÜðïéåò öïñÝò, ìÝóù íïìßìùò åêôåëåóìÝíùí óõíáèñïéóôéêþí åñùôçìÜôùí õðÜñ-
÷åé ç äõíáôüôçôá åîáãùãÞò áöáéñåôéêþí áðáíôÞóåùí óå ìç íüìéìá åñùôÞìáôá.
Ôï öáéíüìåíï áõôü ïíïìÜæåôáé åîáãùãÞ åõáßóèçôçò ðëçñïöïñßáò ìÝóù óõìðå-
ñáóìïý (deduction of sensitive information by inference) [Adam 1989] êáé ïöåß-
ëåôáé óôá ß÷íç áñ÷Ýôõðçò ðëçñïöïñßáò ðïõ õößóôáíôáé óôá áðïôåëÝóìáôá óõ-
íáèñïéóôéêþí åñùôçìÜôùí. Ï êáêüâïõëïò ÷ñÞóôçò åíäå÷ïìÝíùò íá ìðïñåß íá
áíáêáôáóêåõÜóåé ôçí áñ÷Ýôõðç ðëçñïöïñßá åðåîåñãáæüìåíïò ôá áðïôåëÝóìáôá
ðïëëþí óõíáèñïéóôéêþí åñùôçìÜôùí. Ôï ðñüâëçìá áõôü áðáó÷ïëåß ôçí åðéóôç-
ìïíéêÞ êïéíüôçôá ôùí âÜóåùí äåäïìÝíùí áñêåôÜ ÷ñüíéá êáé áðïêôÜ üëï êáé
ìåãáëýôåñç óðïõäáéüôçôá êáèþò äéåõñýíåôáé ç ÷ñÞóç ôùí áðïèçêþí äåäïìÝíùí,
ðïõ èá áíáëýåôáé óå Üëëï êåöÜëáéï.
426 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

üíïìá âáèìßäá ôìÞìá ãñáöåßï ôçëÝöùíï ìéóèüò


Ãåùñãßïõ ÊáèçãçôÞò Ìáèçìáôéêþí É-40 4455 2000
Ìïõñáôßäçò ÅñåõíçôÞò ÐëçñïöïñéêÞò 3-14 2138 1500
ÐáðáðÝôñïõ ÊáèçãçôÞò ×çìåßáò Õ-22 4483 2300
ÍéêïëéäÜêçò ÊáèçãçôÞò Ãåùðïíßáò 6-07 6320 2720
Ðõñïýóçò ÅñåõíçôÞò ×çìåßáò Õ-10 7012 1250
Óåñåìßäçò ÅñåõíçôÞò Ìáèçìáôéêþí 1-10 7025 1750
ÃåñåìÝò ÊáèçãçôÞò ÐëçñïöïñéêÞò 3-31 2121 1800

Ðßíáêáò 16.3: Óôéãìéüôõðï ôïõ ðßíáêá ÓôáôéóôéêÜ.

Óôç óõíÝ÷åéá áêïëïõèåß Ýíá ëåðôïìåñÝò ðáñÜäåéãìá áðïêÜëõøçò åõáßóèçôçò


ðëçñïöïñßáò ìÝóù óõíáèñïéóôéêþí åñùôçìÜôùí. ¸óôù üôé ç ÂÜóç ÄåäïìÝíùí
áðïôåëåßôáé áðü Ýíá ìüíï ðßíáêá, ôïí ðßíáêá ÓôáôéóôéêÜ, Ýíá óôéãìéüôõðï ôïõ
ïðïßïõ åìöáíßæåôáé óôïí Ðßíáêá 16.3. Åðßóçò, Ýóôù üôé êÜðïéïò ÷ñÞóôçò ðïõ
åßíáé åîïõóéïäïôçìÝíïò íá åêôåëåß ìüíï óôáôéóôéêÜ åñùôÞìáôá, Ý÷åé ôçí ðñüèåóç
íá áíáêáëýøåé ôï ìéóèü ôïõ "Ãåùñãßïõ". ¸óôù, ôÝëïò, üôé ï êáêüâïõëïò ÷ñÞóôçò
ãíùñßæåé áðü åîùôåñéêÞ ðçãÞ ôç âáèìßäá êáèþò êáé ôï ôìÞìá üðïõ åñãÜæåôáé
ï Ãåùñãßïõ. Ôþñá èåùñÞóôå üôé ï êáêüâïõëïò ÷ñÞóôçò åêôåëåß ôá åîÞò äýï
åñùôÞìáôá:

SELECT COUNT(*)
FROM ÓôáôéóôéêÜ
WHERE ((âáèìßäá=’ÊáèçãçôÞò’) AND (ôìÞìá=’Ìáèçìáôéêþí’));

SELECT SUM(ìéóèüò)
FROM ÓôáôéóôéêÜ
WHERE (âáèìßäá=’ÊáèçãçôÞò’) AND (ôìÞìá=’Ìáèçìáôéêþí’);

Áðü ôá äåäïìÝíá ôïõ ðßíáêá åýêïëá ðñïêýðôåé üôé ïé áðáíôÞóåéò óôá åñùôÞìáôá
åßíáé 1 êáé 2000 áíôßóôïé÷á. Óõíåðþò Ý÷åé áðïêáëõöèåß ï ìéóèüò ôïõ "Ãåùñãßïõ"
êáé ç áóöÜëåéá ôçò ÂÜóçò ÄåäïìÝíùí Ý÷åé óáöþò äéáññç÷èåß, áí êáé ï ÷ñÞóôçò
Ýèåóå ìüíï ãíÞóéá óôáôéóôéêÜ åñùôÞìáôá. ¼ðùò öáßíåôáé óôï ðáñÜäåéãìá, áí
ï ÷ñÞóôçò ìðïñåß íá âñåé ìßá ëïãéêÞ Ýêöñáóç ðïõ íá öùôïãñáößæåé Ýíá óõãêå-
êñéìÝíï Üôïìï, ôüôå ç åõáßóèçôç ðëçñïöïñßá ðïõ ó÷åôßæåôáé ìå ôï Üôïìï áõôü
ðëÝïí äåí åßíáé áóöáëÞò. Ôï ãåãïíüò áõôü õðïäåéêíýåé üôé ôï ÓÄÂÄ èá ðñÝðåé
íá áñíåßôáé ôçí áðüêñéóç óå Ýíá åñþôçìá üôáí ôï ðëÞèïò ôùí ðëåéÜäùí ðïõ
óõììåôÝ÷ïõí óôï ó÷çìáôéóìü ôçò áðÜíôçóÞò ôïõ åßíáé ëéãüôåñï áðü Ýíá åëÜ÷éóôï
üñéï c.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 427

Óôç óõíÝ÷åéá, Ýóôù üôé ï êáêüâïõëïò ÷ñÞóôçò åêôåëåß ôá åñùôÞìáôá:

SELECT COUNT(*)
FROM ÓôáôéóôéêÜ;

SELECT COUNT(*)
FROM ÓôáôéóôéêÜ
WHERE (âáèìßäá<>’ÊáèçãçôÞò’) AND (ôìÞìá<>’Ìáèçìáôéêþí’);

SELECT SUM(Ìéóèüò)
FROM ÓôáôéóôéêÜ;

SELECT SUM(*)
FROM ÓôáôéóôéêÜ;
WHERE (âáèìßäá<>’ÊáèçãçôÞò’) AND (ôìÞìá<>’Ìáèçìáôéêþí’);

¸óôù üôé ôï áðïôÝëåóìá ôùí åñùôçìÜôùí åßíáé 7, 6, 13.320 êáé 11.320, áíôéóôïß-
÷ùò. ¢ñá, ï ìéóèüò ôïõ "Ãåùñãßïõ" åíôïðßæåôáé áöáéñþíôáò ôï áðïôÝëåóìá ôïõ
ôåëåõôáßïõ åñùôÞìáôïò áðü ôï áðïôÝëåóìá ôïõ ðñïçãïýìåíïõ, äçëáäÞ 13.320 −
11.320=2.000. Ôï ðáñÜäåéãìá áõôü áðïäåéêíýåé üôé ôï óýóôçìá èá Ýðñåðå åðß-
óçò íá áñíåßôáé ôçí áðüêñéóç óå åñùôÞìáôá, üðïõ ôï ðëÞèïò ôùí ðëåéÜäùí ðïõ
óõíåéóöÝñïõí óôçí áðÜíôçóÞ ôïõò åßíáé ìåãáëýôåñï áðü Ýíá ìÝãéóôï üñéï n − c,
üðïõ n åßíáé ôï óõíïëéêü ðëÞèïò ôùí ðëåéÜäùí ôïõ ðßíáêá.
Åßíáé åýêïëï íá äåé÷èåß üôé, ðåñéïñßæïíôáò áðëþò ôá åñùôÞìáôá óå åêåßíá
ãéá ôá ïðïßá ôï ðëÞèïò ôùí ðëåéÜäùí ðïõ óõììåôÝ÷ïõí ãéá ôçí áðÜíôçóÞ ôïõò
Ý÷åé ôéìÞ b óôçí ðåñéï÷Þ [c, n − c] åßíáé áíåðáñêÝò ãéá ôçí áðïöõãÞ äéáññïÞò
åõáßóèçôçò áôïìéêÞò ðëçñïöïñßáò. Èåùñþíôáò êáé ðÜëé ôï ðáñÜäåéãìá ôçò ÂÜ-
óçò ÄåäïìÝíùí ôïõ Ðßíáêá 16.3, Ýóôù üôé c=2, Ýóôù äçëáäÞ üôé ïé åñùôÞóåéò èá
áðáíôþíôáé ìüíï áí b ∈ [2, 5]. Ç Ýêöñáóç WHERE (âáèìßäá=’ÊáèçãçôÞò’)
AND (ôìÞìá=’Ìáèçìáôéêþí’) åßíáé ôüôå áñêåôÞ ãéá ôçí åðéôõ÷ßá ôçò åðßèå-
óçò ôïõ êáêüâïõëïõ ÷ñÞóôç. ¸óôù ãéá ðáñÜäåéãìá ôá åîÞò åñùôÞìáôá:

SELECT COUNT(*)
FROM ÓôáôéóôéêÜ
WHERE âáèìßäá=’ÊáèçãçôÞò’;

SELECT COUNT(*)
FROM ÓôáôéóôéêÜ
WHERE (âáèìßäá=’ÊáèçãçôÞò’) AND NOT
(ôìÞìá=’Ìáèçìáôéêþí’);
428 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

Áðü ôá äåäïìÝíá ôïõ Ðßíáêá 16.3 ðñïêýðôåé üôé ôï áðïôÝëåóìá ôùí äýï
áõôþí åñùôçìÜôùí åßíáé 4 êáé 3, áíôéóôïß÷ùò. Óõíåðþò, åîÜãåôáé üôé óôï ÔìÞìá
Ìáèçìáôéêþí õðÜñ÷åé Ýíáò ìüíï êáèçãçôÞò, êáé Üñá áõôüò åßíáé ï "Ãåùñãßïõ"
(åö’ üóïí ï êáêüâïõëïò ÷ñÞóôçò ãíùñßæåé åê ôùí ðñïôÝñùí áõôÜ ôá äåäïìÝíá
ãéá ôïí "Ãåùñãßïõ"). Ï ìéóèüò ôïõ "Ãåùñãßïõ" ìðïñåß ôüôå íá áðïêáëõöèåß ùò
åîÞò:

SELECT SUM(Ìéóèüò)
FROM ÓôáôéóôéêÜ
WHERE âáèìßäá=’ÊáèçãçôÞò’;

SELECT SUM(Ìéóèüò)
FROM ÓôáôéóôéêÜ
WHERE (âáèìßäá=’ÊáèçãçôÞò’) AND NOT
(ôìÞìá=’Ìáèçìáôéêþí’);

Ôï áðïôÝëåóìá ôïõ ðñþôïõ åñùôÞìáôïò åßíáé 8.820, åíþ ôïõ äåýôåñïõ åßíáé 6.820.
Óõíåðþò, ï ìéóèüò ôïõ "Ãåùñãßïõ" âñßóêåôáé áöáéñþíôáò ôá áðïôåëÝóìáôá ôùí
äýï åñùôçìÜôùí, äçëáäÞ 8.820 − 6.820=2.000.
Ç ëïãéêÞ Ýêöñáóç (âáèìßäá = ’ÊáèçãçôÞò’) AND (ôìÞìá = ’Ìá-
èçìáôéêþí’) ïíïìÜæåôáé ðñïóùðéêüò é÷íçëÜôçò (individual tracker) ôïõ Ãå-
ùñãßïõ [Denning 1979a], äéüôé ðñïóöÝñåé óôïí êáêüâïõëï ÷ñÞóôç Ýíá ìïíïðÜôé
ðïõ ïäçãåß óôçí áðïêÜëõøç ôçò åõáßóèçôçò ðëçñïöïñßáò ôïõ Ãåùñãßïõ. Óôç
ãåíéêÞ ðåñßðôùóç, áí ï êáêüâïõëïò ÷ñÞóôçò ãíùñßæåé áðü åîùôåñéêÞ ðçãÞ ìßá
ëïãéêÞ Ýêöñáóç A ðïõ ÷áñáêôçñßæåé ìïíáäéêÜ êÜðïéï óõãêåêñéìÝíï Üôïìï Ô êáé
áí ç Ýêöñáóç Á ìðïñåß íá áíáëõèåß óå ìßá óýíèåôç Ýêöñáóç Á1 AND Á2, ôüôå ç
ëïãéêÞ Ýêöñáóç A1 AND NOT A2 åßíáé Ýíáò ðñïóùðéêüò é÷íçëÜôçò ãéá ôï Üôïìï
Ô, ìå ôçí ðñïûðüèåóç üôé ïé åêöñÜóåéò Á1 êáé A1 AND NOT A2 åðéôñÝðåôáé íá
åêôåëåóèïýí, äçëáäÞ ìå ôçí ðñïûðüèåóç üôé ôï ðëÞèïò ôùí ðëåéÜäùí ðïõ óõì-
ìåôÝ÷ïõí ãéá ôçí áðÜíôçóÞ ôïõò âñßóêåôáé óôï äéÜóôçìá [c, n − c]. Ï ëüãïò åßíáé
üôé ôï ðëÞèïò ôùí ðëåéÜäùí ðïõ óõììåôÝ÷ïõí óôï ó÷çìáôéóìü ôçò áðÜíôçóçò ôïõ
Á ôáõôßæåôáé ìå ôç äéáöïñÜ ìåôáîý ôïõ áíôßóôïé÷ïõ ðëÞèïõò ôùí åêöñÜóåùí Á1
êáé Á1 AND NOT A2:

{x : A} = {(x : A1) AND (x : A2)} = {x : A1} - {(x : A1) AND NOT (x : A2)}

Ç ó÷Ýóç áõôÞ áðïäåéêíýåôáé ìÝóù ôùí ôñéþí äéáãñáììÜôùí Venn ôïõ Ó÷Þìáôïò
16.4.
Ùò êáôáêëåßäá, åßíáé áëçèÝò üôé áí ï êáêüâïõëïò ÷ñÞóôçò ãíùñßæåé áðü åîù-
ôåñéêÞ ðçãÞ êÜðïéá óôïé÷åßá ôïõ áôüìïõ ãéá ôï ïðïßï åðéèõìåß íá áðïêáëýøåé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 429

A1 A2 A1 A2 A1 A2
A1 –
A1 AND A2 A1 AND A2 (A1 AND
A1 AND NOT A2)
NOT A2

Ó÷Þìá 16.4: Ðñïóùðéêüò é÷íçëÜôçò A1 AND NOT A2 ôïõ Á, üðïõ Á = Á1 AND


A2.

åõáßóèçôç ðëçñïöïñßá, ôüôå ðéèáíüôáôá ìðïñåß íá áíáêôÞóåé ôçí ðëçñïöïñßá


áõôÞ. Óôçí åñãáóßá [Denning 1979b] ìåëåôþíôáé äéÜöïñåò ðåñéðôþóåéò é÷íçëáôþí
êáé áðïäåéêíýåôáé üôé ãéá óõãêåêñéìÝíá óôáôéóôéêÜ åñùôÞìáôá ðÜíôïôå ìðïñïýí
íá âñåèïýí óõãêåêñéìÝíïé é÷íçëÜôåò ó÷åôéêÜ åýêïëá.
ÓõìðåñáóìáôéêÜ, ç áóöÜëåéá óå ìßá óôáôéóôéêÞ ÂÜóç ÄåäïìÝíùí åßíáé Ýíá
ðñüâëçìá ðïõ äåí Ý÷åé ìÝ÷ñé óÞìåñá ëõèåß. ¸÷ïõí åìöáíéóèåß ðïëëÝò åéóçãÞóåéò
óôç âéâëéïãñáößá áëëÜ êáìßá äåí ðñïóöÝñåé áðïëýôùò éêáíïðïéçôéêÞ ëýóç. Ãéá
ðáñÜäåéãìá, ìßá ëýóç åßíáé ç áíôáëëáãÞ äåäïìÝíùí, äçëáäÞ ç áíôáëëáãÞ ôùí
ôéìþí åõáßóèçôùí ÷áñáêôçñéóôéêþí ìåôáîý ðëåéÜäùí Ýôóé þóôå íá äéáôçñåßôáé ç
óõíïëéêÞ óôáôéóôéêÞ áêñßâåéá. Ìå ôç ëýóç áõôÞ, áêüìç êáé áí ìßá óõãêåêñéìÝíç
ðëåéÜäá áðïìïíùèåß êáé áíáãíùñéóèåß, äåí õðÜñ÷åé ôñüðïò åýñåóçò ôùí ôéìþí
äåäïìÝíùí ðïõ ðñáãìáôéêÜ áíÞêïõí óå áõôÞ. Ç äõóêïëßá ôçò ìåèüäïõ åßíáé íá
âñåèïýí ôá óýíïëá ôùí ðëåéÜäùí ðïõ ìðïñïýí íá áíôéìåôáèÝóïõí ôéìÝò ãíùñé-
óìÜôùí ìåôáîý ôïõò ìå ôïí ôñüðï áõôü. Åðßóçò ìåéïíÝêôçìá åßíáé ï õðïâéâáóìüò
ôçò ÷ñçóéìüôçôáò ôùí äåäïìÝíùí.
Ðáñüìïéá ìåéïíåêôÞìáôá ðáñïõóéÜæïíôáé óôéò ðåñéóóüôåñåò ìåèüäïõò ãéá
ôç ëýóç ôïõ ðñïâëÞìáôïò ôçò áóöÜëåéáò óôáôéóôéêþí ÂÜóåùí ÄåäïìÝíùí. Ç
áðáßôçóç äéáôÞñçóçò ôçò áðüëõôçò åìðéóôåõôéêüôçôáò ôùí åõáßóèçôùí áôïìéêþí
äåäïìÝíùí äåí åßíáé óýìöùíç ìå ôçí áðáßôçóç ëÞøçò óôáôéóôéêþí ìåôñÞóåùí
ìå áêñßâåéá áðü ôá äåäïìÝíá áõôÜ. ÐñÝðåé íá ÷áëáñþóåé ôïõëÜ÷éóôïí ìßá áðü
ôéò äýï áõôÝò áðáéôÞóåéò ðñéí ãßíåé åõñÝùò ðéóôåõôÞ ç åóöáëìÝíç åíôýðùóç üôé
åßíáé åããõçìÝíç óÞìåñá ç áóöÜëåéá ôçò åõáßóèçôçò áôïìéêÞò ðëçñïöïñßáò ðïõ
äéáôçñåßôáé óå çëåêôñïíéêÞ ìïñöÞ.

16.7 ÁóöÜëåéá ¸íáíôé ÅðéèÝóåùí ¸ã÷õóçò SQL


¸íá áðü ôá íåüôåñá êáé óïâáñüôåñá æçôÞìáôá åõðÜèåéáò ôùí ÂÜóåùí ÄåäïìÝ-
íùí åßíáé ç Ýã÷õóç (injection) ôçò SQL. ÅöåõñÝôçò ôçò åðßèåóçò Ýã÷õóçò åßíáé
ï Rain Forest Puppy, ðñþçí ÷Üêåñ êáé óýìâïõëïò áóöáëåßáò óÞìåñá äéåèíþí
430 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

åôáéñéþí áíÜðôõîçò ëïãéóìéêïý. Ç âáóéêÞ éäÝá åßíáé üôé ï êáêüâïõëïò ÷ñÞóôçò


ðáñáðïéåß ôá äåäïìÝíá ðïõ óôÝëíåé ìßá åöáñìïãÞ ðáãêüóìéïõ éóôïý óôç ÂÜóç
ÄåäïìÝíùí ìå óôü÷ï ôçí ôñïðïðïßçóç ôïõ åñùôÞìáôïò ðïõ èá åêôåëåóèåß ôå-
ëéêÜ áðü ôï ÓÄÂÄ [Spett 2002]. Óå ðñþôç ìáôéÜ, ç ðáñáðïßçóç áõôÞ öáßíåôáé
áâëáâÞò, áëëÜ óôçí ðñáãìáôéêüôçôá åßíáé åîáéñåôéêÜ æçìéïãüíá. Ìßá áðü ôéò
áíçóõ÷çôéêüôåñåò ðëåõñÝò ôïõ èÝìáôïò åßíáé ç Üãíïéá ôùí ðñïãñáììáôéóôþí, ç
ïðïßá áíáðüöåõêôá ïäçãåß óå åõáéóèçóßá ôùí åöáñìïãþí ôïõò áðü åðéèÝóåéò
Ýã÷õóçò. ÌÜëéóôá åßíáé ãåãïíüò üôé ôá ðñïãñáììáôéóôéêÜ óöÜëìáôá ðïõ ïäç-
ãïýí óå åõðÜèåéá åðéèÝóåùí Ýã÷õóçò åßíáé ðïëý åýêïëï íá óõìâïýí áêüìç êáé
üôáí ï ó÷åäéáóôÞò ìßáò åöáñìïãÞò åßíáé åíÞìåñïò ãéá ôï ðñüâëçìá áõôü.
Ãéá ðáñÜäåéãìá, Ýóôù ìßá åöáñìïãÞ ðáãêüóìéïõ éóôïý ç ïðïßá ÷ñçóéìïðïéåß
ìßá éóôïóåëßäá ASP (Active Server Page) ãéá ôçí ðéóôïðïßçóç ôùí ÷ñçóôþí êáé
ôç óýíäåóÞ ôïõò ìå ôç ÂÜóç ÄåäïìÝíùí. ¸íá ôìÞìá êþäéêá ðáñüìïéï ìå áõôü
ôïõ êþäéêá ôçò éóôïóåëßäáò åìöáíßæåôáé óôï Ó÷Þìá 16.5 1 .

username=Request.form("username");
password=Request.form("password");
var con=Server.CreateObject(ADODB.Connection);
var rso=Server.CreateObject(ADODB.Recordset);
var sql="SELECT * FROM users WHERE username = ’ "
+username +" ’ AND password = ’ "+password+" ’ ";
rso.open(sql,con);
if not rs.eof() then
response.write("Welcome to the database");

Ó÷Þìá 16.5: Êþäéêáò óåëßäáò ASP ãéá ôç äéá÷åßñéóç áéôçìÜôùí åéóüäïõ ÷ñçóôþí
óå ÂÄ ìÝóù åöáñìïãÞò ðáãêüóìéïõ éóôïý.

Óôçí ïõóßá, üôáí ï ÷ñÞóôçò ôïõ ðáãêüóìéïõ éóôïý ðëçêôñïëïãÞóåé Ýíá óõí-
äõáóìü Ýãêõñïõ áíáãíùñéóôéêïý ïíüìáôïò ÷ñÞóôç êáé êùäéêïý ðñüóâáóçò, ôüôå
ç åöáñìïãÞ èá åðéâåâáéþóåé ôá óôïé÷åßá áõôÞ õðïâÜëëïíôáò ó÷åôéêü åñþôçìá
SQL óå êÜðïéï ðßíáêá Users ìå ÷áñáêôçñéóôéêÜ ôï username êáé ôï password.
Ôï óçìáíôéêüôåñï ôìÞìá ôïõ êþäéêá ôïõ Ó÷Þìáôïò 16.5 åßíáé ç ãñáììÞ:

sql = "SELECT * FROM users WHERE username = ’ "


+ username +" ’ AND password = ’ " + password + " ’ ";

Ôï åñþôçìá áõôü áðïóôÝëëåôáé ãéá åêôÝëåóç óôç ÂÜóç ÄåäïìÝíùí. Ïé ìåôá-


1
H áêñéâÞò óýíôáîç ôùí åíôïëþí ôïõ êþäéêá äåí Ý÷åé éäéáßôåñç óçìáóßá óôï óçìåßï áõôü êáèþò
áíôéêåßìåíü ôçò åßíáé ïé åðéèÝóåéò Ýã÷õóçò SQL êáé ü÷é ï ðñïãñáììáôéóìüò ASP.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 431

âëçôÝò username êáé password ëáìâÜíïíôáé áðü ôçí åßóïäï ôïõ ÷ñÞóôç óôç
öüñìá åéóüäïõ. Áí ï ÷ñÞóôçò åéóÜãåé:

username: george
password: 45dc&vg3

ôï åñþôçìá ðïõ ó÷çìáôßæåôáé åßíáé:

SELECT *
FROM Users
WHERE username = ’george’ AND password = ’45dc&vg3’;

êáé áí ôï üíïìá ÷ñÞóôç êáé ï êùäéêüò ðñüóâáóçò ôáéñéÜæïõí ìå ôï áíôßóôïé÷ï


æåýãïò ðïõ åßíáé áðïèçêåõìÝíï óôïí ðßíáêá Users, ôüôå ç ÂÜóç ÄåäïìÝíùí åíçìå-
ñþíåé ôçí åöáñìïãÞ üôé ç áõèåíôéêïðïßçóç Þôáí åðéôõ÷Þò êáé ï ÷ñÞóôçò åéóÜãåôáé
óôçí åöáñìïãÞ. ¼ìùò, áí ï êáêüâïõëïò ÷ñÞóôçò åéóÜãåé óôç öüñìá åéóüäïõ ôéò
åîÞò ôéìÝò:

username: george
password: anything’ or 1 = 1 or ’ ’ = ’

ôüôå ôï ìåôáâëçôü åñþôçìá ãßíåôáé:

SELECT *
FROM Users
WHERE username=’george’ AND password=’anything’ OR
1 = 1 or ’ ’ = ’ ’;

êáé ç ÂÜóç ÄåäïìÝíùí åðéóôñÝöåé óôçí åöáñìïãÞ üëåò ôéò åããñáöÝò ôïõ ðßíáêá
Users. Óôç óõíÝ÷åéá, åö’ üóïí ç åöáñìïãÞ Ýëáâå ùò áðÜíôçóç êÜðïéåò ðëåéÜäåò,
óõìðåñáßíåé üôé ï êùäéêüò ôïõ ÷ñÞóôç åßíáé anything êáé ôïõ åðéôñÝðåé ôçí åßóïäï.
Óôçí áêüìç ÷åéñüôåñç ðåñßðôùóç ç åöáñìïãÞ åìöáíßæåé óôçí ïèüíç ôïõ êáêü-
âïõëïõ ÷ñÞóôç üëåò ôéò ðëåéÜäåò ôïõ ðßíáêá Users, äçëáäÞ üëá ôá áíáãíùñéóôéêÜ
ïíüìáôá ôùí ÷ñçóôþí ìáæß ìå ôïõò êùäéêïýò ðñüóâáóÞò ôïõò.
Ï äéá÷åéñéóôÞò ÂÜóåùí ÄåäïìÝíùí âñßóêåôáé óå ðïëý ìåéïíåêôéêÞ èÝóç óå
ó÷Ýóç ìå åðéèÝóåéò Ýã÷õóçò SQL, êáèþò ï êáêüâïõëïò ÷ñÞóôçò åéóÝñ÷åôáé óôç
ÂÜóç ÄåäïìÝíùí ðáñáâéÜæïíôáò ìßá íüìéìç öüñìá åéóüäïõ êÜðïéáò åöáñìïãÞò
ðïõ äéáôçñåß äåäïìÝíá åíôüò ôçò ÂÜóçò ÄåäïìÝíùí. Ç áðëïýóôåñç ëýóç ãéá ôçí
áðïöõãÞ ôçò åðßèåóçò åßíáé ï Ýëåã÷ïò ôçò åéóüäïõ ôïõ ÷ñÞóôç ãéá åíäå÷üìåíç
ýðáñîç áðëþí åéóáãùãéêþí óôá áëöáñéèìçôéêÜ ðïõ ðëçêôñïëïãåß. Ìßá êáëÞ
432 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

éäÝá áíá÷áßôéóçò åðéèÝóåùí Ýã÷õóçò SQL áðïôåëåß ï ó÷çìáôéóìüò ôùí åñùôçìÜ-


ôùí SQL ìÝóù ðñïãñáììáôéóôéêþí óõíáñôÞóåùí êáé äéáäéêáóéþí. Ïé óõíáñôÞ-
óåéò êáé ïé äéáäéêáóßåò äåí åðéôñÝðïõí ôçí ôñïðïðïßçóç ôçò ðñüôáóçò WHERE
óå Ýíá åñþôçìá SQL êáé Üñá èá ìðïñïýóå íá áðïôñÝøïõí áõôÝò ôéò åðéèÝóåéò.
Óå êÜèå ðåñßðôùóç, ïé ó÷åäéáóôÝò öïñìþí åöáñìïãþí ÂÜóåùí ÄåäïìÝíùí ïöåß-
ëïõí íá ãíùñßæïõí ôïí êáôÜ ðåñßðôùóç áóöáëÝóôåñï ôñüðï ãéá íá ðåñíïýí ôéò
ðáñáìÝôñïõò óå Ýíá åñþôçìá SQL. Åðßóçò, èá Þôáí ÷ñÞóéìï íá áðïññßðôåôáé,
Þ êáëýôåñá íá öéëôñÜñåôáé, ç åßóïäïò ðïõ ðëçêôñïëïãåß ï ÷ñÞóôçò áí ðåñéÝ÷åé
áðëÜ åéóáãùãéêÜ. Ãéá ðáñÜäåéãìá, ôï áíáãíùñéóôéêü üíïìá ÷ñÞóôç m’donald
èá Þôáí êáëýôåñï íá ìåôáó÷çìáôßæåôáé óå mdonald, áðïâÜëëïíôáò ôï óçìåßï óôß-
îçò. Ôï Ó÷Þìá 16.6 åìöáíßæåé ôïí áëãüñéèìï ìßáò óõíÜñôçóçò áíá÷áßôéóçò áðëþí
åéóáãùãéêþí áðü ôçí åßóïäï ðïõ ðëçêôñïëïãåß ï ÷ñÞóôçò.

function escape (input);


input = replace (input, "’", "");
escape = input;
end function;

Ó÷Þìá 16.6: Êþäéêáò ãéá ôï öéëôñÜñéóìá äåäïìÝíùí ðïõ åéóÞãáãå ï ÷ñÞóôçò ìå


óêïðü ôçí áðïìÜêñõíóç ôùí áðëþí åéóáãùãéêþí.

16.8 Óýíïøç
Óôü÷ïò ôçò áóöÜëåéáò ÂÜóåùí ÄåäïìÝíùí åßíáé ç äéáôÞñçóç ôñéþí ðïëý óçìá-
íôéêþí êáé áëëçëïóõó÷åôéæüìåíùí éäéïôÞôùí ôùí äåäïìÝíùí: ôçò áêåñáéüôçôáò,
ôçò åìðéóôåõôéêüôçôáò êáé ôçò äéáèåóéìüôçôÜò ôïõò. Ç áêåñáéüôçôá ïëüêëçñçò
ôçò ÂÜóçò ÄåäïìÝíùí åßíáé åõèýíç ôïõ ÓÄÂÄ. ÓÞìåñá óôá ðåñéóóüôåñá åìðï-
ñéêÜ ÓÄÂÄ ôï ðñüâëçìá ôçò áêåñáéüôçôáò áíôéìåôùðßæåôáé ìå ôç ôáêôéêÞ ëÞøç
áíôéãñÜöùí ôùí äåäïìÝíùí (backup) êáé ìå ôç óõ÷íÞ åíçìÝñùóç ôïõ ÓÄÂÄ áðü
ðëåõñÜò äéïñèþóåùí áôåëåéþí áóöáëåßáò (security patches). Ç áêåñáéüôçôá êáé
ç åìðéóôåõôéêüôçôá åíüò áíôéêåéìÝíïõ ôçò ÂÄ åßíáé åõèýíç ôïõ éäéïêôÞôç ôïõ êá-
èþò êáé ôïõ äéá÷åéñéóôÞ ôçò ÂÄ äéüôé áõôïß ïé äýï ìðïñïýí íá êáèïñßóïõí ôçí
ðïëéôéêÞ ðñïóðÝëáóçò ôùí ÷ñçóôþí ãéá ôï óôïé÷åßï áõôü.
Ç Ýííïéá ôçò äéáèåóéìüôçôáò ó÷åôßæåôáé ìå ôçí áíôéìåôþðéóç ôïõ öáéíïìÝ-
íïõ ôçò Üñíçóçò åîõðçñÝôçóçò (Denial of Service, DoS). Ìåßæùí óôü÷ïò åßíáé
ïé ÷ñÞóôåò íá ìðïñïýí ðÜíôïôå íá ðñïóðåëáýíïõí ôá áíôéêåßìåíá ôçò ÂÜóçò
ÄåäïìÝíùí ãéá ôá ïðïßá åßíáé åîïõóéïäïôçìÝíïé. Ç äéáèåóéìüôçôá Ý÷åé õðï-
óôçñé÷èåß åëÜ÷éóôá ìÝ÷ñé óÞìåñá êáé êáíÝíá ÓÄÂÄ äåí áíôéìåôùðßæåé ôï èÝìá
åõèÝùò. Ç êáëýôåñç ëýóç äéáôÞñçóçò ôçò äéáèåóéìüôçôáò åðéôõã÷Üíåôáé ãåíéêÜ
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 433

ìå ôçí ÷ñÞóç óõóôçìÜôùí ðïëëáðëþí äßóêùí RAID.

Ïé ðïëõåðßðåäåò ó÷Ýóåéò ðáñÝ÷ïõí áêåñáéüôçôá êáé åìðéóôåõôéêüôçôá. Ôá


ðïëõåðßðåäá ÓÄÂÄ åðéâÜëïõí ôïí õðï÷ñåùôéêü Ýëåã÷ï ðñïóðÝëáóçò êáé äåí
åðéôñÝðïõí ôç äéáññïÞ åõáßóèçôçò ðëçñïöïñßáò óå êáôþôåñá åðßðåäá áóöá-
ëåßáò. Áí êáé ç ðïëõåðßðåäç áóöÜëåéá áíáðôý÷èçêå áñ÷éêÜ ãéá óôñáôéùôéêïýò
êáé êõâåñíçôéêïýò ïñãáíéóìïýò, ôåëåõôáßá åöáñìüæåôáé åðßóçò áðü ìåãÜëåò éäéù-
ôéêÝò åôáéñåßåò. Ôá ðïëõåðßðåäá ÓÄÂÄ åßíáé åëÜ÷éóôá óÞìåñá óôçí áãïñÜ êáé
ãéá ôçí áðïäïôéêüôåñç êáé áóöáëÝóôåñç ëåéôïõñãßá ôïõò ðñïáðáéôïýí ôç ÷ñÞóç
ðïëõåðßðåäùí ëåéôïõñãéêþí óõóôçìÜôùí. ÄéáöïñåôéêÜ, ïé äéá÷åéñéóôÝò áóöá-
ëåßáò ôïõ óõóôÞìáôïò ðåñéïñßæïíôáé óôçí åðßôåõîç åìðéóôåõôéêüôçôáò ìüíï ìÝóù
ôïõ äéáêñéôéêïý åëÝã÷ïõ ðñïóðÝëáóçò Þ ìÝóù ôùí üøåùí. Ç á÷ßëëåéïò ðôÝñíá
ôïõ äéáêñéôéêïý åëÝã÷ïõ ðñïóðÝëáóçò åßíáé ç áäõíáìßá ôïõ íá áíôéìåôùðßóåé ôéò
åðéèÝóåéò äïýñåéùí ßððùí. Ãéá ôï ëüãï áõôü, åßíáé óçìáíôéêü íá äéáóöáëéóèåß
üôé ìüíïí õøçëÞò ðïéüôçôáò ëïãéóìéêü ãíùóôÞò ðñïÝëåõóçò èá ÷ñçóéìïðïéåßôáé
óôï óýóôçìá.

Ïé óôáôéóôéêÝò âÜóåéò äåäïìÝíùí ìðïñåß íá áðùëÝóïõí ôçí åìðéóôåõôéêüôçôá


ðïëý åýêïëá, åßôå ìå ôçí ðñïóÝããéóç ôïõ äéáóôÞìáôïò ìÝóá óôï ïðïßï âñßóêå-
ôáé êÜðïéá ôéìÞ äåäïìÝíùí åßôå ìå ôçí Ýììåóç áðïêÜëõøç áõôÞò ôçò ôéìÞò ìÝóù
óõíáèñïéóôéêþí åñùôçìÜôùí. Ôï ðñüâëçìá ôïõ óõìðåñáóìïý ïöåßëåôáé óôçí ìá-
èçìáôéêÞ óõó÷Ýôéóç ìåôáîý ôùí ðëåéÜäùí ôùí ðéíÜêùí êáé ôçò ðëçñïöïñßáò ðïõ
ó÷çìáôßæåôáé ãéá ôçí áðÜíôçóç ôùí óôáôéóôéêþí åñùôçìÜôùí. Ï Ýëåã÷ïò ôïõ ðëÞ-
èïõò ôùí ðëåéÜäùí ðïõ óõììåôÝ÷ïõí óôï ó÷çìáôéóìü ôçò áðÜíôçóçò åíüò åñùôÞ-
ìáôïò äåí åßíáé åðáñêÞò ãéá ôçí áðïôñïðÞ ôïõ óõìðåñáóìïý. Ìßá áóöáëÝóôåñç
ëýóç åßíáé ç äéáñêÞò ðáñáêïëïýèçóç ïëüêëçñçò ôçò ðëçñïöïñßáò ðïõ ãíùñßæåé
ï ÷ñÞóôçò (track what the user knows). Ç óýíèåôç áõôÞ ëýóç Ý÷åé ìåãÜëï êüóôïò
êáèþò üëá ôá åñùôÞìáôá ôùí ÷ñçóôþí ðñÝðåé íá êáôáãñÜöïíôáé êáé, ðñéí áðá-
íôçèïýí, íá áíáëýïíôáé óå ó÷Ýóç ìå üëá ôá åñùôÞìáôá ðïõ Ý÷ïõí ðñïçãïõìÝíùò
ôåèåß áðü ôïõò ßäéïõò ÷ñÞóôåò.

Ïé ðåñéóóüôåñåò áðü ôéò ôå÷íéêÝò ðïõ óõæçôÞèçêáí óôá ðëáßóéá ôïõ êåöá-
ëáßïõ áõôïý áöïñïýí áðïêëåéóôéêÜ êáé ìüíï ôï ÷þñï ôùí ÂÜóåùí ÄåäïìÝíùí.
Èá ìðïñïýóå íá åéðùèåß ðùò ç áíÜëõóç ôùí áäõíáìéþí êáé ôùí åíäå÷üìåíùí
åðéèÝóåùí åíáíôßïí óõóôçìÜôùí ÂÜóåùí ÄåäïìÝíùí åßíáé ï êáëýôåñïò ôñüðïò
êáôáãñáöÞò ôùí áíáãêþí áóöáëåßáò êÜèå åöáñìïãÞò ôïõò. Ìåëåôþíôáò ôñüðïõò
ðáñáâßáóçò ôçò áêåñáéüôçôáò, ôçò åìðéóôåõôéêüôçôáò êáé ôçò äéáèåóéìüôçôáò ìßáò
åöáñìïãÞò, ìðïñïýìå íá áíáðôýîïõìå ëýóåéò ãéá ôçí ïéêïäüìçóç ôçò áóöÜëåéÜò
ôçò ðñéí ìáò ðñïëÜâåé ìå ôçí åðéôõ÷Þ ÝêâáóÞ ôçò ìßá åðßèåóç êáêüâïõëïõ ÷ñÞóôç.
434 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


16.1. ÐïéÜ åßíáé ç óçìáóßá ôùí üñùí áêåñáéüôçôá, åìðéóôåõôéêüôçôá êáé äéáèå-
óéìüôçôá óôá óõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí;

16.2. ÐïéÜ åßíáé ôá êáèÞêïíôá ôïõ äéá÷åéñéóôÞ ÂÜóåùí ÄåäïìÝíùí óå ó÷Ýóç ìå


ôçí áóöÜëåéá ôïõ óõóôÞìáôïò êáé ôùí åöáñìïãþí ôùí ÷ñçóôþí;

16.3. ÐïéÝò åßíáé ïé äéáöïñÝò ìåôáîý äéáêñéôéêïý êáé õðï÷ñåùôéêïý åëÝã÷ïõ ðñï-
óðÝëáóçò;

16.4. Ðùò ÷ñçóéìïðïéåßôáé ç üøç ùò ìç÷áíéóìüò áðüêñõøçò åõáßóèçôçò ðëçñï-


öïñßáò óôéò âÜóåéò äåäïìÝíùí; Äþóôå Ýíá ðáñÜäåéãìá.

16.5. ÐïéÜ åßíáé ç äéáöïñÜ ìåôáîý ôå÷íéêþí áíáóôñÝøéìçò êáé ìç-áíáóôñÝøéìçò


êñõðôïãñÜöçóçò äåäïìÝíùí; ÐïéÜ åßíáé ç äéáöïñÜ ìåôáîý óõììåôñéêÞò êáé áóýì-
ìåôñçò êñõðôïãñÜöçóçò äåäïìÝíùí; Ðïéüò åßíáé ï ñüëïò ôçò êñõðôïãñÜöçóçò óå
Ýíá óýóôçìá üðïõ åöáñìüæïíôáé Þäç êáé ï äéáêñéôéêüò êáé ï õðï÷ñåùôéêüò Ýëåã-
÷ïò ðñïóðÝëáóçò;

16.6. ÈåùñÞóôå êáé ðÜëé ôïí ðïëõåðßðåäï ðßíáêá Å÷èñéêÝò ÄõíÜìåéò ôïõ Ðßíáêá
16.2. ÕðïèÝóôå üôé Ýíáò ÷ñÞóôçò ìå âáèìü åîïõóéïäüôçóçò TS åíçìåñþíåé ôçí
åããñáöÞ (Óôñáôüðåäá, 4) óå (Óôñáôüðåäá, 5). Ðïéü èá åßíáé ôï áðïôÝëåóìá ôçò
åíÝñãåéáò áõôÞò; Ðïéü ðåñéå÷üìåíï åìöáíßæåé ôþñá ï ðßíáêáò óôïí ÷ñÞóôç C êáé
ðïéü ðåñéå÷üìåíï åìöáíßæåé óôï ÷ñÞóôç TS;

16.7. ÕðïèÝóôå üôé Á, Â, C, D êáé E åßíáé ïé ÷ñÞóôåò åíüò óõóôÞìáôïò äéá÷åßñéóçò


ÂÜóåùí ÄåäïìÝíùí êáé üôé P åßíáé ìßáò ó÷Ýóç ðïõ äçìéïõñãÞèçêå áðü ôï ÷ñÞóôç
Á. ÕðïèÝóôå åðßóçò ôçí åêôÝëåóç ôçò åðüìåíçò áêïëïõèßáò åíôïëþí áðü ôïõò
áíôßóôïé÷ïõò ÷ñÞóôåò. Ç ÷ñïíéêÞ óåéñÜ åêôÝëåóçò ôùí åíôïëþí ôáõôßæåôáé ìå ôçí
óåéñÜ åìöÜíéóÞò ôïõò.

×ñÞóôçò ÅíôïëÞ
A GRANT SELECT ON P TO B,C WITH GRANT OPTION
B GRANT SELECT ON P TO D WITH GRANT OPTION
D GRANT SELECT ON P TO C, E WITH GRANT OPTION
C GRANT SELECT ON P TO E

• Ó÷åäéÜóôå ôï ãñÜöï åê÷þñçóçò ôïõ ðñïíïìßïõ SELECT åðß ôçò ó÷Ýóçò


P, ï ïðïßïò ðåñéãñÜöåé ôçí ßäéá ðëçñïöïñßá ìå ôïí ðñïçãïýìåíï ðßíáêá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 435

(Õðåíèýìéóç: ïé ÷ñÞóôåò åßíáé ïé êüìâïé ôïõ ãñÜöïõ.)

• Óôç óõíÝ÷åéá, õðïèÝóôå üôé ï ÷ñÞóôçò  åêôåëåß ôçí åíôïëÞ REVOKE SE-
LECT ON P FROM D CASCADE. Ó÷åäéÜóôå ôï ãñÜöï óôç íÝá ôïõ ìïñöÞ.

16.8. ¸óôù üôé ï åðüìåíïò ðßíáêáò Åñãáæüìåíïò ÷ñçóéìïðïéåßôáé óå ìßá óôá-


ôéóôéêÞ ÂÜóç ÄåäïìÝíùí ãéá ôçí åîáãùãÞ óôáôéóôéêþí óôïé÷åßùí ó÷åôéêÜ ìå ôç
ìéóèïäïóßá ôùí õðáëëÞëùí ìßáò åðé÷åßñçóçò. Åðßóçò, Ýóôù üôé ãéá ôçí áóöÜ-
ëåéá ôùí ðñïóùðéêþí äåäïìÝíùí ôùí åñãáæïìÝíùí, ôï óýóôçìá äéá÷åßñéóçò ÂÜ-
óåùí ÄåäïìÝíùí äåí åðéôñÝðåé ôçí áíáêïßíùóç áðáíôÞóåùí åñùôçìÜôùí, üðïõ
ôï ðëÞèïò ôùí ðëåéÜäùí ðïõ åìöáíßæïíôáé óôçí áðÜíôçóç ôïõ åñùôÞìáôïò åßíáé
ìéêñüôåñï ôïõ 2.

ïíïìáôåðþíõìï ôìÞìá öýëï ìéóèüò


Ãåùñãßá ÐáðáäÜôïõ Ðáé÷íéäéþí ÈÞëõ 1100
Åýá Êþíóôá Ðáé÷íéäéþí ÈÞëõ 800
ÉùÜííçò ÑÜðôçò Ñïý÷ùí ¢ññåí 750
Îåíïöþí Ñïýóïò Ñïý÷ùí ¢ññåí 950
Ìáñßá ÐåñåíôëÞ Ñïý÷ùí ÈÞëõ 500
Óôáýñïò ÐáíôáæÞò Ñïý÷ùí ¢ññåí 1850
ÉùÜííçò Ìéêñüò Ðáé÷íéäéþí ¢ññåí 890
ÉïñäÜíçò ÐáððÜò Ñïý÷ùí ¢ññåí 1500
Èåüäùñïò Ñùìáíüò Ðáé÷íéäéþí ¢ññåí 1160

ÈåùñÞóôå ôá åñùôÞìáôá:

• Q1: SELECT SUM(ìéóèüò) FROM Åñãáæüìåíïò WHERE öýëï =


‘ÈÞëõ’;

• Q2: SELECT SUM(ìéóèüò) FROM Åñãáæüìåíïò WHERE (öýëï =


‘ÈÞëõ’) ÁND (ôìÞìá=‘Ðáé÷íéäéþí’).

Ôá äýï åñùôÞìáôá åðéôñÝðåôáé íá åêôåëåóèïýí äéüôé éêáíïðïéïýí ôç óõíèÞêç


min|Qi | ≥ 2. Åßíáé áóöáëÝò íá áíáêïéíùèïýí ïé áðáíôÞóåéò ôùí äýï áõôþí
åñùôçìÜôùí; ÁéôéïëïãÞóôå ôçí áðÜíôçóÞ óáò.

16.9 Ðüôå ìßá ÂÜóç ÄåäïìÝíùí ÷áñáêôçñßæåôáé ùò óôáôéóôéêÞ; Ôï ðñïâëÞìáôá


áóöÜëåéáò äåäïìÝíùí ìðïñåß íá ðñïêýøïõí;
436 ÊåöÜëáéï 16. ÁóöÜëåéá ÂÜóåùí ÄåäïìÝíùí

16.10. Åíôïðßóôå ðéèáíÜ ðñïâëÞìáôá áóöÜëåéáò ðïõ ìðïñïýí íá ðñïêýøïõí óôç


ÂÜóç ÄåäïìÝíùí ôçò óõíäñïìçôéêÞò çëåêôñïíéêÞò âéâëéïèÞêçò ôïõ Ó÷Þìáôïò 4.1.
17
ÈÝìáôá Õëïðïßçóçò ôïõ
MSSQLS-2000

Óôï êåöÜëáéï áõôü èá åîåôÜóïõìå âáóéêÜ æçôÞìáôá õëïðïßçóçò ôïõ óõóôÞìáôïò


MSSQLS-2000. Èá åðéêåíôñùèïýìå êõñßùò óôç öõóéêÞ ïñãÜíùóç ôùí ÂÜóåùí
ÄåäïìÝíùí, óôçí õðïóôÞñéîç ìåèüäùí ðñïóðÝëáóçò, ôçí åðåîåñãáóßá êáé âåë-
ôéóôïðïßçóç åñùôçìÜôùí êáé óôïõò ìç÷áíéóìïýò ôáõôü÷ñïíçò ðñïóðÝëáóçò êáé
äéá÷åßñéóçò óõíáëëáãþí, ìåëåôþíôáò ôïõò ôñüðïõò ìå ôïõò ïðïßïõò ï MSSQLS-
2000 ÷åéñßæåôáé ôá èÝìáôá áõôÜ.

17.1 ÖõóéêÞ ÏñãÜíùóç ÂÜóçò ÄåäïìÝíùí


Ï MSSQLS-2000 äåóìåýåé êáé áðïäåóìåýåé ìíÞìç áíáëüãùò ìå ôéò áðáéôÞóåéò
ôùí åöáñìïãþí. Áí êáé õðÜñ÷åé ç äõíáôüôçôá íá äþóïõìå åíôïëÞ þóôå íá ÷ñçóé-
ìïðïéåßôáé Ýíá óõãêåêñéìÝíï ðïóïóôü ôçò ìíÞìçò, ðñïôåßíåôáé íá áöÞóïõìå ôïí
MSSQLS-2000 íá äéá÷åéñßæåôáé ôç ìíÞìç áõôüìáôá. ÁíåîÜñôçôá áðü ôïí ôñüðï
äÝóìåõóçò êáé áðïäÝóìåõóçò ôçí êýñéáò ìíÞìçò, ç ìíÞìç èåùñåßôáé ùò ìßá óõë-
ëïãÞ áðü äåîáìåíÝò ìíÞìçò (memory pools) êÜèå ìßá áðü ôéò ïðïßåò ìðïñåß
íá Ý÷åé ôç äéêÞ ôçò ðïëéôéêÞ äéá÷åßñéóçò, áíåîÜñôçôá áðü ôéò õðüëïéðåò. Ç âá-
óéêÞ ìïíÜäá áðïèÞêåõóçò ìíÞìçò ôïõ MSSQLS-2000 åßíáé ç áðïìïíùôéêÞ ìíÞìç.

437
438 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

ÐïëëÝò áðïìïíùôéêÝò ìíÞìåò ó÷çìáôßæïõí ìßá äåîáìåíÞ (buffer pool). Ç êÜèå


áðïìïíùôéêÞ ìíÞìç åßíáé óôçí ïõóßá ìßá óåëßäá (page) ÷ùñçôéêüôçôáò 8KBytes.
¼ôáí ìßá åöáñìïãÞ ÷ñåéÜæåôáé ðåñéóóüôåñç ìíÞìç, ôüôå æçôÜ áðü ôï äéá÷åéñéóôÞ
áðïìïíùôéêþí ìíçìþí (buffer manager) ìßá Þ ðåñéóóüôåñåò åëåýèåñåò óåëßäåò.
Ç óåëßäá áðïôåëåß êáé ôç âáóéêÞ ìïíÜäá åéóüäïõ-åîüäïõ äåõôåñåýïõóáò ìíÞ-
ìçò. ¼ëá ôá äåäïìÝíá ðïõ êáôåõèýíïíôáé áðü êáé ðñïò ôç äåõôåñåýïõóá ìíÞìç
(äßóêï) åßíáé äéá÷ùñéóìÝíá óå óåëßäåò. Ïé ãñáììÝò åíüò ðßíáêá áðïèçêåýïíôáé
êáôÜ óõíå÷üìåíï ôñüðï óå ìßá óåëßäá. Åîáßñåóç áðïôåëïýí ïé ôéìÝò ôùí ôýðùí
äåäïìÝíùí TEXT, NTEXT êáé IMAGE ïé ïðïßåò áðïèçêåýïíôáé óå îå÷ùñéóôÝò
óåëßäåò. Óôçí áñ÷Þ ôçò êÜèå óåëßäáò õðÜñ÷åé ìßá åðéêåöáëßäá áðü 96 bytes, ç
ïðïßá ðåñéÝ÷åé óçìáíôéêÝò ðëçñïöïñßåò üðùò ôïí ôýðï ôçò óåëßäáò, ôï ìÝãåèïò
ôïõ åëåýèåñïõ ÷þñïõ êáé ôçí ôáõôüôçôá ôïõ áíôéêåéìÝíïõ üðïõ áíÞêåé ç óåëßäá.
Ôï ìÝãåèïò ìßáò ãñáììÞò åíüò ðßíáêá äåí ìðïñåß íá åßíáé ìåãáëýôåñï áðü 8060
bytes, êáé åðïìÝíùò ìßá ãñáììÞ äåí ìðïñåß íá êáôáëáìâÜíåé ÷þñï ðåñéóóüôåñï
áðü ìßá óåëßäá (8192 bytes). Óôï Ó÷Þìá 17.1 ðáñïõóéÜæåôáé ç ìïñöÞ ìßáò óåëßäáò
ðïõ áðïèçêåýåé äåäïìÝíá åíüò ðßíáêá ôçò ÂÜóçò ÄåäïìÝíùí.
Ε π ι κ ε φ α λ ί δ α

( 9 6 b y t e s )

Γ ρ α   ή  ε δ ο  έ ν ω ν 1

Γ ρ α   ή  ε δ ο  έ ν ω ν 2

Γ ρ α   ή  ε δ ο  έ ν ω ν 3

Ε λ ε ύ θ ε ρ ο ς Χ ώ ρ ο ς

3 2 1 Μ ε τ α τ ο π ί σ ε ι ς γ ρ α 0 0 ώ ν

α π ό τ η ν α ρ χ ή τ η ς σ ε λ ί δ α ς

Ó÷Þìá 17.1: ÄïìÞ óåëßäáò óôïí MSSQLS-2000.

17.1.1 ÏñãÜíùóç Áñ÷åßùí


Ç ìéêñüôåñç ìïíÜäá áðïèÞêåõóçò ãéá ðßíáêåò êáé êáôáëüãïõò åßíáé ç Ýêôáóç
(extent) ç ïðïßá áðïôåëåßôáé áðü 8 óõíå÷üìåíåò óåëßäåò (óõíïëéêü ìÝãåèïò 64
KBytes). Äéáêñßíïõìå äýï ôýðïõò Ýêôáóçò:

• ìßá Ýêôáóç êáëåßôáé ïìïéüìïñöç üôáí üëåò ïé óåëßäåò ðïõ ôçí áðïôåëïýí
áíÞêïõí óôï ßäéï áíôéêåßìåíï ôçò ÂÜóçò ÄåäïìÝíùí (ð.÷., óôïí ßäéï ðßíáêá),
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 439

• ìßá Ýêôáóç êáëåßôáé áíïìïéüìïñöç üôáí ïé óåëßäåò ôçò ÷ñçóéìïðïéïýíôáé


áðü ðïëëÜ áíôéêåßìåíá (ð.÷., áðü äéáöïñåôéêïýò ðßíáêåò).
Ìßá ÂÜóç ÄåäïìÝíùí áíôéóôïé÷åß óå Ýíá óýíïëï áñ÷åßùí ôïõ ëåéôïõñãéêïý
óõóôÞìáôïò. Ôá äåäïìÝíá ôùí ðéíÜêùí ôçò âÜóçò áðïèçêåýïíôáé óå äéáöïñåôéêÜ
áñ÷åßá áðü ôá äåäïìÝíá çìåñïëïãßïõ (log). Åðßóçò, Ýíá áñ÷åßï áíÞêåé óå ìßá
ìüíï ÂÜóç ÄåäïìÝíùí. Äéáêñßíïõìå ôïõò åðüìåíïõò ôýðïõò áñ÷åßùí:
• ðñùôåýïí áñ÷åßï äåäïìÝíùí (primary data file), ôï ïðïßï áðïôåëåß ôï âá-
óéêü áñ÷åßï ôçò âÜóçò êáé ðåñéÝ÷åé äåßêôåò óôá õðüëïéðá áñ÷åßá ôçò âÜóçò.
ÊÜèå ÂÜóç ÄåäïìÝíùí ìðïñåß íá Ý÷åé ìüíï Ýíá ðñùôåýïí áñ÷åßï. Ç óõíÞ-
èçò êáôÜëçîç ïíüìáôïò ôïõ ðñùôåýïíôïò áñ÷åßïõ åßíáé *.mdf.

• äåõôåñåýùí áñ÷åßï äåäïìÝíùí (secondary data file), ôï ïðïßï ðåñéÝ÷åé åðé-


ðëÝïí äåäïìÝíá ôçò âÜóçò. ÊÜèå âÜóç ìðïñåß íá Ý÷åé ðïëëÜ äåõôåñåýïíôá
áñ÷åßá Þ êáíÝíá. Ç óõíÞèçò êáôÜëçîç ïíüìáôïò åíüò äåõôåñåýïíôïò áñ-
÷åßïõ åßíáé *.ndf.

• áñ÷åßï çìåñïëïãßïõ (log file), ôï ïðïßï ÷ñçóéìïðïéåßôáé ãéá ôçí áðïèÞêåõóç


ðëçñïöïñéþí þóôå íá åßíáé äõíáôÞ ç åðáíÜêôçóç äåäïìÝíùí óå ðåñßðôùóç
áðñüóìåíçò äéáêïðÞò ôçò ëåéôïõñãßáò ôïõ óõóôÞìáôïò. Ìßá âÜóç ìðïñåß íá
Ý÷åé ðïëëÜ áñ÷åßá çìåñïëïãßïõ, áëëÜ áðáñáéôÞôùò ðñÝðåé íá Ý÷åé ôïõëÜ÷é-
óôïí Ýíá. Ç óõíÞèçò êáôÜëçîç ïíüìáôïò åíüò áñ÷åßïõ çìåñïëïãßïõ åßíáé
*.ldf.
ÅðéôñÝðåôáé ç ÷ñÞóç äéáöïñåôéêþí êáôáëÞîåùí ãéá ôá áñ÷åßá, üìùò ðñïôåßíå-
ôáé ç ðñïçãïýìåíç ïíïìáôïëïãßá Ýôóé þóôå íá äéáêñßíåôáé êáèáñÜ ï ñüëïò ôïõ
êÜèå áñ÷åßïõ. Óçìåéþíåôáé üôé ôá áñ÷åßá äåäïìÝíùí êáé çìåñïëïãßïõ ìðïñïýí
íá áðïèçêåýïíôáé åßôå óå óýóôçìá áñ÷åßùí ôýðïõ FAT åßôå NTFS, üìùò äåí
åðéôñÝðåôáé ç áðïèÞêåõóç áõôþí óå óõìðéåóìÝíï óýóôçìá áñ÷åßùí.
Ïé óåëßäåò åíüò áñ÷åßïõ äåäïìÝíùí áñéèìïýíôáé óåéñéáêÜ îåêéíþíôáò áðü ôï
0. ÊÜèå áñ÷åßï Ý÷åé ìßá ìïíáäéêÞ ôáõôüôçôá (file ID). ÅðïìÝíùò, ãéá íá áíá-
öåñèïýìå óå ìßá óõãêåêñéìÝíç óåëßäá áðáéôåßôáé ç ôáõôüôçôá ôïõ áñ÷åßïõ êáé ï
áñéèìüò óåëßäáò. Ç ðñþôç óåëßäá êÜèå áñ÷åßïõ ÷áñáêôçñßæåôáé ùò åðéêåöáëßäá,
äéüôé ðåñéÝ÷åé ãåíéêÝò ðëçñïöïñßåò ãéá ôï áñ÷åßï. Åðßóçò, êÜðïéåò áðü ôéò áñ-
÷éêÝò óåëßäåò ôïõ áñ÷åßïõ ðåñéÝ÷ïõí ðëçñïöïñßåò óõóôÞìáôïò, êáé ü÷é äåäïìÝíá
ðéíÜêùí. Óôï Ó÷Þìá 17.2 ðáñïõóéÜæåôáé Ýíá ðáñÜäåéãìá ÂÜóçò ÄåäïìÝíùí ç
ïðïßá áðïôåëåßôáé áðü Ýíá ðñùôåýïí áñ÷åßï ìåãÝèïõò 2MBytes êáé Ýíá äåõôå-
ñåýùí áñ÷åßï ìåãÝèïõò 512KBytes.
Ôï ìÝãåèïò ôùí áñ÷åßùí äåäïìÝíùí áõîÜíåé áõôüìáôá áíáëüãùò ìå ôï ìÝãå-
èïò ôçò áýîçóçò ðïõ Ý÷ïõìå ïñßóåé. Ìðïñïýìå íá ïñßóïõìå Ýíá ìÝãéóôï ìÝãåèïò
440 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

Σ ε λ ί δ α Σ ε λ ί δ α

Σ ε λ ί δ α Σ ε λ ί δ α

0 1 : 0 0 0 2 0 1 : 0 2 5 5

0 1 : 0 0 0 0 0 1 : 0 0 0 1

Π ρ ω τ ε ύ ο ν α ρ χ ε ί ο δ ε δ ο  έ ν ω ν  ε τ α υ τ ό τ η τ α 1 ,  έ γ ε θ ο ς 2 M B y t e s

Σ ε λ ί δ α Σ ε λ ί δ α

Σ ε λ ί δ α Σ ε λ ί δ α

0 2 : 0 0 0 2 0 2 : 0 0 6 3

0 2 : 0 0 0 0 0 2 : 0 0 0 1

$ ε υ τ ε ρ ε ύ ο ν α ρ χ ε ί ο δ ε δ ο  έ ν ω ν  ε τ α υ τ ό τ η τ α 2 ,  έ γ ε θ ο ς 5 1 2 K B y t e s

Ó÷Þìá 17.2: Ðñùôåýïí êáé äåõôåñåýïí áñ÷åßï ÂÜóçò ÄåäïìÝíùí.

áñ÷åßïõ, áí êáé áõôü äåí åßíáé áðáñáßôçôï. Áí äåí ïñßóïõìå êÜðïéï ìÝãéóôï
ìÝãåèïò, ôüôå ôï áñ÷åßï ìðïñåß íá ìåãáëþíåé áðåñéüñéóôá. Óôçí ðåñßðôùóç áõôÞ
äåí áðáéôåßôáé ç ðáñÝìâáóç ôïõ äéá÷åéñéóôÞ ôïõ óõóôÞìáôïò, ç ïðïßá åßíáé áðá-
ñáßôçôç óôçí ðåñßðôùóç ðïõ ôï ìÝãåèïò êÜðïéïõ áñ÷åßïõ äåäïìÝíùí ãßíåé ßóï ìå
ôï ìÝãéóôï åðéôñåðüìåíï ìÝãåèïò.

17.1.2 ÖõóéêÞ ÏñãÜíùóç ÐéíÜêùí


Ï MSSQLS-2000 äéáêñßíåé äýï ôýðïõò ðéíÜêùí, áíáëüãùò ìå ôïí ôñüðï öõóéêÞò
ïñãÜíùóçò. ¸íáò ðßíáêáò ðïõ äåí ðåñéÝ÷åé êáôÜëïãï ïìáäïðïßçóçò (clustered
index) êáëåßôáé ðßíáêáò óùñïý (heap table). Óå Ýíáí ðßíáêá óùñïý äåí õðÜñ÷åé
óõãêåêñéìÝíç äéÜôáîç ìåôáîý ôùí áðïèçêåõìÝíùí ãñáììþí ôïõ ðßíáêá. Åðßóçò,
äåí õðÜñ÷åé äéáóýíäåóç ìåôáîý ôùí óåëßäùí ôïõ ðßíáêá üðùò óôçí ðåñßðôùóç
ôçò äéáóõíäåäåìÝíçò ëßóôáò. Ç äéá÷åßñéóç ôùí ðéíÜêùí óùñïý óôçñßæåôáé óå ìßá
äïìÞ äåäïìÝíùí ç ïðïßá êáëåßôáé Index Allocation Map (IAM). ÊÜèå ðßíáêáò
óùñïý Ý÷åé ôïõëÜ÷éóôïí ìßá óåëßäá IAM. Ç äéåýèõíóç ôçò ðñþôçò IAM óåëßäáò
åßíáé áðïèçêåõìÝíç óôç óôÞëç FirstIAM ôçò ãñáììÞò ôïõ ðßíáêá óõóôÞìáôïò sysin-
dexes, ç ïðïßá áíôéóôïé÷åß óôïí ðßíáêá óùñïý êáé ç óôÞëç indid Ý÷åé ôéìÞ 0. ÊÜèå
ðßíáêáò óùñïý Ý÷åé ìßá áíôßóôïé÷ç ãñáììÞ óôïí ðßíáêá sysindexes. Ç óåëßäá
IAM êáôá÷ùñßæåé ôéò äéåõèýíóåéò ôùí åêôÜóåùí (extents) ðïõ áðïèçêåýïõí äå-
äïìÝíá ôïõ óõãêåêñéìÝíïõ ðßíáêá. ÅðïìÝíùò, ðñïóðåëáýíïíôáò ôéò äéåõèýíóåéò
áõôÝò ìðïñïýìå íá äéáâÜóïõìå ôá ðåñéå÷üìåíá ôïõ ðßíáêá. ÊÜèå óåëßäá IAM
ìðïñåß íá äåéêôïäïôÞóåé ìÝ÷ñé 63903 åêôÜóåéò. ÍÝåò óåëßäåò IAM ìðïñïýí íá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 441

äåóìåõèïýí áíáëüãùò ìå ôéò áðáéôÞóåéò ôïõ ðßíáêá óùñïý. Ôïíßæåôáé, üôé áí óå


êÜðïéï áñ÷åßï õðÜñ÷åé Ýêôáóç ðïõ áíôéóôïé÷åß óôïí ðßíáêá óùñïý, ôüôå ðñÝðåé
íá õðÜñ÷åé ôïõëÜ÷éóôïí ìßá óåëßäá ÉÁÌ óôï áñ÷åßï ãéá ôï óõãêåêñéìÝíï ðßíáêá.
Ç öõóéêÞ ïñãÜíùóç åíüò ðßíáêá óùñïý ðáñïõóéÜæåôáé óôï Ó÷Þìá 17.3.

sysindexes
id indid . . . FirstISAM . . . root
0

Ε π έ κ τ η 0

α σ

Π ρ ώ τ η

σ ε λ ί δ α I A M

Ε π έ κ τ η 1

α σ

Ε π έ κ τ η 6 3 9 0 2

α σ

Ε π ό  η

ε ν

σ ε λ ί δ α I A M

Ó÷Þìá 17.3: ÖõóéêÞ ïñãÜíùóç ðßíáêá óùñïý.

¸íáò ðßíáêáò êáëåßôáé ïìáäïðïéçìÝíïò ðßíáêáò (clustered table) áí äéáèÝ-


ôåé ïìáäïðïéçìÝíï. Óå áíôßèåóç ìå ôïí ðßíáêá óùñïý, ïé ãñáììÝò åíüò ïìá-
äïðïéçìÝíïõ ðßíáêá åßíáé áðïèçêåõìÝíåò áíáëüãùò ìå ôç äéÜôáîç ðïõ ïñßæåé ç
óôÞëç ãéá ôçí ïðïßá ïñßæåôáé ï êáôÜëïãïò ïìáäïðïßçóçò. Åðßóçò, ïé óåëßäåò ôïõ
ðßíáêá åßíáé ïñãáíùìÝíåò óå äéðëÞ äéáóõíäåäåìÝíç ëßóôá (êÜèå óåëßäá äåß÷íåé
óôçí ðñïçãïýìåíç êáé åðüìåíÞ ôçò). Ç ìåôÜâáóç áðü ìßá óåëßäá äåäïìÝíùí
óôçí åðüìåíç ãßíåôáé ôá÷ýôáôá êáé áõôü åðéôñÝðåé ôçí áðïäïôéêÞ áíÜãíùóç üëùí
ôùí ãñáììþí ôïõ ðßíáêá. Ï ôñüðïò ïñãÜíùóçò ôùí ïìáäïðïéçìÝíùí ðéíÜêùí
ìå ÷ñÞóç êáôáëüãùí ïìáäïðïßçóçò åîåôÜæåôáé óôçí åðüìåíç ðáñÜãñáöï óôçí
ïðïßá ìåëåôïýìå ôïõò äéáöïñåôéêïýò ôýðïõò êáôáëüãùí ðïõ õðïóôçñßæïíôáé áðü
ôïí MSSQLS-2000.
442 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

17.2 ÊáôÜëïãïé
Óå ðñïçãïýìåíá êåöÜëáéá ìåëåôÞèçêå ç ÷ñÞóç ôùí êáôáëüãùí ùò ìÝóï ïñãÜ-
íùóçò ôùí äåäïìÝíùí ìå óôü÷ï ôçí áðïäïôéêÞ áðÜíôçóç åñùôçìÜôùí. Áí Ýíáò
ðßíáêáò äåí äéáèÝôåé êáôÜëïãï, ôüôå ãéá êÜèå åñþôçìá óôï ïðïßï áíáöÝñåôáé
ï ðßíáêáò èá ðñÝðåé íá åîåôáóèïýí üëåò ïé ãñáììÝò ôïõ ìßá ðñïò ìßá þóôå íá
ðñïóäéïñéóèåß áí éêáíïðïéåßôáé Þ ü÷é ç óõíèÞêç ôïõ åñùôÞìáôïò. Ç åîáíôëçôéêÞ
áíáæÞôçóç üëùí ôùí ãñáììþí ôïõ ðßíáêá ðñÝðåé íá áðïöåýãåôáé, äéüôé äçìéïõñ-
ãåß ìåãÜëï öüñôï óôï õðïóýóôçìá äåõôåñåýïõóáò ìíÞìçò ëüãù ôùí óõíå÷üìåíùí
ðñïóðåëÜóåùí. Ôï ðëÞèïò ôùí ðñïóðåëÜóåùí ìðïñåß íá ìåéùèåß äñáóôéêÜ ìå
ôç ÷ñÞóç êáôáëüãùí.
Ï MSSQLS-2000 ÷ñçóéìïðïéåß ôç äïìÞ ôïõ B-äÝíäñïõ ãéá ôçí õëïðïßçóç ôùí
êáôáëüãùí. Ãéá ôçí áêñßâåéá ÷ñçóéìïðïéåßôáé ç ðáñáëëáãÞ ôïõ B+ -äÝíäñïõ, ç
ïðïßá åðéôñÝðåé óôá öýëëá ôïõ äÝíäñïõ íá Ý÷ïõí äéáöïñåôéêÞ ìïñöÞ áðü ôïõò
åóùôåñéêïýò êüìâïõò. Õðåíèõìßæåôáé üôé ôá äåäïìÝíá óå Ýíá B+ -äÝíäñï áðïèç-
êåýïíôáé ìüíï óôá öýëëá, åíþ ïé åóùôåñéêïß êüìâïé ÷ñçóéìïðïéïýíôáé âïçèçôéêÜ
êáôÜ ôçí áíáæÞôçóç. Ç äïìÞ ôïõ B+ -äÝíäñïõ ÷ñçóéìïðïéåßôáé åßôå ùò ïìáäï-
ðïéçìÝíïò êáôÜëïãïò (clustered index) åßôå ùò ìç-ïìáäïðïéçìÝíïò êáôÜëïãïò
(non-clustered index).

17.2.1 ÏìáäïðïéçìÝíïò ÊáôÜëïãïò


Áí õðÜñ÷åé ïìáäïðïéçìÝíïò êáôÜëïãïò ãéá Ýíáí ðßíáêá, ôüôå ïé ãñáììÝò óå êÜèå
óåëßäá ôïõ ðßíáêá åßíáé áðïèçêåõìÝíåò ùò ðñïò ìßá óõãêåêñéìÝíç äéÜôáîç. Ç
äéÜôáîç áõôÞ ïñßæåôáé áðü ôéò ôéìÝò ðïõ Ý÷åé ç óôÞëç ìå âÜóç ôçí ïðïßá ïñßæåôáé
ï ïìáäïðïéçìÝíïò êáôÜëïãïò. ÅðåéäÞ ïé ãñáììÝò áêïëïõèïýí ìßá óõãêåêñéìÝíç
äéÜôáîç, ìüíï Ýíáò ïìáäïðïéçìÝíïò êáôÜëïãïò ìðïñåß íá õðÜñ÷åé óå êÜèå ðß-
íáêá. Ãéá íá ðñïóðåëÜóïõìå ôïí êáôÜëïãï áñêåß íá Ý÷ïõìå ðñüóâáóç óôç ñßæá
ôïõ êáôáëüãïõ. Óôïí ðßíáêá óõóôÞìáôïò sysindexes êáé óõãêåêñéìÝíá óôç óôÞëç
root ðïõ áíôéóôïé÷åß óôç ãñáììÞ ìå indid=1 õðÜñ÷åé Ýíáò äåßêôçò ðïõ äåß÷íåé ôç
ñßæá ôïõ ïìáäïðïéçìÝíïõ êáôáëüãïõ ôïõ ðßíáêá.
Ï ïìáäïðïéçìÝíïò êáôÜëïãïò áðïôåëåßôáé áðü Ýíá Þ ðåñéóóüôåñá åóùôåñéêÜ
åðßðåäá ðïõ áðïôåëïýíôáé áðü óåëßäåò êáôáëüãïõ (index pages). Ïé óåëßäåò ôïõ
êáôáëüãïõ óå êÜèå åðßðåäï åßíáé ïñãáíùìÝíåò ìå äéðëÞ äéáóõíäåäåìÝíç ëßóôá
þóôå íá åßíáé åýêïëç ç ðñïóðÝëáóÞ ôïõò. Ôï ßäéï óõìâáßíåé êáé óôï åðßðåäï
ôùí öýëëùí. Ïé óåëßäåò óôï åðßðåäï ôùí öýëëùí åßíáé óåëßäåò äåäïìÝíùí (data
pages) êáé áðïèçêåýïõí ôéò ãñáììÝò ôïõ ðßíáêá. Ç ìïñöÞ åíüò ïìáäïðïéçìÝíïõ
êáôáëüãïõ ðáñïõóéÜæåôáé óôï Ó÷Þìá 17.4.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 443

sysindexes
id indid ... FirstISAM ... root
0
1

Ρίζα

Γραµµές
καταλόγου

Γραµµές Γραµµές Γραµµές


καταλόγου καταλόγου καταλόγου

Φύλλο Φύλλο Φύλλο

Γραµµές Γραµµές Γραµµές


∆εδοµένων ∆εδοµένων ∆εδοµένων

Ó÷Þìá 17.4: ÖõóéêÞ ïñãÜíùóç ïìáäïðïéçìÝíïõ ðßíáêá ìå ïìáäïðïéçìÝíï êáôÜ-


ëïãï.

17.2.2 Ìç-ÏìáäïðïéçìÝíïò ÊáôÜëïãïò

Óå áíôßèåóç ìå ôïí ïìáäïðïéçìÝíï êáôÜëïãï, Ýíáò ðßíáêáò ìðïñåß íá Ý÷åé ðïë-


ëïýò ìç-ïìáäïðïéçìÝíïõò êáôáëüãïõò (non-clustered indexes). ÊÜèå ìç-ïìáäï-
ðïéçìÝíïò êáôÜëïãïò áðïôåëåß ìßá îå÷ùñéóôÞ äïìÞ ðïõ åßíáé áíåîÜñôçôç áðü ôç
öõóéêÞ ïñãÜíùóç ôïõ ðßíáêá. Ï MSSQLS-2000 åðéôñÝðåé ôçí êáôáóêåõÞ ìÝ÷ñé
êáé 249 ìç-ïìáäïðïéçìÝíùí êáôáëüãùí áíÜ ðßíáêá.
¸íáò ìç-ïìáäïðïéçìÝíïò êáôÜëïãïò ìðïñåß íá ïñéóèåß åßôå óå Ýíáí ðßíáêá
óùñïý åßôå óå Ýíáí ïìáäïðïéçìÝíï ðßíáêá (ï ïðïßïò åî ïñéóìïý äéáèÝôåé ïìá-
äïðïéçìÝíï êáôÜëïãï). Óôçí ðñþôç ðåñßðôùóç ïé óåëßäåò ðïõ âñßóêïíôáé óôï
åðßðåäï ôùí öýëëùí ðåñéÝ÷ïõí äåßêôåò óôéò áíôßóôïé÷åò óåëßäåò ôùí äåäïìÝíùí
ôïõ ðßíáêá. Óôç äåýôåñç ðåñßðôùóç, ï ìç-ïìáäïðïéçìÝíïò êáôÜëïãïò ÷ñçóé-
ìïðïéåßôáé ãéá ôïí ðñïóäéïñéóìü ôçò ôéìÞò ôçò óôÞëçò ìå âÜóç ôçí ïðïßá Ý÷åé
äçìéïõñãçèåß ï ïìáäïðïéçìÝíïò êáôÜëïãïò, êáé óôç óõíÝ÷åéá ðñáãìáôïðïéåßôáé
áíáæÞôçóç óôïí ïìáäïðïéçìÝíï êáôÜëïãï ãéá ôçí ðñïóðÝëáóç ôùí óåëßäùí äå-
äïìÝíùí ôïõ ðßíáêá.
444 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

17.2.3 Äçìéïõñãßá Êáôáëüãùí


Ç äçìéïõñãßá êáôáëüãùí ðñáãìáôïðïéåßôáé ðïëý åýêïëá ìÝóù ôïõ Enterprise
Manager, ÷ñçóéìïðïéþíôáò ôçí åðéëïãÞ Tools, Wizards, Create Index Wizard. Ôï
åñãáëåßï áõôü åìöáíßæåé ìßá óåéñÜ áðü öüñìåò ç óõìðëÞñùóç ôùí ïðïßùí åßíáé
áðáñáßôçôç ãéá ôç äçìéïõñãßá ôïõ êáôáëüãïõ. ÅíáëëáêôéêÜ ìðïñïýìå íá ÷ñçóé-
ìïðïéÞóïõìå ôçí åðéëïãÞ Manage Indexes ç ïðïßá åßíáé äéáèÝóéìç ðáôþíôáò ôï
äåîéü ðëÞêôñï ôïõ ðïíôéêéïý åðÜíù óôïí ðßíáêá üðïõ èÝëïõìå íá êáôáóêåõÜ-
óïõìå ôïí êáôÜëïãï. Óôï Ó÷Þìá 17.5 ðáñïõóéÜæïíôáé ïé äýï ôñüðïé êáôáóêåõÞò
ôïõ êáôáëüãïõ ìÝóù ôïõ Enterprise Manager1 .

(α) επιλογή Create Index Wizard (β) επιλογή Manage Indexes

Ó÷Þìá 17.5: Äçìéïõñãßá êáôáëüãïõ óôïí Enterprise Manager.

Ç T-SQL äéáèÝôåé ôçí åíôïëÞ CREATE INDEX ç åêôÝëåóç ôçò ïðïßáò Ý÷åé ùò
áðïôÝëåóìá ôç äçìéïõñãßá åíüò êáôáëüãïõ ãéá ôïí ðßíáêá. ¸óôù üôé èÝëïõìå íá
äçìéïõñãÞóïõìå Ýíáí ïìáäïðïéçìÝíï êáôÜëïãï ãéá ôç óôÞëç ôßôëïò ôïõ ðßíáêá
Ôáéíßá. Ç åíôïëÞ êáôáóêåõÞò ôïõ êáôáëüãïõ Ý÷åé ùò åîÞò:
CREATE CLUSTERED INDEX êáôÜëïãïò_ôßôëïò
ON Ôáéíßá (ôßôëïò);

ÐáñáôçñÞóôå ôç ÷ñÞóç ôçò ëÝîçò CLUSTERED, ç ïðïßá ïñßæåé üôé ï êáôÜëïãïò


ðïõ èá êáôáóêåõáóèåß èá åßíáé ïìáäïðïéçìÝíïò. áíôéóôïß÷ùò, ãéá ôçí êáôáóêåõÞ
åíüò ìç-ïìáäïðïéçìÝíïõ êáôáëüãïõ ãéá ôç óôÞëç üíïìá ôïõ ðßíáêá Çèïðïéüò
Ý÷ïõìå:
1
¸íáò ôñßôïò ôñüðïò êáôáóêåõÞò åíüò êáôáëüãïõ åßíáé ìÝóù ôïõ åñãáëåßïõ ó÷åäéáóìïý ðéíÜêùí
(table designer).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 445

CREATE INDEX êáôÜëïãïò_üíïìá


ON Çèïðïéüò (üíïìá);

Ïé êáôÜëïãïé ðïõ êáôáóêåõÜóáìå ðñïçãïõìÝíùò óôçñßæïíôáé óå ìßá ìüíï


óôÞëç. Ï MSSQLS-2000 åðéôñÝðåé ôçí êáôáóêåõÞ óýíèåôùí êáôáëüãùí ðïõ
óôçñßæïíôáé óå ðåñéóóüôåñåò áðü ìßá óôÞëåò. Ãéá ôçí êáôáóêåõÞ åíüò óýíèåôïõ
êáôáëüãïõ áðëþò äßíïõìå óå ðáñÝíèåóç üëåò ôéò óôÞëåò ðïõ ìáò åíäéáöÝñïõí,
üðùò óôï åîÞò ðáñÜäåéãìá:
CREATE INDEX êáôÜëïãïò_DVD_VHS
ON Ôáéíßá (DVD,VHS);

Ç äçìéïõñãßá êáôáëüãùí áðáéôåß éäéáßôåñç ðñïóï÷Þ. Ôïíßæåôáé üôé äçìéïõñ-


ãþíôáò ðïëëïýò êáôáëüãïõò ãéá Ýíáí ðßíáêá áõîÜíåôáé ï ÷ñüíïò åíçìÝñùóçò
ôùí êáôáëüãùí üôáí áëëÜæïõí ôá äåäïìÝíá ôïõ ðßíáêá. Ïé êáôÜëïãïé ðñÝðåé íá
êáôáóêåõÜæïíôáé ãéá ôéò óôÞëåò ðïõ óõììåôÝ÷ïõí óõ÷íÜ óå óõíèÞêåò WHERE ôùí
åñùôçìÜôùí, þóôå íá åðéôá÷ýíåôáé ç äéáäéêáóßá ôçò åðåîåñãáóßáò. Óôç óõíÝ÷åéá
ðáñáèÝôïõìå ìåñéêÝò ÷ñÞóéìåò óõìâïõëÝò ó÷åôéêÜ ìå ôç äçìéïõñãßá êáôáëüãùí:
• ÓõíéóôÜôáé ç êáôáóêåõÞ êáôáëüãùí ãéá ôéò óôÞëåò ðïõ óõììåôÝ÷ïõí óå
ðñÜîåéò óýíäåóçò (joins). Ç ðñÜîç ôçò óýíäåóçò äåí åêôåëåßôáé áðïäïôéêÜ
áí äåí õðÜñ÷ïõí êáôÜëïãïé, üðùò Ý÷åé ìåëåôçèåß óôï ÊåöÜëáéï 14.
• Ðñïôåßíåôáé ç êáôáóêåõÞ êáôáëüãùí ãéá ôéò óôÞëåò ðïõ Ý÷ïõí ìåãÜëç åðé-
ëåêôéêüôçôá (selectivity). Ãéá ðáñÜäåéãìá, èá ðñïôéìÞóïõìå ôçí êáôáóêåõÞ
åíüò êáôáëüãïõ ãéá ôç óôÞëç ôßôëïò ôïõ ðßíáêá Ôáéíßá, ðáñÜ ãéá ôç óôÞëç
êáôçãïñßá. Áí ìßá ôéìÞ ìßáò óôÞëçò áíôéóôïé÷åß óå ðïëëÝò ãñáììÝò ôïõ ðß-
íáêá, ôüôå ç ÷ñÞóç ôïõ êáôáëüãïõ äåí äéåõêïëýíåé ôçí êáôÜóôáóç, äéüôé èá
ðñÝðåé íá ðñïóðåëáóèïýí ðïëëÝò ãñáììÝò ôïõ ðßíáêá, åðïìÝíùò ç áîßá
ôïõ êáôáëüãïõ åßíáé ìéêñüôåñç.
• ÊáôÜ ôçí êáôáóêåõÞ óýíèåôùí êáôáëüãùí, ðñïôåßíåôáé ç ðáñÜèåóç ôùí
óôçëþí óå öèßíïõóá äéÜôáîç åðéëåêôéêüôçôáò, áðü áñéóôåñÜ ðñïò ôá äåîéÜ.
Ôïíßæåôáé üôé ìå ôïí ôñüðï áõôü èá Ý÷ïõìå éêáíïðïéçôéêÜ áðïôåëÝóìáôá
óôçí áðüäïóç ôçò åðåîåñãáóßáò áí ç ðñþôç óôÞëç óõììåôÝ÷åé óôç óõíèÞêç
WHERE ðïëëþí åñùôçìÜôùí.

• Ç êáôáóêåõÞ ïìáäïðïéçìÝíùí êáôáëüãùí óõíéóôÜôáé ãéá ôéò ðåñéðôþóåéò


üðïõ: á) ïé óôÞëåò ÷ñçóéìïðïéïýíôáé óõ÷íÜ óôï ôìÞìá ORDER BY ôùí åñù-
ôçìÜôùí, â) ïé óôÞëåò ÷ñçóéìïðïéïýíôáé óõ÷íÜ óå åñùôÞìáôá ðåñéï÷Þò (ð.÷.,
a > 10 AND a < 100), ã) ïé óôÞëåò (äéáöïñåôéêÝò ôïõ ðñùôåýïíôïò êëåé-
äéïý) ðïõ óõììåôÝ÷ïõí óõ÷íÜ óå ðñÜîåéò óýíäåóçò (join).
446 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

• Ç êáôáóêåõÞ ìç-ïìáäïðïéçìÝíùí êáôáëüãùí óõíéóôÜôáé ãéá ôéò ðåñéðôþ-


óåéò üðïõ: á) ïé óôÞëåò ÷ñçóéìïðïéïýíôáé óõ÷íÜ óå ðñÜîåéò óýíäåóçò êáé
Ý÷ïõí ìåãÜëç åðéëåêôéêüôçôá, â) ïé óôÞëåò ÷ñçóéìïðïéïýíôáé óôï ôìÞìá
WHERE êáé óôï ôìÞìá ORDER BY ôùí åñùôçìÜôùí.

Ï MSSQLS-2000 ðáñÝ÷åé Ýíá óçìáíôéêü âïÞèçìá ãéá ôçí êáôáóêåõÞ êáôá-


ëüãùí, ôï ïðïßï êáëåßôáé Index Tuning Wizard. Ç ëåéôïõñãßá ôïõ Index Tuning
Wizard óôçñßæåôáé óôçí åêôÝëåóç ìßáò óåéñÜò åñùôçìÜôùí, ìåôÜ ôçí åêôÝëåóç êáé
áíÜëõóç ôùí ïðïßùí ôï óýóôçìá ìáò ðñïôåßíåé óå ðïéïýò ðßíáêåò êáé óå ðïéåò
óôÞëåò èá ðñÝðåé íá äçìéïõñãçèïýí êáôÜëïãïé Ýôóé þóôå ç åðåîåñãáóßá ôùí åñù-
ôçìÜôùí íá ãßíåé áðïäïôéêüôåñç. Ôñïöïäïôþíôáò ôïí Index Tuning Wizard ìå
ìßá óåéñÜ ôõðéêþí ãéá ôç óõãêåêñéìÝíç ÂÜóç ÄåäïìÝíùí åñùôçìÜôùí, ðáßñíïõìå
óçìáíôéêÞ ðëçñïöïñßá ãéá ôï ðïéÜ èá åßíáé ç áðüäïóç êáé ðïéïýò êáôáëüãïõò
ðñÝðåé íá äçìéïõñãÞóïõìå. Ôá åñùôÞìáôá ðïõ èÝôïõí ïé ÷ñÞóôåò óôç ÂÜóç Äå-
äïìÝíùí åßíáé äéáèÝóéìá áðü ôïí SQL Profiler ðïõ êáôáãñÜöåé ôç ìåôáêßíçóç
åñùôçìÜôùí êáé äåäïìÝíùí áðü êáé ðñïò ôç ÂÜóç ÄåäïìÝíùí.

17.3 Âåëôéóôïðïßçóç êáé Åðåîåñãáóßá ÅñùôçìÜôùí


Ç ìç÷áíÞ åêôÝëåóçò åñùôçìÜôùí åßíáé õðåýèõíç ãéá ôçí åðåîåñãáóßá ôùí åñù-
ôçìÜôùí ðïõ ðñïùèïýíôáé ðñïò ôïí MSSQLS-2000 êáé ôçí ðáñáãùãÞ ôùí áíôß-
óôïé÷ùí áðïôåëåóìÜôùí. Áðü ôï ÊåöÜëáéï 14 åßíáé ãíùóôü üôé ðñéí ôçí åêôÝëåóç
åíüò åñùôÞìáôïò, ðñïçãåßôáé ç öÜóç ôçò âåëôéóôïðïßçóçò, ç ïðïßá Ý÷åé ùò óôü÷ï
ôïí ðñïóäéïñéóìü åíüò áðïäïôéêïý, áðü ðëåõñÜò ÷ñüíïõ, ðëÜíïõ åêôÝëåóçò ôïõ
åñùôÞìáôïò.
Ï âåëôéóôïðïéçôÞò åñùôçìÜôùí ôïõ MSSQLS-2000 óôçñßæåôáé óôç âåëôéóôï-
ðïßçóç âáóéóìÝíç óôï êüóôïò (cost-based optimization). Ôï åñþôçìá ðñéí áðü ôçí
åêôÝëåóÞ ôïõ áíáëýåôáé, êáé óôç óõíÝ÷åéá ëáìâÜíïíôáò õð’ üøç åéäéêÝò ðëçñï-
öïñßåò ãéá ôá äåäïìÝíá ðáñÜãåôáé ôï ðëÜíï åêôÝëåóçò ôï ïðïßï ðñïóäéïñßæåé ôç
óåéñÜ êáé ôç ìÝèïäï åðåîåñãáóßáò ôùí ðñÜîåùí ðïõ óõììåôÝ÷ïõí óôï åñþôçìá.
Ï âåëôéóôïðïéçôÞò ðñïóðáèåß íá ìåéþóåé ôï ðëÞèïò ôùí ëïãéêþí ðñïóðåëÜóåùí
(logical I/O) óôç ÂÜóç ÄåäïìÝíùí. Ôïíßæåôáé üôé ï áñéèìüò ôùí ëïãéêþí ðñï-
óðåëÜóåùí ìðïñåß íá åßíáé áñêåôÜ äéáöïñåôéêüò áðü ôïí áñéèìü ôùí öõóéêþí
ðñïóðåëÜóåùí (physical I/O), ùóôüóï áðïôåëåß Ýíá êáëü ìÝôñï åêôßìçóçò ôïõ êü-
óôïõò. Ç äéáöïñÜ ïöåßëåôáé óôï ãåãïíüò üôé ìßá ëïãéêÞ ðñïóðÝëáóç äåí ïäçãåß
ðÜíôá óå öõóéêÞ ðñïóðÝëáóç, äéüôé ç æçôïýìåíç óåëßäá ìðïñåß Þäç íá âñßóêå-
ôáé óôçí áðïìïíùôéêÞ ìíÞìç ôïõ óõóôÞìáôïò. Ôá âáóéêÜ âÞìáôá ðïõ åêôåëåß ï
âåëôéóôïðïéçôÞò ôïõ MSSQLS-2000 åßíáé ôá åîÞò:

• ÁíÜëõóç ÅñùôÞìáôïò. Ôï åñþôçìá áíáëýåôáé þóôå íá ðñïóäéïñéóèïýí


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 447

ïé óõíèÞêåò áíáæÞôçóçò êáé óýíäåóçò. Ìßá óõíèÞêç áíáæÞôçóçò ïñßæåôáé


óôï ôìÞìá WHERE ôïõ åñùôÞìáôïò üôáí ìßá óôÞëç óõãêñßíåôáé ìå ìßá óõ-
ãêåêñéìÝíç ôéìÞ (ð.÷., a = 1, a ≤ 10). Ìßá óõíèÞêç óýíäåóçò ïñßæåôáé óôï
ôìÞìá WHERE üôáí ìßá óôÞëç åíüò ðßíáêá óõãêñßíåôáé ìå ìßá Üëëç óôÞëç
ôïõ ßäéïõ Þ äéáöïñåôéêïý ðßíáêá.

• ÅðéëïãÞ Êáôáëüãùí. Ïé êáôÜëïãïé ðïõ èá ÷ñçóéìïðïéçèïýí åðéëÝãïíôáé


ìå âÜóç ôéò óõíèÞêåò áíáæÞôçóçò êáé óýíäåóçò. Ç áðüäïóç ôùí êáôáëüãùí
åêôéìÜôáé ìå âÜóç ôá óôáôéóôéêÜ óôïé÷åßá ðïõ äéáôçñåß ï MSSQLS-2000.

• ÅðéëïãÞ ÓåéñÜ ÅêôÝëåóçò ÓõíäÝóåùí. Ç óåéñÜ åêôÝëåóçò ôùí ðñÜîåùí


óýíäåóçò ðáßæåé óçìáíôéêü ñüëï óôç óõíïëéêÞ áðüäïóç ôïõ åñùôÞìáôïò.
Ï âåëôéóôïðïéçôÞò åðéëÝãåé ôçí êáôáëëçëüôåñç óåéñÜ åêôÝëåóçò êáé åðß-
óçò åðéëÝãåé ôç ìÝèïäï ðïõ èá ÷ñçóéìïðïéçèåß ãéá ôçí åðåîåñãáóßá ôùí
óõíäÝóåùí.

• ÅðéëïãÞ ÐëÜíïõ ÅêôÝëåóçò. Ôï ôåëåõôáßï âÞìá ôçò âåëôéóôïðïßçóçò åßíáé


ï ðñïóäéïñéóìüò åíüò áðïäïôéêïý ðëÜíïõ åêôÝëåóçò, ôï ïðïßï óôç óõíÝ÷åéá
ðñïùèåßôáé ðñïò åðåîåñãáóßá.

Ï MSSQLS-2000 äéáèÝôåé ôñåéò äéáöïñåôéêÝò ìåèüäïõò åðåîåñãáóßáò ôçò


ðñÜîçò ôçò óýíäåóçò, ôéò ïðïßåò Ý÷ïõìå ìåëåôÞóåé óôï ÊåöÜëáéï 14: á) óýí-
äåóç ìå åìöùëéáóìÝíïõò âñü÷ïõò (nested-loop join), â) óýíäåóç ìå óõã÷þíåõóç
(merge join) êáé ã) óýíäåóçò ìå êáôáêåñìáôéóìü (hash join). Ç êáôÜëëçëç ìÝèï-
äïò åðéëÝãåôáé ìå âÜóç ôï áíáìåíüìåíï êüóôïò åêôÝëåóçò ôçò ðñÜîçò.
Ï Query Analyzer ìáò äßíåé ôç äõíáôüôçôá íá äïýìå ôï ðëÜíï åêôÝëåóçò ðïõ
Ý÷åé åðéëÝîåé ï âåëôéóôïðïéçôÞò ãéá Ýíá åñþôçìá. Áñ÷éêÜ èá äéáôõðþóïõìå Ýíá
áðëü åñþôçìá ÷ùñßò ôçí ýðáñîç êáôáëüãùí, êáé óôç óõíÝ÷åéá èá äéáôõðþóïõìå
Ýíá ðïëõðëïêüôåñï åñþôçìá ðáñáôçñþíôáò ôïí ôñüðï áðåéêüíéóçò ôïõ ðëÜíïõ
åêôÝëåóçò ãéá ôçí êÜèå ðåñßðôùóç. Ïé ìüíïé êáôÜëïãïé ðïõ Ý÷ïõí ïñéóèåß áöï-
ñïýí óôá ðñùôåýïíôá êëåéäéÜ ôùí ðéíÜêùí. Ôá äýï äéáöïñåôéêÜ ðëÜíá åêôÝëå-
óçò ðñïêýðôïõí áðåéêïíßæïíôáé ìå ôç âïÞèåéá ôïõ Query Analyzer. ÈåùñÞóôå ôï
åðüìåíï åñþôçìá ðïõ åðéëÝãåé ôïõò ôßôëïõò ôùí ôáéíéþí ãéá ôéò ïðïßåò õðÜñ÷ïõí
ôïõëÜ÷éóôïí 2 áíôßãñáöá DVD:

SELECT ôßôëïò
FROM Ôáéíßá
WHERE DVD>=2;

Ôï ðëÜíï åêôÝëåóçò ôïõ åñùôÞìáôïò ðïõ åðéëÝãåôáé áðü ôï âåëôéóôïðïéçôÞ ðá-


ñïõóéÜæåôáé óôï Ó÷Þìá 17.6. Ðáñáôçñþíôáò ôï ðëÜíï åêôÝëåóçò åßíáé åýêïëï
448 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

Ó÷Þìá 17.6: ÐëÜíï åêôÝëåóçò åñùôÞìáôïò ÷ùñßò óýíäåóç.

íá êáôáíïÞóïõìå ôïí ôñüðï åêôÝëåóçò ôïõ åñùôÞìáôïò. ×ñçóéìïðïéåßôáé ìüíï


ï ïìáäïðïéçìÝíïò êáôÜëïãïò ãéá ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá, ï ïðïßïò èá
ðñïóðåëÜóåé üëåò ôéò ãñáììÝò ôïõ ðßíáêá ãéá ôïí Ýëåã÷ï ôçò óõíèÞêçò DVD ≥ 2.
Áò åîåôÜóïõìå óôç óõíÝ÷åéá Ýíá åñþôçìá ðïõ ðåñéÝ÷åé ðñÜîç óýíäåóçò:

SELECT üíïìá,ôßôëïò
FROM Çèïðïéüò,Ôáéíßá,Óõììåôï÷Þ
WHERE Çèïðïéüò.êùäéêüò=Óõììåôï÷Þ.êùäéêüò_çèïðïéïý AND
Ôáéíßá.êùäéêüò=Óõììåôï÷Þ.êùäéêüò_ôáéíßáò;

Ôï ðëÜíï åêôÝëåóçò ðáñïõóéÜæåôáé óôï Ó÷Þìá 17.7. Ðáñáôçñïýìå üôé ôï ðëÜíï


åêôÝëåóçò áõôÞ ôç öïñÜ åßíáé ìåãáëýôåñï, êáèþò ôï áíôßóôïé÷ï åñþôçìá åßíáé
ðïëõðëïêüôåñï áðü ôï ðñïçãïýìåíï. Áí åðéëÝîïõìå Ýíáí êüìâï ôïõ ðëÜíïõ
åêôÝëåóçò ðáñïõóéÜæïíôáé ÷ñÞóéìåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôç ìÝèïäï ðïõ ÷ñç-
óéìïðïéÞèçêå ãéá ôçí åêôÝëåóç ôçò ðñÜîçò, êáé ôçí áðüäïóç áõôÞò (ð.÷., ÷ñüíïò
CPU êáé I/O). Ïé ðëçñïöïñßåò áõôÝò åßíáé ðïëý óçìáíôéêÝò ãéá ôïí ðñïóäéïñéóìü
ôçò áðüäïóçò ôïõ åñùôÞìáôïò.

17.4 Äéá÷åßñéóç Óõíáëëáãþí


Óôï ÊåöÜëáéï 15 ìåëåôÞóáìå ôéò óõíáëëáãÝò, ôïí ôñüðï óõíôïíéóìïý ôùí ôáõ-
ôü÷ñïíùí ðñïóðåëÜóåùí óôá äåäïìÝíá áðü ôï ÓÄÂÄ êáé ôéò âáóéêüôåñåò ìåèü-
äïõò åðáíÜêôçóçò äåäïìÝíùí. Óôç óõíÝ÷åéá åîåôÜæïõìå ôïí ôñüðï äéá÷åßñéóçò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 449

Ó÷Þìá 17.7: ÐëÜíï åêôÝëåóçò åñùôÞìáôïò ìå óýíäåóç.

êáé óõíôïíéóìïý ôùí óõíáëëáãþí áðü ôïí MSSQLS-2000 êáé ôïõò ìç÷áíéóìïýò
åðáíÜêôçóçò äåäïìÝíùí ðïõ äéáèÝôåé.
Ï MSSQLS-2000 ÷ñçóéìïðïéåß ôï çìåñïëüãéï óõíáëëáãþí (transaction log)
ãéá ôçí êáôáãñáöÞ ôùí áëëáãþí ðïõ ðñáãìáôïðïéïýíôáé óôá äåäïìÝíá ôçò âÜóçò.
ÊÜèå åããñáöÞ ôïõ çìåñïëïãßïõ óõíáëëáãþí ðåñéÝ÷åé Ýíá ìïíáäéêü áñéèìü ðïõ
ôáõôïðïéåß ôç óõãêåêñéìÝíç åããñáöÞ. Ïé åããñáöÝò ôïõ çìåñïëïãßïõ ðïõ áíáöÝ-
ñïíôáé óôçí ßäéá óõíáëëáãÞ óõíäÝïíôáé ìåôáîý ôïõò Ýôóé þóôå íá åßíáé åýêïëá
ðñïóðåëÜóéìåò. ÕðÜñ÷ïõí ôñåéò äéáöïñåôéêïß ôñüðïé ìå ôïõò ïðïßïõò ìðïñåß íá
ãßíåé ç äéá÷åßñéóç ôùí óõíáëëáãþí áðü ôïí MSSQLS-2000:

• Áõôüìáôç ÄÝóìåõóç (AutoCommit). ÊÜèå ðñüôáóç T-SQL áðïôåëåß êáé


ìßá îå÷ùñéóôÞ óõíáëëáãÞ. ÌåôÜ ôï ôÝëïò ôçò óõíáëëáãÞò ïé áëëáãÝò ãßíï-
íôáé ìüíéìåò óôç âÜóç ìå ôçí áõôüìáôç åêôÝëåóç ôçò ëåéôïõñãßáò COMMIT.
Áí äåí Ý÷åé ðñïóäéïñéóèåß êÜôé äéáöïñåôéêü, ï MSSQLS-2000 èåùñåß üôé
ïé óõíáëëáãÝò åßíáé ôýðïõ AutoCommit. Áõôüò ï ôýðïò óõíáëëáãþí áí
êáé áðïäåóìåýåé ôï ÷ñÞóôç áðü óçìáíôéêü öüñôï, äåí ðáñÝ÷åé ìåãÜëç åõå-
ëéîßá, äéüôé óå ðïëëÝò ðåñéðôþóåéò èÝëïõìå ìßá óõíáëëáãÞ íá áðïôåëåßôáé
áðü ðïëëÝò åíôïëÝò SQL, ïé ïðïßåò ðñÝðåé íá åêôåëåóèïýí áôïìéêÜ.

• ÑçôÝò ÓõíáëëáãÝò (explicit transactions). Ç áñ÷Þ êáé ôï ôÝëïò êÜèå óõíáë-


450 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

ëáãÞò óçëþíïíôáé ñçôÜ ìå ôç ÷ñÞóç ôùí åíôïëþí BEGIN TRANSACTION


êáé COMMIT/ROLLBACK TRANSACTION. Áõôüò åßíáé êáé ðëÝïí åõÝëéêôïò
ôñüðïò ïñéóìïý ôùí óõíáëëáãþí. ÊÜðïéåò áðü ôéò åíôïëÝò ôçò T-SQL äåí
åðéôñÝðåôáé íá âñßóêïíôáé ìÝóá óôï óþìá ôçò óõíáëëáãÞò. Ïé åíôïëÝò
áõôÝò åßíáé: CREATE DATABASE, ALTER DATABASE, DROP DATABASE,
BACKUP DATABASE, RESTORE DATABASE, RECONFIGURE, BACKUP LOG,
RESTORE LOG, UPDATE STATISTICS.

• Õðïíïýìåíåò ÓõíáëëáãÝò (implicit transactions). Ç áñ÷Þ ôçò óõíáëëáãÞò


õðïíïåßôáé, åíþ ôï ôÝëïò ôçò óõíáëëáãÞò ðñÝðåé íá ïñéóèåß ñçôÜ. Ìßá íÝá
óõíáëëáãÞ äçìéïõñãåßôáé üôáí åêôåëåóèåß ïðïéáäÞðïôå áðü ôéò áêüëïõèåò
åíôïëÝò T-SQL: ALTER TABLE, CREATE, DELETE, DROP, FETCH, GRANT,
INSERT, OPEN, REVOKE, SELECT, TRUNCATE TABLE, UPDATE. Ôï ôÝëïò
ôçò óõíáëëáãÞò äçëþíåôáé, üðùò êáé óôçí ðñïçãïýìåíç ðåñßðôùóç, ìå ôç
÷ñÞóç ôùí åíôïëþí COMMIT TRANSACTION Þ ROLLBACK TRANSACTION.
Ç åíåñãïðïßçóç ôùí õðïíïïýìåíùí óõíáëëáãþí ðñáãìáôïðïéåßôáé ìå ôçí
åêôÝëåóç ôçò åíôïëÞò SET IMPLICIT TRANSACTIONS ON (OFF ãéá ôçí
áðåíåñãïðïßçóç).

17.4.1 Óõíôïíéóìüò Ôáõôü÷ñïíùí ÐñïóðåëÜóåùí


Ï MSSQLS-2000 ÷ñçóéìïðïéåß ìç÷áíéóìïýò êëåéäþìáôïò (locking) ãéá ôïí Ýëåã÷ï
ôùí ôáõôü÷ñïíùí ðñïóðåëÜóåùí. Ôï õðïóýóôçìá ôçò ìç÷áíÞò ÂÜóåùí ÄåäïìÝ-
íùí ôïõ MSSQLS-2000 ðïõ åßíáé õðåýèõíï ãéá ôçí åöáñìïãÞ ôïõ ìç÷áíéóìïý
êëåéäþìáôïò êáëåßôáé SQL Server Lock Manager. Ï MSSQLS-2000 õðïóôçñßæåé
ðïëëïýò ôýðïõò êëåéäáñéþí, áíáëüãùò ìå ôéò åíôïëÝò ðïõ åìðåñéÝ÷ïíôáé óå ìßá
óõíáëëáãÞ. Ïé ôýðïé êëåéäáñéþí åßíáé ïé åîÞò:

• Äéáìïéñáæüìåíåò ÊëåéäáñéÝò (shared locks). Ïé äéáìïéñáæüìåíåò êëåéäá-


ñéÝò ÷ñçóéìïðïéïýíôáé ãéá ëåéôïõñãßåò áíÜãíùóçò äåäïìÝíùí. ÈåùñçôéêÜ
ìðïñïýí íá ÷ñçóéìïðïéçèåß Ýíáò áðåñéüñéóôïò áñéèìüò êëåéäáñéþí ãéá Ýíá
ôìÞìá äåäïìÝíùí. Óå ðåñßðôùóç ðïõ ìßá åíôïëÞ T-SQL ÷ñåéÜæåôáé íá ðñï-
óðåëÜóåé ðïëëÝò óåëßäåò äåäïìÝíùí, êÜèå óåëßäá äåäïìÝíùí êëåéäþíåôáé
êáé îåêëåéäþíåôáé îå÷ùñéóôÜ. Óå ðåñßðôùóç ðïõ ìßá óõíáëëáãÞ åðéèõìåß
áëëáãÞ óå äåäïìÝíá ôá ïðïßá åßíáé êëåéäùìÝíá ìå äéáìïéñáæüìåíåò êëåé-
äáñéÝò, ôüôå ç óõíáëëáãÞ èá ðñÝðåé íá ðåñéìÝíåé ìÝ÷ñé íá åëåõèåñùèåß ôï
ôìÞìá äåäïìÝíùí.

• ÊëåéäáñéÝò ÅíçìÝñùóçò (update locks). Ïé êëåéäáñéÝò áõôïý ôïõ ôýðïõ


÷ñçóéìïðïéïýíôáé ãéá ôï êëåßäùìá ìßáò ðåñéï÷Þò äåäïìÝíùí ðïõ èá åíç-
ìåñùèïýí áðü ìßá óõíáëëáãÞ. Ðñéí áðü ôçí åíçìÝñùóç ôùí äåäïìÝíùí,
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 451

ðñïçãåßôáé ç áíÜãíùóç áõôþí, Ýôóé þóôå íá åßíáé óßãïõñï üôé ç óõíáëëáãÞ


èá ìåôáâÜëåé ôá óùóôÜ äåäïìÝíá. ÅíáëëáêôéêÜ, ìðïñåß íá ÷ñçóéìïðïéçèåß
ìßá äéáìïéñáæüìåíç êëåéäáñéÜ êáé óôç óõíÝ÷åéá íá æçôçèåß ìßá áðïêëåé-
óôéêÞ êëåéäáñéÜ. Ç ìÝèïäïò áõôÞ ùóôüóï ìðïñåß íá ïäçãÞóåé óå áäéÝîïäï.
Ãéá ôï ëüãï áõôü óå ðåñßðôùóç åíçìÝñùóçò ôùí äåäïìÝíùí ÷ñçóéìïðïéïý-
íôáé ïé êëåéäáñéÝò åíçìÝñùóçò. Óçìåéþíåôáé üôé áí Ýíá ôìÞìá äåäïìÝíùí
Ý÷åé êëåéäùèåß ìå êëåéäáñéÜ åðéôñÝðåôáé óå Üëëåò óõíáëëáãÝò íá æçôÞóïõí
äéáìïéñáæüìåíåò êëåéäáñéÝò. Ùóôüóï, ìüíï ìßá óõíáëëáãÞ êÜèå öïñÜ ìðï-
ñåß íá êëåéäþóåé ôçí ðåñéï÷Þ ìå êëåéäáñéÜ åíçìÝñùóçò.

• ÁðïêëåéóôéêÝò ÊëåéäáñéÝò (exclusive locks). Óå áíôßèåóç ìå ôéò êëåéäáñéÝò


åíçìÝñùóçò, ìßá áðïêëåéóôéêÞ êëåéäáñéÜ äåí åðéôñÝðåé óå Üëëåò óõíáë-
ëáãÝò ïýôå íá äéáâÜóïõí ïýôå íá åíçìåñþóïõí ôá äåäïìÝíá. Ãéá íá äïèåß
ìßá áðïêëåéóôéêÞ êëåéäáñéÜ óå ìßá óõíáëëáãÞ èá ðñÝðåé íá ìçí õðÜñ÷ïõí
Üëëåò åíåñãÝò êëåéäáñéÝò áíÜãíùóçò, åíçìÝñùóçò êáé áðïêëåéóôéêÝò.

• ÊëåéäáñéÝò Ó÷Þìáôïò (schema locks). Ïé êëåéäáñéÝò ó÷Þìáôïò ÷ñçóéìï-


ðïéïýíôáé þóôå íá äéáôçñçèåß ç áêåñáéüôçôá ôïõ ó÷Þìáôïò ôçò ÂÜóçò Äå-
äïìÝíùí. ÕðÜñ÷ïõí äýï ôýðïé êëåéäáñéþí ó÷Þìáôïò:

1. êëåéäáñéÝò óôáèåñüôçôáò ó÷Þìáôïò (schema stability locks). ¼ôáí


ìßá óõíáëëáãÞ áíáöÝñåôáé óå Ýíáí êáôÜëïãï Þ óå Ýíáí ðßíáêá, ôüôå
ôï áíôéêåßìåíï êëåéäþíåôáé ìå ìßá êëåéäáñéÜ óôáèåñüôçôáò ó÷Þìá-
ôïò. ÓõíáëëáãÝò ïé ïðïßåò ðñïóðáèïýí íá ìåôáâÜëëïõí ôï ó÷Þìá
ôçò âÜóçò (ð.÷., ðñïóèÞêç/äéáãñáöÞ óôÞëçò, êáôÜñãçóç êáôáëüãïõ
Þ ðßíáêá) äåí ìðïñïýí íá óõíå÷ßóïõí ôçí åêôÝëåóÞ ôïõò, ìÝ÷ñé íá
ôåñìáôßóïõí üëåò ïé óõíáëëáãÝò ðïõ ÷ñçóéìïðïéïýí ôï áíôéêåßìåíï.
2. êëåéäáñéÝò ìåôáâïëÞò ó÷Þìáôïò (schema modification locks). ¼ôáí
ìßá óõíáëëáãÞ ðñÝðåé íá ìåôáâÜëëåé ôï ó÷Þìá ôçò ÂÜóçò ÄåäïìÝíùí,
ôüôå ôá áíôßóôïé÷á áíôéêåßìåíá êëåéäþíïíôáé ìå ìßá êëåéäáñéÜ ìåôá-
âïëÞò ó÷Þìáôïò. Ïé õðüëïéðåò óõíáëëáãÝò ðïõ èÝëïõí íá äéáâÜóïõí
ôá áíôéêåßìåíá äåí ìðïñïýí íá óõíå÷ßóïõí ôçí åêôÝëåóÞ ôïõò, ìÝ÷ñé íá
ïëïêëçñùèåß ç ìåôáâïëÞ ôïõ ó÷Þìáôïò êáé åëåõèåñùèåß ç êëåéäáñéÜ
ìåôáâïëÞò.

• ÊëåéäáñéÝò ÌáæéêÞò ÅíçìÝñùóçò (bulk update locks). Áõôüò ï ôýðïò êëåé-


äáñéÜò ÷ñçóéìïðïéåßôáé óå åéäéêÝò ðåñéðôþóåéò ìáæéêÞò ìåôáöïñÜò äåäïìÝ-
íùí óå ðßíáêåò. ÅðéôñÝðïõí óå ðïëëÝò óõíáëëáãÝò íá áíôéãñÜøïõí ìåãÜëá
ôìÞìáôá äåäïìÝíùí, åìðïäßæïíôáò ôéò õðüëïéðåò óõíáëëáãÝò íá äéáâÜóïõí
ôïõò ðßíáêåò ðïõ åíçìåñþíïíôáé.
452 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

Õðïóôçñßæåôáé ç ÷ñÞóç êëåéäáñéþí óå äéáöïñåôéêÜ åðßðåäá, áíáëüãùò ìå ôï


ìÝãåèïò ôïõ ôìÞìáôïò ôùí äåäïìÝíùí ðïõ ðñÝðåé íá êëåéäùèåß. Ãéá ðáñÜäåéãìá,
ìðïñåß íá êëåéäùèåß ìüíï ìßá ãñáììÞ åíüò ðßíáêá Þ êáé ïëüêëçñïò ï ðßíáêáò.
Ôï åðßðåäï êëåéäþìáôïò êáèïñßæåôáé åóùôåñéêÜ áíáëüãùò ìå ôá äåäïìÝíá ðïõ
áíáöÝñïíôáé óå Ýíá åñþôçìá T-SQL, êáé äåí áðáéôåßôáé ç ðáñÝìâáóç êÜðïéïõ
÷ñÞóôç. Ôá åðßðåäá åöáñìïãÞò ôùí êëåéäáñéþí ðïõ õðïóôçñßæåé ï MSSQLS-2000
åßíáé ôá åîÞò:
• ÂÜóç ÄåäïìÝíùí. ¼ôáí ìßá óõíáëëáãÞ áíáöÝñåôáé óå ìßá ÂÜóç ÄåäïìÝ-
íùí, ôüôå ï äéá÷åéñéóôÞò êëåéäáñéþí êëåéäþíåé ôç ÂÜóç ÄåäïìÝíùí ìå äéá-
ìïéñáæüìåíç êëåéäáñéÜ. ¸ôóé áðïöåýãåôáé ç êáôáóôñïöÞ, ç åðáíÜêôçóç
êáé ç áðïóýíäåóç ôçò ÂÜóçò ÄåäïìÝíùí (offline) üôáí ç âÜóç ÷ñçóéìï-
ðïéåßôáé áðü êÜðïéåò óõíáëëáãÝò. Ãéá ôéò âÜóåéò äåäïìÝíùí óõóôÞìáôïò
master êáé tempdb (âë. ÊåöÜëáéï 5) äåí áðáéôåßôáé êÜôé ôÝôïéï, äéüôé ïé
âÜóåéò áõôÝò äåí ìðïñïýí íá êáôáóôñáöïýí ïýôå íá áðïóõíäåèïýí.
• ¸êôáóç. Ìßá Ýêôáóç êëåéäþíåôáé üôáí ðñáãìáôïðïéåßôáé ëåéôïõñãßá äÝ-
óìåõóçò (allocation) êáé áðïäÝóìåõóçò (deallocation). Õðåíèõìßæåôáé, üôé
ç Ýêôáóç åßíáé ç âáóéêÞ ìïíÜäá áðïèÞêåõóçò óôá áñ÷åßá ôçò ÂÜóçò Äå-
äïìÝíùí êáé áðïôåëåßôáé áðü ïêôþ óõíå÷üìåíåò óåëßäåò.
• Ðßíáêáò. Óå ïñéóìÝíåò ðåñéðôþóåéò åðéâÜëëåôáé ôï êëåßäùìá ïëüêëçñïõ
ôïõ ðßíáêá óõìðåñéëáìâáíïìÝíùí êáé ôùí êáôáëüãùí ðïõ Ý÷ïõí ïñéóèåß
óå áõôüí. ×áñáêôçñéóôéêÞ ðåñßðôùóç áðïôåëåß ç ðñïóðÝëáóç üëùí ôùí
ãñáììþí ôïõ ðßíáêá.
• Óåëßäá. Ôï êëåßäùìá óå åðßðåäï óåëßäáò åöáñìüæåôáé üôáí áðáéôåßôáé ç
ðñïóðÝëáóç üëùí ôùí åããñáöþí ìßáò óåëßäáò, Þ üôáí ðñÝðåé íá åíçìåñù-
èïýí ïé äåßêôåò (pointers) ðïõ ðåñéÝ÷åé ç óåëßäá.
• ÃñáììÞ Ðßíáêá. Ôï êëåßäùìá óå åðßðåäï ãñáììÞò ðßíáêá ÷ñçóéìïðïéåßôáé
ãéá ôçí áýîçóç ôçò áðüäïóçò ôïõ óõóôÞìáôïò, êáèþò äßíåôáé ç äõíáôüôçôá
óå Üëëåò óõíáëëáãÝò íá áðïêôÞóïõí ðñüóâáóç óå Üëëåò ãñáììÝò ôïõ ßäéïõ
ðßíáêá.
• Êëåéäß. Óå ïñéóìÝíåò ðåñéðôþóåéò áñêåß ôï êëåßäùìá ìüíï ôïõ êëåéäéïý
åíüò ðßíáêá, áðïöåýãïíôáò ôï êëåßäùìá ïëüêëçñçò ôçò ãñáììÞò.
• ÅöáñìïãÞ. Ï MSSQLS-2000 äßíåé ôç äõíáôüôçôá íá ïñéóèïýí êëåéäáñéÝò
ïñéæüìåíåò áðü ôï ÷ñÞóôç, ðñïóäéïñßæïíôáò ôï üíïìá ôïõ áíôéêåéìÝíïõ ðïõ
ðñüêåéôáé íá êëåéäùèåß, ôïí ôýðï ôçò êëåéäáñéÜò êáé ôï ÷ñïíéêü äéÜóôçìá
ìåôÜ ôï ðÝñáò ôïõ ïðïßïõ êáôáñãåßôáé ç êëåéäáñéÜ.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 453

17.4.2 ÁäéÝîïäá
Ç ÷ñÞóç ìç÷áíéóìþí êëåéäþìáôïò äåäïìÝíùí åßíáé äõíáôüí íá åðéöÝñåé áäéÝ-
îïäï (deadlock), üðïõ êÜðïéåò óõíáëëáãÝò áíáìÝíïõí åð’ áüñéóôïí íá åëåõèå-
ñùèåß Ýíá ôìÞìá äåäïìÝíùí. ¼ðùò ìåëåôÞóáìå óôï ÊåöÜëáéï 15 ç äéá÷åßñéóç
ôùí áäéåîüäùí ìðïñåß íá ãßíåé ìå äýï ôñüðïõò: á) áðïöõãÞ áäéåîüäïõ êáé â)
êáôÜñãçóç áäéåîüäïõ, áí áõôü óõìâåß.
Ï MSSQLS-2000 ðáñÝ÷åé ìåèüäïõò êáé ãéá áðïöõãÞ áäéåîüäïõ êáé ãéá êáôÜñ-
ãçóç áäéåîüäïõ. Ãéá ôçí áðïöõãÞ áäéåîüäïõ ôï óýóôçìá ðáñÝ÷åé ôç äõíáôüôçôá
íá ïñßóïõìå ôï ìÝãéóôï ÷ñïíéêü äéÜóôçìá ðïõ ìðïñåß íá ðåñéìÝíåé ìßá óõíáë-
ëáãÞ ãéá ôç ÷ïñÞãçóç ìßáò êëåéäáñéÜò. Áí áõôü ôï ÷ñïíéêü äéÜóôçìá ðáñÝëèåé,
ç óõíáëëáãÞ ôåñìáôßæåôáé. Ôï ÷ñïíéêü äéÜóôçìá ïñßæåôáé ìå ôçí åíôïëÞ SET
LOCKTIMEOUT. Áðü ôç óôéãìÞ ðïõ óõìâåß Ýíá áäéÝîïäï èá ðñÝðåé ôï óýóôçìá
íá áíáëÜâåé ôçí êáôÜñãçóÞ ôïõ, ôåñìáôßæïíôáò ìßá Þ ðåñéóóüôåñåò óõíáëëáãÝò.
Ãéá ôçí áíáãíþñéóç åíüò áäéåîüäïõ ï MSSQLS-2000 ÷ñçóéìïðïéåß ìßá îå÷ùñé-
óôÞ äéáäéêáóßá ðïõ ïíïìÜæåôáé LOCK MONITOR. Ç äéáäéêáóßá áõôÞ åëÝã÷åé ãéá
ýðáñîç áäéåîüäïõ åîåôÜæïíôáò ôï óýíïëï ôùí óõíáëëáãþí ðïõ áíáìÝíïõí ôç
÷ïñÞãçóç ìßáò êëåéäáñéÜò. Ç åðéëïãÞ ôçò óõíáëëáãÞò ðïõ èá ôåñìáôéóèåß ìåôÜ
ôçí áíáãíþñéóç åíüò áäéåîüäïõ ðñáãìáôïðïéåßôáé ìå âÜóç ôï ÷ñüíï CPU ðïõ
Ý÷åé êáôáíáëþóåé ç óõíáëëáãÞ. ÅðéëÝãåôáé ç óõíáëëáãÞ ðïõ Ý÷åé ÷ñçóéìïðïéÞóåé
ôç CPU ôï ìéêñüôåñï ÷ñïíéêü äéÜóôçìá.

17.4.3 ÅðáíÜêôçóç ÄåäïìÝíùí


Ç åðáíÜêôçóç äåäïìÝíùí ÷ñçóéìïðïéåßôáé ãéá ôçí åðáíáöïñÜ ôçò ÂÜóçò Äå-
äïìÝíùí óå êáôÜóôáóç óõíÝðåéáò ìåôÜ áðü ôïí áðüôïìï ôåñìáôéóìü ëåéôïõñãßáò
ôçò (âë. ÊåöÜëáéï 15). Ôï çìåñïëüãéï óõíáëëáãþí (transaction log) áðïôåëåß
óçìáíôéêü âïÞèçìá, êáèþò ïé ðëçñïöïñßåò ðïõ êáôáãñÜöïíôáé óå áõôü ÷ñçóé-
ìïðïéïýíôáé ãéá ôç äéáäéêáóßá ôçò åðáíÜêôçóçò.
Ï MSSQLS-2000 ÷ñçóéìïðïéåß ôç ìÝèïäï write-ahead ãéá ôçí åíçìÝñùóç ôïõ
çìåñïëïãßïõ óõíáëëáãþí. Ç ôå÷íéêÞ áõôÞ åããõÜôáé üôé ïé áëëáãÝò óôç âÜóç
ðñþôá êáôáãñÜöïíôáé óôï çìåñïëüãéï êáé óôç óõíÝ÷åéá åíçìåñþíïíôáé ôá äå-
äïìÝíá ôïõ äßóêïõ. Áò åîåôÜóïõìå ôï ôñüðï åíçìÝñùóçò ôïõ çìåñïëïãßïõ üôáí
ìßá óõíáëëáãÞ ôñïðïðïéåß äåäïìÝíá:

1. ÊáôÜ ôçí áñ÷Þ åêôÝëåóçò ôçò óõíáëëáãÞò óôï çìåñïëüãéï êáôáãñÜöåôáé ôï


ãåãïíüò (BEGIN TRANSACTION) óôçí ðåñéï÷Þ ìíÞìçò ðïõ Ý÷åé äåóìåõèåß
ãéá ôï çìåñïëüãéï óõíáëëáãþí.

2. Óôç ìíÞìç ôïõ áñ÷åßïõ çìåñïëïãßïõ êáôáãñÜöïíôáé ïé áëëáãÝò ðïõ ðñáã-


ìáôïðïéåß ç óõíáëëáãÞ.
454 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

3. Ïé áëëáãÝò ðïõ ðñïêáëåß ç óõíáëëáãÞ ðñáãìáôïðïéïýíôáé óôéò óåëßäåò ôùí


äåäïìÝíùí ðïõ âñßóêïíôáé óôçí áðïìïíùôéêÞ ìíÞìç.

4. Áí ç óõíáëëáãÞ ôåñìáôéóèåß åðéôõ÷þò, áðïèçêåýåôáé ôï ãåãïíüò (COMMIT


TRANSACTION) óôç ìíÞìç ôïõ áñ÷åßïõ çìåñïëïãßïõ.

5. Ïé óåëßäåò ôïõ áñ÷åßïõ çìåñïëïãßïõ ðïõ âñßóêïíôáé óôç ìíÞìç áíôéãñÜöï-


íôáé óôï äßóêï.

Ðáñáôçñïýìå üôé ôá äåäïìÝíá äåí åããñÜöïíôáé óôï äßóêï ìåôÜ ôïí ôåñìáôé-
óìü ôçò óõíáëëáãÞò. Áõôü ãßíåôáé ãéá íá ìåéùèåß ôï ðëÞèïò ôùí ðñïóðåëÜóåùí
óôï äßóêï. Áêüìç êáé áí ç ëåéôïõñãßá ôïõ óõóôÞìáôïò äéáêïðåß áðüôïìá ðñéí åã-
ãñáöïýí ôá äåäïìÝíá óôï äßóêï, ÷ñçóéìïðïéþíôáò ôéò ðëçñïöïñßåò ôïõ áñ÷åßïõ
çìåñïëïãßïõ ìðïñïýìå íá åðáíáöÝñïõìå ôá äåäïìÝíá ôçò âÜóçò. Ôá äåäïìÝíá
ôçò áðïìïíùôéêÞò ìíÞìçò áðïèçêåýïíôáé ôåëéêÜ óôï äßóêï åßôå áðü ôç äéáäé-
êáóßá êáèõóôåñçìÝíçò áðïèÞêåõóçò (lazy writer process) åßôå áðü ôç äéáäéêáóßá
÷ñïíéêþí óçìåßùí åëÝã÷ïõ (checkpoint process). Ç äéáäéêáóßá êáèõóôåñçìÝíçò
áðïèÞêåõóçò åëÝã÷åé ðåñéïäéêÜ ôçí áðïìïíùôéêÞ ìíÞìç ôïõ óõóôÞìáôïò êáé öñï-
íôßæåé Ýôóé þóôå íá õðÜñ÷ïõí ðÜíôá äéáèÝóéìåò óåëßäåò ìíÞìçò. Óå äéáöïñåôéêÞ
ðåñßðôùóç, åëåõèåñþíåé êÜðïéåò óåëßäåò áöïý ðñþôá áíôéãñáöïýí ôá ðåñéå÷ü-
ìåíá áõôþí óôï äßóêï. Ï MSSQLS-2000 ÷ñçóéìïðïéåß ôá ÷ñïíéêÜ óçìåßá åëÝã÷ïõ
(checkpoints) óôá ïðïßá ðñáãìáôïðïéåßôáé áðïèÞêåõóç ôùí äåäïìÝíùí ôçò áðï-
ìïíùôéêÞò ìíÞìçò óôï äßóêï ôïõ óõóôÞìáôïò. Ç äéáäéêáóßá ÷ñïíéêþí óçìåßùí
åëÝã÷ïõ (checkpoint process) åêôåëåßôáé ðåñéïäéêÜ êáé åëÝã÷åé ãéá óåëßäåò äå-
äïìÝíùí êáé çìåñïëïãßïõ ïé ïðïßåò äåí Ý÷ïõí áêüìç áðïèçêåõèåß óôï äßóêï.
ÅðïìÝíùò, áí óôï çìåñïëüãéï óõíáëëáãþí óõíáíôÞóïõìå Ýíá ÷ñïíéêü óçìåßï
åëÝã÷ïõ, ãíùñßæïõìå üôé ìÝ÷ñé åêåßíç ôç ÷ñïíéêÞ óôéãìÞ üëá ôá äåäïìÝíá ðïõ
âñéóêüôáí óôç áðïìïíùôéêÞò ìíÞìçò Ý÷ïõí áðïèçêåõèåß óôï äßóêï ôïõ óõóôÞìá-
ôïò.
Ç ìÝèïäïò åðáíÜêôçóçò ôïõ MSSQLS-2000 åßíáé ìßá ìÝèïäïò Üìåóçò åíçìÝ-
ñùóçò (âë. ÊåöÜëáéï 15). Ï MSSQLS-2000 åðéôñÝðåé ôçí áðïèÞêåõóç ôùí óåëß-
äùí ôçò áðïìïíùôéêÞò ìíÞìçò óôï äßóêï ðñéí ôçí ïëïêëÞñùóç ôçò óõíáëëáãÞò
(commit). Áõôü ìðïñåß íá óõìâåß áí ðñéí ôç ÷ñïíéêÞ óôéãìÞ ôåñìáôéóìïý ôçò
óõíáëëáãÞò õðÜñ÷åé ÷ñïíéêü óçìåßï åëÝã÷ïõ. ÅðïìÝíùò, ç äéáäéêáóßá åðáíÜ-
êôçóçò ôïõ MSSQLS-2000 áðáéôåß êáé ôçí åöáñìïãÞ ôçò ëåéôïõñãßáò ROLLBACK
(Þ UNDO) óå áíôßèåóç ìå ôç ìÝèïäï êáèõóôåñçìÝíçò åíçìÝñùóçò ç ïðïßá ÷ñçóé-
ìïðïéåß ìüíï ôç ëåéôïõñãßá ROLLFORWARD (Þ REDO).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 455

17.5 ÁóöÜëåéá ÄåäïìÝíùí


Ïé äéáêïìéóôÝò óõóôçìÜôùí ÂÜóåùí ÄåäïìÝíùí åßíáé Ýíáò ìüíéìïò óôü÷ïò åðéèÝ-
óåùí êáêüâïõëùí ÷ñçóôþí êáé ãéá ôï ëüãï áõôü ôá ÓÄÂÄ äåí ìðïñïýí ðïôÝ íá
èåùñçèïýí ùò éäéáßôåñá áóöáëÞ ðáêÝôá ëïãéóìéêïý. Ç ðëçñïöïñßá ðïõ áöïñÜ
ôï ðåëáôïëüãéï, ôï åñãáôéêü äõíáìéêü, ôá ïéêïíïìéêÜ óôïé÷åßá êáé ó÷åäüí êÜèå ôé
ðïõ õðïóôçñßæåé ôçí äéáñêÞ åðéôõ÷ßá ìéáò åðé÷åßñçóçò âñßóêåôáé áðïèçêåõìÝíï
óôéò âÜóåéò äåäïìÝíùí ôçò. ÌÝ÷ñé óÞìåñá, ôï ìüíï ëïãéóìéêü ðïõ åßíáé ó÷åäéá-
óìÝíï êáôÜëëçëá ãéá íá äéáôçñåß ôçí ðëçñïöïñßá áõôÞ áóöáëÞ êáé ðñïóðåëÜóéìç
åßíáé êáé áõôü ðïõ ôåëéêÜ áêïýóéá åðéôñÝðåé ôç äéÜññçîç ôùí äåäïìÝíùí áõôþí,
ôï ÓÄÂÄ.

17.5.1 Äéáêñéôéêüò ¸ëåã÷ïò ÐñïóðÝëáóçò


Ï äéáêñéôéêüò Ýëåã÷ïò ðñïóðÝëáóçò ó÷åôßæåôáé ìå ôçí äéáäéêáóßá åöáñìïãÞò
ðåñéïñéóìþí åðß ôùí ðñïíïìßùí ðïõ äéáèÝôåé êÜèå ÷ñÞóôçò ÂÜóçò ÄåäïìÝíùí
þóôå íá ôïõ åðéôñÝðåôáé ç åêôÝëåóç ìüíï ôùí åíåñãåéþí ãéá ôéò ïðïßåò åßíáé
åîïõóéïäïôçìÝíïò.
Óôïí SQL Server õðÜñ÷ïõí äýï êáôçãïñßåò ðñïíïìßùí: ôá ðñïíüìéá óõóôÞ-
ìáôïò (system privileges) êáé ôá ðñïíüìéá áíôéêåéìÝíùí (object privileges). Ôá
ðñïíüìéá óõóôÞìáôïò åðéôñÝðïõí óôï ÷ñÞóôç íá åêôåëÝóåé óõãêåêñéìÝíåò ëåé-
ôïõñãßåò ðïõ äåí ó÷åôßæïíôáé Üìåóá ìå êÜðïéï áíôéêåßìåíï. Áðü ôçí Üëëç ðëåõñÜ,
ôá ðñïíüìéá áíôéêåéìÝíùí áíáöÝñïíôáé áðïêëåéóôéêÜ êáé ìüíï óå áíôéêåßìåíá.

Ðñïíüìéá ÓõóôÞìáôïò
Ôá ðñïíüìéá óõóôÞìáôïò ó÷åôßæïíôáé ìå ôï äéêáßùìá äçìéïõñãßáò áíôéêåéìÝíùí
ÂÜóåùí ÄåäïìÝíùí êáé áíôéãñÜöùí áóöáëåßáò. Ôá ðñïíüìéá áõôÜ åßíáé ôá
åîÞò: CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, CREATE DE-
FAULT, CREATE FUNCTION, CREATE RULE, BACKUP DATABASE, BACKUP
LOG.
Ãéá ôç äéá÷åßñéóç ôùí ðñïíïìßùí óõóôÞìáôïò ìÝóù ôïõ Enterprise Manager,
êÜíïõìå äåîß êëéê óôç ÂÜóç ÄåäïìÝíùí êáé åðéëÝãïõìå Properties. ÅðéëÝãï-
íôáò ôçí êáñôÝëá Permissions ôïõ ðáñáèýñïõ äéáëüãïõ Properties, ìðïñïýìå íá
åìöáíßóïõìå êáé íá äéá÷åéñéóôïýìå ôá ðñïíüìéá óõóôÞìáôïò ðïõ Ý÷ïõí åê÷ùñç-
èåß ãéá ôç ÂÜóç ÄåäïìÝíùí. ¼ðùò åìöáíßæåôáé êáé óôï Ó÷Þìá 17.8, ôñåéò åßíáé

ïé åðéëïãÝò ãéá êÜèå ðñïíüìéï. Ôï óýìâïëï ’ ’ äçëþíåé üôé ôï ðñïíüìéï Ý÷åé
åê÷ùñçèåß (grant). Ôï óýìâïëï ’×’ äçëþíåé üôé ôï ðñïíüìéï Ý÷åé ñçôþò áðáãï-
ñåõèåß (deny) êáé, ôÝëïò, ç ìç ýðáñîç åíüò áðü ôá äýï áõôÜ óýìâïëá äçëþíåé
ðùò ôï ðñïíüìéï äåí Ý÷åé åê÷ùñçèåß Þ Ý÷åé áíáêëçèåß (revoke). Óå ðåñéðôþóåéò
óõíýðáñîçò èåôéêþí (grant) êáé áñíçôéêþí (deny) åîïõóéïäïôÞóåùí ãéá ôï ßäéï
456 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

ðñïíüìéï, õðåñéó÷ýïõí ïé áñíçôéêÝò åîïõóéïäïôÞóåéò.

Ó÷Þìá 17.8: ÊáñôÝëá Permissions ðáñáèýñïõ äéáëüãïõ Properties ìéáò ÂÄ.

Ç åê÷þñçóç, áíÜêëçóç êáé Üñíçóç ðñïíïìßùí óõóôÞìáôïò ìå ÷ñÞóç T-SQL


åðéôõã÷Üíåôáé ìå ôéò åíôïëÝò:

GRANT <ëßóôá-ðñïíïìßùí> | ALL [PRIVILEGES]


TO <ëßóôá-÷ñçóôþí>;
REVOKE <ëßóôá-ðñïíïìßùí> | ALL [PRIVILEGES]
FROM <ëßóôá-÷ñçóôþí>;
DENY <ëßóôá-ðñïíïìßùí> | ALL [PRIVILEGES]
FROM <ëßóôá-÷ñçóôþí>;

Ðñïíüìéá ÁíôéêéìÝíùí
Ôá ðñïíüìéá ðñïóðÝëáóçò áíôéêåéìÝíùí ÂÜóåùí ÄåäïìÝíùí åê÷ùñïýíôáé, áíá-
êáëïýíôáé êáé áðáãïñåýïíôáé ìå ôçí ÷ñÞóç ôùí åíôïëþí GRANT, REVOKE êáé
DENY, áíôéóôïß÷ùò, ôçò T-SQL. Ãéá ôçí åê÷þñçóç åíüò ðñïíïìßïõ ðñÝðåé ï éäéï-
êôÞôçò ôïõ áíôéêåéìÝíïõ Þ ï äéá÷åéñéóôÞò ôçò ÂÜóçò ÄåäïìÝíùí íá åêôåëÝóåé ôçí
åíôïëÞ:

GRANT
<ëßóôá_ðñïíïìßùí> | ALL [PRIVILEGES]
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 457

{
[<ëßóôá_óôçëþí>] ON <ëßóôá_ðéíÜêùí> | <ëßóôá_üøåùí>
| ON <ëßóôá_ðéíÜêùí> | <ëßóôá_üøåùí> [<ëßóôá_óôçëþí>]
| ON áðïèçêåõìÝíç_óõíÜñôçóç | åêôåôáìÝíç_óõíÜñôçóç
| ON óõíÜñôçóç_ïñéóìÝíç_áðü_÷ñÞóôç
}
TO <ëßóôá_÷ñçóôþí>
[WITH GRANT OPTION];

Ç ðñþôç ðáñÜìåôñïò õðïäåéêíýåé ôïí ôýðï ðñïíïìßùí ðïõ åê÷ùñåßôáé. Ç ëß-


óôá ôùí ðñïíïìßùí ðïõ åê÷ùñïýíôáé åîáñôÜôáé áðü ôï áíôéêåßìåíï ãéá ôï ïðïßï
åê÷ùñïýíôáé êáé ôï ïðïßï áíáöÝñåôáé óôç óõíÝ÷åéá ôçò åíôïëÞò, óôç äÞëùóç ON.
Ãéá ðáñÜäåéãìá, óôçí ðåñßðôùóç ìéáò áðïèçêåõìÝíçò óõíÜñôçóçò õðÜñ÷åé ôï
ðñïíüìéï EXECUTE áëëÜ óôçí ðåñßðôùóç åíüò ðßíáêá Þ ìéáò üøçò õðÜñ÷ïõí
ôá SELECT, INSERT, DELETE, UPDATE êáé REFERENCES. Ç Ýêöñáóç ALL
[PRIVILEGES] ÷ñçóéìïðïéåßôáé ãéá ôçí åê÷þñçóç üëùí áíåîáéñÝôùò ôùí ðñï-
íïìßùí ãéá ôï óõãêåêñéìÝíï áíôéêåßìåíï. Óôéò ðåñéðôþóåéò ðéíÜêùí Þ üøåùí,
ôá ðñïíüìéá ìðïñïýí íá êáèïñéóôïýí áêüìç êáé óå åðßðåäï ìåìïíùìÝíùí ãíù-
ñéóìÜôùí. Ç äÞëùóç TO óçìåéþíåé ôïõò ÷ñÞóôåò ôçò ÂÜóçò ÄåäïìÝíùí ðïõ
ëáìâÜíïõí ôçí åîïõóéïäüôçóç. Ç ðáñÜìåôñïò WITH GRANT OPTION åßíáé ðñï-
áéñåôéêÞ êáé äßíåé ôï äéêáßùìá óôï ÷ñÞóôç ðïõ ëáìâÜíåé ôçí åîïõóéïäüôçóç íá
åê÷ùñÞóåé ôï ßäéï ðñïíüìéï êáé óå Üëëïõò ÷ñÞóôåò. ÐáñÜäåéãìá åêôÝëåóçò ôçò
åíôïëÞò åßíáé ç åîÞò:

GRANT SELECT
ON TABLE1
TO USER1
WITH GRANT OPTION;

Ïé åíôïëÝò REVOKE êáé DENY Ý÷ïõí óýíôáîç ðáñüìïéá ôçò åíôïëÞò GRANT:

REVOKE [GRANT OPTION FOR]


<ëßóôá_ðñïíïìßùí> | ALL [PRIVILEGES]
{
[ <ëßóôá_óôçëþí>] ON <ëßóôá_ðéíÜêùí> | <ëßóôá_üøåùí >
| ON <ëßóôá_ðéíÜêùí> | <ëßóôá_üøåùí> [<ëßóôá_óôçëþí>]
| ON áðïèçêåõìÝíç_óõíÜñôçóç | åêôåôáìÝíç_óõíÜñôçóç
| ON óõíÜñôçóç_ïñéóìÝíç_áðü_÷ñÞóôç
}
FROM <ëßóôá_÷ñçóôþí>
[CASCADE];
458 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

DENY
<ëßóôá_ðñïíïìßùí> | ALL [PRIVILEGES]
{
[<ëßóôá_óôçëþí>] ON <ëßóôá_ðéíÜêùí> | <ëßóôá_üøåùí>
| ON <ëßóôá_ðéíÜêùí> | <ëßóôá_üøåùí> [<ëßóôá_óôçëþí>]
| ON áðïèçêåõìÝíç_óõíÜñôçóç | åêôåôáìÝíç_óõíÜñôçóç
| ON óõíÜñôçóç_ïñéóìÝíç_áðü_÷ñÞóôç
}
TO <ëßóôá_÷ñçóôþí>
[CASCADE];

Ôá ìüíá óçìåßá äéáöïñÜò ôçò åíôïëÞò REVOKE áðü ôçí åíôïëÞ GRANT åßíáé
ïé åêöñÜóåéò GRANT OPTION FOR êáé CASCADE. Ç ðñþôç Ýêöñáóç áíáêáëåß ôï
äéêáßùìá åê÷þñçóçò åíüò ðñïíïìßïõ óå Üëëïõò ÷ñÞóôåò êáé ç äåýôåñç Ýêöñáóç
áíáêáëåß Ýíá ðñïíüìéï ü÷é ìüíï áðü ôï ÷ñÞóôç áëëÜ êáé áðü üëïõò üóïõò ÷ñÞóôåò
Ý÷ïõí ëÜâåé ôï ßäéï ðñïíüìéï áðü ôï ÷ñÞóôç áõôüí. Ç ðáñÜìåôñïò CASCADE
åöáñìüæåôáé êáé óôçí åíôïëÞ DENY. Óå êÜèå ðåñßðôùóç, áí ï ÷ñÞóôçò Ý÷åé ëÜâåé
Ýíá ðñïíüìéï ìå ôçí ðáñÜìåôñï WITH GRANT OPTION, ôüôå óôéò åíôïëÝò REVOKE
êáé DENY ðñÝðåé íá ÷ñçóéìïðïéçèåß ç ðáñÜìåôñïò CASCADE, áëëéþò ïé åíôïëÝò
äåí èá åêôåëåóôïýí.
Ôá ðñïíüìéá áíôéêåéìÝíùí ìðïñïýí íá åê÷ùñçèïýí ðéï åýêïëá áëëÜ ìå ëé-
ãüôåñç åõåëéîßá ìå ôç ÷ñÞóç ôïõ SQL Server Enterprise Manager. Ðéï óõãêå-
êñéìÝíá, ìå ôïí Enterprise Manager äåí õðÜñ÷åé ç äõíáôüôçôá åê÷þñçóçò ðñï-
íïìßùí ìå ôçí ðáñÜìåôñï WITH GRANT OPTION. Ãéá ôçí áêñßâåéá, ôá ðñïíü-
ìéá áíôéêåéìÝíùí åê÷ùñïýíôáé ìå ôïí ßäéï ôñüðï ðïõ åê÷ùñïýíôáé ôá ðñïíüìéá
óõóôÞìáôïò. Áöïý ï äéá÷åéñéóôÞò ôçò ÂÜóçò ÄåäïìÝíùí Þ ï éäéïêôÞôçò åíüò
áíôéêåéìÝíïõ åðéëÝîåé ôï áíôéêåßìåíï, ðñÝðåé íá êÜíåé äåîß êëéê óå áõôü êáé íá
åðéëÝîåé êáôÜ óåéñÜ ôéò åðéëïãÝò All Tasks êáé Manage Permissions. Ôï Ó÷Þìá
17.9 äåß÷íåé ôï ðáñÜèõñï äéáëüãïõ Object Properties ðïõ åìöáíßæåôáé êáé ìå ôï
ïðïßï åðéôõã÷Üíåôáé ç äéá÷åßñéóç ôùí ðñïíïìßùí åíüò áíôéêåéìÝíïõ.
Ôï êïõìðß Columns ôïõ ðáñáèýñïõ äéáëüãïõ Object Properties åíåñãïðïéåß-
ôáé ãéá ôçí åê÷þñçóç ôùí ðñïíïìßùí SELECT Þ UPDATE óå ìåìïíùìÝíåò óôÞëåò
åíüò ðßíáêá Þ ìéáò üøçò. Ôï Ó÷Þìá 17.10 åìöáíßæåé ôï ðáñÜèõñï äéáëüãïõ Col-
umn Properties áðü ôï ïðïßï ìðïñïýìå íá ðñïóðåëÜóïõìå ôéò åðéëïãÝò áõôÝò.
¸íáò Üëëïò ôñüðïò åê÷þñçóçò ðñïíïìßùí áíôéêåéìÝíùí ìÝóù ôïõ Enterprise
Manager åßíáé áðü ôï ðáñÜèõñï äéáëüãïõ Database User Properties ðïõ åìöáíß-
æåôáé óôï Ó÷Þìá 17.11. Ãéá íá êáëÝóïõìå ôï ðáñÜèõñï áõôü, åðéëÝãïõìå ôï
ëïãáñéáóìü ÷ñÞóôç ôçò ÂÜóçò ÄåäïìÝíùí óôïí ïðïßï åðéèõìïýìå íá åê÷ùñÞ-
óïõìå êÜðïéï ðñïíüìéï êáé áöïý êÜíïõìå äåîß êëéê óôï ëïãáñéáóìü, åðéëÝãïõìå
ôçí åíôïëÞ Properties. Óôç óõíÝ÷åéá ç äéá÷åßñéóç ôùí ðñïíïìßùí ôïõ ÷ñÞóôç
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 459

Ó÷Þìá 17.9: ÐáñÜèõñï äéáëüãïõ Object Properties.

Ó÷Þìá 17.10: ÐáñÜèõñï äéáëüãïõ Column Properties.


460 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

Ó÷Þìá 17.11: ÐáñÜèõñï äéáëüãïõ Database User Properties.

áíÜ áíôéêåßìåíï ôçò ÂÜóçò ÄåäïìÝíùí ãßíåôáé ìå ôñüðï ðáñüìïéï ìå áõôü ðïõ
áíáëýèçêå íùñßôåñá óôçí ðáñÜãñáöï áõôÞ.

17.5.2 ¸ëåã÷ïò ÐñïóðÝëáóçò ÌÝóù ¼øåùí


Ïé üøåéò åßíáé Ýíá ðïëý éó÷õñü åñãáëåßï ðñïóôáóßáò äåäïìÝíùí. Ïé üøåéò ìðï-
ñïýí íá áðïêñýøïõí ðëåéÜäåò Þ óôÞëåò ðéíÜêùí áëëÜ êáé íá êáëýøïõí ôéò ôéìÝò
åõáßóèçôùí äåäïìÝíùí êÜôù áðü óõãêåêñéìÝíá êñéôÞñéá. Ïé üøåéò ìðïñïýí åðß-
óçò íá ðáñÜãïõí áèñïéóôéêÜ äåäïìÝíá êáé íá áöáéñÝóïõí ôçí áíáãíùñßóéìç
ðñïóùðéêÞ ðëçñïöïñßá ãéá ôç äéáôÞñçóç áíùíõìßáò. Ôï óçìáíôéêüôåñï üöåëïò
åßíáé ðùò üëá ôá ðñïçãïýìåíá åðéôõã÷Üíïíôáé ÷ùñßò ôçí äéðëïåããñáöÞ Þ ðëåïíá-
óìü ôçò áðïèçêåõìÝíçò ðëçñïöïñßáò, êáèþò ç üøç äåí åßíáé ôßðïôá ðåñéóóüôåñï
áðü ìéá áðïèçêåõìÝíç åíôïëÞ SQL. Ãéá ðáñÜäåéãìá, ç åíôïëÞ:

CREATE VIEW ÐëÞèïò_ÁíôéãñÜöùí_áíÜ_ÐåñéðÝôåéá


AS
SELECT ôßôëïò, COUNT(*)
FROM Ôáéíßá
WHERE êáôçãïñßá = ’ÐåñéðÝôåéá’
GROUP BY Ôßôëïò;

äçìéïõñãåß ìßá üøç ìå ôçí ïðïßá ï éäéïêôÞôçò ôïõ ðßíáêá Ôáéíßá ìðïñåß óôç
óõíÝ÷åéá åêôåëþíôáò ôçí åíôïëÞ:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 461

GRANT SELECT
ON ÐëÞèïò_ÁíôéãñÜöùí_áíÜ_ÐåñéðÝôåéá
TO george;

íá åðéôñÝøåé óå êÜðïéï Üëëï ÷ñÞóôç (ð÷. ôï ÷ñÞóôç george) íá âëÝðåé ôï ðëÞ-


èïò ôùí áíôéãñÜöùí ðïõ õðÜñ÷ïõí áíÜ ôáéíßá ðåñéðÝôåéáò, ÷ùñßò íá ìðïñåß íá
áíáêôÞóåé ôá õðüëïéðá óôïé÷åßá ôùí ôáéíéþí ðïõ âñßóêïíôáé áðïèçêåõìÝíá óôïí
ðßíáêá Ôáéíßá.
Ç ëýóç áõôÞ åßíáé åðßóçò ìßá Ýîï÷ç ôå÷íéêÞ äéáôÞñçóçò ôçò áíùíõìßáò. Ãéá
ðáñÜäåéãìá, ìéá üøç èá ìðïñïýóå êÜëëéóôá íá åìöáíßæåé óå Ýíá óôáôéóôéêï-
ëüãï ôï ðëÞèïò ôùí áóèåíþí óôïõò ïðïßïõò Ý÷åé ãßíåé äéÜãíùóç óõãêåêñéìÝíçò
áóèÝíåéáò, ÷ùñßò íá åìöáíßæåé ðñïóùðéêÜ óôïé÷åßá ôùí áóèåíþí.

17.5.3 ÊñõðôïãñÜöçóç ÄåäïìÝíùí


Ï SQL Server ÷ñçóéìïðïéåß ìßá óõíÜñôçóç êáôáêåñìáôéóìïý Þ óýíïøçò (hashing
function) ðïõ ïíïìÜæåôáé pwdencrypt() [Andrews 2003] ãéá ôçí êñõðôïãñá-
öçìÝíç áðïèÞêåõóç ôùí óõíèçìáôéêþí ôùí ÷ñçóôþí óôïí ðßíáêá sysxlogins ôçò
ÂÜóçò ÄåäïìÝíùí master. Ãéá ðáñÜäåéãìá, ç êñõðôïãñáöçìÝíç ìïñöÞ ôïõ óõí-
èçìáôéêïý ôïõ äéá÷åéñéóôÞ ôïõ SQL Server ìðïñåß íá åìöáíéóèåß ìå ôçí åêôÝëåóç
ôçò åíôïëÞò:
SELECT password
FROM MASTER.dbo.sysxlogins
WHERE name=’sa’;

ç ïðïßá èá äþóåé ùò áðÜíôçóç Ýíá áëöáñéèìçôéêü ôçò ìïñöÞò:


0x01008D504D65431D6F8AA7AED333590D7DB1863CBFC
98186BFAE06EB6B327EFA5449E6F649BA954AFF4057056D9B

Åðßóçò, ç åêôÝëåóç ôçò åíôïëÞò:


SELECT pwdencrypt(’ÁÁÁÁÁ’);

èá äþóåé ùò áðÜíôçóç Ýíá áëöáñéèìçôéêü ôçò ìïñöÞò:


0x0100544115053E881CA272490C324ECE22BF17DAF2AB96
B1DC9A7EAB644BD218969D09FFB97F5035CF7142521576

Åðßóçò, ï SQL Server äéáèÝôåé ìßá óõíÜñôçóç óýãêñéóçò óõíèçìáôéêþí ÷ñç-


óôþí, ôçí pwdcompare(), ç ïðïßá åðéóôñÝöåé 1 áí ôá áëöáñéèìçôéêÜ ðïõ óõ-
ãêñßíåé ôáõôßæïíôáé. ¸íá ðáñÜäåéãìá ÷ñÞóçò ôçò óõíÜñôçóçò pwdcompare()
óå ìßá åðéôõ÷Þ óýãêñéóç áëöáñéèìçôéêþí, åßíáé ôï áêüëïõèï:
462 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

SELECT pwdcompare
(’óõíèçìáôéêü_sa’,
(SELECT password
FROM MASTER.dbo.sysxlogins
WHERE name = ’sa’), 0 );

Ç åôáéñåßá Application Security Inc. Ý÷åé äçìéïõñãÞóåé Ýíá åñãáëåßï, ôï


DbEncrypt2 ôï ïðïßï ÷ñçóéìïðïéåß ìßá óåéñÜ áðïèçêåõìÝíùí óõíáñôÞóåùí ôïõ
SQL Server êáëþíôáò óõíáñôÞóåéò êñõðôïãñÜöçóçò êáé áðïêñõðôïãñÜöçóçò
áðü ìßá DLL âéâëéïèÞêç (dynamic link library) ãéá ôçí ðáñï÷Þ äéáöáíïýò êñõðôï-
ãñÜöçóçò óå áðïèçêåõìÝíá äåäïìÝíá ôïõ SQL Server. ÊÜèå ÷ñÞóôçò ðïõ áéôåß-
ôáé ðñïóðÝëáóç óå êñõðôïãñáöçìÝíá äåäïìÝíá áðïêôÜ Ýíá æåýãïò äçìïóßïõ êáé
éäéùôéêïý êëåéäéïý. ÊÜèå óôÞëç êñõðôïãñáöçìÝíùí äåäïìÝíùí Ý÷åé ôç äéêÞ ôçò
óõììåôñéêÞ êñõðôïãñÜöçóç êáé ôï äéêü ôçò êëåéäß. Áíôßãñáöá ôïõ êëåéäéïý áõôïý
åßíáé êñõðôïãñáöçìÝíá ìå ôá äçìüóéá êëåéäéÜ üëùí ôùí ÷ñçóôþí ðïõ ÷ñåéÜæï-
íôáé ðñïóðÝëáóç ôùí äåäïìÝíùí êáé áðïèçêåýïíôáé óôïí ðßíáêá dbencrypt keys.
Ôï åñãáëåßï ðáñÝ÷åôáé óå åìðïñéêÞ áëëÜ êáé äïêéìáóôéêÞ Ýêäïóç. Ç åôáéñåßá
ActiveCrypt ðñïóöÝñåé Ýíá áêüìç åñãáëåßï êñõðôïãñÜöçóçò äåäïìÝíùí ãéá ôïí
SQL Server, ôï XP CRYPT3 , åðßóçò óå åìðïñéêÞ áëëÜ êáé óå äïêéìáóôéêÞ Ýê-
äïóç.

17.6 Óýíïøç
Óôï êåöÜëáéï áõôü ìåëåôÞóáìå ôá âáóéêüôåñá èÝìáôá õëïðïßçóçò ôïõ MSSQLS-
2000. Ç âáóéêÞ ìïíÜäá áðïèÞêåõóçò ãéá ðßíáêåò åßíáé ç Ýêôáóç ðïõ áðïôåëåßôáé
áðü 8 óõíå÷üìåíåò óåëßäåò. ÊÜèå óåëßäá ìðïñåß íá áðïèçêåýóåé 8 KBytes äå-
äïìÝíùí. Ìßá Ýêôáóç êáëåßôáé ïìïéüìïñöç üôáí üëåò ïé óåëßäåò ðïõ ôçí áðïôå-
ëïýí áíÞêïõí óôï ßäéï áíôéêåßìåíï ôçò ÂÜóçò ÄåäïìÝíùí. Ìßá Ýêôáóç êáëåßôáé
áíïìïéüìïñöç üôáí ïé óåëßäåò ôçò ÷ñçóéìïðïéïýíôáé áðü ðïëëÜ áíôéêåßìåíá. Ïé
âáóéêïß ôýðïé áñ÷åßùí ôçò ÂÜóçò ÄåäïìÝíùí åßíáé: á) ðñùôåýïíôá áñ÷åßá, â)
äåõôåñåýïíôá áñ÷åßá êáé ã) áñ÷åßá çìåñïëïãßïõ.
Ï MSSQLS-2000 Ý÷åé äýï ìïñöÝò ïñãÜíùóçò ãéá ôïõò ðßíáêåò: á) ðßíáêåò
óùñïý êáé â) ïìáäïðïéçìÝíïé ðßíáêåò ðïõ Ý÷ïõí ïìáäïðïéçìÝíï êáôÜëïãï. Ç
öõóéêÞ ïñãÜíùóç ôùí äýï ôýðùí ðéíÜêùí åßíáé äéáöïñåôéêÞ. ¸íáò ðßíáêáò ìðï-
ñåß íá äéáèÝôåé ìüíï Ýíáí ïìáäïðïéçìÝíï êáôÜëïãï, åíþ ìðïñåß íá Ý÷åé ðïëëïýò
ìç-ïìáäïðïéçìÝíïõò êáôáëüãïõò. Ãéá ôçí õëïðïßçóç ôùí êáôáëüãùí ÷ñçóéìï-
ðïéåßôáé ç äåíäñéêÞ äïìÞ Â+ -äÝíäñï.
2
http: //www.appsecinc.com/products/dbencrypt/mssql
3
http://www.activecrypt.com/product.htm
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 463

Ç âåëôéóôïðïßçóç åñùôçìÜôùí ðñáãìáôïðïéåßôáé ÷ñçóéìïðïéþíôáò åêôéìÞóåéò


êüóôïõò ãéá ôéò äéÜöïñåò ðñÜîåéò ðïõ óõììåôÝ÷ïõí óôï åñþôçìá. Ìå ôç âïÞèåéá
ôïõ SQL Query Analyzer ìðïñïýìå íá ðáñáôçñÞóïõìå ôï ðëÜíï åêôÝëåóçò ðïõ
ðáñÜãåôáé êÜèå öïñÜ.
Ãéá ôç äéá÷åßñéóç ôùí ôáõôü÷ñïíùí ðñïóðåëÜóåùí ÷ñçóéìïðïéåßôáé Ýíáò ìç-
÷áíéóìüò êëåéäþìáôïò, ï ïðïßïò õðïóôçñßæåé äéáöïñåôéêÜ åßäç êëåéäáñéþí: äéá-
ìïéñáæüìåíåò, åíçìÝñùóçò, áðïêëåéóôéêÝò, ó÷Þìáôïò, êáé ìáæéêÞò åíçìÝñùóçò.
Ãéá ôçí åðáíÜêôçóç äåäïìÝíùí ÷ñçóéìïðïéåßôáé ìßá ðáñáëëáãÞ ôçò ìåèüäïõ Üìå-
óçò åíçìÝñùóçò.
Ï SQL Server äéáèÝôåé éó÷õñïýò ìç÷áíéóìïýò ðñïóôáóßáò äåäïìÝíùí ìÝóù
ðñïíïìßùí óõóôÞìáôïò êáé ðñïíïìßùí áíôéêåéìÝíùí. Åðßóçò, éó÷õñÜ åñãáëåßá
ðñïóôáóßáò áðïôåëïýí ïé üøåéò êáé ç êñõðôïãñÜöçóç äåäïìÝíùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


17.1. ÐåñéãñÜøôå óõíïðôéêÜ ôïõò ôýðïõò áñ÷åßùí ðïõ õðïóôçñßæïíôáé áðü ôïí
MSSQLS-2000.

17.2. ÐïéÝò ïé âáóéêÝò äéáöïñÝò ìåôáîý ðéíÜêùí óùñïý êáé ïìáäïðïéçìÝíùí


ðéíÜêùí;

17.3. ÐåñéãñÜøôå óõíïðôéêÜ ôç äéáäéêáóßá âåëôéóôïðïßçóçò ðïõ áêïëïõèåß ï


MSSQLS-2000.

17.4. Ìå ðïéüí ôñüðï ìðïñïýìå íá ðáñáôçñÞóïõìå ôï ðëÜíï åêôÝëåóçò ðïõ Ý÷åé


åðéëÝîåé ï MSSQLS-2000 ãéá ôçí åêôÝëåóç åíüò åñùôÞìáôïò;

17.5. Íá áíáöåñèïýí ïé ôýðïé êëåéäáñéþí ðïõ õðïóôçñßæïíôáé áðü ôïí MSSQLS-


2000 êáé íá äïèåß óýíôïìç ðåñéãñáöÞ.

17.6. Ìå ðïéüí ôñüðï ðñáãìáôïðïéåßôáé ç äéá÷åßñéóç áäéåîüäùí áðü ôïí MSSQLS-


2000;

17.7. Ôé ãíùñßæåôå ãéá ôç ìÝèïäï åðáíÜêôçóçò äåäïìÝíùí ðïõ ÷ñçóéìïðïéåß ï


MSSQLS-2000;

17.8. ÁíáöÝñáôå ôç äéáöïñÜ ìåôáîý ðñïíïìßùí óõóôÞìáôïò êáé ðñïíïìßùí áíôé-


êåéìÝíùí.
464 ÊåöÜëáéï 17. ÈÝìáôá Õëïðïßçóçò ôïõ MSSQLS-2000

17.9. ÁíáöÝñáôå ìåéïíåêôÞìáôá Þ äõóêïëßåò óôç äéá÷åßñéóç êñõðôïãñáöçìÝíùí


äåäïìÝíùí óôïí SQL Server.

17.10. Áðü ôéò ôå÷íéêÝò êñõðôïãñÜöçóçò ðïõ áíáöÝñèçêáí óôï ÊåöÜëáéï 16,
áíáöÝñáôå ðïéá åßíáé ç êáôáëëçëüôåñç ãéá ôçí êñõðôïãñÜöçóç ôùí ðéóôùôéêþí
êáñôþí ôùí ðåëáôþí ìéáò åöáñìïãÞò çëåêôñïíéêïý åìðïñßïõ. Óôç óõíÝ÷åéá, ðå-
ñéãñÜøôå áíáëõôéêÜ ôç äéáäéêáóßá åéóáãùãÞò ôùí ðáñáããåëéþí ôùí ðåëáôþí.
ÌÝñïò IV

ÅÉÄÉÊÁ ÈÅÌÁÔÁ

Ôá ôåëåõôáßá ÷ñüíéá ïé åñåõíçôÝò Ý÷ïõí óôñáöåß óå åíáëëáêôéêïýò ôñüðïõò


áíáðáñÜóôáóçò êáé åðåîåñãáóßáò äåäïìÝíùí ìå óôü÷ï ôçí áðïôåëåóìáôéêüôåñç
õðïóôÞñéîç ôùí óýã÷ñïíùí åöáñìïãþí. Ôá ó÷åóéáêÜ ÓÄÂÄ Ý÷ïõí áðïäåé÷èåß
áíåðáñêÞ ãéá ôçí áðïäïôéêÞ äéá÷åßñéóç ìåãÜëùí êáé óýíèåôùí áíôéêåéìÝíùí,
ìå áðïôÝëåóìá ç åðßäïóÞ ôïõò íá ìçí êñßíåôáé éêáíïðïéçôéêÞ. Óôï ìÝñïò áõôü
ôïõ âéâëßïõ ìåëåôïýìå ôéò óçìáíôéêüôåñåò ðñïóðÜèåéåò åîÝëéîçò ôùí ÓÄÂÄ ìå
óôü÷ï ôçí áðïäïôéêÞ õðïóôÞñéîç ôùí óýã÷ñïíùí åöáñìïãþí. Óôï ÊåöÜëáéï 18
ìåëåôïýìå ôï áíôéêåéìåíïóôñåöÝò (object-oriented) ìïíôÝëï äåäïìÝíùí ç åöáñ-
ìïãÞ ôïõ ïðïßïõ ïäÞãçóå óôá áíôéêåéìåíïóôñåöÞ ÓÄÂÄ. Óôï ÊåöÜëáéï 19 åîåôÜ-
æïõìå ìßá äéáöïñåôéêÞ ðñïóÝããéóç õðïóôÞñéîçò ôùí óýã÷ñïíùí åöáñìïãþí, ç
ïðïßá óôçñßæåôáé óôçí åðÝêôáóç ôïõ ó÷åóéáêïý ìïíôÝëïõ ìå äõíáôüôçôåò äéá÷åß-
ñéóçò ðïëýðëïêùí áíôéêåéìÝíùí. Ç åðÝêôáóç ôùí ó÷åóéáêþí ÓÄÂÄ ïäÞãçóå óôá
áíôéêåéìåíï-ó÷åóéáêÜ (object-relational) ÓÄÂÄ. Óôï ÊåöÜëáéï 20 ðåñéãñÜöïõìå
ìåñéêÝò áðü ôéò óýã÷ñïíåò åöáñìïãÝò ìå õøçëÝò áðáéôÞóåéò áðïèÞêåõóçò êáé
äéá÷åßñéóçò äåäïìÝíùí, åíþ óôï ÊåöÜëáéï 21 ðåñéãñÜöåôáé ç õðïóôÞñéîç ôùí
óýã÷ñïíùí åöáñìïãþí ðïõ ðáñÝ÷åé ï MSSQLS-2000.
18
ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

Ôï ó÷åóéáêü ìïíôÝëï äåäïìÝíùí áðïôåëåß áêüìç êáé óÞìåñá ôï ðëÝïí äéáäå-


äïìÝíï ìïíôÝëï ðïõ õðïóôçñßæåé ôéò ðåñéóóüôåñåò åöáñìïãÝò äéá÷åéñéóôéêïý ôý-
ðïõ (ôñáðåæéêÜ óõóôÞìáôá, óõóôÞìáôá êñÜôçóçò èÝóåùí, ê.ë.ð). Ùóôüóï, õðÜñ-
÷ïõí óýã÷ñïíåò åöáñìïãÝò ðïõ èÝôïõí ìåãÜëåò áðáéôÞóåéò ìå áðïôÝëåóìá ç õðï-
óôÞñéîç ôùí åöáñìïãþí áõôþí áðü ôï ó÷åóéáêü ìïíôÝëï íá åßíáé áñêåôÜ äýóêïëç.
Ðáñáäåßãìáôá ôÝôïéùí åöáñìïãþí åßíáé ôá ÓõóôÞìáôá Ó÷åäéáóìïý ìå ôç ÂïÞ-
èåéá ÕðïëïãéóôÞ (computer-aided design - CAD), ôá ÓõóôÞìáôá Ãåùãñáöéêþí
Ðëçñïöïñéþí êáé åöáñìïãÝò ðïëõìÝóùí. Ïé åöáñìïãÝò áõôÝò ðáñïõóéÜæïõí
áñêåôÝò óçìáíôéêÝò äéáöïñÝò óå ó÷Ýóç ìå ôéò ðáñáäïóéáêÝò êáèþò:

• ôá äåäïìÝíá ÷áñáêôçñßæïíôáé áðü ìåãáëýôåñï üãêï êáé ìåãáëýôåñç ðïëõ-


ðëïêüôçôá,

• ç äéá÷åßñéóç ôùí äåäïìÝíùí áðáéôåß ôçí õëïðïßçóç ðïëýðëïêùí áëãïñßè-


ìùí (ð.÷., ôçí åýñåóç ôçò óõíôïìüôåñçò äéáäñïìÞò óå Ýíá ÷Üñôç),

• ôá åñùôÞìáôá åßíáé ðïëõðëïêüôåñá ìå áðïôÝëåóìá íá áðáéôïýí ðåñéóóü-


ôåñï ÷ñüíï ãéá ôçí åðåîåñãáóßá ôïõò,

467
468 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

¸÷åé åðéâåâáéùèåß ðïëëÝò öïñÝò üôé ôá ó÷åóéáêÜ ÓÄÂÄ äåí åðáñêïýí ãéá
ôçí éêáíïðïßçóç ôùí óýã÷ñïíùí áðáéôÞóåùí. Ôï åñþôçìá ðïõ ðñïêýðôåé åýëïãá
åßíáé ãéáôß ôá ó÷åóéáêÜ ÓÄÂÄ áäõíáôïýí íá êáëýøïõí ôéò áíÜãêåò ôùí óýã÷ñï-
íùí åöáñìïãþí;. Óôç óõíÝ÷åéá ðåñéãñÜöïíôáé ìåñéêÜ áðü ôá ðñïâëÞìáôá ðïõ
åìöáíßæïíôáé ÷ñçóéìïðïéþíôáò Ýíá ó÷åóéáêü ÓÄÂÄ:
• Áäõíáìßá áíáðáñÜóôáóçò ôïõ ðñáãìáôéêïý êüóìïõ. Ç äéáäéêáóßá ôçò
êáíïíéêïðïßçóçò ïäçãåß óôç äçìéïõñãßá ó÷Ýóåùí (ðéíÜêùí) ðïõ äåí áíôé-
óôïé÷ïýí óå ïíôüôçôåò ôïõ ðñáãìáôéêïý êüóìïõ. Ï äéáìïéñáóìüò ôùí äå-
äïìÝíùí óå ðïëëïýò ðßíáêåò ïäçãåß óôçí åêôÝëåóç ðïëëþí ÷ñïíïâüñùí
ðñÜîåùí óýíäåóçò.
• ÏìïéïãÝíåéá. Ôï ó÷åóéáêü ìïíôÝëï ïñßæåé üôé êÜèå ãñáììÞ åíüò ðßíáêá
ðñÝðåé íá áðïôåëåßôáé áðü ôéò ßäéåò óôÞëåò, êáé êÜèå óôÞëç ôïõ ðßíáêá
ðñÝðåé íá äÝ÷åôáé ôéìÝò áðü ôï ßäéï ðåäßï ïñéóìïý. Ïé äýï áõôÝò éäéüôçôåò
êáëïýíôáé ïñéæüíôéá êáé êÜèåôç ïìïéïãÝíåéá. Ç äïìÞ áõôÞ ôïõ ðßíáêá åßíáé
áñêåôÜ ðåñéïñéóôéêÞ ãéá áíôéêåßìåíá ôïõ ðñáãìáôéêïý êüóìïõ ôá ïðïßá
Ý÷ïõí ðïëýðëïêç äïìÞ.
• ÐåñéïñéóìÝíåò ëåéôïõñãßåò. ¸íá ó÷åóéáêü ÓÄÂÄ Ý÷åé Ýíá ðåñéïñéóìÝíï
óýíïëï ëåéôïõñãéþí ðïõ ìðïñïýí íá åöáñìïóèïýí óôá äåäïìÝíá, ôï ïðïßï
êáèïñßæåôáé áðü ôç ãëþóóá SQL. Óôéò óýã÷ñïíåò åöáñìïãÝò ôï óýíïëï ôùí
ëåéôïõñãéþí áõôþí äåí åðáñêåß êáé åðïìÝíùò áðáéôåßôáé ç äõíáôüôçôá ïñé-
óìïý íÝùí ôýðùí äåäïìÝíùí êáé íÝùí ëåéôïõñãéþí. Ãéá ðáñÜäåéãìá, ìßá
åöáñìïãÞ GIS ÷ñåéÜæåôáé õðïóôÞñéîç ãéá ãåùìåôñéêÜ áíôéêåßìåíá (ð.÷.,
ãñáììÝò, ðïëýãùíá, óôåñåÜ óþìáôá) êáé ðñÜîåéò ìåôáîý ôùí ãåùìåôñéêþí
áíôéêåéìÝíùí (üðùò ôïìÝò ãñáììþí, åðéêÜëõøç äýï ðïëõãþíùí ê.ë.ð.). Ôá
ðáñáäïóéáêÜ ó÷åóéáêÜ ÓÄÂÄ äåí åðéôñÝðïõí ôïí ïñéóìü íÝùí ôýðùí äå-
äïìÝíùí êáé íÝùí ëåéôïõñãéþí, ìå áðïôÝëåóìá ç äéá÷åßñéóç ôùí áíôéêåéìÝ-
íùí íá åìðåñéÝ÷åôáé óôç ëïãéêÞ ôçò åöáñìïãÞò êáé ü÷é óôï ÓÄÂÄ.
• ÓõíáëëáãÝò ìéêñÞò äéÜñêåéáò. Ïé óõíáëëáãÝò óôéò ðáñáäïóéáêÝò åöáñ-
ìïãÝò åßíáé óõíÞèùò ìéêñÞò äéÜñêåéáò ìå áðïôÝëåóìá ïé ìç÷áíéóìïß ôáõ-
ôü÷ñïíçò åêôÝëåóçò, üðùò ôï êëåßäùìá äýï öÜóåùí, íá åßíáé åðáñêåßò. Áí
ïé óõíáëëáãÝò Ý÷ïõí ìåãÜëç äéÜñêåéá, ôï ïðïßï ðáñáôçñåßôáé êáôÜ êüñï
óå ðïëýðëïêá áíôéêåßìåíá, ïé áíùôÝñù ìç÷áíéóìïß äåí åðáñêïýí.
• Ïé áëëáãÝò óôï ó÷Þìá ôçò ÂÄ åßíáé ÷ñïíïâüñåò. Áí áðáéôçèåß áëëáãÞ
óôï ó÷Þìá ôçò ÂÄ èá ðñÝðåé ï äéá÷åéñéóôÞò íá äéáêüøåé ðñïóùñéíÜ ôç ëåé-
ôïõñãßá ôïõ óõóôÞìáôïò êáé åðéðëÝïí ôá ðñïãñÜììáôá åöáñìïãÞò ðñÝðåé
íá äéáìïñöùèïýí áíáëüãùò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 469

Ôá ðñïáíáöåñèÝíôá ðñïâëÞìáôá ïäÞãçóáí ôïõò åñåõíçôÝò óôç ìåëÝôç íÝùí


ìåèüäùí ìïíôåëïðïßçóçò êáé äéá÷åßñéóçò Ýôóé þóôå ç áðïôåëåóìáôéêÞ êáé áðïäï-
ôéêÞ äéá÷åßñéóç ôùí óýã÷ñïíùí äåäïìÝíùí íá åßíáé åöéêôÞ. Ðñïò áõôÞí ôçí êá-
ôåýèõíóç ðáñáôçñïýíôáé äýï ôÜóåéò ðïõ óôçñßæïíôáé óå äéáöïñåôéêÞ öéëïóïößá:
• ÌåëÝôç åöáñìïãÞò ôïõ áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ äåäïìÝíïõ êáé ôçí
õëïðïßçóç áíôéêåéìåíïóôñåöþí ÂÜóåùí ÄåäïìÝíùí,
• ÌåëÝôç åðÝêôáóçò ôùí ó÷åóéáêþí ÂÜóåùí ÄåäïìÝíùí Ýôóé þóôå ìßá ó÷å-
óéáêÞ âÜóç íá åßíáé óå èÝóç íá äéá÷åéñßæåôáé ðïëýðëïêá áíôéêåßìåíá. Ç
ôÜóç áõôÞ ïäÞãçóå óôç äçìéïõñãßá ôùí áíôéêåéìåíï-ó÷åóéáêþí ÂÜóåùí Äå-
äïìÝíùí, ïé ïðïßåò åîåôÜæïíôáé óôï åðüìåíï êåöÜëáéï.

18.1 ÂáóéêÝò ¸ííïéåò Áíôéêåéìåíïóôñåöïýò ÌïíôÝëïõ


Ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí Ý÷åé åöáñìïóèåß ìå åðéôõ÷ßá óôéò áíôé-
êåéìåíïóôñåöåßò ãëþóóåò ðñïãñáììáôéóìïý üðùò Smalltalk, C++ êáé Java1 . Ç
õëïðïßçóç ìßáò åöáñìïãÞò ìå ìßá áíôéêåéìåíïóôñåöÞ ãëþóóá ðñïãñáììáôéóìïý
äéáöÝñåé óçìáíôéêÜ áðü ôçí õëïðïßçóç ôçò ßäéáò åöáñìïãÞò óå ìßá äéáäéêáóôéêÞ
ãëþóóá. ÅðéðëÝïí, ïé ìÝèïäïé áíÜëõóçò êáé ó÷åäßáóçò äéáöÝñïõí áðü ôéò áíôß-
óôïé÷åò êëáóéêÝò ìåèüäïõò. Óôç óõíÝ÷åéá ðáñïõóéÜæïíôáé ïé âáóéêÝò Ýííïéåò ôïõ
áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ äåäïìÝíùí.

18.1.1 Áíôéêåßìåíá, ÌÝèïäïé êáé ÊëÜóåéò


¸íá áíôéêåßìåíï (object) áðïôåëåß ìßá ïíôüôçôá ôïõ ðñáãìáôéêïý êüóìïõ (óå
áíôéóôïé÷ßá ìå ôï ìïíôÝëï ÏÓ). ÊÜèå áíôéêåßìåíï áðïôåëåßôáé áðü ÷áñáêôçñé-
óôéêÜ (attributes). Ôï óýíïëï ôùí ôéìþí ôùí ÷áñáêôçñéóôéêþí êáëåßôáé êáôÜ-
óôáóç (state) ôïõ áíôéêåéìÝíïõ. ¸íá áíôéêåßìåíï êáèïñßæåé êáé ôéò åðéôñåðôÝò
åíÝñãåéåò ðïõ ìðïñïýí íá åöáñìïóèïýí óôï áíôéêåßìåíï. Áõôü ðñáãìáôïðïéåßôáé
ìå ôç âïÞèåéá ìåèüäùí (methods) ìå äõíáôüôçôá ðñïóðÝëáóçò óôá ÷áñáêôçñé-
óôéêÜ ôïõ áíôéêåéìÝíïõ. Ôï óýíïëï ôùí ìåèüäùí êáëåßôáé óõìðåñéöïñÜ (behav-
ior) ôïõ áíôéêåéìÝíïõ. Óôï óçìåßï áõôü ðáñáôçñïýìå ôçí ðñþôç óçìáíôéêÞ äéá-
öïñÜ óå ó÷Ýóç ìå ôéò äéáäéêáóôéêÝò ãëþóóåò ðñïãñáììáôéóìïý, üðïõ äåäïìÝíá
êáé ìÝèïäïé ïñßæïíôáé îå÷ùñéóôÜ. Ç éäéüôçôá áõôÞ ôùí áíôéêåéìÝíùí êáëåßôáé
åíèõëÜêùóç (encapsulation). Ç ðñïóðÝëáóç ôùí äåäïìÝíùí åíüò áíôéêåéìÝíïõ
ðñáãìáôïðïéåßôáé ìüíï ìÝóù ôùí ìåèüäùí. ¸ôóé áðïôñÝðåôáé ç áëëáãÞ ôùí ÷á-
ñáêôçñéóôéêþí áð’ åõèåßáò áðü Üëëï áíôéêåßìåíï êáé åðéôõã÷Üíåôáé áðüêñõøç
ðëçñïöïñéþí (information hiding).
1
Ãéá ôçí êáôáíüçóç ôùí åííïéþí ðïõ ðáñïõóéÜæïíôáé åäþ èá Þôáí êáëü ï áíáãíþóôçò íá Ý÷åé
Ýóôù êáé ìéá ìéêñÞ åìðåéñßá ìå ìßá áíôéêåéìåíïóôñåöÞ ãëþóóá ðñïãñáììáôéóìïý.
470 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

Áíôéêåßìåíá ìå ôá ßäéá ÷áñáêôçñéóôéêÜ êáé ìåèüäïõò ó÷çìáôßæïõí ìßá êëÜóç


áíôéêåéìÝíùí (object class). Ôï êÜèå áíôéêåßìåíï áðïôåëåß Ýíá óôéãìéüôõðï ôçò
êëÜóçò üðïõ áíÞêåé. Ç äéÜêñéóç ôùí áíôéêåéìÝíùí ìåôáîý ôïõò ðñáãìáôïðïéåßôáé
ìå ôç ÷ñÞóç ôçò ôáõôüôçôáò áíôéêåéìÝíïõ (object identifier) ç ïðïßá åßíáé ìïíá-
äéêÞ ãéá êÜèå áíôéêåßìåíï, êáé ðïôÝ äåí åðáíá÷ñçóéìïðïéåßôáé. Èåùñåßóôå ãéá
ðáñÜäåéãìá ìßá åöáñìïãÞ CAD/VLSI üðïõ èÝëïõìå íá áíáðáñáóôÞóïõìå ìßá
ðåñéï÷Þ ôïõ ïëïêëçñùìÝíïõ êõêëþìáôïò ìå Ýíá ïñèïãþíéï. ×ñçóéìïðïéþíôáò
áíôéêåéìåíïóôñåöÞ ðñïóÝããéóç ïñßæïõìå ìßá êëÜóç áíôéêåéìÝíùí ìå üíïìá rect-
angle êáé ïñßæïõìå ôá ÷áñáêôçñéóôéêÜ êáé ôéò ìåèüäïõò ôçò êëÜóçò. Èåùñïýìå
üôé êÜèå ïñèïãþíéï ðñïóäéïñßæåôáé áðü ôçí êÜôù-áñéóôåñÞ êáé ôçí åðÜíù-äåîéÜ
ãùíßá, åðïìÝíùò áðáéôïýíôáé ôÝóóåñéò áêÝñáéïé áñéèìïß ãéá ôçí ðåñéãñáöÞ ôïõ.
ÕðïèÝôïõìå åðßóçò üôé êÜèå áíôéêåßìåíï ðñÝðåé íá äÝ÷åôáé áëëáãÞ óôéò ôéìÝò ôùí
óõíôåôáãìÝíùí êáé íá åðéôñÝðåé ôçí áëëáãÞ ìåãÝèïõò êáé ôç ìåôáôüðéóç ôïõ ïñèï-
ãùíßïõ. Óýìöùíá ìå ôá ðñïçãïýìåíá, ï ïñéóìüò ôçò êëÜóçò rectangle (óýìöùíá
ìå ôç óýíôáîç ôçò ãëþóóáò C++) ðáñïõóéÜæåôáé óôï Ó÷Þìá 18.1. ÐáñáôçñÞ-
óôå üôé ðñéí áðü ôç äÞëùóç ôùí ìåèüäùí õðÜñ÷åé ç äåóìåõìÝíç ëÝîç public, ç
ïðïßá äçëþíåé üôé ïé ìÝèïäïé ðïõ áêïëïõèïýí ìðïñïýí íá êëçèïýí áðü Üëëá
áíôéêåßìåíá.
class rectangle : y
{
int x1; y2
int y1;
χαρακτηριστικά
int x2;
int y2;

public:
setRectangle (int x1, int y1, int x2, int y2);
µέθοδοι resizeRectangle (int dx, int dy); y1
moveRectangle (int newx1, int newy1);
};
x1 x2 x

Ó÷Þìá 18.1: ÊëÜóç ãéá ôçí áíáðáñÜóôáóç ïñèïãùíßùí.

18.1.2 Êëçñïíïìéêüôçôá
Ãéá ôïí ïñéóìü åíüò ó÷Þìáôïò ÂÜóçò ÄåäïìÝíùí áðáéôïýíôáé óõíÞèùò ðïëëÝò
êëÜóåéò áíôéêåéìÝíùí. Áí êáé äýï Þ ðåñéóóüôåñåò êëÜóåéò ìðïñåß íá åßíáé äéá-
öïñåôéêÝò ìåôáîý ôïõò, ìðïñïýí íá Ý÷ïõí êáé áñêåôÜ êïéíÜ ÷áñáêôçñéóôéêÜ êáé
ìåèüäïõò. Ç êëçñïíïìéêüôçôá (inheritance) åðéôñÝðåé óå äýï êëÜóåéò íá ìïéñÜ-
æïíôáé êïéíÜ ÷áñáêôçñéóôéêÜ êáé ìåèüäïõò. ¼ôáí ìßá êëÜóç  êëçñïíïìåß ôçí
êëÜóç Á, ôüôå ôï óýíïëï ôùí ÷áñáêôçñéóôéêþí ôçò  åßíáé õðåñóýíïëï ôïõ óõíü-
ëïõ ôùí ÷áñáêôçñéóôéêþí ôçò A (ôï ßäéï éó÷ýåé êáé ãéá ôéò ìåèüäïõò).
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 471

Èåùñåßóôå ãéá ðáñÜäåéãìá ôéò êëÜóåéò ÕðÜëëçëïò, ÐùëçôÞò êáé Ðñïãñáììá-


ôéóôÞò ìßáò ÂÄ ðïõ ÷ñçóéìïðïéåßôáé ãéá ôçí åóùôåñéêÞ ïñãÜíùóç ôçò åôáéñåßáò.
Åßíáé ðñïöáíÝò üôé Ýíáò ðùëçôÞò åßíáé åðßóçò êáé õðÜëëçëïò, êáé ôï ßäéï éó÷ýåé
ãéá Ýíáí ðñïãñáììáôéóôÞ. ÁíáìÝíïõìå üôé ïé êëÜóåéò ÕðÜëëçëïò (employee) êáé
ÐùëçôÞò (salesperson) èá Ý÷ïõí áñêåôÜ êïéíÜ ÷áñáêôçñéóôéêÜ êáé ìåèüäïõò, êáé
ôï ßäéï èá éó÷ýåé ãéá ôéò êëÜóåéò õðÜëëçëïò êáé ÐñïãñáììáôéóôÞò2 . Óôï Ó÷Þìá
18.2 ðáñïõóéÜæåôáé ç äïìÞ ôùí ôñéþí êëÜóåùí. Ôá ÷áñáêôçñéóôéêÜ üíïìá (name),
äéåýèõíóç (address), êùäéêüò (code) êáé ôçëÝöùíï (phone) áöïñïýí êáé óôéò ôñåéò
êëÜóåéò. Ç êëÜóç ðùëçôÞò Ý÷åé Ýíá åðéðëÝïí ÷áñáêôçñéóôéêü ðïõ ðñïóäéïñß-
æåé ôçí ðåñéï÷Þ (region) åõèýíçò ôïõ. Åðßóçò, ç êëÜóç ðñïãñáììáôéóôÞò Ý÷åé
Ýíá åðéðëÝïí ÷áñáêôçñéóôéêü ôï ïðïßï áðïèçêåýåé ôç ãëþóóá ðñïãñáììáôéóìïý
(prog-language) ðïõ ÷ñçóéìïðïéåß ï ðñïãñáììáôéóôÞò. ÊÜèå ìßá áðü ôéò êëÜ-
óåéò ÐùëçôÞò êáé ÐñïãñáììáôéóôÞò ìðïñåß íá Ý÷åé äéêÝò ôçò ìåèüäïõò ãéá ôç
äéá÷åßñéóç ôùí ÷áñáêôçñéóôéêþí.

class employee :
{
int code;
char[20] name;
char[20] phone;
char[100] address;
int salary;

public :
changeSalary (…);
changePhone (…);
changeAddress (…);
};

class salesperson : employee class programmer: employee


{ {
char[100] region; char[20] prog-language;

public : public :
changeLocation (…); changeLabguage (…);
... ...
... ...
}; };

Ó÷Þìá 18.2: Êëçñïíïìéêüôçôá.

Ìå ôç ÷ñÞóç ôçò êëçñïíïìéêüôçôáò ìðïñïýìå íá êáôáóêåõÜóïõìå ìßá éå-


ñáñ÷ßá åîåéäßêåõóçò (specialization hierarchy), ç ïðïßá óõíäÝåé ôéò êëÜóåéò ùò
ðñïò ôçí êëçñïíïìéêüôçôá. Ãéá íá äçëþóïõìå üôé ç êëÜóç B åßíáé åéäéêÞ ðåñß-
2
Óçìåéþíåôáé üôé ïé êëÜóåéò, ôá ÷áñáêôçñéóôéêÜ êáé ïé ìÝèïäïé åìöáíßæïíôáé ìå áããëéêÜ ïíüìáôá
ëüãù ôùí ðåñéïñéóìþí ðïõ èÝôïõí ïé ãëþóóåò ðñïãñáììáôéóìïý.
472 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

ðôùóç ôçò êëÜóçò A ÷ñçóéìïðïéåßôáé ç ëÝîç ISA ( ISA A), üðùò áêñéâþò êáé
óôï ìïíôÝëï ÏÓ (âë. ÊåöÜëáéï 4). ¸íá ðáñÜäåéãìá éåñáñ÷ßáò åîåéäßêåõóçò
ðáñïõóéÜæåôáé óôï Ó÷Þìá 18.3á.
Ε ρ ε υ ν η τ ι κ ή Ε ρ γ α σ ί α

Ό χ η  α

ISA ISA ISA ISA


ISA
Ό χ η  α Ξ η ρ ά ς

 ι δ α κ τ ο ρ ι κ ή  ι α τ ρ ι β ή Ά ρ θ ρ ο  ι π λ ω  α τ ι κ ή Ε ρ γ α σ ί α Ό χ η  α Ν ε ρ ο ύ

ISA ISA ISA ISA ISA ISA ISA

Τ ε χ ν ι κ ή Α ν α φ ο ρ ά Ά ρ θ ρ ο Π ε ρ ι ο δ ι κ ο ύ Ά ρ θ ρ ο Σ υ ν ε δ ρ ί ο υ Α υ τ ο κ ί ν η τ ο Α  φ ί β ι ο Ό χ η  α Π λ ο ί ο

(α) απλή κληρονοµικότητα (β) πολλαπλή κληρονοµικότητα

Ó÷Þìá 18.3: ÊëÜóåéò óå éåñáñ÷ßá åîåéäßêåõóçò.

Ìßá éåñáñ÷ßá åîåéäßêåõóçò ìðïñåß íá ðÜñåé ðïëõðëïêüôåñç ìïñöÞ áí åðé-


ôñÝøïõìå óå ìßá êëÜóç íá êëçñïíïìåß ÷áñáêôçñéóôéêÜ êáé ìåèüäïõò áðü ðïëëÝò
êëÜóåéò. Óôçí ðåñßðôùóç áõôÞ Ý÷ïõìå ðïëëáðëÞ êëçñïíïìéêüôçôá (multiple in-
heritance), êáé åöáñìüæåôáé óå ðåñéðôþóåéò üðïõ ç áðëÞ êëçñïíïìéêüôçôá äåí
åðáñêåß ãéá ôçí áíáðáñÜóôáóç ôïõ ðñáãìáôéêïý êüóìïõ. Èåùñåßóôå ôçí éå-
ñáñ÷ßá åîåéäßêåõóçò ðïõ áðåéêïíßæåôáé óôï Ó÷Þìá 18.3â. Åßíáé ðñïöáíÝò üôé Ýíá
áìößâéï ü÷çìá Ý÷åé ôéò éäéüôçôåò åíüò ï÷Þìáôïò îçñÜò êáé åíüò ï÷Þìáôïò íåñïý.
ÅðïìÝíùò, ç êëÜóç Áìößâéï ¼÷çìá êëçñïíïìåß ÷áñáêôçñéóôéêÜ êáé ìåèüäïõò
ôùí êëÜóåùí ¼÷çìá ÎçñÜò êáé ¼÷çìá Íåñïý.

18.1.3 Óýíèåôá Áíôéêåßìåíá


¸íáò Üëëïò ôýðïò éåñáñ÷éêÞò äïìÞò ðïõ ÷ñçóéìïðïéåßôáé óõ÷íÜ ãéá ôçí áíá-
ðáñÜóôáóç ôïõ ðñáãìáôéêïý êüóìïõ åßíáé ç éåñáñ÷ßá óõìðåñßëçøçò (contain-
ment hierarchy), ç ïðïßá ïñßæåé üôé Ýíá áíôéêåßìåíï áðïôåëåß ôìÞìá åíüò Üëëïõ
áíôéêåéìÝíïõ. Ç ó÷Ýóç áõôÞ ìåôáîý ôùí áíôéêåéìÝíùí äçëþíåôáé ìå ôï IS-PART-
OF óå áíôßèåóç ìå ôç ó÷Ýóç åîåéäßêåõóçò ðïõ äçëþíåôáé ìå ôï ISA. Ç éåñáñ÷ßá
óõìðåñßëçøçò ïäçãåß óå óýíèåôá áíôéêåßìåíá (complex objects) ìå áðïôÝëåóìá
êÜðïéá áðü ôá ÷áñáêôçñéóôéêÜ åíüò áíôéêåéìÝíïõ íá åßíáé êáé áõôÜ áíôéêåßìåíá.
Èåùñåßóôå ãéá ðáñÜäåéãìá ôçí êëÜóç Áõôïêßíçôï. Óôï Ó÷Þìá 18.4 ðáñïõóéÜ-
æåôáé ìßá éåñáñ÷ßá óõìðåñßëçøçò, üðïõ öáßíåôáé üôé Ýíá áõôïêßíçôï áðïôåëåßôáé
áðü ôç ìç÷áíÞ, ôïõò ôñï÷ïýò êáé Üëëá .
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 473

Α υ τ ο κ ί ν η τ ο

IS-PART-OF IS-PART-OF

...
Μ η χ α ν ή Τ ρ ο χ ο ί

IS-PART-OF IS-PART-OF
IS-PART-OF
Α ν τ λ ί α Β ε ν ζ ί ν η ς Κ α τ α ν ε  η τ ή ς Φ ί λ τ ρ ο Α έ ρ α

...

Ó÷Þìá 18.4: ÊëÜóåéò óå éåñáñ÷ßá óõìðåñßëçøçò.

18.2 Áíôéêåéìåíïóôñåöåßò ÂÜóåéò ÄåäïìÝíùí


¸íá áíôéêåéìåíïóôñåöÝò ÓÄÂÄ (OODMBS) åßíáé Ýíá ÓÄÂÄ ðïõ ÷ñçóéìïðïéåß
ùò âÜóç ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí. Ç Ýñåõíá êáé ç áíÜðôõîç
ôùí óõóôçìÜôùí áõôþí Ý÷åé åðçñåáóèåß óå ìåãÜëï âáèìü áðü ôï ÷þñï ôùí áíôé-
êåéìåíïóôñåöþí ãëùóóþí ðñïãñáììáôéóìïý. Ç áíÜðôõîç ôùí áíôéêåéìåíïóôñå-
öþí ÓÄÂÄ ðñáãìáôïðïéåßôáé ìå ôçí ðñïóèÞêç ôçò êáôÜëëçëçò ëåéôïõñãéêüôçôáò
óå ìßá áíôéêåéìåíïóôñåöÞ ãëþóóá ðñïãñáììáôéóìïý. Ïé âáóéêÝò äõíáôüôçôåò
ðïõ ðñÝðåé íá Ý÷åé Ýíá áíôéêåéìåíïóôñåöÝò ÓÄÂÄ ðñïóäéïñßæïíôáé óýìöùíá ìå
äýï êñéôÞñéá: á) ôï óýóôçìá ðñÝðåé íá åßíáé áíôéêåéìåíïóôñåöÝò êáé â) ðñÝ-
ðåé íá ðáñÝ÷åé üëåò ôéò äõíáôüôçôåò åíüò ÓÄÂÄ. Ïé äõíáôüôçôåò áõôÝò (äåêá-
ôñåßò óôï óýíïëü ôïõò) áíáëýïíôáé óôçí áíáöïñÜ [Atkinson 1989]. Ôï óýíïëï
ôùí äõíáôïôÞôùí êáëåßôáé ìáíéöÝóôï áíôéêåéìåíïóôñåöþí ÓõóôçìÜôùí ÂÜóåùí
ÄåäïìÝíùí (object-oriented database system manifesto). Ïé ðñþôåò ïêôþ äõíá-
ôüôçôåò áöïñïýí óôçí õðïóôÞñéîç ôïõ áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ äåäïìÝíùí
üðïõ áíáöåñèÞêáìå ðñïçãïõìÝíùò. Ïé õðüëïéðåò ðÝíôå äõíáôüôçôåò áöïñïýí
óôç ëåéôïõñãéêüôçôá ôïõ ÓÄÂÄ êáé Ý÷ïõí ùò åîÞò:

• áðïèÞêåõóç áíôéêåéìÝíùí,

• äéá÷åßñéóç ìåãÜëùí ÂÄ (áðáéôåßôáé áðïôåëåóìáôéêÞ äéá÷åßñéóç äåõôåñåýïõ-


óáò ìíÞìçò),

• åðåîåñãáóßá åñùôçìÜôùí, êáé

• óõã÷ñïíéóìüò ôáõôü÷ñïíùí ðñïóðåëÜóåùí óå áíôéêåßìåíá,

• åðáíÜêôçóç äåäïìÝíùí.
474 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

Óôç óõíÝ÷åéá äßíïõìå Ýìöáóç óôéò äýï ðñþôåò äõíáôüôçôåò êáé ðåñéãñÜöïõìå
ôéò äéáôçñÞóéìåò (persistent) ãëþóóåò ðñïãñáììáôéóìïý3 . Êáôüðéí ðåñéãñÜöå-
ôáé ç ãëþóóá ïñéóìïý áíôéêåéìÝíùí (object definition language) êáé ç ãëþóóá
åñùôçìÜôùí áíôéêåéìÝíùí (object query language, OQL) óýìöùíá ìå ôéò ðñï-
äéáãñáöÝò ôïõ ODMG 3.0. ÔÝëïò ãßíåôáé áíáöïñÜ óôéò äåóìåýóåéò (bindings)
ôçò ãëþóóáò ïñéóìïý áíôéêåéìÝíùí ãéá ôç ãëþóóá ðñïãñáììáôéóìïý C++. Ç
ODMG (Object Data Management Group) åßíáé ìßá êïéíïðñáîßá åôáéñéþí êáôá-
óêåõÞò ðñïúüíôùí ÓÄÂÄ êáé áêáäçìáúêþí éäñõìÜôùí. ¸íáò áðü ôïõò óôü÷ïõò
ôçò ODMG åßíáé ï ðñïóäéïñéóìüò ôùí ðñïäéáãñáöþí ðïõ ðñÝðåé íá ðëçñïýíôáé
áðü ôá áíôéêåéìåíïóôñåöÞ ÓÄÂÄ êõñßùò áðü ôçí ðëåõñÜ ôçò ìåôáöåñóéìüôçôáò
(portability). Ôï óýíïëï ôùí ðñïäéáãñáöþí ôçò ODMG ðåñéãñÜöïíôáé áíáëõ-
ôéêÜ óôçí áíáöïñÜ [Cattell 2000].

ÄéáôçñÞóéìåò Ãëþóóåò Ðñïãñáììáôéóìïý


Ìßá áíôéêåéìåíïóôñåöÞò ãëþóóá ðñïãñáììáôéóìïý äåí Ý÷åé äõíáôüôçôá äéáôÞ-
ñçóçò (persistence) ôùí áíôéêåéìÝíùí. Áõôü óçìáßíåé üôé ìåôÜ ôïí ôåñìáôéóìü
ôçò åöáñìïãÞò ôá áíôéêåßìåíá êáôáóôñÝöïíôáé êáé äåí åßíáé äéáèÝóéìá óå Üëëç
åöáñìïãÞ. Ôï ãåãïíüò áõôü ïäÞãçóå ôïõò åñåõíçôÝò óôç ìåëÝôç äéáôçñÞóéìùí
ãëùóóþí ðñïãñáììáôéóìïý, ïé ïðïßåò Ý÷ïõí ôç äõíáôüôçôá äéáôÞñçóçò ôùí áíôé-
êåéìÝíùí Ýôóé þóôå íá åßíáé äéáèÝóéìá êáé ìåôÜ ôï ôÝëïò ôçò åöáñìïãÞò. Áõôü
åðéôñÝðåé óå ðïëëÝò åöáñìïãÝò íá Ý÷ïõí ðñüóâáóç óôá ßäéá áíôéêåßìåíá, åðéôñÝ-
ðïíôáò ôçí áíÜðôõîç áíôéêåéìåíïóôñåöþí ÓÄÂÄ.

H Ãëþóóá ODMG ODL


Ç ãëþóóá ïñéóìïý áíôéêåéìÝíùí (object definition language, ODL) åßíáé ìßá
ãëþóóá ãéá ôïí ïñéóìü ôùí ðñïäéáãñáöþí ôýðùí áíôéêåéìÝíùí ãéá óõóôÞìáôá
ðïõ õðïóôçñßæïõí ôéò äõíáôüôçôåò ðïõ Ý÷åé ðñïôåßíåé ç ODMG. Ï âáóéêüò óôü÷ïò
ôçò ãëþóóáò åßíáé ç åðßôåõîç ôçò ìåôáöåñóéìüôçôáò ùò ðñïò ôï ó÷Þìá ôçò ÂÜ-
óçò ÄåäïìÝíùí Ýôóé þóôå íá åßíáé äõíáôÞ ç ðñïóðÝëáóç ôùí äåäïìÝíùí ìåôáîý
äéáöïñåôéêþí áíôéêåéìåíïóôñåöþí ÓÄÂÄ.
Èåùñåßóôå ôéò êëÜóåéò Ðñüóùðï (person) êáé ÕðÜëëçëïò (employee) ïé ïðïßåò
óõíäÝïíôáé ìå áðëÞ êëçñïíïìéêüôçôá (ç êëÜóç ÕðÜëëçëïò êëçñïíïìåß áðü ôçí
êëÜóç Ðñüóùðï). Åðßóçò èåùñåßóôå ôçí êëÜóç ÕðïêáôÜóôçìá (branch) ç ïðïßá
óõíäÝåôáé ìå ôçí êëÜóç ÕðÜëëçëïò ìå ìßá óõó÷Ýôéóç Ýíá-ðñïò-ðïëëÜ (Ýíáò õðÜë-
ëçëïò åñãÜæåôáé óå Ýíá õðïêáôÜóôçìá åíþ Ýíá õðïêáôÜóôçìá ìðïñåß íá áðáó÷ï-
ëåß ðïëëïýò õðáëëÞëïõò) Óôï Ó÷Þìá 18.5 ðáñïõóéÜæåôáé ï ïñéóìüò ôùí êëÜóåùí
3
Ç áíÜëõóç ôùí õðïëïßðùí äõíáôïôÞôùí ðïõ áíáöÝñïíôáé óôï ìáíéöÝóôï åßíáé ðÝñá áðü ôïõò
óêïðïýò áõôïý ôïõ âéâëßïõ.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 475

÷ñçóéìïðïéþíôáò ôç óýíôáîç ôçò ODMG ODL. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò


ó÷åôéêÜ ìå ôç äïìÞ êáé óýíôáîç ôçò ãëþóóáò ðáñáðÝìðïõìå ôïí åíäéáöåñüìåíï
áíáãíþóôç óôéò áíáöïñÝò [Eaglestone 1998, Cattell 2000].

class Person
Person {
attribute struct person_name {string first_name, string last_name} name;
};

ISA
class Employee extends Person
(extent employee)
{
attribute string emp_no;
attribute enum sex_type {M, F} sex;
attribute enum pos_type {Manager, Supervisor, Assistant} position;
Employee
attribute date date_birth;
attribute float salary;
M WorksAt
int getAge ();
void increaseSalary (in float salary_incr);
};

class Branch
(extent branches)
1 Has {
attribute string branch_name;
attribute struct branch_address {string street, string city, string postal_code} address;
Branch
relationship set<Employee> Has inverse Employee::WorksAt;
};

Ó÷Þìá 18.5: Ïñéóìüò êëÜóåùí ìå ãëþóóá ODMG ODL.

Ç Ãëþóóá ODMG OQL


Ç ãëþóóá åñùôçìÜôùí áíôéêåéìÝíùí (object query language, OQL) åßíáé ìßá äç-
ëùôéêÞ ãëþóóá ÷åéñéóìïý äåäïìÝíùí, ç ïðïßá ìïéÜæåé êáôÜ ðïëý óå óýíôáîç ìå
ôç ãëþóóá SQL ôùí ó÷åóéáêþí ÓÄÂÄ. Ç OQL ìðïñåß íá ÷ñçóéìïðïéçèåß óáí
áõôüíïìç ãëþóóá åñùôçìÜôùí Þ íá åíóùìáôùèåß óå êÜðïéá Üëëç ãëþóóá ðñï-
ãñáììáôéóìïý (C++, Java). Âáóéêüò óôü÷ïò ôçò OQL åßíáé ç áðëÞ äéáôýðùóç
åñùôçìÜôùí ðñïò ôçí áíôéêåéìåíïóôñåöÞ ÂÄ ìå ôñüðï ðáñüìïéï ìå áõôüí ôçò
SQL. Ç OQL ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá óõó÷åôéóôéêÞ ðñïóðÝëáóç (associa-
tive access) Þ ãéá ðëïçãçôéêÞ ðñïóðÝëáóç (navigational access):

• Ç óõó÷åôéóôéêÞ ðñïóðÝëáóç åðéóôñÝöåé Ýíá óýíïëï áíôéêåéìÝíùí ôçò ÂÄ.


Ï ôñüðïò åíôïðéóìïý êáé åðéóôñïöÞò ôùí áíôéêåéìÝíùí áíÞêåé óôçí åõèýíç
ôïõ áíôéêåéìåíïóôñåöïýò ÓÄÂÄ.
476 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

• ÊáôÜ ôçí ðëïçãçôéêÞ ðñïóðÝëáóç ðñáãìáôïðïéåßôáé ðñïóðÝëáóç óå Ýíá


áíôéêåßìåíï êÜèå öïñÜ êáé ÷ñçóéìïðïéïýíôáé ïé äåóìïß ðïõ õðÜñ÷ïõí ìå-
ôáîý ôùí áíôéêåéìÝíùí ãéá ìåôáâïýìå áðü Ýíá áíôéêåßìåíï óå Üëëï.

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ìåñéêÜ áðëÜ ðáñáäåßãìáôá åñùôçìÜôùí óå OQL.


Ãéá êÜèå åñþôçìá áðáéôåßôáé íá äïèåß Ýíá óçìåßï åéóüäïõ ðñïò ôç ÂÄ þóôå íá
ìðïñåß íá îåêéíÞóåé ç åðåîåñãáóßá ôïõ åñùôÞìáôïò. Ãéá ðáñÜäåéãìá ãéá íá
äéáâÜóïõìå üëá ôá áíôéêåßìåíá ðïõ áðïôåëïýí óôéãìéüôõðá ôçò êëÜóçò ÕðÜëëç-
ëïò áñêåß íá äþóïõìå ôï åñþôçìá:

employee

Ïìïßùò, ãéá íá äéáâÜóïõìå ôï óýíïëï ôùí áíôéêåéìÝíùí ðïõ åßíáé óôéãìéüôõðá


ôçò êëÜóçò ÕðïêáôÜóôçìá áñêåß íá äþóïõìå ôï åñþôçìá:

branches

Óôï åðüìåíï ðáñÜäåéãìá ç ïìïéüôçôá ôçò OQL ìå ôçí SQL åßíáé óáöÞò. ¸óôù
üôé æçôïýìå ôá ïíüìáôá êáé ôéò ïäïýò ãéá üëá ôá õðïêáôáóôÞìáôá ðïõ âñßóêïíôáé
óôç Èåóóáëïíßêç. Ôï áíôßóôïé÷ï åñþôçìá Ý÷åé ùò åîÞò:

SELECT b.name,b.address
FROM b IN branches
WHERE b.address.city=‘Èåóóáëïíßêç’;

Áò åîåôÜóïõìå ôÝëïò Ýíá ðáñÜäåéãìá üðïõ óõììåôÝ÷ïõí ðåñéóóüôåñåò áðü ìßá


êëÜóåéò áíôéêåéìÝíùí. ¸óôù üôé áíáæçôïýìå ôá åðßèåôá ôùí õðáëëÞëùí ðïõ
åñãÜæïíôáé óå üëá ôá õðïêáôáóôÞìáôá ôçò Áëåîáíäñïýðïëçò. Ôï áíôßóôïé÷ï
åñþôçìá Ý÷åé ùò åîÞò:

SELECT e.name.last-name
FROM b IN branches, e IN branches.WorksAt
WHERE b.address.city=‘Áëåîáíäñïýðïëç’

Ðåñéóóüôåñåò ðëçñïöïñßåò êáé ðáñáäåßãìáôá åñùôçìÜôùí OQL ìðïñïýí íá


âñåèïýí óôï âéâëßï ôùí Connolly êáé Begg [Connolly 2002].

Äåóìåýóåéò ODMG C++


Ïé äåóìåýóåéò (bindings) ïñßæïõí ôïí ôñüðï áíôéóôïé÷ßáò ôùí äïìþí ôçò ãëþóóáò
ïñéóìïý áíôéêåéìÝíùí óå äïìÝò ìßáò óõãêåêñéìÝíçò ãëþóóáò ðñïãñáììáôéóìïý.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 477

Ïé äåóìåýóåéò äéåõêïëýíïõí ôïí ðñïãñáììáôéóôÞ åöáñìïãþí åðåéäÞ ìå ôïí ôñüðï


áõôü ÷ñçóéìïðïéåß ìßá ãëþóóá ðñïãñáììáôéóìïý êáé ü÷é äýï äéáöïñåôéêÝò. Ïé
ãëþóóåò ãéá ôéò ïðïßåò ðáñÝ÷ïíôáé äåóìåýóåéò áðü ôçí ODMG åßíáé ïé Smalltalk,
C++ êáé Java. Åäþ åóôéÜæïõìå óôéò äåóìåýóåéò ãéá ôç ãëþóóá C++.
ÐáñÝ÷åôáé ìßá âéâëéïèÞêç êëÜóåùí C++, ç ïðïßá õëïðïéåß ôéò äïìÝò ôçò
ODMG ODL. Ç âéâëéïèÞêç áõôÞ ÷ñçóéìïðïéåßôáé áðü ôï ðñüãñáììá åöáñìïãÞò
Ýôóé þóôå íá ðñïóðåëáóèïýí ôá áíôéêåßìåíá áíáëüãùò ìå ôç ëïãéêÞ ôçò åöáñ-
ìïãÞò. Ç ÷ñÞóç ôçò âéâëéïèÞêçò êëÜóåùí áðïôñÝðåé ôç óçìáíôéêÞ áëëáãÞ ôçò
äïìÞò êáé ôïõ óõíôáêôéêïý ôçò ãëþóóáò C++ ãéá ôçí õðïóôÞñéîç ôçò äéáôçñçóé-
ìüôçôáò ôùí áíôéêåéìÝíùí. Ôï ðñüãñáììá åöáñìïãÞò, ôï ïðïßï åßíáé ãñáììÝíï
óå C++, ÷ñçóéìïðïéåß ôç ãëþóóá ÷åéñéóìïý áíôéêåéìÝíùí (object manipulation
language, OML) ç ïðïßá êáèïñßæåé ôïí ôñüðï ðñïóðÝëáóçò ôùí áíôéêåéìÝíùí ôçò
ÂÄ. Ôï Ó÷Þìá 18.6 åîçãåß ôç äéáäéêáóßá ðïõ áêïëïõèåßôáé þóôå íá ðñïêýøåé ç
åêôåëÝóéìç (executable) ìïñöÞ ìßáò åöáñìïãÞò.
 η λ ώ σ ε ι ς C + + O D L

Π ρ ο ε π ε ξ ε ρ γ α σ τ ή ς O D L

Α ρ χ ε ί ο Ε π ι κ ε φ α λ ί δ α ς

Μ ε τ α γ λ ω τ τ ι σ τ ή ς C + + Κ ώ δ ι κ α ς C + + κ α ι C + + O M L

Α ν τ ι κ ε ι  ε ν ι κ ό ς Κ ώ δ ι κ α ς ( O B J )

Μ ε τ α δ ε δ ο  έ ν α

 ι α δ ι κ α σ ί ε ς Χ ρ ό ν ο υ Ε κ τ έ λ ε σ η ς

Σ ύ ν δ ε σ η

( R U N T I M E )

Β ά σ η  ε δ ο  έ ν ω ν

Ε κ τ ε λ έ σ ι  ο ς Κ ώ δ ι κ α ς ( E X E )

κ α ι

 ι α δ ι κ α σ ί ε ς Χ ρ ό ν ο υ Ε κ τ έ λ ε σ η ς

Ó÷Þìá 18.6: ÐáñáãùãÞ åêôåëÝóéìïõ êþäéêá [Connolly 2002].

Ç âéâëéïèÞêç ðáñÝ÷åé íÝïõò ôýðïõò äåäïìÝíùí ðïõ ðñÝðåé íá ÷ñçóéìïðïéç-


èïýí þóôå íá åîáóöáëéóèåß ç äéáôçñçóéìüôçôá ôùí áíôéêåéìÝíùí. Ïé íÝïé ôýðïé
äåäïìÝíùí Ý÷ïõí ôï ðñüèåìá ‘d ’. Ãéá ðáñÜäåéãìá, ïñßæïíôáé ïé ôýðïé d String,
d Float, d Date ðïõ ÷ñçóéìïðïéïýíôáé óôç èÝóç ôùí ôýðùí string, float,
date áíôéóôïß÷ùò. Ï ôýðïò äåäïìÝíùí d Ref ÷ñçóéìïðïéåßôáé ãéá íá ïñßóåé óõ-
ó÷åôßóåéò ìåôáîý ôùí êëÜóåùí. Ïé ôýðïé äåäïìÝíùí d Set êáé d Bag áíôéêáèé-
óôïýí ôïõò ôýðïõò äåäïìÝíùí set êáé bag. ÊÜèå êëÜóç áíôéêåéìÝíùí ðñÝðåé
íá êëçñïíïìåß áðü ôçí êëÜóç d Object ðïõ ïñßæåôáé óôç âéâëéïèÞêç êëÜóåùí.
Áõôü äçëþíåé üôé ç êáôÜóôáóç ôùí áíôéêåéìÝíùí èá äéáôçñçèåß êáé ìåôÜ ôï ôÝëïò
478 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

ôçò åöáñìïãÞò. Óôï Ó÷Þìá 18.7â ðáñïõóéÜæåôáé ï ôñüðïò ÷ñÞóçò ôçò âéâëéïèÞêçò
ãéá ôïí ïñéóìü ôùí êëÜóåùí Ðñüóùðï (person), Ëïãáñéáóìüò (account), ÐåëÜ-
ôçò (customer) êáé ÕðïêáôÜóôçìá (branch). Ïé óõó÷åôßóåéò ìåôáîý ôùí êëÜóåùí
áðåéêïíßæïíôáé óôï Ó÷Þìá 18.7á.

Person

ISA

M M M 1
Account Customer Branch

(α) συσχετισµοί µεταξύ κλάσεων

class Branch : public d_Object


{

...
};

class Person : public d_Object


class Customer : public Person
{
{
d_String name;
public :
d_String address;
d_Long customer_id;
};
d_Ref<Branch> home_branch;
d_Set<d_Ref<Account>> accounts;
class Account : public d_Object
};
{
d_Float balance;
public :
d_Set<d_Ref<Customer> > owners;

float getBalance ();


void setBalance (float new_balance);
};
(β) ορισµός των κλάσεων σε ODMG C++ ODL

Ó÷Þìá 18.7: Ïñéóìüò êëÜóåùí ìå ãëþóóá ODMG C++ ODL.

Áò åîåôÜóïõìå óôç óõíÝ÷åéá ìåñéêÜ âáóéêÜ ÷áñáêôçñéóôéêÜ ôçò ãëþóóáò


ODMG C++ OML ìå ôçí ïðïßá ìðïñïýìå íá ÷åéñéóèïýìå óôéãìéüôõðá ôùí êëÜ-
óåùí ðïõ Ý÷ïõí ïñéóèåß ìå ôçí ODMG C++ ODL êáé íá èÝôïõìå åñùôÞìáôá
ðñïò ôç ÂÜóç ÄåäïìÝíùí. Ç âéâëéïèÞêç êëÜóåùí ôçò ODMG C++ ðáñÝ÷åé ôçí
êëÜóç d Database ðïõ ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ãéá ôéò åîÞò ëåéôïõñãßåò:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 479

• Üíïéãìá ÂÜóçò ÄåäïìÝíùí (open (dbname)),

• ïíïìáóßá áíôéêåéìÝíïõ (set object name (object, name)),

• áíáæÞôçóç áíôéêåéìÝíùí ìå âÜóç ôï üíïìá (lookup object (name)),

• ìåôïíïìáóßá áíôéêåéìÝíïõ (rename object (oldname, newname)),

• êëåßóéìï ÂÜóç ÄåäïìÝíùí (close (dbname)).


Ç áñ÷Þ êáé ôï ôÝëïò ìßáò óõíáëëáãÞò äçëþíïíôáé ÷ñçóéìïðïéþíôáò ìßá ìåôá-
âëçôÞ ôýðïõ d Transaction. ¸óôù ç ìåôáâëçôÞ Trans ôýðïõ d Transaction.
Ç áñ÷Þ ôçò åêôÝëåóçò ôçò óõíáëëáãÞò äçëþíåôáé ìå ôçí åíôïëÞ Trans.begin()
êáé ôï ôÝëïò ìå Trans.commit(). Ìßá óõíáëëáãÞ ðñáãìáôïðïéåß áíÜãíùóç,
åíçìÝñùóç, åéóáãùãÞ êáé äéáãñáöÞ áíôéêåéìÝíùí. Ãéá ôçí åéóáãùãÞ êáé äéá-
ãñáöÞ áíôéêåéìÝíùí óôéò äéÜöïñåò óõó÷åôßóåéò ÷ñçóéìïðïéïýíôáé ïé êëÞóåéò in-
sert element êáé delete element, áíôéóôïß÷ùò. Óôï Ó÷Þìá 18.8 ðáñïõ-
óéÜæåôáé Ýíá ôìÞìá êþäéêá ODMG C++ OML, ôï ïðïßï êáôáóêåõÜæåé Ýíá íÝï
áíôéêåßìåíï ãéá ôçí êëÜóç ÕðïêáôÜóôçìá (Branch).

d Database accountDB;
accountDB->open("ACCOUNT DATABASE");
d Transaction MyTransaction;
MyTransaction.begin();
d Ref<Branch>branch=new (accountDB,"Branch")Branch;
branch->name="New Branch";
branch->address.city="New City";
branch->address.street="New Street";
branch->address.postal code="54321";
MyTransaction.end();

Ó÷Þìá 18.8: ÔìÞìá êþäéêá ODMG C++ OML ãéá äçìéïõñãßá íÝïõ õðïêáôá-
óôÞìáôïò.

Ç ðñïóðÝëáóç óôá áíôéêåßìåíá ôçò ÂÄ ìðïñåß íá ðñáãìáôïðïéçèåß êáé ìå


Ýíáí áêüìç ôñüðï. ÌÝóá áðü Ýíá ðñüãñáììá C++ ODL/OML ìðïñïýìå íá èÝ-
ôïõìå åñùôÞìáôá ÷ñçóéìïðïéþíôáò åíóùìáôùìÝíåò åíôïëÝò ôçò OQL. Ãéá ðáñÜ-
äåéãìá, ç áíáæÞôçóç ôïõ õðïêáôáóôçìÜôùí ðïõ âñßóêïíôáé óôç Èåóóáëïíßêç
ðñáãìáôïðïéåßôáé ÷ñçóéìïðïéþíôáò ôçí êëÜóç d OQL Query ùò åîÞò:

d_OQL_Query MyQuery;
MyQuery("SELECT b.name, b.address
480 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

FROM b IN branches
WHERE b.address.city=‘Èåóóáëïíßêç’");

18.3 ÐëåïíåêôÞìáôá êáé ÌåéïíåêôÞìáôá


Ôá áíôéêåéìåíïóôñåöÞò ÓÄÂÄ áðïôåëïýí ìßá åíáëëáêôéêÞ ëýóç óôï ðñüâëçìá
ôçò áðïèÞêåõóçò êáé äéá÷åßñéóçò ðïëýðëïêùí áíôéêåéìÝíùí. Ùóôüóï, õðÜñ÷ïõí
êáé ìåñéêÜ óïâáñÜ ìåéïíåêôÞìáôá ôçò ðñïóÝããéóçò áõôÞò. ÌåñéêÜ áðü ôá âáóé-
êüôåñá ðëåïíåêôÞìáôá ôùí áíôéêåéìåíïóôñåöþí ÓÄÂÄ åßíáé:
• Åíéó÷õìÝíåò äõíáôüôçôåò ìïíôåëïðïßçóçò. Ôï áíôéêåéìåíïóôñåöÝò ìï-
íôÝëï äåäïìÝíùí åðéôñÝðåé ôçí áíáðáñÜóôáóç ôïõ ðñáãìáôéêïý êüóìïõ ìå
ìåãáëýôåñç áêñßâåéá óå ó÷Ýóç ìå ôï ó÷åóéáêü ìïíôÝëï. Ç Ýííïéá ôïõ áíôé-
êåéìÝíïõ ðïõ ðåñéëáìâÜíåé äåäïìÝíá êáé ìåèüäïõò áíôáðïêñßíåôáé ðåñéó-
óüôåñï óôçí ðñáãìáôéêüôçôá. Ìå ôéò éåñáñ÷ßåò åîåéäßêåõóçò êáé óõìðåñß-
ëçøçò ìïíôåëïðïéïýíôáé ó÷åôéêÜ åýêïëá áêüìç êáé ðïëýðëïêåò ïíôüôçôåò
ôïõ ðñáãìáôéêïý êüóìïõ.
• Åðåêôáóéìüôçôá. Óå Ýíá áíôéêåéìåíïóôñåöÝò ÓÄÂÄ ìðïñïýìå íá ïñßóïõìå
íÝåò êëÜóåéò áíôéêåéìÝíùí ÷ñçóéìïðïéþíôáò ôéò Þäç õðÜñ÷ïõóåò. Ìå ôç
÷ñÞóç ôçò áðëÞò êáé ôçò ðïëëáðëÞò êëçñïíïìéêüôçôáò êáé ôçí åöáñìïãÞ
ôïõ ðïëõìïñöéóìïý ìðïñïýìå íá ðáñÜãïõìå íÝåò êëÜóåéò áíôéêåéìÝíùí ðïõ
êëçñïíïìïýí ÷áñáêôçñéóôéêÜ êáé ìåèüäïõò Üëëùí êëÜóåùí. ¸ôóé áðïöåý-
ãåôáé ç åðáíÜëçøç ôïõ ïñéóìïý ÷áñáêôçñéóôéêþí êáé ìåèüäùí ðïõ Ý÷ïõí
Þäç ïñéóèåß óå Üëëåò êëÜóåéò.
• ÅîÝëéîç ó÷Þìáôïò ÂÄ. Ïé äõíáôüôçôåò ôïõ áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ
äåäïìÝíùí êáé ïé åõêïëßåò ðïõ ðáñÝ÷åé ôï ÓÄÂÄ ìðïñïýí íá ÷ñçóéìïðïéç-
èïýí ãéá ôçí åîÝëéîç ôïõ ó÷Þìáôïò (schema evolution) ôçò ÂÄ. Ç åîÝëéîç
ôïõ ó÷Þìáôïò åßíáé áñêåôÜ äýóêïëç óôá ó÷åóéáêÜ óõóôÞìáôá, äéüôé åðéöÝ-
ñåé ðïëëÝò áëëáãÝò óôç ëïãéêÞ ôùí åöáñìïãþí.
• ÕðïóôÞñéîç óõíáëëáãþí ìåãÜëçò äéÜñêåéáò. Ï ôñüðïò äéá÷åßñéóçò êáôÜ
ôçí åêôÝëåóç ôùí ôáõôü÷ñïíùí óõíáëëáãþí áðü ôá ó÷åóéáêÜ óõóôÞìáôá
ïäçãåß óå ðåñéïñéóìÝíç áðüäïóç üôáí ïé óõíáëëáãÝò Ý÷ïõí ìåãÜëç äéÜñ-
êåéá. Ôá áíôéêåéìåíïóôñåöÞ óõóôÞìáôá õëïðïéïýí äéáöïñåôéêïýò ìç÷á-
íéóìïýò ìå áðïôÝëåóìá ïé óõíáëëáãÝò ìåãÜëçò äéÜñêåéáò íá åêôåëïýíôáé
áðïäïôéêüôåñá.
Óôá âáóéêüôåñá ìåéïíåêôÞìáôá ôùí áíôéêåéìåíïóôñåöþí ÓÄÂÄ óõãêáôáëÝ-
ãïíôáé ôá åîÞò:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 481

• ¸ëëåéøç êáèïñéóìÝíïõ ìïíôÝëïõ. ÐáñÜ ôá ðëåïíåêôÞìáôá ôïõ áíôéêåéìå-


íïóôñåöïýò ìïíôÝëïõ äåí õðÜñ÷åé êÜðïéï óõãêåêñéìÝíï ðñüôõðï ðïõ íá
áêïëïõèåßôáé áðü üëïõò ôïõò êáôáóêåõáóôÝò óõóôçìÜôùí. Ôï ìïíôÝëï ðïõ
Ý÷åé ðñïôåßíåé ç ODMG Ý÷åé êáèéåñùèåß ùò de facto ðñüôõðï.
• Ðïëõðëïêüôçôá. Ïé ìç÷áíéóìïß áðïèÞêåõóçò áíôéêåéìÝíùí, äéá÷åßñéóçò
óõíáëëáãþí, åîÝëéîçò ó÷Þìáôïò ôçò âÜóçò êáé åðåîåñãáóßáò åñùôçìÜôùí
åßíáé áñêåôÜ ðïëýðëïêïé. Ç ðïëõðëïêüôçôá áõôÞ ïäçãåß óôçí õëïðïß-
çóç óõóôçìÜôùí ðïõ åßíáé áðáéôçôéêüôåñá êáé äõóêïëüôåñá óôç äéá÷åßñéóÞ
ôïõò.
• Ç âåëôéóôïðïßçóç åñùôçìÜôùí âëÜðôåé ôçí åíèõëÜêùóç. Ç äéáäéêáóßá
ôçò âåëôéóôïðïßçóçò åñùôçìÜôùí áðáéôåß ôç ãíþóç äéáöüñùí ðëçñïöïñéþí
ó÷åôéêÜ ìå ôç öýóç ôùí áíôéêåéìÝíùí. Ãéá íá ãßíïõí ïé ðëçñïöïñßåò áõôÝò
äéáèÝóéìåò óôï âåëôéóôïðïéçôÞ åñùôçìÜôùí ðñÝðåé íá åßíáé äõíáôÞ ç áð’
åõèåßáò ðñïóðÝëáóç óôá áíôéêåßìåíá, êÜôé ðïõ êáôáóôñáôçãåß ôçí åíèõëÜ-
êùóç.
• ¸ëëåéøç õðïóôÞñéîçò üøåùí. ÐïëëÜ áðü ôá óýã÷ñïíá áíôéêåéìåíïóôñåöÞ
óõóôÞìáôá äåí õðïóôçñßæïõí ìç÷áíéóìü üøåùí, ðáñÜ ôá ðïëëÜ ðëåïíåêôÞ-
ìáôá ðïõ ðñïóöÝñïõí.

18.4 Óýíïøç
Ç áäõíáìßá ôïõ ó÷åóéáêïý ìïíôÝëïõ äåäïìÝíùí óôçí áêñéâÞ áíáðáñÜóôáóç ôïõ
ðñáãìáôéêïý êüóìïõ êáé óôçí õðïóôÞñéîç ôùí óýã÷ñïíùí åöáñìïãþí ïäÞãçóå
ôïõò åñåõíçôÝò óôçí õéïèÝôçóç Üëëùí ìïíôÝëùí. Ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï,
ãíùóôü áðü ôéò áíôéêåéìåíïóôñåöåßò ãëþóóåò ðñïãñáììáôéóìïý, ÷ñçóéìïðïéåßôáé
ãéá ôç ìïíôåëïðïßçóç óýíèåôùí ïíôïôÞôùí ôïõ ðñáãìáôéêïý êüóìïõ. Ôá áíôé-
êåéìåíïóôñåöÞ ÓÄÂÄ óôçñßæïõí ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí êáé
Ý÷ïõí ðïëëÝò äõíáôüôçôåò ðïõ áðïõóéÜæïõí áðü ôá ó÷åóéáêÜ ÓÄÂÄ. Ùóôüóï,
ðáñïõóéÜæïõí êáé ìåñéêÜ óïâáñÜ ìåéïíåêôÞìáôá ðïõ äõóêïëåýïõí ôçí åõñåßá
÷ñÞóç ôïõò: áðïõóßá êáèïñéóìÝíïõ ìïíôÝëïõ, áõîçìÝíç ðïëõðëïêüôçôá, ç âåë-
ôéóôïðïßçóç âëÜðôåé ôçí åíèõëÜêùóç ôùí áíôéêåéìÝíùí, áðïõóßá õðïóôÞñéîçò
üøåùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


18.1. ÐïéÜ ðñïâëÞìáôá ôùí ó÷åóéáêþí óõóôçìÜôùí ïäÞãçóáí ôïõò åñåõíçôÝò
óôç ìåëÝôç íÝùí ìïíôÝëùí ãéá ôçí áíáðáñÜóôáóç ôùí äåäïìÝíùí;
482 ÊåöÜëáéï 18. ÁíôéêåéìåíïóôñåöÞ ÓÄÂÄ

18.2. ÐåñéãñÜøôå ôéò Ýííïéåò áíôéêåßìåíï, ìÝèïäïò, êëÜóç áíôéêåéìÝíùí êáé äþ-
óôå Ýíá ðáñÜäåéãìá.

18.3. Èåùñåßóôå Ýíá óýóôçìá ôï ïðïßï ìðïñåß íá áðïèçêåýåé áíôéêåßìåíá. Ìðï-


ñåß íá èåùñçèåß üôé ôï óýóôçìá áõôü áðïôåëåß ÓÄÂÄ; Äéêáéïëïãåßóôå ôçí áðÜ-
íôçóÞ óáò.

18.4. Åíôïðßóôå ôéò äéáöïñÝò ìåôáîý ôùí áíôéêåéìÝíùí ôïõ áíôéêåéìåíïóôñåöïýò


ìïíôÝëïõ êáé ïíôïôÞôùí ôïõ ìïíôÝëïõ ïíôïôÞôùí-óõó÷åôßóåùí.

18.5. Íá ðåñéãñáöåß ç ÷ñçóéìüôçôá ôçò êëçñïíïìéêüôçôáò ôùí ÷áñáêôçñéóôéêþí.


Äþóôå Ýíá áðëü ðáñÜäåéãìá. Ôé ðñïóöÝñåé ç ðïëëáðëÞ êëçñïíïìéêüôçôá; Íá
äþóåôå Ýíá ðáñÜäåéãìá êëÜóçò üðïõ áðáéôåßôáé ç êëçñïíïìéêüôçôá ÷áñáêôçñé-
óôéêþí áðü ðïëëÝò êëÜóåéò.

18.6. Èåùñåßóôå ìßá åôáéñåßá êáôáóêåõÞò ï÷çìÜôùí, ç ïðïßá êáôáóêåõÜæåé åðé-


âáôéêÜ áõôïêßíçôá, öïñôçãÜ êáé ï÷Þìáôá 4x4. Ó÷åäéÜóôå ôï ó÷Þìá ôçò ÂÜóçò
ÄåäïìÝíùí åðéëÝãïíôáò ôá êáôÜëëçëá ÷áñáêôçñéóôéêÜ êáé ÷ñçóéìïðïéþíôáò êëç-
ñïíïìéêüôçôá áí áðáéôåßôáé.

18.7. ÁíáöÝñåôå ôéò äéáöïñÝò ìåôáîý ôùí ãëùóóþí ODMG ODL êáé ODMG
OQL.

18.8. Ôé ãíùñßæåôå ãéá ôéò äåóìåýóåéò ôçò ODMG ãéá ôç ãëþóóá C++;

18.9. ÁíáöÝñåôå ðëåïíåêôÞìáôá êáé ìåéïíåêôÞìáôá ôùí áíôéêåéìåíïóôñåöþí


ÓÄÂÄ.

18.10. ×ñçóéìïðïéÞóôå ôï áíôéêåéìåíïóôñåöÝò ìïíôÝëï äåäïìÝíùí ãéá ôç ìïíôå-


ëïðïßçóç ôçò ÂÜóçò ÄåäïìÝíùí ôçò óõíäñïìçôéêÞò çëåêôñïíéêÞò âéâëéïèÞêçò ðïõ
ðáñïõóéÜæåôáé óôï Ó÷Þìá 4.1.
19
Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

Óôï ðñïçãïýìåíï êåöÜëáéï áíáöÝñáìå üôé äýï åßíáé ïé ìåèïäïëïãßåò ðïõ áêï-
ëïõèïýíôáé ãéá ôçí êáôáóêåõÞ ÓÄÂÄ ðïõ åðéôñÝðïõí ôçí áðïäïôéêÞ õðïóôÞñéîç
ôùí óýã÷ñïíùí åöáñìïãþí. Óôï êåöÜëáéï áõôü åîåôÜæïõìå ôç äåýôåñç åíáëëá-
êôéêÞ ëýóç ðïõ áöïñÜ óôçí åðÝêôáóç ôïõ ó÷åóéáêïý ìïíôÝëïõ êáé ôçí åíßó÷õóç
ôùí ó÷åóéáêþí ÓÄÂÄ ìå íÝåò äõíáôüôçôåò. Ïé ëüãïé ðïõ ïäÞãçóáí ôïõò åñåõ-
íçôÝò ðñïò áõôÞí ôçí êáôåýèõíóç åßíáé áö’ åíüò ôá ìåéïíåêôÞìáôá ðïõ ðáñïõ-
óéÜæïõí ôá áíôéêåéìåíïóôñåöÞ ÓÄÂÄ êáé áö’ åôÝñïõ ôï ãåãïíüò üôé ôá ó÷åóéáêÜ
ÓÄÂÄ Ý÷ïõí ëýóåé ðïëëÜ ðñïâëÞìáôá ðïõ áöïñïýí óôç äéá÷åßñéóç äåäïìÝíùí,
êáé åðïìÝíùò áðïôåëïýí ìßá êáëÞ âÜóç ãéá ôçí êáôáóêåõÞ íÝùí óõóôçìÜôùí ìå
ðåñéóóüôåñåò äõíáôüôçôåò.
ÁðïôÝëåóìá ôçò åñåõíçôéêÞò áõôÞò ðñïóðÜèåéáò Þôáí ç äçìéïõñãßá ìßáò íÝáò
êáôçãïñßáò ÓÄÂÄ ðïõ ïíïìÜæïíôáé áíôéêåéìåíï-ó÷åóéáêÜ ÓÄÂÄ (object-relatio-
nal DMBS) êáé ðñïÝñ÷ïíôáé áðü ôïí åìðëïõôéóìü ôùí ó÷åóéáêþí ÓÄÂÄ ìå
áíôéêåéìåíïóôñåöåßò éäéüôçôåò. Ùóôüóï, ç õðïóôÞñéîç áíôéêåéìÝíùí áðü Ýíá
ó÷åóéáêü óýóôçìá ðñïûðïèÝôåé áñêåôÝò ìåôáâïëÝò óôçí áðïèÞêåõóç êáé äéá-
÷åßñéóç ôùí äåäïìÝíùí. Åðßóçò, áðáéôåßôáé åðÝêôáóç ôçò ãëþóóáò SQL Ýôóé
þóôå íá äßíåôáé ç äõíáôüôçôá óôá ðñïãñÜììáôá åöáñìïãÞò íá åêìåôáëëåõèïýí
ôéò íÝåò äõíáôüôçôåò ôïõ óõóôÞìáôïò. ÔÝëïò, áðáéôïýíôáé áëëáãÝò êáé óôïí

483
484 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

ôñüðï âåëôéóôïðïßçóçò êáé åðåîåñãáóßáò ôùí åñùôçìÜôùí, êáèþò ç õðïóôÞ-


ñéîç áíôéêåéìÝíùí ðñïûðïèÝôåé äéáöïñåôéêïýò ìç÷áíéóìïýò åêôßìçóçò êüóôïõò
êáé åêôÝëåóçò ôùí åíôïëþí ôçò ãëþóóáò ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí. Óôï
âéâëßï [Stonebraker 1996] õðÜñ÷åé ìßá ëåðôïìåñÞò áíÜëõóç ôùí åííïéþí ôùí
áíôéêåéìåíï-ó÷åóéáêþí óõóôçìÜôùí, åíþ óôçí åñãáóßá [Devarakonda 2001] ï áíá-
ãíþóôçò ìðïñåß íá âñåé ÷ñÞóéìåò ðëçñïöïñßåò.

19.1 ÅìöùëéáóìÝíåò Ó÷Ýóåéò


Ìßá áðü ôéò áðáéôÞóåéò ôïõ ó÷åóéáêïý ìïíôÝëïõ åßíáé ç áôïìéêüôçôá ôùí ôéìþí óå
ìßá óôÞëç (âë. ÊåöÜëáéï 5). Ï êáíüíáò áõôüò ðñïóäéïñßæåé óôçí ïõóßá êáé ôçí
ðñþôç êáíïíéêÞ ìïñöÞ (1NF) üðùò Ý÷ïõìå áíáöÝñåé óôï ÊåöÜëáéï 7. Ãéá ôçí
õðïóôÞñéîç ðïëýðëïêùí áíôéêåéìÝíùí èá ðñÝðåé ïé ó÷Ýóåéò íá åðéôñÝðïõí óå Ýíá
÷áñáêôçñéóôéêü íá äÝ÷åôáé ôéìÝò ðïõ äåí åßíáé êáô´áíÜãêç áôïìéêÝò. Áõôü ïäçãåß
óå åìöùëéáóìÝíåò ó÷Ýóåéò (nested relations), üðïõ ç ôéìÞ åíüò ÷áñáêôçñéóôéêïý
ìßáò ó÷Ýóçò ìðïñåß íá åßíáé ìßá Üëëç ó÷Ýóç. Óôçí ðåñßðôùóç áõôÞ ç ó÷Ýóç
äåí éêáíïðïéåß ôçí ðñþôç êáíïíéêÞ ìïñöÞ (non-first normal form, N1NF). Ôï
ìïíôÝëï ðïõ ðñïêýðôåé áðü ôï ó÷åóéáêü ìïíôÝëï åðéôñÝðïíôáò ó÷Ýóåéò N1NF
êáëåßôáé ìïíôÝëï åìöùëéáóìÝíùí ó÷Ýóåùí (nested-relational model) êáé áðïôåëåß
ìßá ðñþôç ðñïóÝããéóç åðÝêôáóçò ôïõ ó÷åóéáêïý ìïíôÝëïõ ãéá ôçí õðïóôÞñéîç
ðïëýðëïêùí ôýðùí äåäïìÝíùí.
Áò åîåôÜóïõìå Ýíá ðáñÜäåéãìá åöáñìïãÞò ôïõ ìïíôÝëïõ åìöùëéáóìÝíùí ó÷Ý-
óåùí. ¸÷åé áíáöåñèåß óôï ÊåöÜëáéï 4 üôé ôï ìïíôÝëï ÏÓ õðïóôçñßæåé ÷áñáêôç-
ñéóôéêÜ ðïëëáðëÞò ôéìÞò. ÊáôÜ ôç ìåôáôñïðÞ üìùò ôïõ ìïíôÝëïõ ÏÓ óå ó÷åóéáêü
(âë. ÊåöÜëáéï 5) Ýíá óýíèåôï ÷áñáêôçñéóôéêü ìåôáôñÝðåôáé óå ðßíáêá. Áò ðÜ-
ñïõìå ãéá ðáñÜäåéãìá ôï ÷áñáêôçñéóôéêü ôçëÝöùíï. ÊÜðïéïò ìðïñåß íá Ý÷åé
ðåñéóóüôåñïõò áðü Ýíáí ôçëåöùíéêïýò áñéèìïýò. Óýìöùíá üìùò ìå ôï ó÷åóéáêü
ìïíôÝëï, åßôå èá áðïèçêåõèåß ìüíï Ýíáò áñéèìüò, ðñÜãìá ðïõ åßíáé áñêåôÜ ðå-
ñéïñéóôéêü, åßôå èá äçìéïõñãçèåß Ýíáò îå÷ùñéóôüò ðßíáêáò ðïõ èá ðåñéÝ÷åé åêôüò
áðü ôïõò ôçëåöùíéêïýò áñéèìïýò êáé ôï ðñùôåýïí êëåéäß ôïõ ðßíáêá þóôå íá
ìðïñïýìå íá áíáêôÞóïõìå ôïõò ôçëåöùíéêïýò áñéèìïýò åíüò ðñïóþðïõ.
¸óôù ëïéðüí ç ïíôüôçôá ÓõíäñïìçôÞò üðùò ðáñïõóéÜæåôáé óôï Ó÷Þìá 19.1á.
Óôï Ó÷Þìá 19.1â áðåéêïíßæåôáé Ýíá óôéãìéüôõðï ôïõ ó÷Þìáôïò ðïõ ðñïêýðôåé ìåôÜ
áðü ôç ìåôáôñïðÞ ôïõ ìïíôÝëïõ ÏÓ óå ó÷åóéáêü ìå ôçí õðïóôÞñéîç åíüò ìüíï
ôçëåöùíéêïý áñéèìïý. Ãéá ôçí õðïóôÞñéîç ðïëëþí ôçëåöùíéêþí áñéèìþí ôï äéÜ-
ãñáììá ÏÓ ìåôáôñÝðåôáé óå ó÷åóéáêü ìïíôÝëï üðùò öáßíåôáé óôï Ó÷Þìá 19.1ã.
ÔÝëïò, óôï Ó÷Þìá 19.1ä âëÝðïõìå ôçí ðñïóÝããéóç óýìöùíá ìå ôï ìïíôÝëï åìöù-
ëéáóìÝíùí ó÷Ýóåùí. Ç ëýóç ðïõ ðñïôåßíåôáé óôï Ó÷Þìá 19.1ä åßíáé óáöþò êïì-
øüôåñç áðü áõôÞ ôïõ 19.1ã. Ç äéÜóðáóç ôùí äåäïìÝíùí ðïõ ðñïêýðôåé áðü ôçí
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 485

Κ ω δ ι κ ό ς
Ό ν ο  α Α Π Κ

Τ η λ έ φ ω ν ο
êùäéêüò üíïìá ôçëÝöùíï ÁÐÊ
Σ υ ν δ ρ ο  η τ ή ς
12 Ãéþñãïò 6977333222 12345
44 Ìáñßá 6945123456 54321
55 ÁëÝîáíäñïò 6937222999 11111
(á) (â)

êùäéêüò üíïìá ÁÐÊ êùäéêüò ôçëÝöùíï


12 Ãéþñãïò 12345 12 6977333222
44 Ìáñßá 54321 44 6945123456
55 ÁëÝîáíäñïò 11111 55 6937222999
(ã)

êùäéêüò üíïìá ôçëÝöùíï ÁÐÊ


{6977333222
12 Ãéþñãïò 2310111111 12345
2102444555}
44 Ìáñßá 6945123456 54321
55 ÁëÝîáíäñïò 6937222999 11111
(ä)

Ó÷Þìá 19.1: ÅìöùëéáóìÝíåò ó÷Ýóåéò.

êáíïíéêïðïßçóç ôùí ó÷Ýóåùí Ý÷åé Üìåóç åðßäñáóç óôçí áðüäïóç ôïõ óõóôÞìáôïò
êáèþò áðáéôåßôáé ç åêôÝëåóç ðïëëþí ðñÜîåùí óýíäåóçò ãéá ôçí ðñïóðÝëáóç ôùí
äåäïìÝíùí. Åðßóçò, äåäïìÝíá ðïõ áöïñïýí ôçí ßäéá ïíôüôçôá áðïèçêåýïíôáé óå
äéáöïñåôéêÜ ôìÞìáôá ôçò äåõôåñåýïõóáò ìíÞìçò ìå áðïôÝëåóìá íá åêôåëïýíôáé
ðåñéóóüôåñåò ðñïóðåëÜóåéò áõîÜíïíôáò ôï ÷ñüíï åêôÝëåóçò ôùí åñùôçìÜôùí.

19.2 Ôï Ðñüôõðï SQL:1999 (SQL3)


¸íá áðü ôá äõíáôÜ óçìåßá ôùí ó÷åóéáêþí ÓÄÂÄ åßíáé ç åõêïëßá óôç äéáôýðùóç
åñùôçìÜôùí ìÝóù ôçò ãëþóóáò SQL. Ç õðïóôÞñéîç áíôéêåéìÝíùí êáé ðïëýðëï-
êùí ôýðùí äåäïìÝíùí áðü Ýíá ó÷åóéáêü óýóôçìá åðéâÜëëåé êáé ôçí åðÝêôáóç
ôçò ãëþóóáò SQL Ýôóé þóôå íá ìðïñïýìå íá åêìåôáëëåõôïýìå ôéò åðéðëÝïí ëåé-
ôïõñãßåò ôïõ óõóôÞìáôïò. Ãéá ôï óêïðü áõôü äçìéïõñãÞèçêå Ýíá íÝï ðñüôõðï ôçò
ãëþóóáò SQL ìå ôçí ïíïìáóßá SQL3 [ISO 1999a, ISO 1999b, Eisenberg 1999,
486 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

Eisenberg 2001, Gulutzan 1999], ôï ïðïßï åìðëïõôßæåé ôç ãëþóóá SQL ìå íÝá


óôïé÷åßá ôá âáóéêüôåñá áðü ôá ïðïßá åßíáé:

• õðïóôÞñéîç ôýðïõ ãñáììÞò,

• õðïóôÞñéîç áíôéêåéìÝíùí êáé åííïéþí ôïõ áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ,

• õðïóôÞñéîç áöáéñåôéêþí ôýðùí äåäïìÝíùí,

• ôýðïé äåäïìÝíùí ïñéæüìåíïé áðü ôï ÷ñÞóôç,

• äéáäéêáóßåò êáé óõíáñôÞóåéò ïñéæüìåíåò áðü ôï ÷ñÞóôç,

• õðïóôÞñéîç ìåãÜëùí áíôéêåéìÝíùí,

• áõôüìáôç åêôÝëåóç åíôïëþí ìåôÜ Þ ðñéí áðü åéóáãùãÞ, äéáãñáöÞ Þ åíçìÝ-


ñùóç äåäïìÝíùí.

19.2.1 ÕðïóôÞñéîç Ôýðïõ ÃñáììÞò


Ç SQL3 åðéôñÝðåé ôç äéá÷åßñéóç óýíèåôùí ÷áñáêôçñéóôéêþí. ¸íá ÷áñáêôçñé-
óôéêü ìðïñåß íá áðïôåëåßôáé áðü ðïëëÜ äéáöïñåôéêÜ ðåäßá ó÷çìáôßæïíôáò ìßá
ãñáììÞ. Åðßóçò, ìßá ãñáììÞ åíüò ðßíáêá ìðïñåß íá ÷ñçóéìïðïéçèåß ùò ðáñÜ-
ìåôñïò óå ìßá óõíÜñôçóç, íá áðïôåëåß ôéìÞ åðéóôñïöÞò ìßáò óõíÜñôçóçò Þ íá
áðïèçêåõèåß óå ìßá ìåôáâëçôÞ. Èåùñåßóôå ôïí ðßíáêá ÓõíäñïìçôÞò ï ïðïßïò
ðåñéÝ÷åé ôá ÷áñáêôçñéóôéêÜ êùäéêüò, üíïìá êáé äéåýèõíóç. Ôï ÷áñáêôçñéóôéêü
äéåýèõíóç åßíáé óýíèåôï êáé áðïôåëåßôáé áðü ôá ðåäßá ïäüò, áñéèìüò, ðüëç, ôá-
÷õäñïìéêüò êþäéêáò êáé ÷þñá. Ãéá ôçí êáôáóêåõÞ ôïõ ðßíáêá ÷ñçóéìïðïéåßôáé ç
åíôïëÞ CREATE TABLE ôçò SQL3. Ç äåóìåõìÝíç ëÝîç ROW äçëþíåé üôé áêïëïõèåß
ï ïñéóìüò ãñáììÞò ðïõ áðïôåëåß ôçí ðåñéãñáöÞ ôïõ ÷áñáêôçñéóôéêïý äéåýèõíóç:

CREATE TABLE ÓõíäñïìçôÞò


(êùäéêüò INT,
üíïìá CHAR (50),
äéåýèõíóç ROW (ïäüò CHAR(30),
áñéèìüò CHAR(4),
ôá÷õäñïìéêüò_êþäéêáò CHAR(6),
ðüëç CHAR(30),
÷þñá CHAR(30)));

¸óôù ôþñá üôé èÝëïõìå íá ðñïóèÝóïõìå ìßá íÝá ãñáììÞ óôïí ðßíáêá Óõí-
äñïìçôÞò. Ç åéóáãùãÞ ðñáãìáôïðïéåßôáé ìå ôçí åêôÝëåóç ôçò åíôïëÞò INSERT
ùò åîÞò:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 487

INSERT INTO ÓõíäñïìçôÞò


VALUES
(1000, ‘A. Ðáðáãåùñãßïõ’,
(‘Öéëýñùí’,‘13’,‘56225’,‘Èåóóáëïíßêç’,‘ÅëëÜäá’));

19.2.2 Ôýðïé Ïñéæüìåíïé áðü ôï ×ñÞóôç


Ïé ôýðïé äåäïìÝíùí ôïõò ïðïßïõò õðïóôçñßæåé Ýíá ÓÄÂÄ óõíÞèùò äåí åðáñêïýí
ãéá ôçí êÜëõøç ôùí áðáéôÞóåùí üëùí ôùí åöáñìïãþí. Ãéá ôï ëüãï áõôü ç SQL3
äßíåé ôç äõíáôüôçôá íá ïñßæïíôáé íÝïé ôýðïé äåäïìÝíùí ìÝóù ôçò åíôïëÞò CREATE
TYPE. Ïé ôýðïé áõôïß êáëïýíôáé ôýðïé ïñéæüìåíïé áðü ôï ÷ñÞóç (user-defined
types, UDT). Ç äçìéïõñãßá íÝùí ôýðùí äåäïìÝíùí ðñïóöÝñåé óçìáíôéêÞ åõêïëßá
óôçí õëïðïßçóç ðïëýðëïêùí áíôéêåéìÝíùí ìå óôü÷ï ôç ñåáëéóôéêÞ áíáðáñÜóôáóç
ôïõ ðñáãìáôéêïý êüóìïõ. Áò åîåôÜóïõìå Ýíá ðáñÜäåéãìá ïñéóìïý åíüò íÝïõ
ôýðïõ äåäïìÝíùí ãéá ôç äéá÷åßñéóç ïñèïãùíßùí ãåùìåôñéêþí ó÷çìÜôùí:

CREATE TYPE RectType AS


(x1 INT, x2 INT, y1 INT, y2 INT,
FUNCTION getArea(r RectType) RETURNS FLOAT
RETURN (x2-x1)*(y2-y1);
END,
FUNCTION getPerimeter(r RectType) RETURNS FLOAT
RETURN 2*(x2-x1)+ 2*(y2-y1);
END)
REF IS SYSTEM GENERATED
INSTANTIABLE
NOT FINAL;

Ç ëÝîç INSTATIABLE äçëþíåé üôé ìðïñïýìå íá äçìéïõñãÞóïõìå óôéãìéüôõðá ôÝ-


ôïéïõ ôýðïõ. Áí üìùò èÝëïõìå íá åðéôñÝøïõìå ôç äçìéïõñãßá óôéãìéüôõðùí ìüíï
ãéá ôïõò ôýðïõò ðïõ êëçñïíïìïýí, ôüôå ÷ñçóéìïðïéïýìå NOT INSTATIABLE. Ç
÷ñÞóç ôùí ëÝîåùí NOT FINAL äçëþíåé üôé åðéôñÝðåôáé íá äçìéïõñãÞóïõìå íÝ-
ïõò ôýðïõò ÷ñçóéìïðïéþíôáò ôïí ôýðï RectType óôçí éåñáñ÷ßá. Ç ÷ñÞóç ôùí
ëÝîåùí REF IS SYSTEM GENERATED èá ðåñéãñáöåß óôç óõíÝ÷åéá.
¸íáò ôýðïò ïñéæüìåíïò áðü ôï ÷ñÞóôç ìðïñåß íá ÷ñçóéìïðïéçèåß åßôå ãéá
ôçí êáôáóêåõÞ Üëëùí ðïëõðëïêüôåñùí ôýðùí äåäïìÝíùí åßôå ùò ðåäßï ïñéóìïý
ìßáò óôÞëçò. Áò åîåôÜæïõìå ôéò äýï áõôÝò ðåñéðôþóåéò. Ï ôýðïò RectType ðïõ
ïñßóèçêå ðñïçãïõìÝíùò, õðïèÝôåé ôï ïñèïãþíéï Ý÷åé ôéò ðëåõñÝò ôïõ ðáñÜëëçëåò
ìå ôïõò Üîïíåò ôïõ óõóôÞìáôïò óõíôåôáãìÝíùí. Ãéá ôçí áíáðáñÜóôáóç åíüò
ïñèïãùíßïõ ÷ùñßò áõôüí ôïí ðåñéïñéóìü, ðñÝðåé íá ðñï÷ùñÞóïõìå óå ìåñéêÝò
ôñïðïðïéÞóåéò. Áñ÷éêÜ ãéá ôçí áíáðáñÜóôáóç ôïõ ïñèïãùíßïõ ÷ñåéáæüìáóôå
488 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

ôÝóóåñá óçìåßá ãéá ôçí áíáðáñÜóôáóç ôùí ôåóóÜñùí ãùíéþí. Ïñßæïõìå ôïí
ôýðï äåäïìÝíùí PointType ùò åîÞò:

CREATE TYPE PointType AS


(pointNo INT NOT NULL, x INT, y INT,
PRIMARY KEY (pointID),
FUNCTION ...,
FUNCTION ...,
...
);

Óôç óõíÝ÷åéá ïñßæïõìå ôïí ôýðï äåäïìÝíùí GeneralRectType ùò åîÞò ÷ñçóé-


ìïðïéþíôáò ôïí ôýðï äåäïìÝíùí PointType:

CREATE TYPE GeneralRectType AS


(p1 PointType, p2 PointType, p3 PointType, p4 PointType,
FUNCTION ...,
FUNCTION ...,
...
);

Ç ÷ñÞóç åíüò íÝïõ ôýðïõ äåäïìÝíùí ùò ðåäßï ïñéóìïý ìßáò óôÞëçò äåí äéáöÝñåé
áðü ôç ÷ñÞóç åíüò áðëïý ôýðïõ äåäïìÝíùí:

CREATE TABLE êýêëùìáVLSI


(êùäéêüò INT, ðåñéï÷Þ GeneralRectType);

Ç SQL3 åðéôñÝðåé ôï ó÷çìáôéóìü éåñáñ÷ßáò åîåéäßêåõóçò ìåôáîý ôùí íÝùí


ôýðùí äåäïìÝíùí ìÝóù áðëÞò êëçñïíïìéêüôçôáò (ç ðïëëáðëÞ êëçñïíïìéêüôçôá
äåí õðïóôçñßæåôáé áðü ôçí SQL3). Èåùñåßóôå ìßá åöáñìïãÞ ðïõ áðáéôåß êÜðïéá
áðü ôá ãåùìåôñéêÜ áíôéêåßìåíá íá Ý÷ïõí Ýíá óõãêåêñéìÝíï ÷ñþìá ðïõ äçëþ-
íåôáé óå ìïñöÞ RGB. Ìðïñïýìå íá äçìéïõñãÞóïõìå Ýíá íÝï ôýðï äåäïìÝíùí
ColoredGeneralRectType, ï ïðïßïò êëçñïíïìåß ôá ÷áñáêôçñéóôéêÜ êáé ôéò
ìåèüäïõò ôïõ ôýðïõ GeneralRectType:

CREATE TYPE ColoredGeneralRectType UNDER GeneralRectType


AS
(colorR INT, colorG INT, colorB INT,
FUNCTION ...,
...
);
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 489

Ï ôýðïò ColoredGeneralRectType ðåñéÝ÷åé ôá ÷áñáêôçñéóôéêÜ colorR, col-


orG êáé colorB êáé êëçñïíïìåß ôá ÷áñáêôçñéóôéêÜ êáé ôéò ìåèüäïõò ôïõ ôýðïõ
GeneralRectType. Åðßóçò, ìÝóù ôïõ ðïëõìïñöéóìïý êÜðïéåò áðü ôéò ìåèü-
äïõò ôïõ ôýðïõ GeneralRectType ìðïñïýí íá åðáíá-ïñéóèïýí.
Ãéá ëüãïõò óõìâáôüôçôáò ìå ôá ðñïçãïýìåíá ðñüôõðá ôçò SQL, áðáéôåßôáé ç
÷ñÞóç ôçò åíôïëÞò CREATE TABLE áêüìç êáé áí ï ðßíáêáò áðïôåëåßôáé ìüíï áðü
ìßá óôÞëç. Áõôüò åßíáé êáé ï ìïíáäéêüò ôñüðïò äéáôÞñçóçò ôïõ óôéãìéüôõðïõ åíüò
ôýðïõ äåäïìÝíùí ïñéæüìåíïõ áðü ôï ÷ñÞóôç. Ãéá ðáñÜäåéãìá, ãéá ôç áðïèÞêåõóç
óôéãìéüôõðùí ôïõ ôýðïõ PointType, ðñÝðåé íá êáôáóêåõÜóïõìå Ýíáí ðßíáêá
óçìåßùí ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ:

CREATE TABLE Óçìåßá


(óçìåßï PointType,
PRIMARY KEY (pointNo);

19.2.3 Äéáäéêáóßåò êáé ÓõíáñôÞóåéò Ïñéæüìåíåò áðü ôï ×ñÞóôç


¸íá áíôéêåéìåíï-ó÷åóéáêü ÓÄÂÄ ðñÝðåé íá åðéôñÝðåé ôïí ïñéóìü íÝùí äéáäéêá-
óéþí êáé óõíáñôÞóåùí ìå óôü÷ï ôçí åðåîåñãáóßá ôùí äåäïìÝíùí êáé ôçí ðáñá-
ãùãÞ áðïôåëåóìÜôùí. Ìßá äéáäéêáóßá Þ óõíÜñôçóç ìðïñåß íá ïñéóèåß åßôå ùò
ìÝèïäïò åíüò ôýðïõ äåäïìÝíùí åßôå ùò ìÝèïäïò ôïõ ó÷Þìáôïò ôçò ÂÄ, êáé ìðï-
ñåß íá õëïðïéçèåß åßôå åîùôåñéêÜ, ìå ôç âïÞèåéá ìßáò ãëþóóáò ðñïãñáììáôéóìïý
(ð.÷., C++), åßôå åóùôåñéêÜ áðïêëåéóôéêÜ ìå åíôïëÝò ôçò SQL3. Ïé åîùôåñéêÝò
äéáäéêáóßåò óõíÞèùò ÷ñçóéìïðïéïýíôáé üôáí ç åðéèõìçôÞ ëåéôïõñãéêüôçôá äåí åß-
íáé äéáèÝóéìç áðü ôçí SQL3 Þ üôáí õðÜñ÷ïõí Ýôïéìåò âéâëéïèÞêåò óõíáñôÞóåùí
ðïõ åêôåëïýí ðïëýðëïêåò åñãáóßåò êáé èÝëïõìå íá ôéò ÷ñçóéìïðïéÞóïõìå ÷ùñßò
íá ôéò õëïðïéÞóïõìå áðü ôçí áñ÷Þ. Áêïëïõèåß Ýíá ðáñÜäåéãìá ïñéóìïý ìßáò
åîùôåñéêÞò óõíÜñôçóçò:

CREATE FUNCTION MyFunction (IN MyParameter)


RETURNS FLOAT
EXTERNAL NAME MyFunctionFileName
LANGUAGE C
PARAMETER STYLE SQL
DETERMINISTIC
NO SQL;

Ìå ôçí Ýêöñáóç EXTERNAL NAME äçëþíïõìå ôï üíïìá ôïõ åîùôåñéêïý áñ÷åßïõ


ðïõ ðåñéÝ÷åé ôçí õëïðïßçóç ôçò óõíÜñôçóçò. Óôç óõíÝ÷åéá äçëþíïõìå ôç ãëþóóá
ðïõ Ý÷åé ÷ñçóéìïðïéçèåß ãéá ôçí õëïðïßçóç (LANGUAGE C). Äçëþíïõìå üôé ôï
ðÝñáóìá ôùí ðáñáìÝôñùí áêïëïõèåß ôïõò êáíüíåò ôçò SQL ÷ñçóéìïðïéþíôáò
490 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

ôçí Ýêöñáóç PARAMETER STYLE SQL. Ç äåóìåõìÝíç ëÝîç DETERMINISTIC


äçëþíåé üôé ç óõíÜñôçóç åðéóôñÝöåé ôï ßäéï áðïôÝëåóìá ãéá ôéò ßäéåò ôéìÝò ôùí
ðáñáìÝôñùí åéóüäïõ. Ç ëÝîç IN äçëþíåé üôé ç ðáñÜìåôñïò MyParameter åß-
íáé ìüíï ãéá áíÜãíùóç, åíþ êÜèå åíçìÝñùóç ôçò ðáñáìÝôñïõ áðü ôç óõíÜñôçóç
äåí èá Ý÷åé áðïôÝëåóìá ìåôÜ ôï ôÝëïò ôçò åêôÝëåóçò. Ãéá íá äçëþóïõìå üôé
ìßá ðáñÜìåôñïò ÷ñçóéìïðïéåßôáé ãéá êáôá÷þñçóç ôéìÞò ÷ñçóéìïðïéïýìå ôç ëÝîç
OUT. ÔÝëïò, ç Ýêöñáóç NO SQL äçëþíåé üôé äåí ðåñéÝ÷ïíôáé åíôïëÝò SQL óôç
óõíÜñôçóç. Ïé ðëçñïöïñßåò áõôÝò åßíáé áðáñáßôçôåò þóôå íá ìðïñåß íá êëç-
èåß ç óõíÜñôçóç áðü Ýíá åñþôçìá SQL3 êáé íá ãßíåé óùóôÞ áíáãíþñéóç êáé
ðñïóäéïñéóìüò ôùí ôéìþí ôùí ðáñáìÝôñùí.

19.2.4 Ôýðïò ÁíáöïñÜò êáé Ôáõôüôçôá ÁíôéêåéìÝíïõ


¼ðùò Ý÷ïõìå áíáöÝñåé óôï ðñïçãïýìåíï êåöÜëáéï ç ôáõôüôçôá åíüò áíôéêåéìÝ-
íïõ åßíáé ìïíáäéêÞ êáé ðáñáìÝíåé ç ßäéá óå üëç ôç äéÜñêåéá æùÞò ôïõ áíôéêåéìÝ-
íïõ. Áêüìç êáé ìåôÜ ôç äéáãñáöÞ åíüò áíôéêåéìÝíïõ ç ôáõôüôçôÜ ôïõ äåí åðáíá-
÷ñçóéìïðïéåßôáé ðïôÝ. Ç ôáõôüôçôá åíüò áíôéêåéìÝíïõ ìðïñåß íá ÷ñçóéìïðïéçèåß
ãéá íá áíáöåñèïýìå óôï áíôéêåßìåíï áõôü.
Ðñéí ôï ðñüôõðï SQL3 ï ìüíïò ôñüðïò íá ïñßóïõìå óõó÷Ýôéóç ìåôáîý äýï
ðéíÜêùí Þôáí ç ÷ñÞóç ôïõ îÝíïõ êëåéäéïý. Ç SQL3 åðéôñÝðåé ôç ÷ñÞóç ôýðïõ
áíáöïñÜò (reference type) ãéá ôïí ïñéóìü óõó÷åôßóåùí ìåôáîý ãñáììþí. Ìßá
ôéìÞ åíüò ôýðïõ áíáöïñÜò ìðïñåß íá áðïèçêåõèåß óå Ýíáí ðßíáêá êáé íá ÷ñçóé-
ìïðïéçèåß ùò Üìåóç áíáöïñÜ óå ìßá óõãêåêñéìÝíç ãñáììÞ åíüò Üëëïõ ðßíáêá.
ÐáñáôçñÞóôå ôçí ïìïéüôçôá ìåôáîý ôïõ ôýðïõ áíáöïñÜò êáé ôùí äåéêôþí óôç
ãëþóóá C/C++. Ç ôéìÞ ôïõ ôýðïõ áíáöïñÜò ÷ñçóéìïðïéåßôáé üðùò áêñéâþò êáé
ïé äåßêôåò. Ìå ôç ÷ñÞóç ôùí áíáöïñþí ìßá ãñáììÞ åíüò ðßíáêá ìðïñåß íá ìïéñá-
óèåß óå ðïëëïýò ðßíáêåò áðëïðïéþíôáò ôç äéáôýðùóç åñùôçìÜôùí ðïõ ðåñéÝ÷ïõí
ðñÜîåéò óýíäåóçò.
Áò åîåôÜóïõìå Ýíá ðáñÜäåéãìá åöáñìïãÞò ôïõ ôýðïõ áíáöïñÜò. ¸óôù Ýíá
óýíïëï óçìåßùí ôï ïðïßï áíáðáñéóôÜ ôç èÝóç (óõíôåôáãìÝíåò) ôùí êåñáéþí ìßá
åôáéñåßáò êéíçôÞò ôçëåöùíßáò, êáé Ýíá óýíïëï óõíäñïìçôþí ôçò åôáéñåßáò. Áíá-
ëüãùò ìå ôç èÝóç ðïõ âñßóêåôáé ï óõíäñïìçôÞò ðñÝðåé íá ãíùñßæïõìå áðü ðïéá
êåñáßá åîõðçñåôåßôáé (ðëçñïöïñßåò êõøÝëçò). Óôïí ðßíáêá ôùí óõíäñïìçôþí
ìðïñïýìå íá ïñßóïõìå Ýíá ÷áñáêôçñéóôéêü ðïõ èá áíáöÝñåôáé óôïí ðßíáêá ôùí
óçìåßùí. ¸ôóé ç åôáéñåßá ãíùñßæåé êÜèå óôéãìÞ óå ðïéÜ êõøÝëç âñßóêåôáé ï êÜèå
óõíäñïìçôÞò. Ï ïñéóìüò ôïõ ðßíáêá óõíäñïìçôþí Ý÷åé ùò åîÞò:

CREATE TABLE ×ñÞóôçòÊéíçôïýÔçëåöþíïõ


(êùäéêüò INT NOT NULL,
üíïìá VARCHAR(100),
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 491

ôçëÝöùíï VARCHAR(15),
êåñáßá REF(PointType) SCOPE Óçìåßá
REFERENCES ARE CHECKED
ON DELETE CASCADE,
PRIMARY KEY (êùäéêüò));

Ç ëÝîç SCOPE ïñßæåé üôé ïé ôéìÝò ôïõ ÷áñáêôçñéóôéêïý êåñáßá ëáìâÜíïíôáé ìüíï
áðü ôïí ðßíáêá Óçìåßá. Ç Ýêöñáóç REFERENCES ARE CHECKED ïñßæåé üôé èá
ðñáãìáôïðïéåßôáé Ýëåã÷ïò ãéá áêåñáéüôçôá áíáöïñþí. Ï Ýëåã÷ïò áêåñáéüôçôáò
áíáöïñþí áðåíåñãïðïéåßôáé ìå ôçí Ýêöñáóç REFERENCES ARE NOT CHECKED.

19.2.5 ÌåãÜëá Áíôéêåßìåíá


ÐïëëÝò öïñÝò ðáñïõóéÜæåôáé ç áíÜãêç ãéá ôçí áðïèÞêåõóç äåäïìÝíùí ìå ìåãÜëï
ìÝãåèïò ó÷åôéêÜ ìå ôá ìåãÝèç ðïõ õðïóôçñßæïõí ïé áðëïß ôýðïé äåäïìÝíùí. Èå-
ùñåßóôå ãéá ðáñÜäåéãìá Ýíá ìåãÜëï áñ÷åßï êåéìÝíïõ. Ïé ôýðïé äåäïìÝíùí CHAR
êáé VARCHAR Ý÷ïõí ðåñéïñéóìïýò ó÷åôéêÜ ìå ôï ìÝãéóôï ìÝãåèïò ìßáò óåéñÜò
÷áñáêôÞñùí. ÅðïìÝíùò, åßíáé áäýíáôï ôï êåßìåíï íá áðïèçêåõèåß óå ìßá ìå-
ôáâëçôÞ ôýðïõ CHAR Þ VARCHAR. Ç SQL3 ðáñÝ÷åé åíáëëáêôéêÝò ëýóåéò ãéá ôï
ðñüâëçìá áõôü, êáèþò õðïóôçñßæåé ìåãÜëá áíôéêåßìåíá (large objects, LOBs).
ÕðÜñ÷ïõí ôñåéò äéáöïñåôéêïß ôýðïé LOB ðïõ ìðïñïýí íá ÷ñçóéìïðïéçèïýí. Ïé
ôýðïé CLOB (character LOB) êáé NCLOB (national character LOB) ÷ñçóéìïðïéïý-
íôáé ãéá ôçí áðïèÞêåõóç ÷áñáêôÞñùí, åíþ ï ôýðïò BLOB (binary LOB) ãéá ôçí
áðïèÞêåõóç äõáäéêþí äåäïìÝíùí (ð.÷., åéêüíá, Þ÷ï, video). Ç äÞëùóç ÷áñáêôç-
ñéóôéêþí ðñáãìáôïðïéåßôáé ùò åîÞò:

CREATE TABLE ÖïéôçôÞò


(êùäéêüò INT NOT NULL,
üíïìá VARCHAR(40),
öùôïãñáößá BLOB(200K),
âéïãñáöéêü_óçìåßùìá} CLOB(20K),
PRIMARY KEY (êùäéêüò));

Ðñéí ôï ðñüôõðï SQL3, ðïëëÜ ó÷åóéáêÜ óõóôÞìáôá õðïóôÞñéæáí ôïí ôýðï


äåäïìÝíùí BLOB. Óôéò õëïðïéÞóåéò áõôÝò ç áðïèÞêåõóç êáé ç äéá÷åßñéóç ôùí
äåäïìÝíùí ôïõ BLOB Þôáí åõèýíç ôïõ ðñïãñÜììáôïò åöáñìïãÞò, åíþ ôï ÓÄÂÄ
äåí ãíþñéæå ôßðïôå ó÷åôéêÜ ìå ôç äïìÞ ôïõ êáé ôá ðåñéå÷üìåíÜ ôïõ. Ï ôýðïò
BLOB ðïõ ðåñéãñÜöåôáé óôï ðñüôõðï SQL3 äéáöÝñåé êáèþò ôï ÓÄÂÄ ìðïñåß íá
åêôåëÝóåé äéÜöïñåò ëåéôïõñãßåò óå ÷áñáêôçñéóôéêÜ ôýðïõ BLOB, CLOB Þ NCLOB,
üðùò áíáæÞôçóç óåéñÜò ÷áñáêôÞñùí, óõíÝíùóç, õðïëïãéóìü ìåãÝèïõò ê.á.
492 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

19.2.6 ÄéáôÞñçóç ÔìçìÜôùí Êþäéêá


Ç SQL3 Ý÷åé åìðëïõôéóèåß ìå ðñüóèåôåò åíôïëÝò Ýôóé þóôå ç ãëþóóá íá åßíáé
õðïëïãéóôéêÜ ðëÞñçò (computationally complete). Ïé åíôïëÝò ôçò ãëþóóáò ìðï-
ñïýí íá ïìáäïðïéçèïýí êáé íá ó÷çìáôßóïõí Ýíá ôìÞìá êþäéêá ìå ôéò äéêÝò ôïõ
ôïðéêÝò ìåôáâëçôÝò. Ôá ôìÞìáôá êþäéêá ìðïñïýí íá áðïèçêåõèïýí óôç ÂÄ êáé
íá åßíáé ðÜíôïôå äéáèÝóéìá ðñïò ÷ñÞóç [ISO 1999b]. ÐåñéãñÜöïõìå óõíïðôéêÜ
ìåñéêÝò áðü ôéò ðñüóèåôåò åíôïëÝò ôçò SQL3, ïé ïðïßåò åßíáé ðáñüìïéåò ìå ôéò
áíôßóôïé÷åò ôùí ãëùóóþí ðñïãñáììáôéóìïý C êáé PASCAL:

• Äçëþóåéò ìåôáâëçôþí. Ç äÞëùóç ìßáò ìåôáâëçôÞò ðñáãìáôïðïéåßôáé ìå


ôçí åíôïëÞ DECLARE ùò åîÞò:
DECLARE x INT;
DECLARE p BLOB(100K);
DECLARE flag BOOLEAN;

• ¸ëåã÷ïò óõíèçêþí. Ìå ôç ÷ñÞóç ôùí åíôïëþí IF ... THEN ... ELSE ...
END IF ìðïñïýìå íá åêôåëÝóïõìå äéáöïñåôéêÝò åíôïëÝò áíáëüãùò ìå ôç
óõíèÞêç ðïõ õðÜñ÷åé óôï IF. Ôï ßäéï õðïóôçñßæåôáé êáé ìå ôçí åíôïëÞ CASE,
ç ïðïßá ÷ñçóéìïðïéåßôáé ùò åîÞò:
CASE x
WHEN 1 THEN y=100;
WHEN 2 THEN y=200;
WHEN default THEN SET y=0;
END CASE;

• Âñü÷ïò. Ìå ôç ÷ñÞóç ôùí åíôïëþí FOR ... END FOR, WHILE ... END WHILE
êáé REPEAT ... UNTIL ìðïñïýìå íá åðáíáëáìâÜíïõìå ôçí åêôÝëåóç åíüò
ôìÞìáôïò êþäéêá ìÝ÷ñé íá éó÷ýóåé ç óõíèÞêç åîüäïõ.

19.2.7 Óêáíäáëéóìïß
¸íáò óêáíäáëéóìüò (trigger) åßíáé Ýíá ôìÞìá êþäéêá ðïõ åêôåëåßôáé üôáí óõìâåß
Ýíá óõãêåêñéìÝíï ãåãïíüò. Ôá ãåãïíüôá ðïõ åíåñãïðïéïýí óêáíäáëéóìïýò åßíáé
åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò óôá äåäïìÝíá åíüò ðßíáêá [Ceri 2000].
Óå áíôßèåóç ìå ôéò äéáäéêáóßåò êáé ôéò óõíáñôÞóåéò, Ýíáò óêáíäáëéóìüò äåí äÝ-
÷åôáé ðáñáìÝôñïõò êáé äåí ìðïñåß íá êëçèåß Üìåóá áðü êÜðïéï ôìÞìá êþäéêá
ðñïãñÜììáôïò åöáñìïãÞò. Ïé óêáíäáëéóìïß ìðïñïýí íá ÷ñçóéìïðïéçèïýí ãéá
ôïõò áêüëïõèïõò óêïðïýò:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 493

• äéåíÝñãåéá åëÝã÷ùí ðñéí áðü ôçí åéóáãùãÞ äåäïìÝíùí, Ýôóé þóôå ôá äå-
äïìÝíá ðïõ åéóÜãïíôáé íá éêáíïðïéïýí ðïëýðëïêïõò ðåñéïñéóìïýò áêå-
ñáéüôçôáò,
• êáôáãñáöÞ ôùí åíåñãåéþí ðïõ Ý÷ïõí ðñáãìáôïðïéçèåß óå Ýíáí ðßíáêá (log-
ging),
• õðïóôÞñéîç ðñïåéäïðïéÞóåùí üôáí åéóá÷èïýí, äéáãñáöïýí Þ åíçìåñùèïýí
äåäïìÝíá åíüò ðßíáêá.
Ç êáôáóêåõÞ åíüò óêáíäáëéóìïý ðñáãìáôïðïéåßôáé ìå ôçí åêôÝëåóç ôçò åíôïëÞò
CREATE TRIGGER Þ óýíôáîç ôçò ïðïßáò Ý÷åé ùò åîÞò:

CREATE TRIGGER üíïìá-óêáíäáëéóìïý


BEFORE | AFTER ãåãïíüò-åíåñãïðïßçóçò ON üíïìá-ðéíáêá
[REFERENCING <øåõäþíõìá íÝùí êáé ðáëáéþí ôéìþí>]
[FOR EACH ROW | STATEMENT]
[WHEN (óõíèÞêç-óêáíäáëéóìïý)]
BEGIN
óþìá-óêáíäáëéóìïý
END;

¼ðùò Ý÷åé Þäç áíáöåñèåß ôá ãåãïíüôá ðïõ åíåñãïðïéïýí ôïõò óêáíäáëéóìïýò åß-
íáé ïé åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò äåäïìÝíùí ôïõ ðßíáêá. Ìðïñïýìå
íá åðéëÝîïõìå áí ï óêáíäáëéóìüò èá åíåñãïðïéçèåß ðñéí Þ ìåôÜ ôéò ëåéôïõñãßåò
áõôÝò. ¸ôóé Ý÷ïõìå BEFORE INSERT, BEFORE DELETE, BEFORE UPDATE êáé
AFTER INSERT, AFTER DELETE, AFTER UPDATE. Ïé ëåéôïõñãßåò ôïõ óêáíäáëé-
óìïý ìðïñïýí íá åöáñìïóèïýí åßôå óå êÜèå ãñáììÞ ôïõ ðßíáêá (FOR EACH ROW)
åßôå ìüíï ìßá öïñÜ (FOR EACH STATEMENT). ÌåôÜ ôçí Ýêöñáóç REFERENCES
áêïëïõèåß ìßá ëßóôá ìå ôá øåõäþíõìá ôùí íÝùí êáé ôùí ðáëáéþí ôéìþí þóôå íá
åßíáé äõíáôÞ ç ðñïóðÝëáóÞ ôïõò. Ï êþäéêáò ðïõ åêôåëåß ï óêáíäáëéóìüò âñßóêå-
ôáé ìåôáîý ôùí ëÝîåùí BEGIN êáé END êáé áðïôåëåß ôï óþìá ôïõ óêáíäáëéóìïý.
Ôïíßæåôáé üôé äåí åðéôñÝðåôáé ç åêôÝëåóç ôùí åíôïëþí COMMIT êáé ROLLBACK
ìÝóá óôï óþìá ôïõ óêáíäáëéóìïý.

19.2.8 Äéáôýðùóç ÅñùôçìÜôùí êáé Åðåîåñãáóßá


ÅðåéäÞ ç SQL3 áðïôåëåß óôçí ïõóßá åðÝêôáóç ôçò SQL2, ï ôñüðïò äéáôýðùóçò
ôùí åñùôçìÜôùí äåí Ý÷åé óçìáíôéêÝò áëëáãÝò, åêôüò áðü ôéò åðéðëÝïí äõíáôüôç-
ôåò ðïõ ðñïóöÝñåé ç SQL3 ãéá ôç äéá÷åßñéóç áíôéêåéìÝíùí. Ùóôüóï, ðáñáôçñïý-
íôáé äéáöïñÝò óôéò ìåèüäïõò âåëôéóôïðïßçóçò êáé åðåîåñãáóßáò ôùí åñùôçìÜôùí,
ëüãù ôçò õðïóôÞñéîçò ôïõ áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ êáé ôçò äõíáôüôçôáò êá-
ôáóêåõÞò íÝùí ðïëýðëïêùí ôýðùí äåäïìÝíùí, äéáäéêáóéþí êáé óõíáñôÞóåùí.
494 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

19.3 Óýãêñéóç ÓõóôçìÜôùí


Óýìöùíá ìå ôïí Stonebraker [Stonebraker 1996] ïé åöáñìïãÝò ìðïñïýí íá ïìá-
äïðïéçèïýí óå ôÝóóåñéò êáôçãïñßåò, áíáëüãùò ìå ôéò áðáéôÞóåéò ôïõò ùò ðñïò:
á) ôçí áíáæÞôçóç êáé õðïóôÞñéîç ðïëëþí ÷ñçóôþí êáé â) ôçí ðïëõðëïêüôçôá
äåäïìÝíùí êáé åðåêôáóéìüôçôá. Ïé êáôçãïñßåò áõôÝò åßíáé:

• Ïé åöáñìïãÝò ìå ìéêñÞ ðïëõðëïêüôçôá äåäïìÝíùí êáé ìéêñÝò áðáéôÞóåéò


áíáæÞôçóçò ìðïñïýí íá åîõðçñåôçèïýí áð’ åõèåßáò áðü ôï ëåéôïõñãéêü óý-
óôçìá, ìÝóù ôïõ óõóôÞìáôïò áñ÷åßùí. Ðáñáäåßãìáôá ôÝôïéùí åöáñìïãþí
åßíáé ïé åðåîåñãáóôÝò êåéìÝíïõ êáé ôá ðñïãñÜììáôá åðåîåñãáóßáò åéêüíáò.

• Ïé åöáñìïãÝò ìå ìéêñÞ ðïëõðëïêüôçôá äåäïìÝíùí áëëÜ ìå ìåãÜëåò áðáéôÞ-


óåéò ãéá áíáæçôÞóåéò êáé åîõðçñÝôçóç ðïëëþí ÷ñçóôþí, üðùò åöáñìïãÝò
ìç÷áíïñãÜíùóçò åôáéñåßáò, ìðïñïýí íá åîõðçñåôçèïýí áðü Ýíá ó÷åóéáêü
ÓÄÂÄ.

• Ïé åöáñìïãÝò ðïõ äéá÷åéñßæïíôáé ðïëýðëïêá äåäïìÝíá êáé Ý÷ïõí ìåãÜëåò


áðáéôÞóåéò óå åðåêôáóéìüôçôá áëëÜ äåí Ý÷ïõí õøçëÝò áðáéôÞóåéò ùò ðñïò
ôçí áíáæÞôçóç ìðïñïýí íá óôçñé÷èïýí óå Ýíá áíôéêåéìåíïóôñåöÝò ÓÄÂÄ.
Ðáñáäåßãìáôá åöáñìïãþí áõôÞò ôçò êáôçãïñßáò åßíáé ïé åöáñìïãÝò CAD.

• ÔÝëïò, ïé åöáñìïãÝò ìå õøçëÝò áðáéôÞóåéò óôçí ðïëõðëïêüôçôá ôùí äå-


äïìÝíùí, ôçí áíáæÞôçóç, ôçí õðïóôÞñéîç ðïëëþí ÷ñçóôþí êáé ôçí åðåêôá-
óéìüôçôá ìðïñïýí íá õðïóôçñé÷èïýí áðü Ýíá áíôéêåéìåíï-ó÷åóéáêü ÓÄÂÄ.
Ðáñáäåßãìáôá åöáñìïãþí ôçò êáôçãïñßáò áõôÞò åßíáé ôá óõóôÞìáôá ãåù-
ãñáöéêþí ðëçñïöïñéþí êáé ïé åöáñìïãÝò ðïëõìÝóùí.

Óýìöùíá ìå ôïí áíùôÝñù äéá÷ùñéóìü åöáñìïãþí êáé ÓÄÂÄ ðñïêýðôåé ôï


Ó÷Þìá 19.2. Ùóôüóï, ç äéáöïñÜ äõíáôïôÞôùí ôùí áíôéêåéìåíïóôñåöþí êáé áíôé-
êåéìåíï-ó÷åóéáêþí óõóôçìÜôùí Ý÷åé ìåéùèåß äñáóôéêÜ ôá ôåëåõôáßá ÷ñüíéá (ìåôÜ
ôï 1996) ìå áðïôÝëåóìá ôá áíôéêåéìåíïóôñåöÞ ÓÄÂÄ íá Ý÷ïõí âåëôéùèåß óçìá-
íôéêÜ ùò ðñïò ôéò ìåèüäïõò áíáæÞôçóçò êáé åðåîåñãáóßáò. ÐáñÜ ôéò âåëôéþóåéò
áõôÝò, ôá ó÷åóéáêÜ êáé áíôéêåéìåíï-ó÷åóéáêÜ óõóôÞìáôá áñéèìïýí ôçí ðëåéï-
øçößá ôùí åãêáôáóôÜóåùí áíÜ ôïí êüóìï êáé êáôÝ÷ïõí ôï ìåãáëýôåñï ôìÞìá ôçò
áãïñÜò. Óýìöùíá ìå áíáöïñÜ ôçò åôáéñåßáò áíÜëõóçò áãïñÜò IDC [IDC 2000],
ôá Ýóïäá áðü ðùëÞóåéò ó÷åóéáêþí êáé áíôéêåéìåíï-ó÷åóéáêþí ÓÄÂÄ Ýöèáóå ôá
11.1 äéò äïëÜñéá, åíþ ôá áíôßóôïé÷á Ýóïäá áðü ðùëÞóåéò áíôéêåéìåíïóôñåöþí
äåí îåðÝñáóå ôá 211 åê. äïëÜñéá. ÌÝ÷ñé ôï Ýôïò 2004, ç IDC ðñïÝâëåðå åôÞóéá
áýîçóç ðùëÞóåùí êáôÜ 18.2% ãéá ôá ó÷åóéáêÜ óõóôÞìáôá êáé ìüíï 12.5% ãéá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 495

ση

χ
ρ

ή ρ

Σ χ ε σ ι α κ ά Σ  Β  Α ν τ ι κ ε ι ε ν ο  σ χ ε σ ι α κ ά Σ  Β 

ο
σ

π
υ

η
σ

Σ ύ σ τ η α Α ρ χ ε ί ω ν Α ν τ ι κ ε ι ε ν ο σ τ ρ α φ ή Σ  Β 
ς

ή σ

Α π

Π ο λ υ π λ ο κ ό τ η τ α δ ε δ ο έ ν ω ν κ α ι ε π ε κ τ α σ ι ό τ η τ α

Ó÷Þìá 19.2: Êáôçãïñéïðïßçóç åöáñìïãþí êáé ÓÄÂÄ.

ôá áíôéêåéìåíïóôñåöÞ. Ïé åêôéìÞóåéò áõôÝò óôçñß÷èçêáí óå äåäïìÝíá ðïõ óõãêå-


íôñþèçêáí áðü ðùëÞóåéò ÓÄÂÄ ðáãêïóìßùò ìÝ÷ñé ôï ÌÜéï ôïõ 2000. Ôï ãåãïíüò
üôé ôá áíôéêåéìåíï-ó÷åóéáêÜ ÓÄÂÄ áðïôåëïýí åðÝêôáóç ôùí ó÷åóéáêþí âïÞèçóå
óçìáíôéêÜ óôçí åõñåßá áðïäï÷Þ ôïõò. Ï Ðßíáêáò 19.1 ðáñáèÝôåé ìßá óýãêñéóç
ôùí ó÷åóéáêþí, áíôéêåéìåíïóôñåöþí êáé áíôéêåéìåíï-ó÷åóéáêþí óõóôçìÜôùí.

19.4 Óýíïøç
Ôá áíôéêåéìåíï-ó÷åóéáêÜ ÓÄÂÄ áêïëïõèïýí ìßá äéáöïñåôéêÞ ðñïóÝããéóç ãéá
ôçí õðïóôÞñéîç ôùí óýã÷ñïíùí åöáñìïãþí óå ó÷Ýóç ìå ôá áíôéêåéìåíïóôñåöÞ
ÓÄÂÄ. ¸íá áíôéêåéìåíï-ó÷åóéáêü ÓÄÂÄ õðïóôçñßæåé ðëÞñùò ôï ó÷åóéáêü ìï-
íôÝëï äåäïìÝíùí, åíþ Ý÷åé åìðëïõôéóèåß ìå åðéðëÝïí äõíáôüôçôåò ìå óôü÷ï ôçí
õðïóôÞñéîç ðïëýðëïêùí áíôéêåéìÝíùí. Ïé ëüãïé ðïõ ïäÞãçóáí ôïõò åñåõíçôÝò
ðñïò áõôÞí ôçí êáôåýèõíóç åßíáé áö’ åíüò ôá ìåéïíåêôÞìáôá ðïõ ðáñïõóéÜæïõí ôá
áíôéêåéìåíïóôñåöÞ ÓÄÂÄ êáé áö’ åôÝñïõ ôï ãåãïíüò üôé ôá ó÷åóéáêÜ ÓÄÂÄ Ý÷ïõí
ëýóåé ðïëëÜ ðñïâëÞìáôá ðïõ áöïñïýí óôç äéá÷åßñéóç äåäïìÝíùí, êáé åðïìÝíùò
áðïôåëïýí ìßá êáëÞ âÜóç ãéá ôçí êáôáóêåõÞ íÝùí óõóôçìÜôùí ìå ðåñéóóüôåñåò
äõíáôüôçôåò. Ðïëëïß êáôáóêåõáóôÝò åìðïñéêÜ äéáèÝóéìùí ÓÄÂÄ üðùò ç IBM,
ç Microsoft êáé ç Oracle Ý÷ïõí Þäç ðñï÷ùñÞóåé óôçí åðÝêôáóç ôùí óõóôçìÜôùí
ôïõò óå áíôéêåéìåíï-ó÷åóéáêÜ.
496 ÊåöÜëáéï 19. Áíôéêåéìåíï-Ó÷åóéáêÜ ÓÄÂÄ

Ó÷åóéáêü ÁíôéêåéìåíïóôñåöÝò Áíôéêåéìåíï-ó÷åóéáêü


Äõíáôüôçôåò ÓÄÂÄ ÓÄÂÄ ÓÄÂÄ
Ðñüôõðï SQL2 ODMG SQL3
Ôáõôüôçôá áíôéêåéìÝíïõ ¼÷é Íáé Íáé, ìÝóù ôýðïõ REF
ÅíèõëÜêùóç ¼÷é Íáé, üìùò Íáé, ìÝóù UDT
ðáñáâéÜæåôáé
Êëçñïíïìéêüôçôá ¼÷é Íáé ÄéáöïñåôéêÞ ãéá ðßíáêåò
êáé UDT
Ðïëõìïñöéóìüò ¼÷é Íáé Íáé, ìÝóù UDT
Ðïëýðëïêá áíôéêåßìåíá ¼÷é Íáé Íáé, ìÝóù UDT
Óõó÷åôßóåéò Íáé Íáé Íáé
ÄéáôÞñçóç áíôéêåéìÝíùí ¼÷é Íáé, áëëÜ ü÷é Íáé
áäéáöáíþò
Äéáôýðùóç åñùôçìÜôùí Íáé Íáé, ìÝóù ODMG Ðïëý êáëÞ õðïóôÞñéîç
ÐëïÞãçóç ¼÷é Íáé Íáé, ìÝóù ôýðïõ REF
Ðåñéïñéóìïß áêåñáéüôçôáò Íáé ¼÷é Íáé
ÅîÝëéîç ó÷Þìáôïò ÌéêñÞ Íáé ÌéêñÞ õðïóôÞñéîç
õðïóôÞñéîç
ÓõíáëëáãÝò ôýðïõ ACID Íáé Íáé Ðïëý êáëÞ õðïóôÞñéîç
ÅðáíÜêôçóç Íáé Íáé Ðïëý êáëÞ õðïóôÞñéîç
¼øåéò Íáé ÌéêñÞ õðïóôÞñéîç Ðïëý êáëÞ õðïóôÞñéîç

Ðßíáêáò 19.1: Óõãêñéôéêüò ðßíáêáò äõíáôïôÞôùí ÓÄÂÄ.

¸íá áðü ôá äõíáôÜ óçìåßá ôùí ó÷åóéáêþí ÓÄÂÄ åßíáé ç åõêïëßá óôç äéá-
ôýðùóç åñùôçìÜôùí ìÝóù ôçò ãëþóóáò SQL. Ç õðïóôÞñéîç áíôéêåéìÝíùí êáé
ðïëýðëïêùí ôýðùí äåäïìÝíùí áðü Ýíá ó÷åóéáêü óýóôçìá åðéâÜëëåé êáé ôçí åðÝ-
êôáóç ôçò ãëþóóáò SQL Ýôóé þóôå íá ìðïñïýìå íá åêìåôáëëåõèïýìå ôéò åðéðëÝïí
ëåéôïõñãßåò ôïõ óõóôÞìáôïò. Ãéá ôï óêïðü áõôü äçìéïõñãÞèçêå Ýíá íÝï ðñüôõðï
ôçò ãëþóóáò SQL ìå ôçí ïíïìáóßá SQL3, ôï ïðïßï åìðëïõôßæåé ôç ãëþóóá SQL
ìå íÝá óôïé÷åßá üðùò: á) õðïóôÞñéîç ôýðïõ ãñáììÞò, â) õðïóôÞñéîç áíôéêåéìÝíùí
êáé åííïéþí ôïõ áíôéêåéìåíïóôñåöïýò ìïíôÝëïõ, ã) õðïóôÞñéîç áöáéñåôéêþí ôý-
ðùí äåäïìÝíùí, ä) ôýðïé äåäïìÝíùí ïñéæüìåíïé áðü ôï ÷ñÞóôç, å) äéáäéêáóßåò êáé
óõíáñôÞóåéò ïñéæüìåíåò áðü ôï ÷ñÞóôç, óô) õðïóôÞñéîç ìåãÜëùí áíôéêåéìÝíùí, æ)
áõôüìáôç åêôÝëåóç åíôïëþí ìåôÜ Þ ðñéí áðü åéóáãùãÞ, äéáãñáöÞ Þ åíçìÝñùóç
äåäïìÝíùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


19.1. Ðïéïß Þôáí êáôÜ ôç ãíþìç óáò ïé ëüãïé ðïõ ïäÞãçóáí óôçí åõñåßá áðïäï÷Þ
ôùí áíôéêåéìåíï-ó÷åóéáêþí óõóôçìÜôùí;
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 497

19.2. Íá áíáöåñèïýí ïé íÝåò äõíáôüôçôåò ðïõ åéóÜãïíôáé ìå ôç ÷ñÞóç ôïõ ðñï-


ôýðïõ SQL3.

19.3. Íá äþóåôå Ýíá Üëëï ðáñÜäåéãìá ÷ñÞóçò ôùí åìöùëéáóìÝíùí ó÷Ýóåùí.

19.4. Íá óçìåéùèïýí ôá ðëåïíåêôÞìáôá ðïõ ðñïóöÝñåé ç äõíáôüôçôá äçìéïõñãßáò


íÝùí ôýðùí äåäïìÝíùí êáé óõíáñôÞóåùí ïñéæüìåíùí áðü ôï ÷ñÞóôç.

19.5. ÐïéÜ ç ÷ñçóéìüôçôá ôùí óêáíäáëéóìþí;

19.6. Ðïéïýò óêáíäáëéóìïýò èá ïñßæáôå ãéá ôç âÜóç äåäïìÝíùí ôçò óõíäñïìç-


ôéêÞò çëåêôñïíéêÞò âéâëéïèÞêçò;

19.7. Èåùñåßóôå ôïõò ðßíáêåò R1 (a, b, c) êáé R2 (a, d, e), üðïõ a åßíáé ôï
ðñùôåýïí êëåéäß êáé ôùí äýï ðéíÜêùí. ÈÝëïõìå êÜèå öïñÜ ðïõ åéóÜãåôáé ìßá
íÝá ãñáììÞ óôïí ðßíáêá R1 íá åéóÜãåôáé ìßá áíôßóôïé÷ç ãñáììÞ óôïí ðßíáêá R2 .
ÐåñéãñÜøôå ôï ìç÷áíéóìü åðßëõóçò, ÷ùñßò íá äþóåôå áêñéâåßò åíôïëÝò SQL.

19.8. Ìßá ÷ñïíéêÞ áêïëïõèßá åßíáé Ýíáò ôýðïò äåäïìÝíùí ðïõ áðïôåëåßôáé áðü
ðñáãìáôéêïýò áñéèìïýò. Ï êÜèå áñéèìüò äçëþíåé ôçí ôéìÞ ôïõ ìåãÝèïõò óå ìßá
óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ (ð.÷., ôéìÞ ìåôï÷Þò ãéá êÜèå çìÝñá ôïõ ÷ñüíïõ).
×ñçóéìïðïéþíôáò ôéò äõíáôüôçôåò ôçò SQL3 íá ïñéóèåß Ýíáò íÝïò ôýðïò äåäïìÝ-
íùí Time-Sequence, èåùñþíôáò üôé ôï ìÞêïò ìßáò ÷ñïíéêÞò áêïëïõèßáò åßíáé ôï
ðïëý 1024. Áðü ôçí êÜèå ÷ñïíéêÞ áêïëïõèßá åíäéáöåñüìáóôå ãéá ôçí áíÜãíùóç
ôçò ôéìÞò óå ìßá ÷ñïíéêÞ óôéãìÞ, ôï ìÞêïò ôçò, ôç ìÝóç ôéìÞ ôùí ôéìþí, ôçí åëÜ÷é-
óôç êáé ôç ìÝãéóôç ôéìÞ. Åðßóçò ðñÝðåé íá õðÜñ÷åé ç äõíáôüôçôá ðñïóèÞêçò íÝáò
ôéìÞò êáé ìåôáâïëÞò ôçò ôéìÞò ôçò áêïëïõèßáò ãéá óõãêåêñéìÝíç ÷ñïíéêÞ óôéãìÞ.
ÈåùñÞóôå üôé ïé ÷ñïíéêÝò óôéãìÝò áñéèìïýíôáé áðü 0 Ýùò êáé 1023. Íá ïñéóèïýí
ïé êáôÜëëçëåò ìÝèïäïé óôï íÝï ôýðï äåäïìÝíùí þóôå íá ðáñÝ÷ïíôáé ïé áíùôÝñù
äõíáôüôçôåò.

19.9. Íá ïñßóåôå Ýíá íÝï ôýðï äåäïìÝíùí Polygon ìå óôü÷ï ôçí áðïèÞêåõóç
ðïëõãþíùí, ÷ñçóéìïðïéþíôáò äçëþóåéò ôçò SQL3.

19.10. Íá ó÷ïëéÜóåôå ôçí êáôçãïñéïðïßçóç åöáñìïãþí êáé ÓÄÂÄ ðïõ ðáñïõ-


óéÜæåôáé óôï Ó÷Þìá 19.2.
20
ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

Ç áíÜãêç ãéá ôç ìåëÝôç åíáëëáêôéêþí ðñïóåããßóåùí óôï èÝìá ôçò áðïèÞêåõóçò


êáé ôçò åðåîåñãáóßáò äåäïìÝíùí ðñïÝêõøå áðü ôéò áðáéôÞóåéò ôùí óýã÷ñïíùí
åöáñìïãþí. Óôï êåöÜëáéï áõôü ðåñéãñÜöïíôáé ìåñéêÝò áðü ôéò åöáñìïãÝò áõôÝò,
äßíïíôáò Ýìöáóç óôéò áðáéôÞóåéò ôçò êÜèå ìßáò, êáé ôéò ëåéôïõñãßåò ðïõ ðñÝðåé
íá õðïóôçñé÷èïýí. Óå ðïëëÝò ðåñéðôþóåéò ç ÷ñÞóç åíüò ÓÄÂÄ åðáõîçìÝíïõ ìå
åðéðëÝïí äõíáôüôçôåò ìðïñåß íá êáëýøåé ôéò áíÜãêåò, åíþ óå Üëëåò áðáéôïýíôáé
íÝá óõóôÞìáôá ìå äõíáôüôçôåò äéáöïñåôéêÝò áðü áõôÝò åíüò ÓÄÂÄ. Ïé åöáñìïãÝò
ðïõ åîåôÜæïíôáé åßíáé ïé åîÞò:
• ×ùñéêÝò êáé ×ùñï-×ñïíéêÝò ÅöáñìïãÝò. Óôéò åöáñìïãÝò áõôÝò õðÜñ÷åé
ç áíÜãêç áðïèÞêåõóçò êáé ÷åéñéóìïý ÷ùñéêþí äåäïìÝíùí (spatial data) Þ
÷ùñï-÷ñïíéêþí äåäïìÝíùí (spatio-temporal data). Ôï ÓÄÂÄ ðïõ ÷ñçóé-
ìïðïéåßôáé ãéá ôçí õðïóôÞñéîç ôçò åöáñìïãÞò ðñÝðåé íá äéáèÝôåé ìç÷áíé-
óìïýò åðåîåñãáóßáò åñùôçìÜôùí ðïõ áöïñïýí óôç èÝóç Þ óôç ãåùìåôñßá
ôùí áíôéêåéìÝíùí. Ôá ÷ùñï-÷ñïíéêÜ äåäïìÝíá ðñïêýðôïõí ìå ôç óõó÷Ýôéóç
ôùí ÷ùñéêþí áíôéêåéìÝíùí ìå ôçí Ýííïéá ôïõ ÷ñüíïõ. Ãéá ðáñÜäåéãìá, ç
ðáñáêïëïýèçóç ìßáò ðåôñåëáéïêçëßäáò ðñïûðïèÝôåé ôç ãíþóç ôçò èÝóçò,
ôïõ ìåãÝèïõò, ôçò êáôåýèõíóçò êáé ôçò ôá÷ýôçôáò ãéá ôçí áðïôåëåóìáôéêÞ
áíôéìåôþðéóÞ ôçò.

499
500 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

• ÅöáñìïãÝò ÐïëõìÝóùí. Ïé åöáñìïãÝò áõôÝò äéá÷åéñßæïíôáé äåäïìÝíá ðïõ


åßíáé óáöþò ðïëõðëïêüôåñá áðü ôá áëöáñéèìçôéêÜ äåäïìÝíá ôùí ðáñá-
äïóéáêþí åöáñìïãþí. ×áñáêôçñéóôéêÜ ðáñáäåßãìáôá ðïëõìåóéêþí äå-
äïìÝíùí (multimedia data) åßíáé ïé åéêüíåò (GIF, JPG, TIFF), ôá áñ÷åßá
ôáéíéþí (MPG, AVI), ôá áñ÷åßá Þ÷ïõ (MP3, WAV) êáé ôá áñ÷åßá êåéìÝíïõ
(TXT, DOC, RTF, PDF). Ìå ôï óõíäõáóìü ôùí äåäïìÝíùí áõôþí ìðï-
ñïýí íá ðñïêýøïõí áêüìç ðïëõðëïêüôåñá äåäïìÝíá (ð.÷., åéêüíåò ìÝóá
óå êåßìåíï, êåßìåíï êáé Þ÷ïò ìÝóá óå ìßá ôáéíßá).

• ÁðïèÞêåò ÄåäïìÝíùí êáé ÁíáëõôéêÞ Åðåîåñãáóßá. Ìå ôç óõíå÷Þ óõãêÝ-


íôñùóç äåäïìÝíùí ðáñáôçñåßôáé ôï ðñüâëçìá ôçò áíåðáñêïýò áíÜëõóÞ
ôïõò, ëüãù ôïõ ôåñÜóôéïõ üãêïõ ôçò ðëçñïöïñßáò. Èåùñåßóôå ãéá ðáñÜ-
äåéãìá äåäïìÝíá ðïõ ëáìâÜíïíôáé êáèçìåñéíÜ áðü äïñõöüñïõò Þ ìåôåù-
ñïëïãéêïýò óôáèìïýò. Ç Üìåóç åðåîåñãáóßá ôùí óôïé÷åßùí áõôþí åßíáé
ó÷åäüí áäýíáôç. Ãéá ôï ëüãï áõôü ôá äåäïìÝíá óõãêåíôñþíïíôáé áñ÷éêÜ
óå áðïèÞêåò äåäïìÝíùí (data warehouses) êáé óôç óõíÝ÷åéá åêôåëïýíôáé
åñãáóßåò áíáëõôéêÞò åðåîåñãáóßáò äåäïìÝíùí (on-line analytical process-
ing, OLAP) [Chaudhuri 1997]. Ôá äåäïìÝíá ìåôáôñÝðïíôáé óå ìßá ìïñöÞ
êáôÜëëçëç ãéá ôçí áðïèÞêåõóç êáé äéá÷åßñéóÞ ôïõò áðü ôçí áðïèÞêç äå-
äïìÝíùí. Ïé ôå÷íéêÝò OLAP ðïõ åöáñìüæïíôáé åðéôñÝðïõí ôçí áíÜëõóç
ôùí äåäïìÝíùí áíáëüãùò ìå ôéò äéáóôÜóåéò ðïõ Ý÷ïõí ïñéóèåß (ð.÷., ÷ñüíïò,
÷þñïò).

• Åîüñõîç ÄåäïìÝíùí. Ç åîüñõîç äåäïìÝíùí (data mining) áðïôåëåß Ýíá


áðü ôá óçìáíôéêüôåñá óôÜäéá ãéá ôçí áíáêÜëõøç ãíþóçò (knowledge dis-
covery) áðü Ýíá óýíïëï äåäïìÝíùí. Ç ðëçñïöïñßá ðïõ ðåñéÝ÷åôáé óå Ýíá
óýíïëï äåäïìÝíùí äåí åßíáé ðÜíôïôå ðñïöáíÞò ïýôå Ý÷ïõìå ôç äõíáôüôçôá
íá ôçí áíôëÞóïõìå ìå ôéò êëáóéêÝò ìåèüäïõò. Ãéá ôï ëüãï áõôü áðáéôïý-
íôáé åéäéêïß áëãüñéèìïé ðïõ åßíáé óå èÝóç íá áíáëýóïõí ôá äåäïìÝíá, íá
ôá ïìáäïðïéÞóïõí óå êáôçãïñßåò êáé íá áíáêáëýøïõí óõó÷åôßóåéò ìåôáîý
ôùí äåäïìÝíùí.

20.1 ×ùñéêÝò êáé ×ùñï-×ñïíéêÝò ÅöáñìïãÝò


Ç ìåëÝôç ôçò õðïóôÞñéîçò ôïõ ÷þñïõ êáé ôïõ ÷ñüíïõ áðïôåëåß óçìáíôéêü åñåõ-
íçôéêü ôïìÝá óôï ÷þñï ôùí ÂÜóåùí ÄåäïìÝíùí. ×áñáêôçñéóôéêü ðáñÜäåéãìá
åöáñìïãÞò ðïõ áðáéôåß ôç äéá÷åßñéóç ÷ùñéêþí Þ ÷ùñï-÷ñïíéêþí äåäïìÝíùí åßíáé
Ýíá Óýóôçìá Ãåùãñáöéêþí Ðëçñïöïñéþí (GIS). ¸íá GIS äéá÷åéñßæåôáé ðëçñï-
öïñßåò ãéá ôéò ãåùãñáöéêÝò ïíôüôçôåò, ôá ÷áñáêôçñéóôéêÜ ôïõò, ôç ìåôáâïëÞ ôïõò
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 501

óå ó÷Ýóç ìå ôï ÷ñüíï, äßíåé ôç äõíáôüôçôá åðåîåñãáóßáò ðïëýðëïêùí åñùôçìÜ-


ôùí, êáèþò åðßóçò õëïðïéåß ìåèüäïõò áíÜëõóçò äåäïìÝíùí êáé ðáñïõóßáóçò ôùí
äåäïìÝíùí óôï ÷ñÞóôç [Laurini 1993, Rigaux 2002].

20.1.1 ÈåìáôéêÜ Åðßðåäá êáé ÃåùãñáöéêÜ Áíôéêåßìåíá


Óå Ýíá GIS ç ãåùãñáöéêÞ ðëçñïöïñßá ðïõ áíáöÝñåôáé óå Ýíá óõãêåêñéìÝíï
èÝìá êáëåßôáé èåìáôéêü åðßðåäï (thematic layer). Ãéá ðáñÜäåéãìá, óå Ýíá ÷Üñôç
ïé èÝóåéò ôùí ðüëåùí êáé ÷ùñéþí áðïôåëïýí Ýíá èåìáôéêü åðßðåäï, ïé äáóéêÝò
åêôÜóåéò Ýíá äåýôåñï èåìáôéêü åðßðåäï êáé ïé êáëëéåñãÞóéìåò åêôÜóåéò Ýíá ôñßôï
èåìáôéêü åðßðåäï. ¸íá èåìáôéêü åðßðåäï áðïôåëåßôáé áðü ãåùãñáöéêÜ áíôéêåß-
ìåíá (geographic objects). Ãéá ðáñÜäåéãìá, ôï èåìáôéêü åðßðåäï ôùí äáóéêþí
åêôÜóåùí áðïôåëåßôáé áðü ãåùãñáöéêÜ áíôéêåßìåíá, êáèÝíá áðü ôá ïðïßá áðï-
ôåëåß ìßá äáóéêÞ Ýêôáóç. ¸íá ãåùãñáöéêü áíôéêåßìåíï áðáñôßæåôáé áðü äýï
äéáöïñåôéêÜ Þäç ðëçñïöïñßáò:

1. ãåùãñáöéêÞ ðëçñïöïñßá, ðïõ ðåñéÝ÷åé ôç ãåùìåôñßá Þ êáé ôçí ôïðïëïãßá


ôïõ ãåùãñáöéêïý áíôéêåéìÝíïõ. Ãéá ðáñÜäåéãìá, ìßá ÷þñá ìðïñåß íá áíá-
ðáñáóôáèåß óôéò äýï äéáóôÜóåéò ìå Ýíá ðïëýãùíï ðïõ ðñïóäéïñßæåé ôá óý-
íïñá ôçò ÷þñáò.

2. ðåñéãñáöéêÞ ðëçñïöïñßá, ðïõ ðåñéÝ÷åé ðåñéãñáöéêÜ óôïé÷åßá ãéá ôï ãå-


ùãñáöéêü áíôéêåßìåíï. Ãéá ðáñÜäåéãìá, ç ðåñéãñáöéêÞ ðëçñïöïñßá ìßáò
÷þñáò ìðïñåß íá ðåñéëáìâÜíåé ôïí ðëçèõóìü ôçò ÷þñáò, ôï áêáèÜñéóôï
åèíéêü ðñïúüí, ôçí åðßóçìç ãëþóóá, ê.ï.ê.

Ç áíáðáñÜóôáóç ôùí ïíôïôÞôùí ðñáãìáôïðïéåßôáé óõíÞèùò ìå ãåùìåôñéêÜ


áíôéêåßìåíá, üðùò óçìåßá, ãñáììÝò êáé ðïëýãùíá, åíþ õðÜñ÷åé ç äõíáôüôçôá
áðïèÞêåõóçò êáé äéá÷åßñéóçò øçöéáêþí ÷áñôþí. Óôï Ó÷Þìá 20.1 äßíïíôáé äýï
ðáñáäåßãìáôá ãåùãñáöéêþí ðëçñïöïñéþí. Óôï Ó÷Þìá 20.1á áðåéêïíßæåôáé ï ÷Üñ-
ôçò ôçò Åõñþðçò, üðïõ êÜèå ÷þñá áíáðáñßóôáôáé ìå Ýíá ðïëýãùíï. Óôï Ó÷Þìá
20.1â áðåéêïíßæåôáé ï ÷Üñôçò ôïõ íïìïý ÊáâÜëáò, ï ïðïßïò ðåñéÝ÷åé ðëçñïöïñßåò
ãéá ôç èÝóç ðüëåùí êáé ÷ùñéþí (ðñþôï èåìáôéêü åðßðåäï), êáé ðëçñïöïñßåò ãéá
ôï ïäéêü äßêôõï ôïõ íïìïý (äåýôåñï èåìáôéêü åðßðåäï). Åðßóçò ðáñáôçñïýìå üôé
åêôüò áðü ôç ãåùãñáöéêÞ ðëçñïöïñßá ôùí ãåùãñáöéêþí áíôéêåéìÝíùí áðåéêïíß-
æåôáé êáé ðåñéãñáöéêÞ ðëçñïöïñßá (ð.÷ ôá ïíüìáôá ôùí ÷ùñéþí êáé ôùí ðüëåùí
ôïõ íïìïý).

20.1.2 ÅñùôÞìáôá
Ç áíáðáñÜóôáóç ðëçñïöïñßáò ÷þñïõ óå ìßá ÂÜóç ÄåäïìÝíùí ðñïóöÝñåé ôç
äõíáôüôçôá äéáôýðùóçò íÝùí ôýðùí åñùôçìÜôùí. ÃåíéêÜ äéáêñßíïõìå ôñåéò ôý-
502 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

(α) οι χώρες της Ευρώπης µε αναπαράσταση πολυγώνων (β) χάρτης του νοµού Καβάλας

Ó÷Þìá 20.1: Ðáñáäåßãìáôá ãåùãñáöéêþí ðëçñïöïñéþí.

ðïõò åñùôçìÜôùí, áíáëüãùò áí ðñïóäéïñßæåôáé ÷ùñéêÞ ðëçñïöïñßá, ðåñéãñá-


öéêÞ ðëçñïöïñßá Þ êáé ôá äýï. Ïé óõ÷íüôåñá ÷ñçóéìïðïéïýìåíïé ôýðïé ÷ùñéêþí
åñùôçìÜôùí åßíáé ïé åîÞò:
• åñþôçìá ðåñéï÷Þò (spatial range query), üðïõ äßíåôáé ìßá ðåñéï÷Þ åñùôÞ-
ìáôïò R ðïõ ðñïóäéïñßæåôáé áðü Ýíá ïñèïãþíéï Þ Ýíá ðïëýãùíï, êáé æç-
ôïýíôáé ôá áíôéêåßìåíá ðïõ ôÝìíïõí ôçí ðåñéï÷Þ R Þ ðåñéêëåßïíôáé ðëÞñùò
áðü áõôÞ,

• åñþôçìá ðëçóéÝóôåñùí ãåéôüíùí (nearest-neighbor query), üðïõ äßíåôáé


Ýíá áíôéêåßìåíï åñùôÞìáôïò x êáé Ýíáò áêÝñáéïò áñéèìüò k êáé æçôïýíôáé
ôá k áíôéêåßìåíá ðïõ âñßóêïíôáé ðëçóéÝóôåñá óôï áíôéêåßìåíï X, êáé

• ÷ùñéêÞ óýíäåóç (spatial join), üðïõ æçôïýíôáé ôá æåýãç áíôéêåéìÝíùí x,y


üðïõ x ∈ X êáé y ∈ Y Ýôóé þóôå íá éó÷ýåé ìßá ó÷Ýóç ìåôáîý ôïõò (ð.÷., íá
ôÝìíïíôáé).
Ãéá ôçí õðïóôÞñéîç ôùí ðñïçãïýìåíùí ôýðùí åñùôçìÜôùí Ý÷ïõí áíáðôõ÷èåß
åéäéêÝò ìÝèïäïé ðñïóðÝëáóçò ìå óôü÷ï ôçí áðïôåëåóìáôéêÞ êáé áðïäïôéêÞ åðå-
îåñãáóßá ôùí åñùôçìÜôùí áõôþí.

20.1.3 ÕðïóôÞñéîç áðü ÓÄÂÄ


ËáìâÜíïíôáò õð’ üøç ôçí ðïëõðëïêüôçôá, ôï ðëÞèïò ôùí ãåùãñáöéêþí áíôé-
êåéìÝíùí êáé ôá åñùôÞìáôá ðïõ ðñÝðåé íá õðïóôçñßæïíôáé, åßíáé ðïëý ëïãéêü
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 503

íá óêåöôïýìå üôé áðáéôåßôáé Ýíá ÓÄÂÄ ãéá ôçí õðïóôÞñéîç åíüò GIS, ðáñÜ íá
óôçñé÷èïýìå áðëþò óå Ýíá óýóôçìá áñ÷åßùí ãéá ôçí áðïèÞêåõóç ôùí ðëçñïöï-
ñéþí. ÕðÜñ÷ïõí äýï ôñüðïé õðïóôÞñéîçò åíüò GIS áðü Ýíá ÓÄÂÄ, ïé ïðïßïé
áðåéêïíßæïíôáé óôï Ó÷Þìá 20.2 êáé åßíáé ïé åîÞò:
1. ç ÷ñÞóç åíüò ó÷åóéáêïý ÓÄÂÄ ãéá ôç äéá÷åßñéóç ôçò ðåñéãñáöéêÞò ðëç-
ñïöïñßáò êáé ç ÷ñÞóç áñ÷åßùí ãéá ôç äéá÷åßñéóç ôçò ãåùãñáöéêÞò ðëçñï-
öïñßáò, Þ
2. ç ÷ñÞóç åíüò ÓÄÂÄ ìå äõíáôüôçôåò áðïèÞêåõóçò êáé äéá÷åßñéóçò ðïëýðëï-
êùí áíôéêåéìÝíùí (áíôéêåéìåíïóôñåöÝò Þ áíôéêåéìåíï-ó÷åóéáêü), Ýôóé þóôå
íá åßíáé äõíáôÞ ç õðïóôÞñéîç ãåùãñáöéêþí áíôéêåéìÝíùí ìå ãåùãñáöéêïýò
ôýðïõò äåäïìÝíùí.

Π ρ ο γ ρ ά   α τ α Ε φ α ρ  ο γ ή ς ( π . χ . G I S ) Π ρ ο γ ρ ά   α τ α Ε φ α ρ  ο γ ή ς ( π . χ . G I S )

Σ χ ε σ ι α κ ό Σ Β γ ι α τ η ν Ε ι δ ι κ ή ε φ α ρ  ο γ ή γ ι α τ η ν Α ν τ ι κ ε ι  ε ν ο σ τ ρ α φ έ ς ή

ε π ε ξ ε ρ γ α σ ί α τ η ς ε π ε ξ ε ρ γ α σ ί α Α ν τ ι κ ε ι  ε ν ο & σ χ ε σ ι α κ ό Σ Β  ε δ υ ν α τ ό τ η τ ε ς

π ε ρ ι γ ρ α φ ι κ ή ς γ ε ω γ ρ α φ ι κ ή ς α π ο θ ή κ ε υ σ η ς κ α ι δ ι α χ ε ί ρ ι σ η ς γ ε ω γ ρ α φ ι κ ώ ν

π λ η ρ ο φ ο ρ ί α ς π λ η ρ ο φ ο ρ ί α ς δ ε δ ο  έ ν ω ν

Σ χ ε σ ι α κ ή Β ά σ η

Σ ύ σ τ η  α Α ρ χ ε ί ω ν

ε δ ο  έ ν ω ν

Γ ε ω γ ρ α φ ι κ ά

( γ ε ω γ ρ α φ ι κ ά δ ε δ ο  έ ν α )

( π ε ρ ι γ ρ α φ ι κ ά δ ε δ ο  έ ν α )

κ α ι π ε ρ ι γ ρ α φ ι κ ά δ ε δ ο  έ ν α

( α ) χ ρ ή σ η σ χ ε σ ι α κ ο ύ ( β ) χ ρ ή σ η α ν τ ι κ ε ι  ε ν ο σ τ ρ α φ ο ύ ς ή

Σ Β α ν τ ι κ ε ι  ε ν ο & σ χ ε σ ι α κ ο ύ Σ Β

Ó÷Þìá 20.2: ÄéáöïñåôéêÝò ðñïóåããßóåéò ãéá õðïóôÞñéîç GIS áðü ÓÄÂÄ.

Åßíáé ðñïöáíÝò üôé ï äåýôåñïò ôñüðïò õðïóôÞñéîçò åíüò GIS áðü Ýíá ÓÄÂÄ
åßíáé ðñïôéìüôåñïò, äéüôé ç äéá÷åßñéóç ôùí ãåùãñáöéêþí áíôéêåéìÝíùí ðñáãìáôï-
ðïéåßôáé áðü ôï ßäéï ôï ÓÄÂÄ (ïñßæïíôáò öõóéêÜ ôïõò êáôÜëëçëïõò ôýðïõò äåäïìÝ-
íùí êáé ôéò ðñÜîåéò ìåôáîý ôùí ãåùãñáöéêþí áíôéêåéìÝíùí). Ãéá ðáñÜäåéãìá,
÷ñçóéìïðïéþíôáò Ýíá áíôéêåéìåíï-ó÷åóéáêü ÓÄÂÄ ìðïñïýìå íá äçìéïõñãÞóïõìå
Ýíáí ðßíáêá ãéá ôçí áðïèÞêåõóç ôùí ÷ùñþí. Ï ðßíáêáò áõôüò èá ðåñéÝ÷åé óôÞ-
ëåò ãéá ôçí áðïèÞêåõóç ôçò ðåñéãñáöéêÞò ðëçñïöïñßáò êáé ìßá Þ ðåñéóóüôåñåò
óôÞëåò ãéá ôçí áðïèÞêåõóç ôçò ãåùãñáöéêÞò ðëçñïöïñßáò:
CREATE TABLE ×þñá
(êùäéêüò INT NOT NULL,
504 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

üíïìá VARCHAR(30),
ðëçèõóìüò INT,
åðßóçìç-ãëþóóá VARCHAR(20),
ðñùôåýïõóá VARCHAR (30),
óýíïñá PolygonType,
PRIMARY KEY (êùäéêüò));

Ï ôýðïò äåäïìÝíùí PolygonType ÷ñçóéìïðïéåßôáé ãéá ôç äéá÷åßñéóç ðïëõãþ-


íùí. ¸íá ðïëýãùíï ìðïñåß íá åêöñáóèåß ùò Ýíá óýíïëï óçìåßùí óôéò äýï
äéáóôÜóåéò.
Ç ðëÞñçò õðïóôÞñéîç åíüò GIS áðü Ýíá ÓÄÂÄ ðñïûðïèÝôåé üôé ôï ÓÄÂÄ
ðñÝðåé íá åðåêôáèåß ðñïò ôéò åîÞò êáôåõèýíóåéò:

1. Ç ãëþóóá ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí ðñÝðåé íá õðïóôçñßæåé ãåù-


ãñáöéêÜ áíôéêåßìåíá.

2. ÐñÝðåé íá õðïóôçñßæåôáé ç áðïäïôéêÞ áðïèÞêåõóç ôùí ãåùãñáöéêþí áíôé-


êåéìÝíùí óå öõóéêü åðßðåäï.

3. Áðáéôåßôáé ç õëïðïßçóç íÝùí áëãïñßèìùí ãéá ôçí õðïóôÞñéîç ôùí ðñÜ-


îåùí ôçò ó÷åóéáêÞò Üëãåâñáò óôçí ðåñßðôùóç ôùí ÷ùñéêþí äåäïìÝíùí.
Ãéá ðáñÜäåéãìá, ïé ìÝèïäïé õëïðïßçóçò ôçò óýíäåóçò ôéò ïðïßåò åîåôÜóáìå
óå ðñïçãïýìåíï êåöÜëáéï äåí åðáñêïýí óôçí ðåñßðôùóç ôùí ãåùãñáöéêþí
áíôéêåéìÝíùí.

4. Ïé êëáóéêÝò äïìÝò êáôáëüãùí ðïõ ÷ñçóéìïðïéïýíôáé ãéá ôá áëöáñéèìçôéêÜ


äåäïìÝíá (ð.÷., Â-äÝíäñá) äåí åðáñêïýí ãéá ôç äéá÷åßñéóç ãåùãñáöéêþí
áíôéêåéìÝíùí.

Áò åîåôÜóïõìå áíáëõôéêüôåñá ôçí ôÝôáñôç ðñïûðüèåóç. Èåùñåßóôå üôé äß-


íåôáé áðü ôï ÷ñÞóôç Ýíá åñþôçìá ðåñéï÷Þò, ôï ïðïßï áíáæçôÜ ôá ïíüìáôá ôùí
÷ùñþí ðïõ ç ãåùãñáöéêÞ áíáðáñÜóôáóÞ ôïõò ôÝìíåé ôï ïñèïãþíéï åñùôÞìáôïò
R (âë. Ó÷Þìá 20.3). Ç åðåîåñãáóßá ôïõ åñùôÞìáôïò áõôïý èá ðñÝðåé íá äþóåé ùò
áðÜíôçóç ôéò ÷þñåò {ÅëëÜäá, Éôáëßá}. Ìå ðïéüí ôñüðï üìùò èá öèÜóïõìå óôï
áðïôÝëåóìá áõôü; Ï ðñïöáíÝóôåñïò ôñüðïò åßíáé íá ãßíåé Ýëåã÷ïò ìå ôéò ãåùãñá-
öéêÝò áíáðáñáóôÜóåéò üëùí ôùí ÷ùñþí (óåéñéáêÞ áíáæÞôçóç). Áõôüò ï ôñüðïò
åðåîåñãáóßáò áí êáé áðëüò óôçí õëïðïßçóÞ ôïõ äåí áíáìÝíåôáé íá Ý÷åé êáëÞ
áðüäïóç åðåéäÞ åßíáé ÷ñïíïâüñïò. ×ñåéáæüìáóôå Ýíáí êáôÜëïãï ðïõ íá åßíáé
óå èÝóç íá ìáò äþóåé ôá æçôïýìåíá áðïôåëÝóìáôá ÷ùñßò ôïí åîáíôëçôéêü Ýëåã÷ï
üëùí ôùí ãåùãñáöéêþí áíáðáñáóôÜóåùí. Ïé ðñïâëçìáôéóìïß áõôïß ïäÞãçóáí
ôïõò åñåõíçôÝò óôç ìåëÝôç íÝùí äïìþí êáôáëüãùí.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 505

Π ε ρ ι ο χ ή

ε ρ ώ τ η σ η ς

Ó÷Þìá 20.3: Åñþôçìá ðåñéï÷Þò.

Ìßá áðü ôéò äçìïöéëÝóôåñåò äïìÝò åßíáé ôï R-äÝíäñï (R-tree) [Guttman 1984,
Manolopoulos 2005] ðïõ ìðïñåß íá èåùñçèåß ùò åðÝêôáóç ôïõ B-äÝíäñïõ ãéá
ìåãáëýôåñï áñéèìü äéáóôÜóåùí. Ôï R-äÝíäñï ÷ñçóéìïðïéåß ïñèïãþíéá ãéá ôç
äåéêôïäüôçóç ôùí áíôéêåéìÝíùí. Áíáëõôéêüôåñá, áðü êÜèå ãåùãñáöéêÞ áíá-
ðáñÜóôáóç (ðïëýãùíï) õðïëïãßæåôáé ôï åëÜ÷éóôï ïñèïãþíéï ðïõ ðåñéêëåßåé ôçí
ðåñéï÷Þ (minimum bounding rectangle, MBR). Ôï R-äÝíäñï êáôáóêåõÜæåôáé ìå
âÜóç ôá MBRs ôùí áíôéêåéìÝíùí ðïõ áðïèçêåýïíôáé óôá öýëëá ôïõ äÝíäñïõ. Ïé
åóùôåñéêïß êüìâïé ðåñéÝ÷ïõí ïñèïãþíéá. ÊÜèå ïñèïãþíéï ðåñéêëåßåé üëá ôá ïñ-
èïãþíéá ôïõ áíôßóôïé÷ïõ õðïäÝíäñïõ. ¸ôóé ó÷çìáôßæåôáé ìßá éåñáñ÷éêÞ äïìÞ ðïõ
ìðïñåß íá ìåéþóåé äñáóôéêÜ ôï ÷ñüíï áíáæÞôçóçò. Óôï Ó÷Þìá 20.4 áðåéêïíßæåôáé
Ýíá ðáñÜäåéãìá êáôáóêåõÞò ôïõ R-äÝíäñïõ.
Ãéá íá áðáíôÞóïõìå óôï åñþôçìá ðåñéï÷Þò, äéáâÜæïõìå ôç ñßæá ôïõ R-äÝíäñïõ
êáé ðñïóäéïñßæïõìå ôá ïñèïãþíéá ðïõ ôÝìíïõí ôçí ðåñéï÷Þ åñùôÞìáôïò R. Ìå
âÜóç ôï ðáñÜäåéãìá ôïõ Ó÷Þìáôïò 20.4, ôá ïñèïãþíéá áõôÜ åßíáé ôá R1 êáé R2.
Óôç óõíÝ÷åéá ãéá êÜèå Ýíá áðü ôá ïñèïãþíéá ðïõ ôÝìíåé ç ðåñéï÷Þ åñùôÞìá-
ôïò åñåõíïýìå ôï áíôßóôïé÷ï õðïäÝíäñï åðáíáëáìâÜíïíôáò ôçí ßäéá äéáäéêáóßá.
ÌåôÜ ôçí åîÝôáóç üëùí ôùí õðïäÝíäñùí, Ý÷ïõìå Ýíá óýíïëï ïñèïãùíßùí ðïõ ôÝ-
506 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

R1
R2
A ∆

Γ Ε R1 R2 R3
R (περιοχή ερωτήµατος)

Ζ
R3
Θ R(A) R(Β) R(Γ) R(∆) R(Ε) R(Ζ) R(Η) R(Θ) R(Ι)

Η
Ι

περιγραφικά και γεωγραφικά δεδοµένα του πίνακα Χώρα

(α) σύνολο γεωγραφικών αντικειµένων (β) R-δένδρο

Ó÷Þìá 20.4: R-äÝíäñï.

ìíïõí ôçí ðåñéï÷Þ åñùôÞìáôïò. Áõôü üìùò äåí óçìáßíåé üôé ôÝìíïíôáé êáé ôá áíôß-
óôïé÷á ðïëýãùíá. Áõôü öáßíåôáé êáèáñÜ ãéá ôï áíôéêåßìåíï E. Áí êáé ç ðåñéï÷Þ
åñùôÞìáôïò ôÝìíåé ôï R(E) äåí ôÝìíåé êáé ôï ßäéï ôï Å. Áõôü åßíáé ðïëý öõóéêü íá
óõìâåß åðåéäÞ ôï R-äÝíäñï Ý÷åé êáôáóêåõáóèåß ìå âÜóç ôï MBR ôùí áíôéêåéìÝ-
íùí, ôï ïðïßï áðïôåëåß ðñïóÝããéóç ôçò ðñáãìáôéêÞò ãåùìåôñßáò ôïõ áíôéêåéìÝíïõ.
ÅðïìÝíùò, ôá áíôéêåßìåíá ðïõ åðéóôñÝöïíôáé áðü ôçí áíáæÞôçóç ôïõ R-äÝíäñïõ
ðñÝðåé íá åîåôáóèïýí ìå âÜóç ôçí ðñáãìáôéêÞ ôïõò ãåùìåôñßá þóôå íá ðñïóäéï-
ñéóèåß áí ôÝìíïõí Þ ü÷é ôçí ðåñéï÷Þ åñùôÞìáôïò. Ç ðñÜîç áõôÞ åßíáé áñêåôÜ ÷ñï-
íïâüñá êáé áðáéôåß ôçí õëïðïßçóç áëãïñßèìùí õðïëïãéóôéêÞò ãåùìåôñßáò (com-
putational geometry). Óôá âéâëßá [Manolopoulos 1999, Manolopoulos 2003] ðåñé-
ãñÜöïíôáé ìå ëåðôïìÝñåéá ðïëëÝò äïìÝò êáôáëüãùí ãéá ÷ùñéêÝò, ÷ùñï-÷ñïíéêÝò
êáé Üëëåò óýã÷ñïíåò åöáñìïãÝò.

20.2 ÅöáñìïãÝò ÐïëõìÝóùí


Ç âáóéêÞ éäéüôçôá ðïõ ÷áñáêôçñßæåé ôéò ðïëõìåóéêÝò åöáñìïãÝò åßíáé ç áíÜãêç
õðïóôÞñéîçò ôýðùí äåäïìÝíùí ðïõ ðáñïõóéÜæïõí ìßá óõíÝ÷åéá (üðùò Þ÷ïò, video,
animation) êáé ðáñáäïóéáêþí ôýðùí äåäïìÝíùí (üðùò áñéèìïýò êáé óåéñÝò ÷áñá-
êôÞñùí). Ôá ÷áñáêôçñéóôéêÜ áõôþí ôùí ôýðùí äåäïìÝíùí ïäçãïýí óå ìßá óåéñÜ
áðáéôÞóåùí ðïõ ðñÝðåé íá éêáíïðïéïýíôáé áðü Ýíá ÓÄÂÄ ãéá ôçí áðïôåëåóìáôéêÞ
êáé áðïäïôéêÞ õðïóôÞñéîÞ ôïõò. ÌåñéêÜ áðü áõôÜ ôá ÷áñáêôçñéóôéêÜ åßíáé: ç
ìåôáâïëÞ ôùí äåäïìÝíùí óå ó÷Ýóç ìå ôï ÷ñüíï, ï ìåãÜëïò üãêïò ôùí äåäïìÝíùí,
ïé åîåéäéêåõìÝíåò áðáéôïýìåíåò ëåéôïõñãßåò. Ôá ðáñáäïóéáêÜ ó÷åóéáêÜ ÓÄÂÄ
äåí åßíáé óå èÝóç íá êáëýøïõí ôéò áíÜãêåò ôùí ðïëõìåóéêþí åöáñìïãþí êáé
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 507

ãéá ôï ëüãï áõôü ïé åñåõíçôÝò Ý÷ïõí ðñï÷ùñÞóåé óôç ìåëÝôç íÝùí ìåèüäùí. Ïé
êõñéüôåñïé ôýðïé äåäïìÝíùí ðïõ óõíáíôïýìå óôéò ðïëõìåóéêÝò åöáñìïãÝò åßíáé:
êåßìåíï (text), åéêüíá (image), Þ÷ïò (audio), êéíïýìåíç åéêüíá (video).
¼ðùò êáé óôçí ðåñßðôùóç åíüò GIS, ôá ðïëõìåóéêÜ äåäïìÝíá áðïôåëïýíôáé
áðü ôçí ðåñéãñáöéêÞ ðëçñïöïñßá (ð.÷., ôßôëïò ôáéíßáò) êáé ôçí ðëçñïöïñßá ðåñéå-
÷ïìÝíïõ (content). ¸íáò ôñüðïò äéá÷åßñéóçò ôùí ðïëõìåóéêþí ôýðùí äåäïìÝíùí
÷ñçóéìïðïéþíôáò Ýíá ðáñáäïóéáêü ÓÄÂÄ åßíáé íá áðïèçêåýóïõìå ôçí ðåñé-
ãñáöéêÞ ðëçñïöïñßá óôç ÂÜóç ÄåäïìÝíùí ôïõ ÓÄÂÄ êáé íá ÷ñçóéìïðïéÞóïõìå
åîùôåñéêÜ áñ÷åßá ãéá ôçí áðïèÞêåõóç ôïõ ðåñéå÷ïìÝíïõ. Ôï âáóéêü ìåéïíÝêôçìá
áõôÞò ôçò ðñïóÝããéóçò åßíáé üôé äåí ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôç ëåéôïõñãé-
êüôçôá ôïõ ÓÄÂÄ ãéá ôï ðåñéå÷üìåíï ôùí ôýðùí äåäïìÝíùí (ð.÷., ôçí êáôáóêåõÞ
äïìþí êáôáëüãùí).
¸íáò Üëëïò ôñüðïò äéá÷åßñéóçò åßíáé íá ÷ñçóéìïðïéÞóïõìå ôïí ôýðï äåäïìÝ-
íùí BLOB (âë. ÊåöÜëáéï 18) ãéá ôçí áðïèÞêåõóç ôïõ ðåñéå÷ïìÝíïõ, ï ïðïßïò
õðïóôçñßæåôáé áðü ôï ðñüôõðï SQL3. ÁõôïìÜôùò, áõôÞ ç ðñïóÝããéóç êáèéóôÜ
õðåýèõíç ôçí åöáñìïãÞ ãéá ôç äéá÷åßñéóç ôïõ ðåñéå÷ïìÝíïõ ôïõ BLOB, êáèþò ôï
ÓÄÂÄ äåí Ý÷åé ãíþóç ôçò äïìÞò ôïõ ðåñéå÷ïìÝíïõ ôïõ BLOB. Ãéá ðáñÜäåéãìá,
áí óå Ýíá BLOB áðïèçêåýóïõìå video ìå äéáìüñöùóç MPEG, ôï ÓÄÂÄ äåí
åßíáé óå èÝóç íá áíáãíùñßóåé ôá ðåñéå÷üìåíá ôïõ BLOB êáèþò ç äéáìüñöùóç
MPEG åßíáé Üãíùóôç óå áõôü. Ùóôüóï, ìå ôéò äõíáôüôçôåò ôïõ ðñïôýðïõ SQL3
ìðïñïýìå íá ïñßóïõìå íÝïõò ôýðïõò äåäïìÝíùí ïñéæüìåíùí áðü ôï ÷ñÞóôç, Ýôóé
þóôå ç äéá÷åßñéóç ôùí ðïëõìÝóùí íá áðïôåëåß ôìÞìá ôïõ ÓÄÂÄ êáé ü÷é ôçò åöáñ-
ìïãÞò. Áêüìç üìùò êáé ìå áõôÞ ôçí ðñïóÝããéóç, ç õðïóôÞñéîç ôùí ðïëõìåóéêþí
äåäïìÝíùí äåí åßíáé ç êáëýôåñç äõíáôÞ. Åêôüò áðü ôçí áðïèÞêåõóç êáé äéá÷åß-
ñéóç ôùí äåäïìÝíùí, ðñÝðåé íá ëÜâïõìå õð’ üøç êáé Üëëïõò âáóéêïýò ðáñÜãïíôåò
üðùò:

• Ôá åñùôÞìáôá ðïõ áöïñïýí óå ðïëõìåóéêÜ äåäïìÝíá åßíáé ðïëý äéáöïñå-


ôéêÜ óå ó÷Ýóç ìå ôá áñéèìçôéêÜ êáé áëöáñéèìçôéêÜ äåäïìÝíá. Ãéá ðáñÜ-
äåéãìá, ç áíáæÞôçóç åéêüíùí óå ÂÜóåéò ÄåäïìÝíùí åéêüíùí, ïé ïðïßåò
ìïéÜæïõí ùò ðñïò êÜðïéá ÷áñáêôçñéóôéêÜ ìå ôçí åéêüíá ðïõ äßíåé ï ÷ñÞ-
óôçò, åßíáé ìßá âáóéêÞ ëåéôïõñãßá (image retrieval by content).

• ÍÝåò äïìÝò êáôáëüãùí áðáéôïýíôáé ãéá ôçí áðïäïôéêüôåñç åêôÝëåóç ôùí


áíáæçôÞóåùí. Óå Ýíá åñþôçìá ïìïéüôçôáò ðñÝðåé íá áðïöåýãåôáé ç åîá-
íôëçôéêÞ áíÜãíùóç ôïõ óõíüëïõ ôçò ÂÜóçò ÄåäïìÝíùí ãéá ôïí ðñïóäéïñé-
óìü ôçò áðÜíôçóçò.

• Ç åêôßìçóç ôïõò êüóôïõò ìßáò ðñÜîçò ðñÝðåé íá ëçöèåß õð’ üøç êáôÜ ôç
âåëôéóôïðïßçóç åíüò åñùôÞìáôïò. Áõôü äåí åßíáé åöéêôü áí ïé ðïëõìåóéêïß
508 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

ôýðïé äåäïìÝíùí ïñßæïíôáé áðü ôï ÷ñÞóôç êáé äåí õðïóôçñßæïíôáé áðü ôï


ßäéï ôï ÓÄÂÄ.

• Ïé ÷ñïíéêïß ðåñéïñéóìïß ðïõ åðéöÝñïõí ôá äåäïìÝíá Þ÷ïõ êáé video áðáé-


ôïýí áðü ôï ÓÄÂÄ óôáèåñïýò ñõèìïýò ìåôáöïñÜò äåäïìÝíùí, Ýôóé þóôå
ç áíáðáñáãùãÞ ôïõ Þ÷ïõ êáé ôïõ video óôï ÷ñÞóôç íá ìç äçìéïõñãåß äéá-
êïðÝò.
ÓÞìåñá, äåí ìðïñïýìå íá éó÷õñéóèïýìå üôé êÜðïéï åìðïñéêÜ äéáèÝóéìï ÓÄÂÄ
õðïóôçñßæåé ðëÞñùò ôéò ðïëõìåóéêÝò åöáñìïãÝò. Ùóôüóï, ôá ðåñéóóüôåñá áðü
áõôÜ Ý÷ïõí ìåñéêÞ õðïóôÞñéîç ãéá êÜðïéïõò ôýðïõò ðïëõìåóéêþí äåäïìÝíùí,
êáé áðáéôåßôáé ðåñáéôÝñù Ýñåõíá êáé áíÜðôõîç óôïí ôïìÝá áõôü. Åðßóçò, Ý÷ïõí
ðáñïõóéáóèåß êáé ðïëëÝò áîéüëïãåò ðñïôÜóåéò óõóôçìÜôùí ðïõ åßôå ëåéôïõñãïýí
áõôüíïìá åßôå óå óõíäõáóìü ìå êÜðïéï ÓÄÂÄ êáé ðáñÝ÷ïõí áðïôåëåóìáôéêÞ
êáé áðïäïôéêÞ õðïóôÞñéîç ãéá óõãêåêñéìÝíïõò ôýðïõò ðïëõìåóéêþí äåäïìÝíùí.
×áñáêôçñéóôéêÜ áíáöÝñïõìå ôá óõóôÞìáôá IBM QBIC, Virage êáé Excalibur,
ðïõ äéá÷åéñßæïíôáé åéêüíåò êáé õðïóôçñßæïõí åñùôÞìáôá ïìïéüôçôáò ìå âÜóç ôï
ðåñéå÷üìåíï (query by image content).
Ï åíäéáöåñüìåíïò áíáãíþóôçò ìðïñåß íá âñåé ðïëýôéìï õëéêü ãéá ÂÜóåéò
ÄåäïìÝíùí ðïëõìÝóùí óôá âéâëßá [Khoshafian 1996, Subrahmanian 1998].

20.3 ÁðïèÞêåò ÄåäïìÝíùí êáé ÁíáëõôéêÞ Åðåîåñãáóßá


Ìßá áðïèÞêç äåäïìÝíùí (data warehouse) áðïôåëåß ìßá óõëëïãÞ äåäïìÝíùí ìå
óôü÷ï ôçí áíáëõôéêÞ åðåîåñãáóßá êõñßùò éóôïñéêþí óôïé÷åßùí ãéá ôçí åîáãùãÞ
÷ñÞóéìùí óõìðåñáóìÜôùí. Ôá áðïôåëÝóìáôá ôçò áíáëõôéêÞò åðåîåñãáóßáò ôùí
äåäïìÝíùí áðïôåëïýí óçìáíôéêÞ ðëçñïöïñßá ãéá ôïõò ÷ñÞóôåò ôçò áðïèÞêçò, ïé
ïðïßïé óõíÞèùò åßíáé Ýìðåéñïé ÷ñÞóôåò êáé Ý÷ïõí êáëÞ ãíþóç ôùí äåäïìÝíùí.
Ôá âáóéêÜ ÷áñáêôçñéóôéêÜ ìßáò áðïèÞêçò åßíáé ôá åîÞò [Inmon 1996]:
• Ç ïñãÜíùóç ôùí äåäïìÝíùí óôçñßæåôáé óå èåìáôéêÝò åíüôçôåò, üðùò ðùëÞ-
óåéò, ðåëÜôåò, ðñïìçèåõôÝò ê.ï.ê. Ôá áñ÷éêÜ äåäïìÝíá ìðïñåß íá åßíáé
áðïèçêåõìÝíá óå ìßá ÂÜóç ÄåäïìÝíùí Þ áñ÷åßá. ÊáôÜ ôçí åéóáãùãÞ ôùí
äåäïìÝíùí óôçí áðïèÞêç ôá äåäïìÝíá ðñþôá öéëôñÜñïíôáé êáé êáôüðéí
åéóÜãïíôáé óå áõôÞí. Óçìåéþíåôáé üôé åéóÜãïíôáé ìüíï ôá áðáñáßôçôá óôïé-
÷åßá, åíþ ôá õðüëïéðá áãíïïýíôáé.

• Óå áíôßèåóç ìå ôá ÓÄÂÄ, ìßá áðïèÞêç äåäïìÝíùí áðïèçêåýåé éóôïñéêÜ


óôïé÷åßá ðïõ áöïñïýí óå ìßá ÷ñïíéêÞ ðåñßïäï ôïõ ðáñåëèüíôïò (ð.÷., ôåëåõ-
ôáßá äýï ÷ñüíéá Þ ôéò ôåëåõôáßåò 30 çìÝñåò). Ôï ÷ñïíéêü äéÜóôçìá åîáñôÜôáé
áðü ôï åßäïò ôùí äåäïìÝíùí êáé ôï åßäïò ôçò åðåîåñãáóßáò.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 509

• Ìßá áðïèÞêç äåäïìÝíùí áðïôåëåß îå÷ùñéóôü óýóôçìá áðü Ýíá ÓÄÂÄ. Ëåé-
ôïõñãßåò üðùò äéá÷åßñéóç óõíáëëáãþí êáé åðáíÜêôçóç äåí åßíáé áðáñáß-
ôçôåò, êáèþò ôá äåäïìÝíá ÷ñçóéìïðïéïýíôáé ìüíï ãéá áíÜãíùóç.

• ÅðåéäÞ ôá áñ÷éêÜ äåäïìÝíá ìðïñåß íá åßíáé áðïèçêåõìÝíá óå åôåñïãåíÞ


óõóôÞìáôá (ó÷åóéáêÜ Þ áíôéêåéìåíïóôñåöÞ ÓÄÂÄ, Þ êáé óõóôÞìáôá áñ-
÷åßùí) ðñéí ôçí åéóáãùãÞ ôùí äåäïìÝíùí óôçí áðïèÞêç ðñáãìáôïðïéåßôáé
ðñïåðåîåñãáóßá Ýôóé þóôå ç áíáðáñÜóôáóç ôùí äåäïìÝíùí íá áêïëïõèåß
ôçí áíáðáñÜóôáóç ðïõ ÷ñçóéìïðïéåß ç áðïèÞêç.

Ï ñüëïò ìßáò áðïèÞêçò äåäïìÝíùí åßíáé ôåëåßùò äéáöïñåôéêüò áðü áõôüí åíüò
ÓÄÂÄ. ¸íá ÓÄÂÄ ðñÝðåé íá åßíáé óå èÝóç íá äÝ÷åôáé óõíáëëáãÝò áðü ôïõò ÷ñÞ-
óôåò êáé íá ôéò åðåîåñãÜæåôáé ìå áðïôåëåóìáôéêüôçôá êáé áõîçìÝíç áðüäïóç. Ãéá
ôï ëüãï áõôü ôá óõóôÞìáôá áõôÜ êáëïýíôáé OLTP (on-line transaction process-
ing). Ç áðïèÞêç äåäïìÝíùí ðñÝðåé íá õðïóôçñßæåé êõñßùò áíÜëõóç äåäïìÝíùí
ìå óôü÷ï ôç äéåõêüëõíóç ôùí ÷ñçóôþí óôç ëÞøç áðïöÜóåùí (decision making).
Ìßá áðïèÞêç äåäïìÝíùí áíÞêåé óôçí êáôçãïñßá ôùí óõóôçìÜôùí OLAP (on-line
analytical processing). Ïé âáóéêÝò äéáöïñÝò ìåôáîý ôùí óõóôçìÜôùí OLTP êáé
OLAP äßíïíôáé óôïí Ðßíáêá 20.1 [Han 2001, Dunham 2003].

ÓõóôÞìáôá OLTP ÓõóôÞìáôá OLAP


äéá÷åßñéóç óõíáëëáãþí áíÜëõóç äåäïìÝíùí
áíÜãíùóç/áðïèÞêåõóç/åíçìÝñùóç äåäïìÝíùí êõñßùò áíÜãíùóç äåäïìÝíùí
äõíáìéêÜ äåäïìÝíá êõñßùò óôáôéêÜ äåäïìÝíá
áðïèÞêåõóç ëåðôïìåñþí äåäïìÝíùí áðïèÞêåõóç ëåðôïìåñþí
êáé ðåñéëçðôéêþí äåäïìÝíùí
ðñïóáñìïãÞ óôçí åöáñìïãÞ ðñïóáñìïãÞ óå èåìáôéêÝò åíüôçôåò
åðåîåñãáóßá ðïëëþí êáé áðëþí åñùôçìÜôùí åðåîåñãáóßá ëßãùí
êáé óýíèåôùí åñùôçìÜôùí
ìåãÜëïò áñéèìüò ÷ñçóôþí ìéêñüò áñéèìüò ÷ñçóôþí
(÷éëéÜäåò) (åêáôïíôÜäåò)
ôñÝ÷ïíôá äåäïìÝíá éóôïñéêÜ äåäïìÝíá
ìéêñü ìÝãåèïò âÜóçò (GBytes) ìåãÜëï ìÝãåèïò âÜóçò (TBytes)
åðåîåñãáóßá åñùôÞìáôïò åðåîåñãáóßá åñùôÞìáôïò
óå äåõôåñüëåðôá óå ëåðôÜ Þ þñåò
ó÷åóéáêü, áíôéêåéìåíïóôñåöÝò, ìïíôÝëï áóôÝñá, ÷éïíïíéöÜäáò,
áíôéêåéìåíï-ó÷åóéáêü ìïíôÝëï áóôåñéóìïý

Ðßíáêáò 20.1: Óõãêñéôéêüò ðßíáêáò OLTP êáé OLAP óõóôçìÜôùí.


510 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

20.3.1 Áñ÷éôåêôïíéêÞ ÁðïèÞêçò ÄåäïìÝíùí


Ç ôõðéêÞ áñ÷éôåêôïíéêÞ ìßáò áðïèÞêçò äåäïìÝíùí áðåéêïíßæåôáé óôï Ó÷Þìá 20.5.
Áñ÷éêÜ, ôá äåäïìÝíá åßíáé áðïèçêåõìÝíá óå ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí Þ
áñ÷åßùí. Ç äéáäéêáóßá êáèáñéóìïý äåäïìÝíùí (data cleaning) ÷ñçóéìïðïéåß-
ôáé ãéá ôçí áðáëïéöÞ êåíþí ôéìþí, ôçí Üñóç ôçò áóõíÝðåéáò êáé ôçí áðáëïéöÞ
äåäïìÝíùí ìå óöÜëìáôá. Ç ìåôáôñïðÞ äåäïìÝíùí (data transformation) ÷ñçóé-
ìïðïéåßôáé ãéá ôçí ðñïåðåîåñãáóßá ôùí äåäïìÝíùí êáé ôçí áíáðáñÜóôáóç ôïõò
óýìöùíá ìå ôï ìïíôÝëï ôçò áðïèÞêçò äåäïìÝíùí. Óôç óõíÝ÷åéá ôá äåäïìÝíá
ìåôáöÝñïíôáé óôçí áðïèÞêç üðïõ êáé áðïèçêåýïíôáé. Ç ðñüóâáóç ôùí ÷ñçóôþí
óôçí áðïèÞêç äåäïìÝíùí åðéôõã÷Üíåôáé ìÝóù ôùí åñãáëåßùí áíÜëõóçò êáé åîü-
ñõîçò äåäïìÝíùí. Ôá áðïôåëÝóìáôá ôùí ëåéôïõñãéþí áíÜëõóçò êáé åîüñõîçò
äåäïìÝíùí ÷ñçóéìïðïéïýíôáé ãéá ôç ëÞøç áðïöÜóåùí ó÷åôéêÜ ìå óôñáôçãéêÝò
êéíÞóåéò ðïõ ðñÝðåé íá ãßíïõí (ð.÷., ìåßùóç ôùí ðùëÞóåùí ìßáò åôáéñåßáò óå ìßá
óõãêåêñéìÝíç ðåñéï÷Þ óõíåðÜãåôáé ôç ëÞøç ìÝôñùí).
Χ ρ ή σ τ ε ς

Λ ε ι τ ο υ ρ γ ι έ ς
Κ α θ α ρ ι σ  ό ς

β ά σ ε ι ς δ ε δ ο  έ ν ω ν
α ι

 ε τ α τ ρ ο π ή

Ε ρ γ α λ ε ί α O L A P

δ ε δ ο  έ ν ω ν

Α π ο θ ή

κ η

 ε δ ο  έ ν ω ν

Ε ρ γ α λ ε ί α

Ε ξ ό ρ υ ξ ς

 ε δ ο  έ ν ω ν

Ó÷Þìá 20.5: ÔõðéêÞ áñ÷éôåêôïíéêÞ áðïèÞêçò äåäïìÝíùí.

20.3.2 ÐïëõäéÜóôáôï ÌïíôÝëï ÄåäïìÝíùí


Ôï ìïíôÝëï ìßáò áðïèÞêçò äåäïìÝíùí äéáöÝñåé ñéæéêÜ áðü ôá ìïíôÝëá äåäïìÝíùí
ðïõ ÷ñçóéìïðïéïýíôáé óôéò ó÷åóéáêÝò, ôéò áíôéêåéìåíïóôñåöåßò êáé ôéò áíôéêåéìåíï-
ó÷åóéáêÝò ÂÜóåéò ÄåäïìÝíùí. ÓõíÞèùò ãéá ôç ìïíôåëïðïßçóç ôùí äåäïìÝíùí
ôçò áðïèÞêçò ÷ñçóéìïðïéåßôáé ôï ðïëõäéÜóôáôï ìïíôÝëï äåäïìÝíùí (multidimen-
sional data model). Ìå ôç ÷ñÞóç ôïõ ìïíôÝëïõ áõôïý ôï óýíïëï äåäïìÝíùí ôçò
áðïèÞêçò ìðïñåß íá áíáðáñáóôáèåß ùò êýâïò (cube) ðïëëþí äéáóôÜóåùí. Áò
åîåôÜóïõìå ôçí Ýííïéá ôïõ ðïëõäéÜóôáôïõ êýâïõ ìÝóá áðü Ýíá ðáñÜäåéãìá. Èå-
ùñåßóôå ìßá áëõóßäá âéâëéïðùëåßùí ìå êáôáóôÞìáôá óå Èåóóáëïíßêç, ÁèÞíá,
ÐÜôñá êáé ÊáâÜëá. ¸óôù üôé åíäéáöåñüìáóôå ãéá ôéò ðùëÞóåéò ôåóóÜñùí êáôç-
ãïñéþí âéâëßùí (Éóôïñßá, Ëïãïôå÷íßá, ÌåôáöõóéêÞ êáé ÐëçñïöïñéêÞ) óôá ôÝó-
óåñá ôñßìçíá ôïõ Ýôïõò 2002. Åßíáé åýêïëï íá ðáñáôçñÞóïõìå üôé ôá äåäïìÝíá
ìðïñïýí íá áíáðáñáóôáèïýí ìå ôç âïÞèåéá åíüò ôñéóäéÜóôáôïõ êýâïõ, ìå äéáóôÜ-
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 511

Καβάλα
50
Πάτρα 100
100 100 100 100
Αθήνα 300
100 100 100 100
Θεσσαλονίκη
100 100100100100100100 100
1ο τρίµηνο 200 200100300100 0 100 100
100 100100100100100100 100
2ο τρίµηνο 200 100100100100100100 100
100 100100100100100100 100
3ο τρίµηνο 100 0 100100100100100 100
100 100 100 100
4ο τρίµηνο 300 200 100 100

Ιστορία Μεταφυσική
Λογοτεχνία Πληροφορική

Ó÷Þìá 20.6: ÐïëõäéÜóôáôïò êýâïò (äåí åìöáíßæïíôáé üëåò ïé ôéìÝò).

óåéò ôï ÷ñüíï, ôçí ðüëç êáé ôçí êáôçãïñßá ôùí âéâëßùí. Ôï Ó÷Þìá 20.6 áðåéêïíßæåé
ôç ìïñöÞ ôïõ êýâïõ. Ç áíÜãíùóç åíüò êýâïõ ãßíåôáé ðïëý áðëÜ. Ãéá ðáñÜäåéãìá,
ç ôéìÞ ðïõ âñßóêåôáé óå êýêëï äßíåé ôéò ðùëÞóåéò âéâëßùí ÌåôáöõóéêÞò óôçí ðüëç
ôçò Èåóóáëïíßêçò, ãéá ôï 1ï ôñßìçíï ôïõ 2002.
Π ί ν α κ α ς Π ί ν α κ α ς Π ί ν α κ α ς Π ί ν α κ α ς Π ί ν α κ α ς

δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς

Π ί ν α κ α ς Π ί ν α κ α ς

ν ό τ ω ν ν ό τ ω ν

γ ε γ ο γ ε γ ο

Π ί ν α κ α ς Π ί ν α κ α ς Π ί ν α κ α ς Π ί ν α κ α ς Π ί ν α κ α ς

δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς

( α ) α σ τ έ ρ α ς ( β ) χ ι ν ν ι φ ά δ α

ο ο

Π ί ν α κ α ς Π ί ν α κ α ς

Π ί ν α κ α ς Π ί ν α κ α ς
δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς

Π ί ν α κ α ς

ν ό τ ω ν ν ό τ ω ν

γ ε γ ο γ ε γ ο

δ ι ά σ τ α σ η ς

A B

Π ί ν α κ α ς Π ί ν α κ α ς

δ ι ά σ τ α σ η ς δ ι ά σ τ α σ η ς

( ) α σ τ ρ ι σ  ό ς

γ ε

Ó÷Þìá 20.7: Ôñåéò ìïñöÝò ðïëõäéÜóôáôïõ ìïíôÝëïõ äåäïìÝíùí.

Ôï ðïëõäéÜóôáôï ìïíôÝëï äåäïìÝíùí óõíáíôÜôáé óå ôñåéò ìïñöÝò ðïõ áðåé-


êïíßæïíôáé óôï Ó÷Þìá 20.7 êáé åðåîçãïýíôáé óôç óõíÝ÷åéá:

1. ÁóôÝñáò (star schema). Óýìöùíá ìå ôï ìïíôÝëï áõôü ç áðïèÞêç äåäïìÝ-


íùí ðåñéÝ÷åé Ýíá ìåãÜëï êåíôñéêü ðßíáêá ðïõ êáëåßôáé ðßíáêáò ãåãïíüôùí
512 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

(fact table) êáé Ýíá óýíïëï ìéêñüôåñùí ðéíÜêùí ðïõ êáëïýíôáé ðßíáêåò
äéáóôÜóåùí (dimension tables).

2. ×éïíïíéöÜäá (snowflake schema). Ôï ìïíôÝëï ÷éïíïíéöÜäáò áðïôåëåß ðá-


ñáëëáãÞ ôïõ ìïíôÝëïõ áóôÝñá. ÄéáöÝñåé êáôÜ ôï üôé êÜðïéïé ðßíáêåò äéá-
óôÜóåùí ìðïñïýí íá áíáëõèïýí ðåñéóóüôåñï ÷ñçóéìïðïéþíôáò âïçèçôé-
êïýò ðßíáêåò. Ç ëåéôïõñãßá áõôÞ ìïéÜæåé ìå ôç äéáäéêáóßá ôçò êáíïíéêï-
ðïßçóçò óôéò ó÷åóéáêÝò âÜóåéò.

3. Áóôåñéóìüò (constellation schema). ÊÜðïéåò åöáñìïãÝò, ëüãù ôùí áðáéôÞ-


óåþí ôïõò, åðéâÜëëïõí ôç ÷ñÞóç ðåñéóóüôåñùí ôïõ åíüò ðéíÜêùí ãåãïíü-
ôùí, ïé ïðïßïé ìïéñÜæïíôáé ôïõò ðßíáêåò äéáóôÜóåùí. Ôï ó÷Þìá ðïõ ðñï-
êýðôåé ìïéÜæåé ìå áóôåñéóìü.

Ï ðßíáêáò ãåãïíüôùí ìðïñåß íá ðåñéÝ÷åé Ýíá Þ ðåñéóóüôåñá ìåãÝèç ãéá ôá


ïðïßá åíäéáöåñüìáóôå. Ãéá ðáñÜäåéãìá, åêôüò áðü ôéò ðùëÞóåéò ôùí âéâëßùí èá
ìðïñïýóáìå íá äçëþóïõìå üôé ìáò åíäéáöÝñïõí êáé ôá Ýóïäá áðü ôéò ðùëÞóåéò.
Ôá ìåãÝèç áõôÜ áðïôåëïýí ôá ìåôñéêÜ óôïé÷åßá (measures) ðïõ óõììåôÝ÷ïõí
êáôÜ ôçí ðñÜîç ôçò Üèñïéóçò (aggregation) þóôå íá ðñïêýøïõí ôá ðåñéëçðôéêÜ
äåäïìÝíá (summary data). Áò åîåôÜóïõìå óôç óõíÝ÷åéá ìå ðïéüí ôñüðï ôá åñãá-
ëåßá áíáëõôéêÞò åðåîåñãáóßáò êáé åîüñõîçò äåäïìÝíùí óõìâÜëëïõí óçìáíôéêÜ
óôç ëÞøç áðïöÜóåùí.

20.3.3 Ëåéôïõñãßåò OLAP


Ç ÷ñÞóç ðïëõäéÜóôáôùí êýâùí ãéá ôçí ïñãÜíùóç ôùí äåäïìÝíùí äßíåé ôç äõ-
íáôüôçôá óôï ÷ñÞóôç íá ìåëåôÞóåé ôá äåäïìÝíá ôçò áðïèÞêçò áðü äéáöïñåôéêÝò
ïðôéêÝò ãùíßåò êáé ìå äéáöïñåôéêÜ åðßðåäá ëåðôïìÝñåéáò. Áðáñáßôçôç ðñïû-
ðüèåóç ãéá ôéò ëåéôïõñãßåò áõôÝò åßíáé ç ýðáñîç èåìáôéêÞò éåñáñ÷ßáò (concept
hierarchy) ãéá ôéò ÷ñçóéìïðïéïýìåíåò äéáóôÜóåéò. Ìßá èåìáôéêÞ éåñáñ÷ßá ïñßæåé
áíôéóôïé÷ßåò ìåôáîý åíüò èÝìáôïò óå Ýíá åðßðåäï ìå ôá èÝìáôá ôïõ êáôùôÝñïõ
åðéðÝäïõ. Èåùñåßóôå ãéá ðáñÜäåéãìá ôç ÷ñïíéêÞ äéÜóôáóç ôïõ Ó÷Þìáôïò 20.6.
Ï ÷ñüíïò ìðïñåß íá åêöñáóèåß áíáëüãùò ìå ôï Ýôïò, ôï åîÜìçíï, ôï ôñßìçíï,
ôï ìÞíá, ôçí åâäïìÜäá, Þ ôçí çìÝñá. Ï ÷ñÞóôçò ìðïñåß íá æçôÞóåé ôï óýíïëï
ôùí ðùëÞóåùí ôùí âéâëßùí Éóôïñßáò ãéá ôéò ðüëåéò ôçò ÅëëÜäáò áíÜ ìÞíá, áíÜ
åâäïìÜäá Þ áíÜ çìÝñá. Áõôü äßíåé ôç äõíáôüôçôá áýîçóçò Þ ìåßùóçò ôïõ åðéðÝ-
äïõ ëåðôïìÝñåéáò ôùí äåäïìÝíùí êáé áðïôåëåß óçìáíôéêü âïÞèçìá ãéá ôçí áíÜ-
ëõóç ôùí äåäïìÝíùí. Ïé âáóéêÝò ëåéôïõñãßåò áíÜëõóçò ðïõ ðáñÝ÷ïíôáé áðü ôá
åñãáëåßá OLAP åßíáé ïé åîÞò:
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 513

• ROLL-UP. Ç ëåéôïõñãßá áõôÞ ïìáäïðïéåß ôá äåäïìÝíá ôïõ êýâïõ êáé ìáò


ïäçãåß óå áíþôåñï åðßðåäï ôçò èåìáôéêÞò éåñáñ÷ßáò, áèñïßæïíôáò ôá ìå-
ôñéêÜ óôïé÷åßá. Ãéá ðáñÜäåéãìá, áí ï êýâïò ðåñéÝ÷åé äåäïìÝíá áíÜ çìÝñá,
ôüôå ìå ôç ÷ñÞóç ôçò ëåéôïõñãßáò ROLL-UP ìðïñïýìå íá æçôÞóïõìå ôçí
ïñãÜíùóç ôùí äåäïìÝíùí áíÜ åâäïìÜäá, áíÜ ìÞíá, áíÜ ôñßìçíï Þ áíÜ
åîÜìçíï.
• DRILL-DOWN. ÅðéöÝñåé áêñéâþò ôá áíôßèåôá áðïôåëÝóìáôá áðü ôç ëåé-
ôïõñãßá ROLL-UP. Ìå ôç ëåéôïõñãßá DRILL-DOWN áõîÜíïõìå ôï åðß-
ðåäï ëåðôïìÝñåéáò ôùí äåäïìÝíùí. Ãéá ðáñÜäåéãìá, áí ï êýâïò ðåñéãñÜöåé
ôá äåäïìÝíá áíÜ ìÞíá, ôüôå ÷ñçóéìïðïéþíôáò ôç ëåéôïõñãßá DRILL-DOWN
ìðïñïýìå íá åêöñÜóïõìå ôá äåäïìÝíá áíÜ åâäïìÜäá Þ áíÜ çìÝñá.
• SLICE êáé DICE. Ïé ëåéôïõñãßåò áõôÝò ðåñéïñßæïõí ôïí áñéèìü ôùí äéáóôÜ-
óåùí ôïõ êýâïõ. Ç ëåéôïõñãßá SLICE åðéëÝãåé ôá äåäïìÝíá ùò ðñïò ìßá
äéÜóôáóç, åíþ ç DICE ùò ðñïò ðïëëÝò äéáóôÜóåéò. Êáé ïé äõï ëåéôïõñãßåò
åðéóôñÝöïõí Ýíá ôìÞìá ôïõ êýâïõ. Ãéá ôçí åöáñìïãÞ ôùí ëåéôïõñãéþí ÷ñç-
óéìïðïéåßôáé ìßá óõíèÞêç ðïõ ðåñéïñßæåé ôéò ôéìÝò ôùí äéáóôÜóåùí.
• PIVOT. Ç ëåéôïõñãßá pivot ðñáãìáôïðïéåß ðåñéóôñïöÞ óôéò äéáóôÜóåéò ôïõ
êýâïõ, ìå áðïôÝëåóìá ôá äåäïìÝíá íá áðåéêïíßæïíôáé ìå äéáöïñåôéêü ôñüðï.
Óôï Ó÷Þìá 20.8 ðáñïõóéÜæïíôáé ðáñáäåßãìáôá åöáñìïãÞò ôùí ëåéôïõñãéþí
OLAP. Ôïíßæåôáé üôé ôá äåäïìÝíá ðñÝðåé íá åßíáé áðïèçêåõìÝíá óôçí áðïèÞêç
÷ñçóéìïðïéþíôáò ôï ìåãáëýôåñï åðßðåäï ëåðôïìÝñåéáò ãéá üëåò ôéò äéáóôÜóåéò,
þóôå íá åßíáé äõíáôÞ ç åöáñìïãÞ ôùí ëåéôïõñãéþí DRILL-DOWN êáé ROLL-
UP. Ç ìÝãéóôç äéáêñéôéêüôçôá ðñïêýðôåé áðü ôï ôåëåõôáßï åðßðåäï ôçò èåìáôéêÞò
éåñáñ÷ßáò ãéá êÜèå äéÜóôáóç. Ìå ôéò ëåéôïõñãßåò áõôÝò ï ÷ñÞóôçò ôïõ óõóôÞìáôïò
ìðïñåß íá ðáñáôçñÞóåé ôá äåäïìÝíá óå äéáöïñåôéêÜ åðßðåäá äéáêñéôéêüôçôáò, êáé
íá åîÜãåé ÷ñÞóéìá óõìðåñÜóìáôá.
Ãéá ôçí åêôÝëåóç ôùí ëåéôïõñãéþí OLAP óõíÞèùò ÷ñçóéìïðïéïýíôáé îå÷ùñé-
óôÜ óõóôÞìáôá åîõðçñåôþí (OLAP servers) ðïõ Ý÷ïõí ðñüóâáóç óôá äåäïìÝíá
ôçò áðïèÞêçò êáé ÷ñçóéìïðïéïýí åéäéêÝò ìåèüäïõò ðñïóðÝëáóçò êáé åðåîåñ-
ãáóßáò ãéá ôçí åîáãùãÞ ôùí áðïôåëåóìÜôùí óýìöùíá ìå ôá åñùôÞìáôá ôùí ÷ñç-
óôþí. ÕðÜñ÷ïõí äéáöïñåôéêïß ôýðïé åîõðçñåôþí OLAP áíáëüãùò ôïõ ôñüðïõ
ïñãÜíùóçò ôùí äåäïìÝíùí ìå âÜóç ôïí ïðïßï åêôåëïýíôáé ïé ëåéôïõñãßåò ôçò
áíÜëõóçò äåäïìÝíùí. Äéáêñßíïõìå ôïõò åîÞò ôýðïõò:
• MOLAP (multidimensional OLAP). Ãéá ôçí åêôÝëåóç ôùí ëåéôïõñãéþí OLAP
áðáéôåßôáé ç ïñãÜíùóç ôùí äåäïìÝíùí óå ðïëõäéÜóôáôïõò êýâïõò äåäïìÝ-
íùí. ÅðåéäÞ ôá äåäïìÝíá Ý÷ïõí õðïóôåß ðñïåðåîåñãáóßá (Ý÷ïõí ðñáãìá-
514 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

Καβάλα Καβάλα
50 200
Πάτρα 100 Πάτρα 500
100 100 100 100 100 100 100 100
Αθήνα 300 Αθήνα 700
100 100 100 100 Θεσσαλονίκη 100 100 100 100
Θεσσαλονίκη
100 100100100100100100 100 100 100100100100100100 100
1ο τρίµηνο 200 200100300100250100 100 1ο εξάµηνο 400 300100400100350100 100
100 100100100100100100 100 100 100100100100100
2ο τρίµηνο 200 100100100100100100 100 2ο εξάµηνο 400 200100200100200
100 100100100100100100 100
3ο τρίµηνο 100 0 100100100100100 100 Ιστορία Μεταφυσική
100 100 100 100 Λογοτεχνία Πληροφορική
4ο τρίµηνο 300 200 100 100 R O L L

 U P σ
τ ο

ρ ό ν ο α π ό

Ιστορία Μεταφυσική Καβάλα


τ ρ ί η ν α

σ ε
20
Λογοτεχνία Πληροφορική ε ξ
ά η ν α

Πάτρα 50
100 100 100 100
Αθήνα 200
100 100 100 100
Θεσσαλονίκη
100 100100100100100100 100
D R I L L D O W N τ ο
Ιανουάριος 50 100100 50 100 50 100 100
100 100100100100100100 100
 σ

D I C E
ρ ό ν ο α π ό τ ρ ί η ν α

S L I C E γ ι α τ ο

1 ο τ ρ ί η ν ο


1 ο κ α ι 2 ο τ ρ ί η ν ο

σ ε
ή ν

ε ς
Φεβρουάριος 50 100100150100120100 100
 Θ ε σ σ
α λ ο ν ί κ η , Κ α β ά λ α

100 100100100100100100 100


 Μ ε
τ α φ υ

σ
ι κ ή , Π λ η ρ ο φ ο ρ ι κ ή

Μάρτιος 100 0 100100100 80 100 100


100 100 100 100 100
Απρίλιος 10 50 30 10 100
Καβάλα 100 100
Θεσσαλονίκη Μάιος 70 40 20 20 100
Καβάλα 100 100
100 100
1ο τρίµηνο 300 250 Ιούνιος 120 10 50 70 100
Πάτρα 100 100
100
2ο τρίµηνο 100 100 Ιούλιος 50 0 10 40 100
Αθήνα 100 100
Μεταφυσική Αύγουστος 30 0 10 20 100
Θεσσαλονίκη 200 200 300 250 Πληροφορική 100
100
Ιστορία Μεταφυσική Σεπτέµβριος 20 0 80 60 100
100
Λογοτεχνία Πληροφορική 100
100
Οκτώβριος 100 100 20 10
100 100
Νοέµβριος 50 70 20 10 100
100
∆εκέµβριος 150 30 60 80

Ιστορία Μεταφυσική
Λογοτεχνία Πληροφορική

Ó÷Þìá 20.8: Ðáñáäåßãìáôá åöáñìïãÞò ëåéôïõñãéþí OLAP.

ôïðïéçèåß ïé åðéèõìçôÝò ëåéôïõñãßåò Üèñïéóçò äåäïìÝíùí) ç áðüäïóç ôùí


óõóôçìÜôùí MOLAP åßíáé ðïëý êáëÞ.
• ROLAP (relational OLAP). Äåí áðáéôåßôáé ç ïñãÜíùóç ôùí äåäïìÝíùí óå
êýâïõò, áëëÜ ÷ñçóéìïðïéåßôáé Ýíá ó÷åóéáêü ÓÄÂÄ ãéá ôçí áðïèÞêåõóç
ôùí äåäïìÝíùí. Ç ëåéôïõñãßåò OLAP åêôåëïýíôáé óå ðïëõäéÜóôáôåò üøåéò
(multidimensional views) ôùí äåäïìÝíùí.
• HOLAP (hybrid OLAP). ×ñçóéìïðïéåßôáé Ýíá õâñéäéêü ó÷Þìá ðïõ óôçñß-
æåôáé óôï óõíäõáóìü MOLAP êáé ROLAP. Ãéá ðáñÜäåéãìá, ôá ëåðôïìåñÞ
äåäïìÝíá (detailed data) ìðïñåß íá åßíáé áðïèçêåõìÝíá óå Ýíá ó÷åóéáêü
ÓÄÂÄ åíþ ôá ðåñéëçðôéêÜ äåäïìÝíá (summary data) ìðïñåß íá åßíáé áðï-
èçêåõìÝíá óå Ýíáí ðïëõäéÜóôáôï êýâï.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 515

20.4 Åîüñõîç ÄåäïìÝíùí


Áêüìç êáé ìå ôç ÷ñÞóç ôùí åñãáëåßùí OLAP, äåí ìðïñåß íá áíáêáëõöèåß áñêåôÞ
áðü ôç ãíþóç ðïõ ðåñéÝ÷åôáé óôá äåäïìÝíá. Èåùñåßóôå ãéá ðáñÜäåéãìá ôá Üôïìá
ðïõ áãïñÜæïõí âéâëßá Éóôïñßáò êáé ôá Üôïìá ðïõ áãïñÜæïõí âéâëßá Ëïãïôå÷íßáò.
Ìå ôéò ëåéôïõñãßåò OLAP äåí åßìáóôå óå èÝóç íá ãíùñßæïõìå áí ôá äýï óýíïëá
áôüìùí Ý÷ïõí ðïëëÜ, ëßãá Þ êáèüëïõ êïéíÜ óôïé÷åßá. Èá Þôáí ðïëý ÷ñÞóéìï íá
ãíùñßæïõìå üôé ôï 80% ôùí áôüìùí ðïõ áãïñÜæåé Ýíá âéâëßï Éóôïñßáò èá áãïñÜ-
óåé êáé Ýíá âéâëßï Ëïãïôå÷íßáò. Áõôü åðéôñÝðåé óôç äéáìüñöùóç ôùí ôéìþí ôùí
âéâëßùí Ýôóé þóôå íá åðéöÝñåé ôá ìåãáëýôåñá äõíáôÜ êÝñäç ãéá ôçí áëõóßäá. Ãéá
ôçí áíáêÜëõøç ôÝôïéïõ åßäïõò ðëçñïöïñßáò ïé åñåõíçôÝò ðñï÷þñçóáí óôç ìåëÝôç
ìåèüäùí åîüñõîçò äåäïìÝíùí (data mining). Áí êáé ïé Ýííïéåò "åîüñõîç äåäïìÝ-
íùí" êáé "áíáêÜëõøç ãíþóçò" ðïëëÝò öïñÝò ÷ñçóéìïðïéïýíôáé ãéá íá äçëþóïõí
ôçí ßäéá áêñéâþò Ýííïéá, óôçí ðñáãìáôéêüôçôá ç åîüñõîç äåäïìÝíùí áðïôåëåß
Ýíá áðü ôá óôÜäéá ôçò äéáäéêáóßáò áíáêÜëõøçò ãíþóçò.
Ï ôïìÝáò ôçò åîüñõîçò äåäïìÝíùí ÷ñçóéìïðïéåß äéáöïñåôéêÝò ìåèüäïõò áíá-
ëüãùò ìå ôçí åðéèõìçôÞ ëåéôïõñãßá êáé ôï åßäïò ôçò ðëçñïöïñßáò ðïõ áíáæçôïýìå.
Ïé ëåéôïõñãßåò ôçò åîüñõîçò äåäïìÝíùí äéá÷ùñßæïíôáé óå äýï âáóéêÝò êáôç-
ãïñßåò: á) ëåéôïõñãßåò ðñüâëåøçò (predictive) êáé â) ëåéôïõñãßåò ðåñéãñáöÞò
(descriptive). Ç êáôçãïñéïðïßçóç ôùí ëåéôïõñãéþí åîüñõîçò ðáñïõóéÜæåôáé óôï
Ó÷Þìá 20.9.
Κ α τ η γ ο ρ ι ο π ο ί η σ η

Π α λ υ ν δ ρ ό
η σ η

Λ ε ι τ ο υ ρ γ ί ε ς Π ρ ό β λ ε ψ η ς

Α ν ά λ υ σ η Χ ρ ο ν ο σ ε ι ρ ώ ν

Π ρ ό β λ ε ψ η

Ε ξ ό ρ υ ξ η  ε δ ο
έ ν ω ν

Ο
α δ ο π ο ί η σ η

Π ε ρ ί λ η ψ η

Λ ε ι τ ο υ ρ γ ί ε ς Π ε ρ ι γ ρ α φ ή ς

Κ α ν ό ν ε ς Σ υ σ χ έ τ ι σ η ς

Α ν α κ ά λ υ ψ η Α κ ο λ ο υ θ ί α ς

Ó÷Þìá 20.9: Ëåéôïõñãßåò åîüñõîçò äåäïìÝíùí.

Ç ðëÞñçò ìåëÝôç ôùí ëåéôïõñãéþí áõôþí åßíáé ðÝñá áðü ôïõò óêïðïýò ôïõ
âéâëßïõ áõôïý. Ï åíäéáöåñüìåíïò áíáãíþóôçò ìðïñåß íá óõìâïõëåõèåß åîåéäé-
êåõìÝíá âéâëßá [Han 2001, Dunham 2003] óôïí ôïìÝá ôçò åîüñõîçò äåäïìÝíùí.
Åäþ äßíïõìå Ýìöáóç óôéò ìåñéêÝò ëåéôïõñãßåò, ç áðïôåëåóìáôéêüôçôá êáé áðü-
516 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

äïóç ôùí ïðïßùí Ý÷ïõí áðáó÷ïëÞóåé óå ìåãÜëï âáèìü ôïõò åñåõíçôÝò ôá ôåëåõ-
ôáßá ÷ñüíéá:

• ôçí Ïìáäïðïßçóç (clustering), êáé

• ôçí Åýñåóç êáíüíùí óõó÷Ýôéóçò (association rules).

20.4.1 Ïìáäïðïßçóç
¸óôù X = {x1 , x2 , ..., xn } Ýíá óýíïëï äåäïìÝíùí áðü n óôïé÷åßá. Ç ïìáäïðïß-
çóç áöïñÜ óôïí ðñïóäéïñéóìü åíüò áñéèìïý k õðïóõíüëùí Y1 , ..., Yk ôá ïðïßá
íá áðïôåëïýí äéáìÝñéóç ôïõ óõíüëïõ X. Ôá óôïé÷åßá åíüò õðïóõíüëïõ ðñÝðåé
íá åßíáé üóï ãßíåôáé ðáñüìïéá (similar) ìåôáîý ôïõò. Ç Ýííïéá ôçò ïìïéüôçôáò
åêöñÜæåôáé óõíÞèùò ìå ìßá ìáèçìáôéêÞ åîßóùóç äýï ìåôáâëçôþí ç ïðïßá åðé-
óôñÝöåé ôï âáèìü ïìïéüôçôáò ôùí äýï óôïé÷åßùí. ÅðåéäÞ ç Ýííïéá ôçò ïìïéüôçôáò
åßíáé áñêåôÜ ó÷åôéêÞ êáé ìðïñåß íá åîáñôÜôáé áðü ôï åßäïò ôçò åöáñìïãÞò, Ý÷ïõí
ðñïôáèåß óôç âéâëéïãñáößá áñêåôïß áëãüñéèìïé ïìáäïðïßçóçò ìå äéáöïñåôéêÜ
÷áñáêôçñéóôéêÜ, áðïôåëåóìáôéêüôçôá, êáé ôá÷ýôçôá åêôÝëåóçò.
Ç ïìáäïðïßçóç ÷ñçóéìïðïéåßôáé óå ðïëëïýò ôïìåßò ôçò åðéóôÞìçò, üðùò éá-
ôñéêÞ, âéïëïãßá, ïéêïíïìéêÝò åðéóôÞìåò. Ìßá áðü ôéò ðñþôåò åöáñìïãÝò ôçò
ïìáäïðïßçóçò Þôáí óôç âéïëïãßá ãéá ôçí ôáîéíüìçóç ôùí äéáöüñùí åéäþí óôïí
ðëáíÞôç. ×ñçóéìïðïéåßôáé åõñýôáôá óå ÂÜóåéò ÄåäïìÝíùí êåéìÝíùí ãéá ôïí
ðñïóäéïñéóìü êåéìÝíùí ìå ðáñüìïéï ðåñéå÷üìåíï, óôéò ÷ùñéêÝò ÂÜóåéò ÄåäïìÝ-
íùí ãéá ôçí ïìáäïðïßçóç óçìåßùí Þ ðåñéï÷þí åíüò ÷Üñôç, åíþ ðñüóöáôá Ý÷åé
÷ñçóéìïðïéçèåß êáé óôïõò åîõðçñÝôåò éóôïý (web servers) ãéá ôçí áíÜëõóç ôïõ
çìåñïëïãßïõ (log) êáé ôçí åîáãùãÞ óôáôéóôéêþí óôïé÷åßùí ãéá ôéò ðñïóðåëÜóåéò.
¸óôù üôé êÜèå êïõêßäá ôïõ Ó÷Þìáôïò 20.10á áíáðáñéóôÜ ôç èÝóç ìßáò ðüëçò
óôï ÷Üñôç. Åöáñìüæïíôáò ïìáäïðïßçóç óôá äåäïìÝíá áõôÜ ðáßñíïõìå ðÝíôå

αποµονωµένο σηµείο

(α) αρχικό σύνολο δεδοµένων (β) οµαδοποιηµένο σύνολο δεδοµένων

Ó÷Þìá 20.10: Ïìáäïðïßçóç äåäïìÝíùí.


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 517

óõíïëéêÜ ïìÜäåò, ðïõ áðåéêïíßæïíôáé óôï Ó÷Þìá 20.10â. O áíèñþðéíïò íïõò åßíáé
ðïëý åýêïëï íá áíôéëçöèåß ôçí ýðáñîç êÜðïéáò ó÷Ýóçò ìåôáîý ôùí äåäïìÝíùí,
êáé Ýôóé ç ïìáäïðïßçóç ôïõ ó÷Þìáôïò öáßíåôáé ðïëý öõóéêÞ. Ùóôüóï, ç áõôüìáôç
ïìáäïðïßçóç áðü Ýíá õðïëïãéóôéêü óýóôçìá áðáéôåß ôïí ïñéóìü óõãêåêñéìÝíùí
êñéôçñßùí ðïõ ðñÝðåé íá ðëçñïýíôáé áðü ôéò ïìÜäåò äåäïìÝíùí.
Ç åöáñìïãÞ ôçò ïìáäïðïßçóçò ðáñïõóéÜæåé ïñéóìÝíåò äõóêïëßåò ðïõ ðñÝðåé
íá îåðåñáóèïýí áðü ôéò ìåèüäïõò ïìáäïðïßçóçò. Ïé äõóêïëßåò áõôÝò ïöåßëïíôáé
óôïõò åîÞò ðáñÜãïíôåò:

• ÊÜðïéá áðü ôá äåäïìÝíá åíäÝ÷åôáé íá ìçí åßíáé äõíáôüí íá óõìðåñéëç-


öèïýí óå êÜðïéá ïìÜäá. Ãéá ðáñÜäåéãìá, óôï Ó÷Þìá 20.10 õðÜñ÷åé Ýíá
óçìåßï ðïõ áðü ìüíï ôïõ ó÷çìáôßæåé ìßá ïìÜäá. Ôá óçìåßá áõôÜ êáëïý-
íôáé áðïìáêñõóìÝíá Þ áðïìïíùìÝíá (outliers) êáé äçìéïõñãïýí ðñüâëçìá
óôéò ìåèüäïõò ïìáäïðïßçóçò. ÓõíÞèùò ôá áðïìáêñõóìÝíá óçìåßá ïöåßëï-
íôáé óôçí ýðáñîç èïñýâïõ óôá äåäïìÝíá êáé áöáéñïýíôáé áðü ôéò ìåèüäïõò
ïìáäïðïßçóçò ðñéí ôçí Ýíáñîç ôçò ïìáäïðïßçóçò.

• Áí ôá äåäïìÝíá åßíáé äõíáìéêÜ (åéóáãùãÝò, äéáãñáöÝò, åíçìåñþóåéò), ôüôå


óôç ãåíéêÞ ðåñßðôùóç ïé ïìÜäåò ìåôáâÜëëïíôáé óýìöùíá ìå ôç ìåôáâïëÞ
ôùí äåäïìÝíùí. Áõôü óçìáßíåé üôé åßôå ç ìÝèïäïò ïìáäïðïßçóçò ðñÝðåé íá
åêôåëåßôáé óå ôáêôÜ ÷ñïíéêÜ äéáóôÞìáôá ãéá ôïí åê íÝïõ õðïëïãéóìü ôùí
ïìÜäùí, åßôå ðñÝðåé íá õðïóôçñßæåôáé áõîçôéêÞ (incremental) åíçìÝñùóç
ôùí ïìÜäùí ìåôÜ áðü êÜèå ìåôáâïëÞ äåäïìÝíùí.

• Ç åñìçíåßá ôïõ áðïôåëÝóìáôïò ôçò ïìáäïðïßçóçò åßíáé ðïëëÝò äýóêïëï íá


äïèåß êáé áðáéôåßôáé ç ãíþóç åíüò åéäéêïý (domain expert).

• Ç áðüäïóç ôùí ìåèüäùí ïìáäïðïßçóçò ðñÝðåé íá ëçöèåß óïâáñÜ õð’ üøç,


äéüôé ï áñéèìüò ôùí äåäïìÝíùí ôçò ÂÄ åßíáé ìåãÜëïò.

Ïé ìÝèïäïé ïìáäïðïßçóçò ðïõ Ý÷ïõí ðñïôáèåß óôç âéâëéïãñáößá ìðïñïýí íá


äéá÷ùñéóèïýí óå êáôçãïñßåò óýìöùíá ìå ôïí ôñüðï åýñåóçò ôùí ïìÜäùí êáé ôçí
åðåîåñãáóßá ôùí äåäïìÝíùí [Han 2001]:

• ÌÝèïäïé äéáìÝñéóçò. Ïé ìÝèïäïé äéáìÝñéóçò äÝ÷ïíôáé óôçí åßóïäï Ýíá óý-


íïëï äåäïìÝíùí êáé Ýíáí áêÝñáéï k ðïõ äçëþíåé ôï ðëÞèïò ôùí ïìÜäùí
óôéò ïðïßåò èá äéáìåñéóèïýí ôá äåäïìÝíá. Ç ïìáäïðïßçóç óôçñßæåôáé óôéò
åîÞò ðñïûðïèÝóåéò: á) ìßá ïìÜäá ðñÝðåé íá ðåñéÝ÷åé ôïõëÜ÷éóôïí Ýíá óôïé-
÷åßï, êáé â) ôï êÜèå óôïé÷åßï ðñÝðåé íá áíÞêåé óå ìßá ìüíï ïìÜäá. Áñ÷éêÜ
äçìéïõñãïýíôáé k ïìÜäåò äåäïìÝíùí ðïõ áðïôåëïýí ôçí áñ÷éêÞ äéáìÝñéóç
518 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

ôùí äåäïìÝíùí. Óôç óõíÝ÷åéá åöáñìüæåôáé ìßá ôå÷íéêÞ âåëôßùóçò ôùí ïìÜ-
äùí ìå áðïôÝëåóìá êÜðïéá óôïé÷åßá íá áëëÜîïõí ïìÜäá. Ç äéáäéêáóßá
óõíå÷ßæåôáé ìÝ÷ñé íá ìçí åßíáé åöéêôÞ ðåñáéôÝñù âåëôßùóç. Ïé ðëÝïí äéá-
äåäïìÝíïé áëãüñéèìïé äéáìÝñéóçò åßíáé ïé k-means [MacQueen 1967] êáé
k-medoids [Kaufman 1990]. Âáóéêü ìåéïíÝêôçìá ôùí ìåèüäùí áõôþí åßíáé
üôé äåí Ý÷ïõí êáëÞ áðüäïóç ãéá ìåãÜëï ðëÞèïò äåäïìÝíùí êáé åðéðëÝïí ïé
ïìÜäåò ðïõ ðáñÜãïíôáé ôåßíïõí íá Ý÷ïõí óöáéñéêü ó÷Þìá.

• Éåñáñ÷éêÝò ìÝèïäïé. Ç ðáñáãùãÞ ôùí ïìÜäùí óôçñßæåôáé óôçí éåñáñ÷éêÞ


äéÜóðáóç ôïõ óõíüëïõ ôùí äåäïìÝíùí. ÕðÜñ÷ïõí äýï åêäï÷Ýò ãéá ôéò ìå-
èüäïõò áõôÝò. Óôçí ðñþôç åêäï÷Þ îåêéíïýìå áðü ìßá ïìÜäá ðïõ ðåñéÝ÷åé
ôï óýíïëï ôùí äåäïìÝíùí êáé äéáäï÷éêÜ äéá÷ùñßæïõìå ôçí ïìÜäá áõôÞ óå
ìéêñüôåñåò. Ç äéáäéêáóßá óõíå÷ßæåôáé ìÝ÷ñé ïé ïìÜäåò ðïõ áðïìÝíïõí íá
éêáíïðïéïýí êÜðïéá êñéôÞñéá. Óôç äåýôåñç åêäï÷Þ, îåêéíïýìå áðü n ïìÜ-
äåò, üðïõ n åßíáé ôï ðëÞèïò ôùí óôïé÷åßùí ôçò âÜóçò. Óôç óõíÝ÷åéá ìåñéêÝò
ïìÜäåò óõã÷ùíåýïíôáé Ýôóé þóôå íá ðñïêýøïõí ïìÜäåò ìå ðåñéóóüôåñá
óôïé÷åßá. ¼ôáí ôåñìáôéóèåß ç óõã÷þíåõóç, ôüôå ïé ïìÜäåò ðïõ áðïìÝíïõí
óõíèÝôïõí ôï áðïôÝëåóìá ôçò ïìáäïðïßçóçò. Ïé ôå÷íéêÝò áõôÝò åßíáé ãíù-
óôÝò êáé ùò top-down Þ divisive êáé bottom-up Þ agglomerative áíôéóôïß÷ùò.
Ôï âáóéêü ìåéïíÝêôçìá ôùí éåñáñ÷éêþí ìåèüäùí åßíáé üôé áðü ôç óôéãìÞ
ðïõ áðïöáóéóèåß ç äéÜóðáóç ìßáò ïìÜäáò (Þ ç óõã÷þíåõóç äýï ïìÜäùí
óå ìßá ãéá ôçí ðåñßðôùóç ôùí ìåèüäùí bottom-up), ôüôå ç ëåéôïõñãßá äåí
ìðïñåß íá áíáêëçèåß (Ýíá óôïé÷åßï äåí ìðïñåß íá áëëÜîåé ïìÜäá). ¸÷ïõí
ðñïôáèåß ùóôüóï âåëôéþóåéò ôùí éåñáñ÷éêþí ìåèüäùí ðïõ âåëôéþíïõí óç-
ìáíôéêÜ ôçí ðïéüôçôá ôïõ áðïôåëÝóìáôïò. Ìåñéêïß áëãüñéèìïé ðïõ áíÞêïõí
óôçí êáôçãïñßá åßíáé ïé CURE [Guha 1998], BIRCH [Zhang 1996] êáé C2P
[Nanopoulos 2001].

• ÌÝèïäïé ðõêíüôçôáò. Ç ðëåéïøçößá ôùí ìåèüäùí ïìáäïðïßçóçò óôçñßæï-


íôáé óôçí áðüóôáóç ôùí óôïé÷åßùí ãéá ôçí ðáñáãùãÞ ôùí ïìÜäùí. Áõôü
Ý÷åé ùò áðïôÝëåóìá ïé ïìÜäåò ðïõ ðñïêýðôïõí íá Ý÷ïõí óöáéñéêü ó÷Þìá.
Óå ðïëëÝò ðåñéðôþóåéò üìùò èÝëïõìå íá Ý÷ïõìå ôç äõíáôüôçôá íá ðáñÜ-
ãïõìå ïìÜäåò ÷ùñßò óöáéñéêü ó÷Þìá. Èåùñåßóôå ôï óýíïëï äåäïìÝíùí ôïõ
Ó÷Þìáôïò 20.11. Áí ÷ñçóéìïðïéçèåß ìßá áðü ôéò ðñïçãïýìåíåò ìåèüäïõò
ïìáäïðïßçóçò, ôüôå ôï áðïôÝëåóìá äåí èá áíôáðïêñßíåôáé óôéò áðáéôÞóåéò
ôïõ ÷ñÞóôç. Ïé êõñéüôåñïé åêðñüóùðïé ôçò êáôçãïñßáò áõôÞò åßíáé ïé áë-
ãüñéèìïé DBSCAN [Ester 1996] êáé OPTICS [Ankerst 1999].

• ÌÝèïäïé ðëÝãìáôïò. Ïé ìÝèïäïé ðëÝãìáôïò äéáêñéôïðïéïýí ôï ÷þñï üðïõ


âñßóêïíôáé ôá äåäïìÝíá óå Ýíá ðåðåñáóìÝíï áñéèìü êåëéþí (cells) ôá ïðïßá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 519

α ρ χ ι κ ό σ ύ ν ο λ ο δ ε δ ο έ ν ω ν α π ο τ έ λ ε σ α ε θ ό δ ω ν δ ι α έ ρ ι σ η ς κ α ι ι ε ρ α ρ χ ι κ ώ ν α π ο τ έ λ ε σ α ε θ ό δ ω ν π υ κ ν ό τ η τ α ς

Ó÷Þìá 20.11: Ïìáäïðïßçóç ìåèüäùí ðõêíüôçôáò.

óõíèÝôïõí Ýíá ðëÝãìá (grid). Ç ïìáäïðïßçóç ëåéôïõñãåß ìå âÜóç ôá êåëéÜ


êáé ü÷é ìå âÜóç ôá äåäïìÝíá, ìå áðïôÝëåóìá íá ìåéþíåôáé óçìáíôéêÜ ï ÷ñü-
íïò åðåîåñãáóßáò. Áðü ôïõò óçìáíôéêüôåñïõò áëãïñßèìïõò áõôÞò ôçò êáôç-
ãïñßáò åßíáé ïé CLIQUE [Agrawal 1998], Wave-Cluster [Sheikholeslami 1998]
êáé STING [Wang 1997].

• ÌÝèïäïé óôçñéæüìåíåò óå ìïíôÝëá. Ïé ìÝèïäïé áõôÞò ôçò êáôçãïñßáò èå-


ùñïýí üôé ç êáôáíïìÞ ôùí äåäïìÝíùí ðñïÝñ÷ïíôáé áðü Ýíá ìáèçìáôéêü
ìïíôÝëï ðïõ áðïôåëåßôáé áðü óõíäõáóìü êáôáíïìþí ðéèáíüôçôáò, êáé ðñï-
óðáèïýí íá âåëôéóôïðïéÞóïõí ôçí áíôéóôïé÷ßá ìåôáîý ôùí äåäïìÝíùí êáé
ôïõ ìïíôÝëïõ.

20.4.2 Êáíüíåò Óõó÷Ýôéóçò


Ç åîüñõîç êáíüíùí óõó÷Ýôéóçò (association rule mining) áðïôåëåß Ýíáí óçìá-
íôéêü åñåõíçôéêü ôïìÝá óôï ÷þñï ôçò åîüñõîçò äåäïìÝíùí, ìå ðïëëÝò ðñáêôéêÝò
åöáñìïãÝò. ¸íáò êáíüíáò óõó÷Ýôéóçò áðïôåëåß óçìáíôéêÞ ðëçñïöïñßá, äéüôé
äåß÷íåé üôé äýï Þ ðåñéóóüôåñá óôïé÷åßá ôïõ óõíüëïõ äåäïìÝíùí äåí åßíáé åíôå-
ëþò áíåîÜñôçôá áëëÜ ó÷åôßæïíôáé ìåôáîý ôïõò ìå êÜðïéïí ôñüðï.
Èåùñåßóôå üôé Ý÷ïõìå óôç äéÜèåóÞ ìáò ìßá ÂÜóç ÄåäïìÝíùí ôùí ðåëáôþí
åíüò supermarket, óôçí ïðïßá êáôá÷ùñßæïíôáé ïé áãïñÝò ôùí ðåëáôþí. Ðéï óõãêå-
êñéìÝíá, ãéá êÜèå áãïñÜ ðñïúüíôùí áðü Ýíáí ðåëÜôç êáôá÷ùñßæïíôáé ïé êùäéêïß
ôùí ðñïúüíôùí ðïõ Ý÷åé áãïñÜóåé ï ðåëÜôçò. Áõôü ìðïñåß íá ãßíåé ðïëý åýêïëá
÷ñçóéìïðïéþíôáò óõóêåõÝò áíÜãíùóçò barcode êáé óôç óõíÝ÷åéá åíçìåñþíïíôáò
ôç âÜóç ìå ôçí áíôßóôïé÷ç áãïñÜ. Ôá óôïé÷åßá ôçò âÜóçò èá åßíáé ðáñüìïéá ìå
ôá óôïé÷åßá ðïõ åìöáíßæïíôáé óôïí Ðßíáêá 20.2 [Dunham 2003].
Ìå âÜóç ôéò áãïñÝò, êÜèå ðñïúüí Ý÷åé ìßá óõãêåêñéìÝíç õðïóôÞñéîç (support)
ðïõ ïñßæåôáé ùò ôï åðß ôïéò åêáôü ðïóïóôü ôùí áãïñþí óôéò ïðïßåò óõììåôÝ÷åé ôï
ðñïúüí. Ìå ôïí ßäéï ôñüðï ïñßæåôáé êáé ç õðïóôÞñéîç åíüò óõíüëïõ ðñïúüíôùí.
Ìå âÜóç ôéò áãïñÝò ôïõ Ðßíáêá 20.2 ç õðïóôÞñéîç üëùí ôùí äõíáôþí õðïóõíüëùí
520 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

ÁãïñÝò Ðñïúüíôá
a1 øùìß, ìáñìåëÜäá, âïýôõñï
a2 øùìß, âïýôõñï
a3 øùìß, ãÜëá, âïýôõñï
a4 ìðýñá, øùìß
a5 ìðýñá, ãÜëá

Ðßíáêáò 20.2: ÁãïñÝò êáé ðñïúüíôá.

ðñïúüíôùí ðáñïõóéÜæåôáé óôïí Ðßíáêá 20.3. Åö’ üóïí Ý÷ïõìå ðÝíôå ðñïúüíôá, ï
áñéèìüò ôùí ìç êåíþí õðïóõíüëùí åßíáé 25 − 1 = 31.
Õðïóýíïëï Ðñïúüíôùí ÕðïóôÞñéîç Õðïóýíïëï Ðñïúüíôùí ÕðïóôÞñéîç
{ìðýñá} 40 {ìðýñá,øùìß,ãÜëá} 0
{øùìß} 80 {ìðýñá,øùìß,âïýôõñï} 0
{ìáñìåëÜäá} 20 {ìðýñá,ìáñìåëÜäá,ãÜëá} 0
{ãÜëá} 40 {ìðýñá,ìáñìåëÜäá,âïýôõñï} 0
{âïýôõñï} 60 {ìðýñá,ãÜëá,âïýôõñï} 0
{ìðýñá,øùìß} 20 {øùìß,ìáñìåëÜäá,ãÜëá} 0
{ìðýñá,ìáñìåëÜäá} 0 {øùìß,ìáñìåëÜäá,âïýôõñï} 20
{ìðýñá,ãÜëá} 20 {øùìß,ãÜëá,âïýôõñï} 20
{ìðýñá,âïýôõñï} 0 {ìáñìåëÜäá,ãÜëá,âïýôõñï} 0
{øùìß,ìáñìåëÜäá} 20 {ìðýñá,øùìß,ìáñìåëÜäá,ãÜëá} 0
{øùìß,ãÜëá} 20 {ìðýñá,øùìß,ìáñìåëÜäá,âïýôõñï} 0
{øùìß,âïýôõñï} 60 {ìðýñá,øùìß,ãÜëá,âïýôõñï} 0
{ìáñìåëÜäá,ãÜëá} 0 {ìðýñá,ìáñìåëÜäá,ãÜëá,âïýôõñï} 0
{ìáñìåëÜäá,âïýôõñï} 20 {øùìß,ìáñìåëÜäá,ãÜëá,âïýôõñï} 0
{ãÜëá,âïýôõñï} 20 {ìðýñá,øùìß,ìáñìåëÜäá,ãÜëá,âïýôõñï} 0
{ìðýñá,øùìß,ìáñìåëÜäá} 0

Ðßíáêáò 20.3: Õðïóýíïëá ðñïúüíôùí êáé õðïóôÞñéîç.

Ç áãïñÜ ðñïúüíôùí åßíáé ìßá óõíáëëáãÞ (transaction). Ôïíßæåôáé üôé ç Ýííïéá


ôçò óõíáëëáãÞò óôçí åýñåóç êáíüíùí óõó÷Ýôéóçò åßíáé äéáöïñåôéêÞ áðü ôçí Ýí-
íïéá ôçò óõíáëëáãÞò óôá ÓÄÂÄ ðïõ ìåëåôÞóáìå óôï ÊåöÜëáéï 14. ¸óôù Ýíá óý-
íïëï äåäïìÝíùí D={d1 , d2 , ..., dn } êáé Ýíá óýíïëï óõíáëëáãþí T ={t1 , t2 , ..., tm }.
Áí X ⊂ D, Y ⊂ D êáé X ∩ Y 6= ∅ åßíáé äýï õðïóýíïëá ôïõ óõíüëïõ D, ôüôå
Ýíáò êáíüíáò óõó÷Ýôéóçò ïñßæåôáé ìåôáîý X êáé Y êáé óõìâïëßæåôáé ùò X =⇒ Y .
H õðïóôÞñéîç ôïõ êáíüíá X =⇒ Y ïñßæåôáé éóïäýíáìá ùò ôï ðïóïóôü ôùí óõ-
íáëëáãþí ðïõ ðåñéÝ÷ïõí ôá óôïé÷åßá X ∪ Y . H åìðéóôïóýíç (confidence) ôïõ
êáíüíá åßíáé ï ëüãïò ôïõ áñéèìïý ôùí óõíáëëáãþí ðïõ ðåñéÝ÷ïõí ôá óôïé÷åßá
ôïõ óõíüëïõ X ∪ Y ðñïò ôïí áñéèìü ôùí óõíáëëáãþí ðïõ ðåñéÝ÷ïõí ôá óôïé÷åßá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 521

ôïõ óõíüëïõ X. Ïé äýï áõôÝò éäéüôçôåò åßíáé ðïëý óçìáíôéêÝò óôïí ðñïóäéï-
ñéóìü ÷ñÞóéìùí êáíüíùí óõó÷Ýôéóçò ïé ïðïßïé ðåñéÝ÷ïõí ìç ôåôñéììÝíç ãíþóç.
Óôïí Ðßíáêá 20.4 äßíïíôáé ìåñéêïß êáíüíåò óõó÷Ýôéóçò ìå ôéò áíôßóôïé÷åò ôéìÝò
õðïóôÞñéîçò êáé âåâáéüôçôáò.

Êáíüíáò ÕðïóôÞñéîç Åìðéóôïóýíç


{øùìß} =⇒ {âïýôõñï} 60 75
{âïýôõñï} =⇒ {øùìß} 60 100
{ìðýñá} =⇒ {øùìß} 20 50
{ìáñìåëÜäá} =⇒ {âïýôõñï} 20 100
{ìáñìåëÜäá} =⇒ {ãÜëá} 0 0

Ðßíáêáò 20.4: Ðáñáäåßãìáôá êáíüíùí óõó÷Ýôéóçò.

Áò åîåôÜóïõìå ðñïóåêôéêÜ ôïí êáíüíá óõó÷Ýôéóçò {âïýôõñï} =⇒ {øùìß}.


Áðü ôéò ðÝíôå óõíáëëáãÝò ôïõ Ðßíáêá 20.2, ïé ôñåéò ðåñéÝ÷ïõí êáé ôá äýï ðñï-
úüíôá. ÅðïìÝíùò, ç õðïóôÞñéîç ôïõ êáíüíá åßíáé 60%. Ðáñáôçñïýìå üìùò üôé
ç åìðéóôïóýíç ôïõ êáíüíá åßíáé 100%, äéüôé ï áñéèìüò ôùí óõíáëëáãþí ðïõ ðå-
ñéÝ÷ïõí ôï X ({øùìß}) éóïýôáé ìå ôïí áñéèìü ôùí óõíáëëáãþí ðïõ ðåñéÝ÷ïõí
ôï X ∪ Y ({âïýôõñï,øùìß}). Åäþ Ý÷ïõìå ìßá ðïëý óçìáíôéêÞ ðëçñïöïñßá, ðïõ
áíáöÝñåé üôé êÜèå öïñÜ ðïõ Ýíáò ðåëÜôçò áãïñÜæåé âïýôõñï, áãïñÜæåé êáé øùìß.
Ç ðëçñïöïñßá áõôÞ ìðïñåß íá ÷ñçóéìïðïéçèåß áðü ôçí åôáéñåßá ìå äéáöüñïõò
ôñüðïõò, ìå óôü÷ï áö’ åíüò ôçí êáëýôåñç åîõðçñÝôçóç ôùí êáôáíáëùôþí êáé áö’
åôÝñïõ ôçí áýîçóç ôùí êåñäþí ìå êáôÜëëçëç ðñïóáñìïãÞ ôùí ôéìþí ëáìâÜíïíôáò
õð’ üøç ôéò áãïñÝò ôùí ðñïúüíôùí.
Ç ìåãÜëç óðïõäáéüôçôá ôùí êáíüíùí óõó÷Ýôéóçò ïäÞãçóå ôïõò åñåõíçôÝò
óôç ìåëÝôç ìåèüäùí ãéá ôçí åîüñõîç ôùí êáíüíùí áõôþí áðü Ýíá óýíïëï äå-
äïìÝíùí ìå âÜóç ôéò óõíáëëáãÝò. Ï ãíùóôüôåñïò áëãüñéèìïò åßíáé ï Apri-
ori [Agrawal 1994, Mannila 1994] ðïõ õëïðïéåßôáé áðü ôá ðåñéóóüôåñá åìðïñéêÜ
ðáêÝôá ëïãéóìéêïý åîüñõîçò äåäïìÝíùí.

20.5 Óýíïøç
Ç áíÜãêç ãéá åíáëëáêôéêÝò ìåèüäïõò áðïèÞêåõóçò êáé äéá÷åßñéóçò äåäïìÝíùí
ðñïÝêõøå áðü ôéò áðáéôÞóåéò ôùí óýã÷ñïíùí åöáñìïãþí ðïõ ÷áñáêôçñßæïíôáé
áðü óýíèåôá äåäïìÝíá êáé ðïëýðëïêåò ëåéôïõñãßåò. Óôï êåöÜëáéï áõôü ðáñïõ-
óéÜóèçêáí ìåñéêÜ ðáñáäåßãìáôá ôÝôïéùí åöáñìïãþí, ãéá ôçí õðïóôÞñéîç ôùí
ïðïßùí ôï ÓÄÂÄ ðñÝðåé íá åíéó÷õèåß óôïí ôïìÝá ôçò áðïèÞêåõóçò êáé äéá÷åßñé-
óçò äåäïìÝíùí. Ðéï óõãêåêñéìÝíá åîåôÜóáìå:
522 ÊåöÜëáéï 20. ÕðïóôÞñéîç Óýã÷ñïíùí Åöáñìïãþí

• ÷ùñéêÝò êáé ÷ùñï-÷ñïíéêÝò åöáñìïãÝò, üðïõ ç áíáðáñÜóôáóç ôïõ ÷þñïõ


êáé ôïõ ÷ñüíïõ åßíáé âáóéêÞ ðñïûðüèåóç,

• åöáñìïãÝò ðïëõìÝóùí ðïõ ÷åéñßæïíôáé ðïëýðëïêá áíôéêåßìåíá üðùò êåß-


ìåíá, åéêüíåò, áñ÷åßá Þ÷ïõ êáé video,

• áðïèÞêåò äåäïìÝíùí, üðïõ óõãêåíôñþíïíôáé äåäïìÝíá áðü äéÜöïñåò ÂÜ-


óåéò ÄåäïìÝíùí êáé óôç óõíÝ÷åéá ðñáãìáôïðïéïýíôáé åîåéäéêåõìÝíåò ëåé-
ôïõñãßåò üðùò ROLL-UP, DRILL-DOWN, SLICE, DICE,

• åöáñìïãÝò åîüñõîçò äåäïìÝíùí, ìå ôç âïÞèåéá ôùí ïðïßùí ìðïñïýìå íá


áíôëÞóïõìå ÷ñÞóéìç ðëçñïöïñßá áðü ôá äåäïìÝíá ÷ñçóéìïðïéþíôáò ôç ìÝ-
èïäï ôçò ïìáäïðïßçóçò êáé ôçí åýñåóç êáíüíùí óõó÷Ýôéóçò.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


20.1. ÐåñéãñÜøôå óõíïðôéêÜ ôñåéò âáóéêïýò ôýðïõò åñùôçìÜôùí ðïõ ÷ñçóéìï-
ðïéïýíôáé óå ÷ùñéêÝò åöáñìïãÝò (ð.÷., GIS).

20.2. Ôï R-äÝíäñï ÷ñçóéìïðïéåßôáé ãéá ôçí ïñãÜíùóç ðïëõäéÜóôáôùí äåäïìÝíùí.


ÐåñéãñÜøôå ôïí ôñüðï åðåîåñãáóßáò åíüò åñùôÞìáôïò ðåñéï÷Þò èåùñþíôáò üôé
ôï R-äÝíäñï áðïèçêåýåé óçìåßá óôï ÷þñï ôùí ôñéþí äéáóôÜóåùí êáé áðïôåëåßôáé
áðü ôÝóóåñá åðßðåäá.

20.3. Íá áíáöåñèïýí ïé êõñéüôåñåò ïìïéüôçôåò êáé äéáöïñÝò ìåôáîý ôïõ B-


äÝíäñïõ êáé ôïõ R-äÝíäñïõ.

20.4. Ìßá åíáëëáêôéêÞ ëýóç ãéá ôçí ïñãÜíùóç ðïëõäéÜóôáôùí äåäïìÝíùí åßíáé
íá ÷ñçóéìïðïéÞóïõìå Ýíá B-äÝíäñï ãéá êÜèå äéÜóôáóç. Ó÷ïëéÜóôå ôá ðëåïíå-
êôÞìáôá êáé ôá ìåéïíåêôÞìáôá áõôïý ôïõ ôñüðïõ ïñãÜíùóçò.

20.5. ÐåñéãñÜøôå óõíïðôéêÜ ôïõò êõñéüôåñïõò ôýðïõò äåäïìÝíùí, ôïõò ïðïßïõò


ðïõ äéá÷åéñßæïíôáé ïé åöáñìïãÝò ðïëõìÝóùí.

20.6. ÐïéÜ åßíáé ôá âáóéêÜ ÷áñáêôçñéóôéêÜ ìßáò áðïèÞêçò äåäïìÝíùí; Äþóôå ôéò
âáóéêÝò äéáöïñÝò ìåôáîý OLTP êáé OLAP.

20.7. ÐåñéãñÜøôå ôéò âáóéêÝò ëåéôïõñãßåò OLAP ðïõ ìðïñïýìå íá åêôåëÝóïõìå


óå Ýíáí ðïëõäéÜóôáôï êýâï. Íá äþóåôå ÷áñáêôçñéóôéêÜ ðáñáäåßãìáôá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 523

20.8. ÐåñéãñÜøôå ôéò Ýííïéåò: á) êáíüíáò óõó÷Ýôéóçò êáé â) ïìáäïðïßçóç äå-


äïìÝíùí.

20.9. Íá ðñïóäéïñéóôïýí ïé óçìáíôéêüôåñåò áðáéôÞóåéò áðïèÞêåõóçò êáé åðå-


îåñãáóßáò åñùôçìÜôùí ìßáò âÜóçò äåäïìÝíùí ðïõ áðïèçêåýåé éáôñéêÝò åéêüíåò.

20.10. ×ñçóéìïðïéþíôáò ôç âÜóç äåäïìÝíùí ôçò óõíäñïìçôéêÞò çëåêôñïíéêÞò âé-


âëéïèÞêçò íá ïñßóåôå Ýíáí êýâï äåäïìÝíùí, ðñïóäéïñßæïíôáò ôéò äéáóôÜóåéò ôïõ.
21
ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

Ï MSSQLS-2000 ÷áñáêôçñßæåôáé ùò Ýíá áíôéêåéìåíï-ó÷åóéáêü (object-relational)


ÓÄÂÄ, êáèþò õðïóôçñßæåé ðëÞñùò ôï ó÷åóéáêü ìïíôÝëï êáé åðéðëÝïí äéáèÝôåé
ìç÷áíéóìïýò õðïóôÞñéîçò ðïëýðëïêùí áíôéêåéìÝíùí. Óõíåðþò, ìðïñåß íá ÷ñçóé-
ìïðïéçèåß ôüóï ãéá ôçí õðïóôÞñéîç ôùí ðáñáäïóéáêþí, üóï êáé ôùí óýã÷ñïíùí
åöáñìïãþí.
Óå ðñïçãïýìåíá êåöÜëáéá Ý÷ïõìå áíáëýóåé ðïëëÝò áðü ôéò äõíáôüôçôåò ôïõ
MSSQLS-2000. Óôï êåöÜëáéï áõôü åóôéÜæïõìå óôéò äõíáôüôçôåò ðïõ áöïñïýí
óôçí õðïóôÞñéîç ôùí óýã÷ñïíùí åöáñìïãþí, äßíïíôáò Ýìöáóç óôïõò ôýðïõò äå-
äïìÝíùí, ôéò áðïèçêåõìÝíåò äéáäéêáóßåò, ôéò óõíáñôÞóåéò ïñéæüìåíåò áðü ôï ÷ñÞ-
óôç êáé ôéò äõíáôüôçôåò äéá÷åßñéóçò áðïèçêþí êáé åîüñõîçò äåäïìÝíùí.

21.1 ÁðïèçêåõìÝíåò Äéáäéêáóßåò


Ï MSSQLS-2000 äßíåé ôç äõíáôüôçôá õëïðïßçóçò ôìçìÜôùí êþäéêá ôá ïðïßá ðá-
ñáìÝíïõí áðïèçêåõìÝíá ìÝóá óôç ÂÜóç ÄåäïìÝíùí êáé êáëïýíôáé áðïèçêåõìÝ-
íåò äéáäéêáóßåò (stored procedures). Ç ÷ñÞóç áðïèçêåõìÝíùí äéáäéêáóéþí Ý÷åé
ìßá óåéñÜ áðü ðïëý óçìáíôéêÜ ðëåïíåêôÞìáôá, üðùò:

525
526 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

• ÌåôÜ ôçí ðñþôç åêôÝëåóÞ ôïõò ïé äéáäéêáóßåò ðáñáìÝíïõí óôçí êýñéá


ìíÞìç ìå áðïôÝëåóìá ïé åðüìåíåò åêôåëÝóåéò íá åßíáé ôá÷ýôåñåò. Åðß-
óçò, õðÜñ÷åé ç äõíáôüôçôá ç êÜèå äéáäéêáóßá íá ìåôáãëùôôßæåôáé ìßá ìüíï
öïñÜ, ìå Üìåóï áðïôÝëåóìá óôçí áðüäïóç.

• Ç ðñïóðÝëáóç óå êñßóéìá ôìÞìáôá äåäïìÝíùí ìðïñåß íá åðéôñÝðåôáé ìüíï


ìÝóù áðïèçêåõìÝíùí äéáäéêáóéþí, áðïôñÝðïíôáò ôçí áð’ åõèåßáò ðñïóðÝ-
ëáóç.

• Ç ÷ñÞóç áðïèçêåõìÝíùí äéáäéêáóéþí ìåéþíåé ôï ðïóü ôçò ðëçñïöïñßáò


ðïõ ìåôáöÝñåôáé ìÝóù äéêôýïõ, êáèþò ç åêôÝëåóç ìßá äéáäéêáóßáò åðé-
ôõã÷Üíåôáé ìå ìßá ìüíï åíôïëÞ.

• Áí üëåò ïé åéóáãùãÝò, äéáãñáöÝò êáé åíçìåñþóåéò ðéíÜêùí ðñáãìáôïðïéïý-


íôáé ìÝóù áðïèçêåõìÝíùí äéáäéêáóéþí åîáóöáëßæåôáé ç áêåñáéüôçôá ôùí
äåäïìÝíùí.

Ç T-SQL äéáèÝôåé ôçí åíôïëÞ CREATE PROCEDURE ãéá ôçí êáôáóêåõÞ ìßáò
áðïèçêåõìÝíçò äéáäéêáóßáò. Ç ãåíéêÞ ìïñöÞ ôçò åíôïëÞò Ý÷åé ùò åîÞò:

CREATE PROCEDURE ¼íïìá_Äéáäéêáóßáò [;áñéèìüò]


[[(]@ðáñÜìåôñïò ôýðïò_äåäïìÝíùí=ôéìÞ_ðñïåðéëïãÞò[OUTPUT]
[, ... ] [)]]
[WITH{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}]
[FOR REPLICATION]
AS
ðñïôÜóåéò T-SQL
[RETURN [áêÝñáéá_ôéìÞ_êáôÜóôáóçò]];

Ï ðñïáéñåôéêüò áñéèìüò ðïõ áêïëïõèåß ôï üíïìá ôçò äéáäéêáóßáò ÷ñçóéìï-


ðïéåßôáé ãéá ôçí ïìáäïðïßçóç ôùí áðïèçêåõìÝíùí äéáäéêáóéþí. Ïé äéáäéêáóßåò
ðïõ Ý÷ïõí ôï ßäéï áñéèìü áðïôåëïýí ìßá ïìÜäá äéáäéêáóéþí. Ôï ðëåïíÝêôçìá
ôùí ïìáäïðïéçìÝíùí äéáäéêáóéþí åßíáé üôé ìðïñïýí íá êáôáñãçèïýí ÷ñçóéìï-
ðïéþíôáò ìßá ìüíï åíôïëÞ DROP.
Ç äéáäéêáóßá ìðïñåß íá äÝ÷åôáé ìßá Þ ðåñéóóüôåñåò ðáñáìÝôñïõò. Óå êÜèå
ðáñÜìåôñï ìðïñïýìå íá áíôéóôïé÷ßóïõìå ìßá ôéìÞ ðñïåðéëïãÞò (default value)
óå ðåñßðôùóç ðïõ äåí äßíåôáé ôéìÞ óôçí ðáñÜìåôñï êáôÜ ôçí êëÞóç ôçò äéáäé-
êáóßáò. Ç åðéëïãÞ OUTPUT äçëþíåé üôé ìðïñïýìå íá ÷ñçóéìïéÞóïõìå ôçí áíôß-
óôïé÷ç ðáñÜìåôñï ãéá íá åðéóôñÝøïõìå êÜðïéá ôéìÞ. ÊÜèå ðáñÜìåôñïò Ý÷åé Ýíáí
ôýðï äåäïìÝíùí, ðïõ ìðïñåß íá åßíáé ïðïéïóäÞðïôå ôýðïò äåäïìÝíùí ôçò T-SQL.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 527

Ç ÷ñÞóç ôçò åðéëïãÞò RECOMPILE áêõñþíåé ìßá ðïëý ÷ñÞóéìç éäéüôçôá ôùí
áðïèçêåõìÝíùí äéáäéêáóéþí. Ôï ðëÜíï åêôÝëåóçò ãéá ìßá áðïèçêåõìÝíç äéáäé-
êáóßá äçìéïõñãåßôáé ìßá öïñÜ êáé óôç óõíÝ÷åéá åêôåëåßôáé ðïëëÝò öïñÝò ÷ùñßò åê
íÝïõ ìåôáãëþôôéóç. Ìå ôçí åðéëïãÞ RECOMPILE áíáãêÜæïõìå ôïí MSSQLS-2000
íá ìåôáãëùôôßæåé ôç äéáäéêáóßá êÜèå öïñÜ ðïõ êáëåßôáé. Ç óõãêåêñéìÝíç åðé-
ëïãÞ ðñÝðåé íá ÷ñçóéìïðïéåßôáé ìå ðïëëÞ ðñïóï÷Þ êáé ìüíïí üôáí ôá áíôéêåßìåíá
ôçò ÂÜóçò ÄåäïìÝíùí ôñïðïðïéïýíôáé áñêåôÜ óõ÷íÜ. Ç åðéëïãÞ ENCRYPTION
äçëþíåé üôé ï êþäéêáò ôçò áðïèçêåõìÝíçò äéáäéêáóßáò èá áðïèçêåõèåß êùäéêï-
ðïéçìÝíïò óôç ÂÜóç ÄåäïìÝíùí, þóôå íá Ý÷ïõìå áðüêñõøç ôïõ ðçãáßïõ êþäéêá
áðü ìç åîïõóéïäïôçìÝíïõò ÷ñÞóôåò.
Ïé äéáäéêáóßåò ðïõ äçìéïõñãïýíôáé ìå ôçí åðéëïãÞ FOR REPLICATION ÷ñç-
óéìïðïéïýíôáé ìüíï êáôÜ ôç ÷ñÞóç ðïëëáðëþí áíôéãñÜöùí äåäïìÝíùí (replicated
data). Óôéò äéáäéêáóßåò áõôÝò äåí ìðïñåß íá ÷ñçóéìïðïéçèåß ç åðéëïãÞ WITH RE-
COMPILE.
Ôï óýíïëï ôùí ðñïôÜóåùí áðïôåëåß ôï óþìá ôçò äéáäéêáóßáò, ôï ïðïßï ìðïñåß
íá ðåñéëáìâÜíåé åíôïëÝò T-SQL ãéá ôç äéá÷åßñéóç äåäïìÝíùí. Ç T-SQL, åêôüò
áðü ôéò åíôïëÝò ïñéóìïý êáé ÷åéñéóìïý äåäïìÝíùí ðïõ åîåôÜóáìå óå ðñïçãïý-
ìåíï êåöÜëáéï, äéáèÝôåé êáé ìßá óåéñÜ åíôïëþí êáé äõíáôïôÞôùí ðïõ ìåôáôñÝðïõí
ôç ãëþóóá óå äéåñãáóéáêÞ. Ãéá ðáñÜäåéãìá, õðÜñ÷åé ç äõíáôüôçôá ïñéóìïý ìå-
ôáâëçôþí, áëëáãÞò ôçò ñïÞò ôïõ ðñïãñÜììáôïò, åíôïëÝò âñü÷ïõ êáé ãåíéêÜ üëá
åêåßíá ôá óôïé÷åßá ðïõ äéåõêïëýíïõí ôçí áíÜðôõîç åöáñìïãþí. Ïé äõíáôüôçôåò
áõôÝò ìåôáôñÝðïõí ôçí T-SQL óå ìßá ãëþóóá ðñïãñáììáôéóìïý, ç ïðïßá üìùò
óå êáìßá ðåñßðôùóç äåí ìðïñåß íá óõãêñéèåß óå éó÷ý ìå ôç C++ Þ ôçí Java.
Ùóôüóï, êáëýðôïíôáé ïé áíÜãêåò äéá÷åßñéóçò äåäïìÝíùí êáé ìðïñïýìå íá áíá-
ðôýîïõìå ðïëý éó÷õñÝò åöáñìïãÝò ìå óçìáíôéêÞ ëåéôïõñãéêüôçôá.
¼ôáí äçìéïõñãåßôáé ìßá áðïèçêåõìÝíç äéáäéêáóßá ìðïñåß íá ïñéóèåß ìßá ðñï-
áéñåôéêÞ ëßóôá ðáñáìÝôñùí. Ç äéáäéêáóßá äÝ÷åôáé ôá áíôßóôïé÷á ïñßóìáôá êÜèå
öïñÜ ðïõ êáëåßôáé. Èåùñåßóôå ãéá ðáñÜäåéãìá ôç äéáäéêáóßá Áýîçóç Ìéóèïý, ç
ïðïßá äÝ÷åôáé ùò ðáñÜìåôñï ôçí åðß ôïéò åêáôü áýîçóç ðïõ èá äïèåß óå üëïõò
ôïõò õðáëëÞëïõò ìßáò åôáéñåßáò ôá óôïé÷åßá ôùí ïðïßùí åßíáé áðïèçêåõìÝíá óôïí
ðßíáêá ÕðÜëëçëïò. Ç êáôáóêåõÞ ôçò äéáäéêáóßáò Ý÷åé ùò åîÞò:
CREATE PROCEDURE Áýîçóç_Ìéóèïý} (@ðïóïóôü INT=5)
AS
UPDATE ÕðÜëëçëïò
SET ìéóèüò=ìéóèüò + ìéóèüò*@ðïóïóôü/100;

Ç ðñüôáóç @ðïóïóôü INT=5 ðñïóäéïñßæåé üôé ç ðáñÜìåôñïò ðïóïóôü ëáìâÜíåé


áêÝñáéåò ôéìÝò êáé óå ðåñßðôùóç ðïõ äåí äïèåß ôéìÞ óôçí ðáñÜìåôñï èá ëÜâåé
ôéìÞ 5. Ç åêôÝëåóç ôçò äéáäéêáóßáò ðñáãìáôïðïéåßôáé ìå ôçí åíôïëÞ EXECUTE.
528 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

¸óôù üôé èÝëïõìå íá áõîÞóïõìå ôïõò ìéóèïýò ôùí õðáëëÞëùí óå ðïóïóôü 10%.
Áõôü ìðïñåß íá ãßíåé ìå ôçí åîÞò åíôïëÞ:

EXECUTE Áýîçóç Ìéóèïý 10;

Áò åîåôÜóïõìå óôçí ðñÜîç ôç ëåéôïõñãßá ôùí áðïèçêåõìÝíùí äéáäéêáóéþí


÷ñçóéìïðïéþíôáò ôçí ðåéñáìáôéêÞ âÜóç äåäïìÝíùí movies-db. Èá êáôáóêåõÜ-
óïõìå äýï áðïèçêåõìÝíåò äéáäéêáóßåò ÷ñçóéìïðïéþíôáò åíôïëÝò T-SQL ìå ôç
âïÞèåéá ôïõ Query Analyzer. Ç ðñþôç äéáäéêáóßá êáëåßôáé ôáéíßåò åð öáíôáóßáò
êáé åðéóôñÝöåé üëåò ôéò ôáéíßåò áðü ôïí ðßíáêá Ôáéíßá, ïé ïðïßåò áíÞêïõí óôçí
êáôçãïñßá åðéóôçìïíéêÞ öáíôáóßá. Ç äéáôýðùóç ôçò ðñüôáóçò êáôáóêåõÞò ôçò
äéáäéêáóßáò Ý÷åé ùò åîÞò:
CREATE PROCEDURE Ôáéíßåò_Åð_Öáíôáóßáò
AS
SELECT * FROM Ôáéíßá WHERE êáôçãïñßá=‘Åð.Öáíôáóßáò’;

Ç êëÞóç ôçò äéáäéêáóßáò áðü ôïí Query Analyzer åðéôõã÷Üíåôáé ÷ñçóéìïðïéþíôáò


ôçí åíôïëÞ EXECUTE:

EXECUTE ôáéíßåò åð öáíôáóßáò;

Ç äåýôåñç äéáäéêáóßá ðïõ èá êáôáóêåõÜóïõìå äÝ÷åôáé äýï ðáñáìÝôñïõò. Ç


ðñþôç ðáñÜìåôñïò åßíáé ï êùäéêüò ôçò ôáéíßáò êáé ç äåýôåñç åßíáé Ýíáò áêÝñáéïò
áñéèìüò ðïõ ðñïóôßèåôáé óôç óôÞëç DVD ãéá ôç óõãêåêñéìÝíç ôáéíßá. Ç åíôïëÞ
êáôáóêåõÞò ôçò áðïèçêåõìÝíçò äéáäéêáóßáò åßíáé:
CREATE PROCEDURE ÅíçìÝñùóç_DVD (@êùäéêüò INT,
@áñéèìüò_DVD INT)
AS
UPDATE Ôáéíßá
SET DVD=DVD+áñéèìüò_DVD;

Ç åêôÝëåóç ôçò äéáäéêáóßáò ðñáãìáôïðïéåßôáé ìå ôçí åðüìåíç åíôïëÞ ç ïðïßá


áõîÜíåé êáôÜ ðÝíôå ôïí áñéèìü ôùí äéáèÝóéìùí DVD ãéá ôçí ôáéíßá ìå êùäéêü 1:

EXECUTE åíçìÝñùóç DVD @êùäéêüò=1, @áñéèìüò DVD=5;

Ç áëëáãÞ ôïõ ïñéóìïý ìßáò áðïèçêåõìÝíçò äéáäéêáóßáò ðñáãìáôïðïéåßôáé ìå


ôçí åíôïëÞ ALTER PROCEDURE, åíþ ãéá ôçí êáôÜñãçóÞ ôçò ÷ñçóéìïðïéåßôáé ç
åíôïëÞ DROP PROCEDURE.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 529

21.2 ÓõíáñôÞóåéò Ïñéæüìåíåò áðü ôï ×ñÞóôç


Ï MSSQLS-2000 äéáèÝôåé Ýíáí ðïëý éó÷õñü ìç÷áíéóìü ðïõ ìðïñåß íá ÷ñçóéìï-
ðïéçèåß ðñïò üöåëïò ôçò ëåéôïõñãéêüôçôáò. Ìßá óõíÜñôçóç ïñéæüìåíç áðü ôï
÷ñÞóôç (user-defined function) áðïôåëåß Ýíá ôìÞìá êþäéêá T-SQL, ôï ïðïßï ìðï-
ñåß íá åðéóôñÝøåé ìßá Þ ðåñéóóüôåñåò ôéìÝò. Ïé óõíáñôÞóåéò áõôÝò ìðïñïýí íá
÷ñçóéìïðïéçèïýí óå ðñïôÜóåéò T-SQL äéåõêïëýíïíôáò óçìáíôéêÜ ôç äéáôýðùóç
åñùôçìÜôùí. Âáóéêü ðëåïíÝêôçìá ôçò äõíáôüôçôáò êáôáóêåõÞò íÝùí óõíáñôÞ-
óåùí ïñéæüìåíùí áðü ôï ÷ñÞóôç åßíáé üôé äåí ðåñéïñéæüìáóôå áðü ôéò Ýôïéìåò
óõíáñôÞóåéò ðïõ ðáñÝ÷åé ï MSSQLS-2000.
Ç T-SQL ðáñÝ÷åé ôçí åíôïëÞ CREATE FUNCTION ãéá ôçí êáôáóêåõÞ ìßáò
íÝáò óõíÜñôçóçò ïñéæüìåíçò áðü ôï ÷ñÞóôç. Ç óýíôáîç ôçò åíôïëÞò åßíáé:

CREATE FUNCTION ¼íïìá_ÓõíÜñôçóçò


([{@ðáñÜìåôñïò ôýðïò_äåäïìÝíùí [=ôéìÞ_ðñïåðéëïãÞò]}
[, ...n]])
RETURNS ôýðïò_äåäïìÝíùí
[WITH {ENCRYPTION
| SCHEMABINDING
| ENCRYPTION, SCHEMABINDING}]
AS
BEGIN
ðñïôÜóåéò T-SQL
RETURN Ýêöñáóç
END;

Ç óýíôáîç ôçò åíôïëÞò êáôáóêåõÞò íÝáò óõíÜñôçóçò Ý÷åé ðïëëÝò ïìïéüôçôåò


ìå ôçí åíôïëÞ êáôáóêåõÞò íÝáò äéáäéêáóßáò. Ùóôüóï, ìßá óõíÜñôçóç ðñÝðåé ðÜ-
íôá íá åðéóôñÝöåé êÜðïéá ôéìÞ. Ï ôýðïò äåäïìÝíùí ðïõ åðéóôñÝöåé ç óõíÜñôçóç
äçëþíåôáé ìåôÜ ôç ëÝîç RETURNS. Ôï óþìá ôçò, ðïõ ðåñéÝ÷åé ôéò ðñïôÜóåéò T-
SQL, ïñéïèåôåßôáé áðü ôéò ëÝîåéò BEGIN êáé END. Ç åðéëïãÞ ENCRYPTION ÷ñçóé-
ìïðïéåßôáé ãéá ôçí êùäéêïðïßçóç ôïõ ðçãáßïõ êþäéêá ôçò óõíÜñôçóçò (üðùò êáé
óôçí ðåñßðôùóç ôùí äéáäéêáóéþí). ÅðéðëÝïí, ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå
ôçí åðéëïãÞ SCHEMABINDING, ç ïðïßá áðïôñÝðåé ôç ìåôáâïëÞ ôïõ ó÷Þìáôïò
ôùí áíôéêåéìÝíùí ðïõ ÷ñçóéìïðïéïýíôáé áðü ôç óõíÜñôçóç. Ç åðüìåíç óõíÜñ-
ôçóç äÝ÷åôáé ùò ðáñÜìåôñï Ýíáí áêÝñáéï áñéèìü êáé åðéóôñÝöåé ôï ðëÞèïò ôùí
ôáéíéþí ãéá ôéò ïðïßåò õðÜñ÷åé ôïõëÜ÷éóôïí ç áíôßóôïé÷ç äéáèåóéìüôçôá óå DVD:

CREATE FUNCTION ÐëÞèïò_Ôáéíéþí (@ áñéèìüò_DVD INT)


RETURNS INT
AS
BEGIN
530 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

RETURN
(SELECT COUNT(*)
FROM Ôáéíßá
WHERE DVD>=@áñéèìüò_DVD)
END;

¸íá óçìáíôéêü ÷áñáêôçñéóôéêü ôùí óõíáñôÞóåùí åßíáé üôé õðÜñ÷åé ç äõíá-


ôüôçôá íá åðéóôñáöåß ïëüêëçñïò ðßíáêáò, ÷ñçóéìïðïéþíôáò ôïí ôýðï äåäïìÝíùí
TABLE. Ç åðüìåíç óõíÜñôçóç åðéóôñÝöåé üëåò ôéò åããñáöÝò ôïõ ðßíáêá Ôáéíßá,
ïé ïðïßåò Ý÷ïõí äéáèåóéìüôçôá óå DVD ôïõëÜ÷éóôïí üóç åßíáé ç ôéìÞ ôçò ðáñáìÝ-
ôñïõ áñéèìüò DVD:

CREATE FUNCTION Ôáéíßåò (@ áñéèìüò_DVD INT)


RETURNS TABLE
AS
BEGIN
RETURN
(SELECT *
FROM Ôáéíßá
WHERE DVD>=@áñéèìüò_DVD)
END;

Ç áëëáãÞ ôïõ ïñéóìïý ìßáò óõíÜñôçóçò ïñéæüìåíçò áðü ôï ÷ñÞóôç ðñáãìáôï-


ðïéåßôáé ìå ôçí åêôÝëåóç ôçò åíôïëÞò ALTER FUNCTION, åíþ ãéá ôçí êáôÜñãçóÞ
ôçò ÷ñçóéìïðïéåßôáé ç åíôïëÞ DROP FUNCTION.

21.3 Óêáíäáëéóìïß
Ï MSSQLS-2000 õðïóôçñßæåé ôïí ïñéóìü óêáíäáëéóìþí ðïõ áíáöÝñèçêáí óôï
ÊåöÜëáéï 18 ùò ÷áñáêôçñéóôéêü ôïõ ðñïôýðïõ SQL3. Õðåíèõìßæåôáé üôé ïé óêáí-
äáëéóìïß ÷ñçóéìïðïéïýíôáé êõñßùò ãéá:

• ôç äéåíÝñãåéá åëÝã÷ùí ðñéí Þ ìåôÜ ôçí åéóáãùãÞ/äéáãñáöÞ/åíçìÝñùóç äå-


äïìÝíùí, Ýôóé þóôå ôá äåäïìÝíá íá éêáíïðïéïýí ðïëýðëïêïõò ðåñéïñéóìïýò
áêåñáéüôçôáò,

• ôçí êáôáãñáöÞ ôùí åíåñãåéþí ðïõ Ý÷ïõí ðñáãìáôïðïéçèåß óå Ýíáí ðßíáêá


(logging),

• ôçí õðïóôÞñéîç ðñïåéäïðïéÞóåùí üôáí åéóá÷èïýí, äéáãñáöïýí Þ åíçìåñù-


èïýí äåäïìÝíá åíüò ðßíáêá.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 531

¸íáò óêáíäáëéóìüò ïñßæåôáé ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ ôçò T-SQL CRE-


ATE TRIGGER, ðïõ Ý÷åé ôçí åîÞò ìïñöÞ:

CREATE TRIGGER ¼íïìá_Óêáíäáëéóìïý


ON ¼íïìá_Ðßíáêá | ¼íïìá_¼øçò
{FOR | AFTER | INSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
[WITH ENCRYPTION]
AS
{ðñïôÜóåéò T-SQL
| IF UPDATE(óôÞëç) [{AND | OR} UPDATE(óôÞëç)]
ðñïôÜóåéò T-SQL};

Ç åðéëïãÞ AFTER ïäçãåß óôçí åêôÝëåóç ôïõ óêáíäáëéóìïý ìåôÜ ôçí åéóáãùãÞ,
äéáãñáöÞ Þ åíçìÝñùóç ôùí äåäïìÝíùí. Ç åðéëïãÞ INSTEAD OF åðéâÜëëåé ôçí
åêôÝëåóç ôïõ óêáíäáëéóìïý ÷ùñßò ôçí ïëïêëÞñùóç ôçò åéóáãùãÞò, äéáãñáöÞò
Þ åíçìÝñùóçò. Ç åðéëïãÞ AFTER ìðïñåß íá ÷ñçóéìïðïéçèåß ìüíï óå ðßíáêåò,
åíþ ç åðéëïãÞ INSTEAD OF ìðïñåß íá ÷ñçóéìïðïéçèåß óå ðßíáêåò êáé üøåéò. Ç
öñÜóç IF UPDATE ÷ñçóéìïðïéåßôáé ùò ìßá åðéðñüóèåôç óõíèÞêç óêáíäáëéóìïý
áí Ýíáò óêáíäáëéóìüò ðïõ áöïñÜ óå åéóáãùãÞ Þ åíçìÝñùóç êáèïñßæåôáé ãéá ìßá
óõãêåêñéìÝíç óôÞëç Þ óôÞëåò ôïõ ðßíáêá. Ïé öñÜóåéò IF UPDATE ìðïñïýí íá
óõíäõáóèïýí ìå ôïõò ëïãéêïýò ôåëåóôÝò AND êáé OR. Ç åðéëïãÞ WITH ENCRYP-
TION Ý÷åé ôï ßäéï áðïôÝëåóìá üðùò êáé óôçí ðåñßðôùóç ôùí áðïèçêåõìÝíùí
äéáäéêáóéþí êáé ôùí óõíáñôÞóåùí ïñéæüìåíùí áðü ôï ÷ñÞóôç êáé åðéâÜëëåé êù-
äéêïðïßçóç óôïí ðçãáßï êþäéêá ôïõ óêáíäáëéóìïý.
¼ôáí äçìéïõñãåßôáé Ýíáò óêáíäáëéóìüò ðñÝðåé íá äçëùèåß áí áíáöåñüìáóôå
óôçí ôéìÞ ôçò óôÞëçò ðñéí Þ ìåôÜ ôçí åðßäñáóç ôïõ óêáíäáëéóìïý. Ãéá ôï ëüãï
áõôü ÷ñçóéìïðïéïýíôáé äýï åéêïíéêïß ðßíáêåò ìå ôá åéäéêÜ ïíüìáôá inserted êáé
deleted. Ï ðßíáêáò deleted ðåñéÝ÷åé áíôßãñáöá ôùí ãñáììþí ðïõ äéáãñÜöïíôáé
áðü ôïí ðßíáêá ðïõ åöáñìüæåôáé ï óêáíäáëéóìüò. Ðáñüìïéá, ï ðßíáêáò inserted
ðåñéÝ÷åé áíôßãñáöá ôùí ãñáììþí ðïõ åéóÜãïíôáé óôïí ðßíáêá. Áí ï óêáíäáëé-
óìüò åíåñãïðïéåßôáé áðü ìßá ðñüôáóç UPDATE, ôüôå ï ðßíáêáò deleted ðåñéÝ÷åé ôá
äåäïìÝíá ðñéí áðü ôçí ôñïðïðïßçóç ôïõ ðßíáêá, åíþ ï ðßíáêáò inserted ðåñéÝ÷åé
ôá äåäïìÝíá ìåôÜ ôçí ôñïðïðïßçóç ôïõ ðßíáêá.

21.4 ÌåãÜëá Áíôéêåßìåíá


Ï MSSQLS-2000 õðïóôçñßæåé ôñåéò ôýðïõò äåäïìÝíùí ðïõ áöïñïýí óå ìåãÜëá
áíôéêåßìåíá. Ï ÷åéñéóìüò ôùí ôýðùí áõôþí åßíáé ðáñüìïéïò ìå ôïõò Üëëïõò âá-
óéêïýò ôýðïõò äåäïìÝíùí ôçò T-SQL (ð.÷., INT, CHAR). Ïé ôýðïé áõôïß åßíáé:
532 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

• TEXT: ÷ñçóéìïðïéåßôáé ãéá ôçí áðïèÞêåõóç êåéìÝíùí ìÝ÷ñé 231 -1 ÷áñáêôÞ-


ñåò,

• NTEXT: ãéá ôçí áðïèÞêåõóç 230 -1 ÷áñáêôÞñùí unicode, êáé

• IMAGE: ãéá ôçí áðïèÞêåõóç ìåãÜëïõ üãêïõ äõáäéêÞò ðëçñïöïñßáò, üðùò


äåäïìÝíá Þ÷ïõ, åéêüíáò êáé video, ìÝ÷ñé 231 -1 ÷áñáêôÞñåò.

Áò åîåôÜóïõìå ôç ÷ñÞóç ôùí íÝùí ôýðùí äåäïìÝíùí ìå Ýíá ðáñÜäåéãìá.


Èåùñåßóôå üôé ãéá êÜèå ôáéíßá èÝëïõìå íá áðïèçêåýóïõìå ìßá ëåðôïìåñÞ ðåñé-
ãñáöÞ ôçò õðüèåóçò, ìßá ÷áñáêôçñéóôéêÞ åéêüíá ôçò ôáéíßáò (ð.÷., åéêüíá áðü ôç
óõóêåõáóßá DVD ôçò ôáéíßáò) êáé Ýíá óýíôïìï trailer óå ìïñöÞ video. ¼ðùò
åßíáé ðñïöáíÝò, ï ïñéóìüò ôïõ ðßíáêá Ôáéíßá ðñÝðåé íá ìåôáâëçèåß ìå ôç ÷ñÞóç
ôçò åíôïëÞò ALTER TABLE ùò åîÞò:

ALTER TABLE Ôáéíßá


ADD
(ðåñéãñáöÞ TEXT,
åéêüíá IMAGE,
video IMAGE);

Ï íÝïò ðßíáêáò Ôáéíßá ðïõ ðñïêýðôåé ðåñéÝ÷åé ôñåéò íÝåò óôÞëåò, åê ôùí ïðïßùí
ç ìßá åßíáé ôýðïõ TEXT êáé ïé Üëëåò äýï ôýðïõ IMAGE.
Ï MSSQLS-2000 äéáèÝôåé åéäéêÝò óõíáñôÞóåéò êáé äéáäéêáóßåò ãéá ôï ÷åéñéóìü
äåäïìÝíùí ôýðïõ TEXT, NTEXT êáé IMAGE, ç ðåñéãñáöÞ ôùí ïðïßùí åßíáé Ýîù
áðü ôïõò óêïðïýò ôïõ âéâëßïõ áõôïý. Ï åíäéáöåñüìåíïò áíáãíþóôçò ìðïñåß
íá óõìâïõëåõèåß åîåéäéêåõìÝíá âéâëßá ãéá ôïí MSSQLS-2000 ãéá ðåñéóóüôåñåò
ëåðôïìÝñåéåò.

21.5 ÁðïèÞêåò ÄåäïìÝíùí êáé Åîüñõîç


Ï MSSQLS-2000 õðïóôçñßæåé ôç äéá÷åßñéóç áðïèçêþí äåäïìÝíùí (data ware-
houses) ìÝóù ôïõ óõíüëïõ õðçñåóéþí ðïõ êáëåßôáé Microsoft Analysis Services
(MAS ãéá óõíôïìßá). Ôï åñãáëåßï MAS ðåñéÝ÷åé âïçèÞìáôá ãéá ó÷åäüí êÜèå
åñãáóßá ðïõ åêôåëåßôáé êáôÜ ôç äéáäéêáóßá ôçò ó÷åäßáóçò êáé õëïðïßçóçò ìßáò
áðïèÞêçò äåäïìÝíùí. Ãéá ðáñÜäåéãìá, ï Cube Wizard ìðïñåß íá ÷ñçóéìïðïéç-
èåß ãéá ôçí êáôáóêåõÞ åíüò êýâïõ ðïëëþí äéáóôÜóåùí, åíþ ï Dimension Wizard
÷ñçóéìïðïéåßôáé ãéá ôïí ïñéóìü ôùí äéáóôÜóåùí ôïõ êýâïõ.
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 533

21.5.1 Áñ÷éôåêôïíéêÞ
Ôï MAS áêïëïõèåß ôçí áñ÷éôåêôïíéêÞ ðåëÜôç/åîõðçñÝôç (client/server) êáé åðé-
ôñÝðåé óå áíåîÜñôçôåò åöáñìïãÝò íá ÷ñçóéìïðïéïýí ôçò õðçñåóßåò áíÜëõóçò äå-
äïìÝíùí. Óôï Ó÷Þìá 21.1 ðáñïõóéÜæåôáé ç áñ÷éôåêôïíéêÞ ðåëÜôç/åîõðçñÝôç ôïõ
MAS. Ôï MAS ðåñéëáìâÜíåé ôá õðïóõóôÞìáôá Analysis Server êáé PivotTable. Ï
Analysis Server åßíáé õðåýèõíïò ãéá ôçí êáôáóêåõÞ êáé äéá÷åßñéóç ðïëõäéÜóôáôùí
êýâùí ãéá ëåéôïõñãßåò OLAP. Åðßóçò, ôñïöïäïôåß ìå ðïëõäéÜóôáôá äåäïìÝíá ôï
õðïóýóôçìá PivotTable ðïõ áíáëáìâÜíåé ôç ìåôáöïñÜ ôùí äåäïìÝíùí ðñïò ôïõò
ðåëÜôåò (clients) ìÝóù ôùí äéåðáöþí ADO Multidimensional (ADO MD) êáé
OLE DB.

Πελάτης
MOLAP
OLE DB

DSS ADO Εφαρµογή


ROLAP Analysis Server

HOLAP Pivot Table

Ó÷Þìá 21.1: Áñ÷éôåêôïíéêÞ ðåëÜôç/åîõðçñÝôç ôïõ MAS.

Ï Analysis Server õðïóôçñßæåé êáé ôïõò ôñåéò ôýðïõò áíáëõôéêÞò åðåîåñãáóßáò


MOLAP, ROLAP êáé HOLAP ðïõ Ý÷ïõí ðåñéãñáöåß óôï ÊåöÜëáéï 19. Õðåí-
èõìßæïõìå üôé óôçí áñ÷éôåêôïíéêÞ MOLAP ôá äåäïìÝíá áðïèçêåýïíôáé óå ðïëõ-
äéÜóôáôïõò êýâïõò, óôçí áñ÷éôåêôïíéêÞ ROLAP óå ðßíáêåò ôçò ÂÜóçò ÄåäïìÝ-
íùí, åíþ óôçí áñ÷éôåêôïíéêÞ HOLAP áêïëïõèåßôáé Ýíá õâñéäéêü ó÷Þìá.
Óôç óõíÝ÷åéá ðáñáèÝôïõìå ôçí ïñïëïãßá ðïõ õéïèåôåßôáé áðü ôï MAS ãéá ôçí
êáôáóêåõÞ êáé äéá÷åßñéóç ìßáò áðïèÞêçò äåäïìÝíùí:

• ÂÜóç ÄåäïìÝíùí (database) - Áðïôåëåß ôï ëïãéêü êéâþôéï (logical container)


üðïõ ïñßæïíôáé êáé áðïèçêåýïíôáé ïé êýâïé äåäïìÝíùí.

• Êýâïò (cube) - Áðïôåëåß ôçí ðïëõäéÜóôáôç áíáðáñÜóôáóç ôùí äåäïìÝíùí.

• ÐçãÞ ÄåäïìÝíùí (datasource) - Ç ðçãÞ áðü üðïõ ðñïÝñ÷ïíôáé ôá äåäïìÝíá


ðïõ áíáðáñéóôÜ Ýíáò êýâïò.

• ÌÝôñçóç (measure) - Åßíáé ôï ìÝãåèïò Þ ôá ìåãÝèç ðïõ ìáò åíäéáöÝñïõí


êáôÜ ôéò ëåéôïõñãßåò OLAP (ð.÷., ôéìÞ, ðïóüôçôá). ¸íáò êýâïò ìðïñåß íá
ðåñéÝ÷åé ìÝ÷ñé êáé 1034 äéáöïñåôéêÝò ìåôñÞóåéò.
534 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

• ÄéÜóôáóç (dimension) - ¸íáò êýâïò ïñßæåôáé ìå ôç âïÞèåéá äéáóôÜóåùí.


Ìßá äéÜóôáóç ïñßæåôáé áðü ôçí Üèñïéóç (aggregation) ôùí ôéìþí óå Ýíá óõ-
ãêåêñéìÝíï åðßðåäï Ýôóé þóôå íá êáëýðôïíôáé ïé áíÜãêåò ôçò áíáëõôéêÞò
åðåîåñãáóßáò. Ãéá ðáñÜäåéãìá, Ýíáò êýâïò ìðïñåß íá ðåñéÝ÷åé ôéò äéáóôÜ-
óåéò ÷ñüíïò (óå çìÝñåò) êáé ðåñéï÷Þ (óå íïìïýò), åíþ Ýíáò Üëëïò êýâïò
ìðïñåß íá ïñßæåôáé áðü ôéò äéáóôÜóåéò ÷ñüíïò (óå ìÞíåò) êáé ðåñéï÷Þ (óå
ðåñéöÝñåéåò).

• Êåëß (cell) - Åßíáé ôï ôìÞìá ìßáò ìÝôñçóçò ðïõ âñßóêåôáé óôçí ôïìÞ ôùí
äéáóôÜóåùí. Óå êÜèå êåëß áðïèçêåýåôáé ìßá ìüíï ôéìÞ. Ãéá ðáñÜäåéãìá
Ýíá óõãêåêñéìÝíï êåëß ìðïñåß íá ðåñéÝ÷åé ôï ðëÞèïò ôùí ôåìá÷ßùí ðïõ
ðùëÞèçêáí (ìÝôñçóç) ôï ôåëåõôáßï ôñßìçíï ôïõ 2000 (äéÜóôáóç 1) óôçí
ðüëç ôçò Èåóóáëïíßêçò (äéÜóôáóç 2) áðü ôï õðïêáôÜóôçìá × (äéÜóôáóç
3).

• ÄéáìÝñéóç (partition) - ¸íáò êýâïò äåäïìÝíùí áðïôåëåßôáé áðü ôìÞìáôá


ðïõ êáëïýíôáé äéáìåñßóåéò (partitions). Ìå ôïí ôñüðï áõôü ìðïñïýìå íá
äéáóðÜóïõìå Ýíáí êýâï óå öõóéêü åðßðåäï, ìå áðïôÝëåóìá íá Ý÷ïõìå ôç
äõíáôüôçôá íá åñãáæüìáóôå ìå Ýíá õðïóýíïëï ôùí äåäïìÝíùí ôïõ êýâïõ.
Áõôü ïäçãåß óå ãñçãïñüôåñç åðåîåñãáóßá åðåéäÞ ðñïóðåëáýíïíôáé ìüíï
ôá áðáñáßôçôá äåäïìÝíá ôïõ êýâïõ êáé ü÷é üëá.

• Éåñáñ÷ßá (hierarchy) - Áðïôåëåß ôï óýíïëï ôùí ìåëþí (members) ìßáò äéÜ-


óôáóçò êáé ôç ó÷åôéêÞ ôïõò èÝóç ùò ðñïò ôéò õðüëïéðåò. Ìßá éåñáñ÷ßá
ìðïñåß íá åßíáé æõãéóìÝíç (balanced) Þ ìç-æõãéóìÝíç (unbalanced). Óå ìßá
æõãéóìÝíç éåñáñ÷ßá üëïé ïé êëÜäïé ôçò äåíäñéêÞò äïìÞò ðïõ áíáðáñéóôÜ
ôçí éåñáñ÷ßá öôÜíïõí óôï ßäéï åðßðåäï, êÜôé ôï ïðïßï äåí éó÷ýåé ãéá ìßá
ìç-æõãéóìÝíç éåñáñ÷ßá.
21.5.2 Êáôçãïñßåò Êýâùí ôïõ MAS
Ôï MAS õðïóôçñßæåé äéáöïñåôéêÝò êáôçãïñßåò êýâùí äåäïìÝíùí, ðñïóöÝñïíôáò
ìåãÜëç åõåëéîßá óôïí ôñüðï ïñéóìïý êáé äéá÷åßñéóçò. Ïé äéáöïñåôéêÝò ìïñöÝò
ðïõ ìðïñåß íá Ý÷åé Ýíáò êýâïò åßíáé ïé åîÞò:
• Êáíïíéêüò Êýâïò (regular cube) - ¸íáò êáíïíéêüò êýâïò óôçñßæåôáé óå
ðñáãìáôéêïýò ðßíáêåò ôçò ÂÜóçò ÄåäïìÝíùí êáé Ý÷åé öõóéêÞ õðüóôáóç.
Áí õðÜñîïõí áëëáãÝò óôá äåäïìÝíá ôçò ðçãÞò (datasource) ôïõ êýâïõ,
ôüôå èá ðñÝðåé ï êýâïò íá åðáíõðïëïãéóèåß åê íÝïõ.

• Åéêïíéêüò Êýâïò (virtual cube) - ¸íáò åéêïíéêüò êýâïò äåí Ý÷åé öõóéêÞ
õðüóôáóç êáé óôçñßæåôáé óå Ýíáí Þ ðåñéóóüôåñïõò êáíïíéêïýò êýâïõò. Ç
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 535

Ýííïéá ôïõ åéêïíéêïý êýâïõ åßíáé áíôßóôïé÷ç ìå áõôÞí ôçò üøçò óå Ýíá
ó÷åóéáêü ÓÄÂÄ.

• ÓõíäåäåìÝíïò Êýâïò (linked cube) - ¸íáò äéáóõíäåäåìÝíïò êýâïò óôçñß-


æåôáé óå êáíïíéêïýò êýâïõò ðïõ ìðïñåß íá áðïèçêåýïíôáé óå äéáöïñåôéêÜ
óõóôÞìáôá MAS.

• Ôïðéêüò Êýâïò (local cube) - Ôá äåäïìÝíá åíüò ôïðéêïý êýâïõ ðåñéÝ÷ïíôáé


óå ìåôáöÝñóéìá áñ÷åßá (portable files) êáé ìðïñïýí íá ðñïóðåëáóèïýí
÷ùñßò ôçí ýðáñîç ôïõ Analysis Server.

• Êýâïò Ðñáãìáôéêïý ×ñüíïõ (real-time cube) - ¸íáò êýâïò ðñáãìáôéêïý


÷ñüíïõ åßíáé Ýíáò êáíïíéêüò êýâïò ìå ôçí éäéáéôåñüôçôá üôé ïé äéáóôÜóåéò
ôïõ åðéôñÝðïõí ëåéôïõñãßåò OLAP ðñáãìáôéêïý ÷ñüíïõ (real-time OLAP).
Áõôü óçìáßíåé üôé åíçìåñþíïíôáé Üìåóá áðü ôéò ðçãÝò äåäïìÝíùí üôáí
óõìâáßíïõí ìåôáâïëÝò óôá äåäïìÝíá.

• Êýâïò ÁðïèÞêåõóçò (write-enabled cube) - Óå Ýíáí êýâï áðïèÞêåõóçò


åðéôñÝðåôáé ç åíçìÝñùóç ôùí äåäïìÝíùí, êÜôé ôï ïðïßï äåí éó÷ýåé óôç
ãåíéêÞ ðåñßðôùóç.

21.5.3 Ëåéôïõñãßåò OLAP


Ôï âáóéêüôåñï åñãáëåßï ôïõ MAS åßíáé ï Analysis Manager ðïõ ÷ñçóéìïðïéåßôáé
ùò áöåôçñßá ãéá üëåò ôéò ëåéôïõñãßåò ðïõ áöïñïýí óå ìßá áðïèÞêç äåäïìÝíùí.
¸ôóé, ìðïñïýìå íá êáôáóêåõÜæïõìå íÝïõò êýâïõò, íá ïñßæïõìå íÝåò äéáóôÜóåéò
êáé ìåôñÞóåéò, íá äçëþíïõìå íÝåò ðçãÝò äåäïìÝíùí, êáé ãåíéêÜ íá äéá÷åéñéæü-
ìáóôå üëá ôá áðáñáßôçôá óôïé÷åßá ðïõ áöïñïýí óôçí êáôáóêåõÞ êáé äéá÷åßñéóç
ìßáò áðïèÞêçò äåäïìÝíùí. Åðßóçò, ï Analysis Manager åðéôñÝðåé ôçí åêôÝëåóç
åñùôçìÜôùí OLAP óôïõò ðïëõäéÜóôáôïõò êýâïõò äåäïìÝíùí ðïõ Ý÷ïõìå êáôá-
óêåõÜóåé. Ìå ôçí åãêáôÜóôáóç ôïõ MAS Ý÷ïõìå ôç äõíáôüôçôá íá åãêáôáóôÞ-
óïõìå êáé Ýíá ðáñÜäåéãìá áðïèÞêçò äåäïìÝíùí ìå ôï üíïìá FoodMart2000. Óôï
Ó÷Þìá 21.2 ðáñïõóéÜæåôáé ç ðåñéãñáöÞ ôùí äéáóôÜóåùí ôïõ ðïëõäéÜóôáôïõ êý-
âïõ Budget üðùò öáßíåôáé óôïí Analysis Manager.
Ï Analysis Manager êáëýðôåé ôéò áíÜãêåò äéá÷åßñéóçò ìßáò áðïèÞêçò äåäïìÝ-
íùí ðáñÝ÷ïíôáò ìßá ïëïêëçñùìÝíç åöáñìïãÞ. Ôé ãßíåôáé üìùò óôçí ðåñßðôùóç
ðïõ èÝëïõìå íá Ý÷ïõìå ðñüóâáóç óôá ðïëõäéÜóôáôá äåäïìÝíá áðü ìßá Üëëç
åöáñìïãÞ; Ôï MAS ðáñÝ÷åé ôç ãëþóóá MDX (multidimensional expressions) ðïõ
ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôï óêïðü áõôü. Ç ãëþóóá MDX ðáñÝ÷åé üëåò ôéò
äõíáôüôçôåò ãéá ïñéóìü êáé ÷åéñéóìü ðïëõäéÜóôáôùí äåäïìÝíùí êáé ç óýíôáîÞ
ôçò ìïéÜæåé áñêåôÜ ìå ôç óýíôáîç ôçò ãëþóóáò SQL. ÊÜðïéåò áðü ôéò ëåéôïõñãßåò
536 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

Ó÷Þìá 21.2: ÐåñéãñáöÞ êýâïõ Budget ôçò áðïèÞêçò äåäïìÝíùí FoodMart2000.

ðïõ õðïóôçñßæïíôáé áðü ôçí MDX ìðïñïýí íá õðïóôçñé÷èïýí ëéãüôåñï áðïäï-


ôéêÜ êáé áðü ôçí SQL. Ç MDX ïñßæåôáé óôéò OLAP åðåêôÜóåéò ôïõ OLE DB.
¼ðùò êáé óôçí ðåñßðôùóç ôçò SQL, êÜèå åñþôçìá MDX áðïôåëåßôáé áðü
ìßá ðñüôáóç SELECT, Ýíá óçìåßï áöåôçñßáò ðïõ äçëþíåôáé ìå ôï FROM, êáé
Ýíá ößëôñï ðïõ äçëþíåôáé ìå ôï WHERE. Ï ðñïãñáììáôéóôÞò Ý÷åé óôç äéÜèåóÞ
ôïõ êáé Ýíá óýíïëï óõíáñôÞóåùí ãéá ôï ÷åéñéóìü ôùí ðïëõäéÜóôáôùí äåäïìÝíùí,
åíþ õðïóôçñßæåôáé êáé ç äçìéïõñãßá óõíáñôÞóåùí ïñéæüìåíùí áðü ôï ÷ñÞóôç.
Ç åãêáôÜóôáóç ôïõ MAS ðåñéëáìâÜíåé êáé ìßá åöáñìïãÞ ðïõ ÷ñçóéìïðïéåß
åñùôÞìáôá MDX ãéá ôçí ðñïóðÝëáóç ôùí ðïëõäéÜóôáôùí äåäïìÝíùí. Óôï Ó÷Þìá
21.3 äßíåôáé ï ôñüðïò äéáôýðùóçò åíüò åñùôÞìáôïò MDX êáé ï ôñüðïò åìöÜíéóçò
ôïõ áðïôåëÝóìáôïò. Ôï ðáñÜäåéãìá áöïñÜ óôçí ðåéñáìáôéêÞ áðïèÞêç äåäïìÝ-
íùí FoodMart2000.

21.5.4 Ëåéôïõñãßåò Åîüñõîçò ÄåäïìÝíùí


Ôï óýóôçìá MAS ðáñÝ÷åé äõíáôüôçôá åîüñõîçò äåäïìÝíùí ìå óôü÷ï ôçí áíáêÜ-
ëõøç ÷ñÞóéìçò ðëçñïöïñßáò óå ó÷åóéáêÜ Þ ðïëõäéÜóôáôá äåäïìÝíá. Ç ëåé-
ôïõñãßåò åîüñõîçò óôçñßæïíôáé óå åîåéäéêåõìÝíïõò áëãïñßèìïõò ïé ïðïßïé Ý÷ïõí
áíáðôõ÷èåß áðü ôï åñåõíçôéêü ôìÞìá ôçò Microsoft (Microsoft Research).
Ôï MAS õðïóôçñßæåé äýï äéáöïñåôéêÝò ìåèüäïõò åîüñõîçò äåäïìÝíùí: á)
äÝíäñá áðüöáóçò (decision trees) êáé â) ïìáäïðïßçóç. ¸íá äÝíäñï áðüöáóçò
óôçñßæåôáé óôçí êáôçãïñéïðïßçóç (classification) ôùí äåäïìÝíùí êáé ìðïñåß íá
ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 537

Ó÷Þìá 21.3: Åñþôçìá MDX.

÷ñçóéìïðïéçèåß ãéá ôçí ðñüâëåøç ôéìþí íÝùí äåäïìÝíùí. Ç ìÝèïäïò ôçò ïìáäï-
ðïßçóçò óôçñßæåôáé óôç ìÝèïäï ðëçóéÝóôåñùí ãåéôüíùí (nearest neighbors). Åã-
ãñáöÝò ðïõ Ý÷ïõí ðáñüìïéá ÷áñáêôçñéóôéêÜ (åðïìÝíùò âñßóêïíôáé êïíôÜ óôïí
ðïëõäéÜóôáôï ÷þñï) ó÷çìáôßæïõí ïìÜäåò.
Ïé äýï ìÝèïäïé åîüñõîçò äåäïìÝíùí ðïõ õðïóôçñßæïíôáé áðü ôï MAS äß-
íïõí ôç äõíáôüôçôá ãéá áíáêÜëõøç ÷ñÞóéìçò ðëçñïöïñßáò ðïõ äåí åßíáé êáèüëïõ
ðñïöáíÞò êáé äåí åßíáé äéáèÝóéìç ìå ôéò ðáñáäïóéáêÝò ìåèüäïõò åðåîåñãáóßáò
äåäïìÝíùí.

21.6 Óýíïøç
Ï MSSQLS-2000 åßíáé ÓÄÂÄ ðïõ õðïóôçñßæåé ðëÞñùò ôï ó÷åóéáêü ìïíôÝëï äå-
äïìÝíùí êáé åðéðëÝïí ðåñéëáìâÜíåé ðïëëÝò äõíáôüôçôåò ãéá ôçí õðïóôÞñéîç áðáé-
ôçôéêþí åöáñìïãþí. Ç õðïóôÞñéîç áðïèçêåõìÝíùí äéáäéêáóéþí êáé óõíáñôÞ-
óåùí ïñéæüìåíùí áðü ôï ÷ñÞóôç ðñïóöÝñåé ìåãÜëç åõåëéîßá êáé ëåéôïõñãéêüôçôá.
Ìå ôï ìç÷áíéóìü ôùí óêáíäáëéóìþí ìðïñïýìå íá åëÝã÷ïõìå ôéò åéóáãùãÝò, äéá-
ãñáöÝò êáé åíçìåñþóåéò äåäïìÝíùí êáé íá åêôåëïýìå åðéðëÝïí ëåéôïõñãßåò.
Ç õðïóôÞñéîç ôùí íÝùí ôýðùí äåäïìÝíùí TEXT, NTEXT êáé IMAGE åðéôñÝðåé
538 ÊåöÜëáéï 21. ÅéäéêÜ ÈÝìáôá ôïõ MSSQLS-2000

ôçí áðïèÞêåõóç êáé äéá÷åßñéóç êåéìÝíùí êáé äõáäéêþí äåäïìÝíùí, äéåõêïëýíï-


íôáò ôçí õðïóôÞñéîç åöáñìïãþí ðïõ áðáéôïýí ìåãÜëá áíôéêåßìåíá (ð.÷., ðïëõìå-
óéêÝò åöáñìïãÝò).
Ìå ôï óýíïëï õðçñåóéþí Microsoft Analysis Services ìðïñïýìå íá êáôáóêåõÜ-
æïõìå áðïèÞêåò äåäïìÝíùí ìå ôç âïÞèåéá ðïëõäéÜóôáôùí êýâùí äåäïìÝíùí êáé
íá åêôåëïýìå åñùôÞìáôá OLAP óôá äåäïìÝíá áõôÜ. Åðßóçò, ðñïóöÝñïíôáé ìÝèï-
äïé åîüñõîçò äåäïìÝíùí ìå óôü÷ï ôçí áíáêÜëõøç ãíþóçò ðïõ äåí åßíáé äõíáôüí
íá ãßíåé äéáèÝóéìç óôï ÷ñÞóôç ìå ôéò ðáñáäïóéáêÝò ìåèüäïõò åðåîåñãáóßáò äå-
äïìÝíùí.

ÁóêÞóåéò êáé ÅñùôÞóåéò ÅðáíÜëçøçò


21.1. Íá áíáöåñèåß ç ÷ñçóéìüôçôá ôùí áðïèçêåõìÝíùí äéáäéêáóéþí êáé ôùí óõ-
íáñôÞóåùí ïñéæüìåíùí áðü ôï ÷ñÞóôç.

21.2. Óôç ÂÜóç ÄåäïìÝíùí movies-db êáôáóêåõÜóôå Ýíá íÝï ðßíáêá Ìç ÄéáèÝ-
óéìç Ôáéíßá, ï ïðïßïò Ý÷åé ùò ÷áñáêôçñéóôéêÜ ôïí êùäéêü êáé ôï ôßôëï ôçò ôáéíßáò.
Óôïí ðßíáêá áõôü áðïèçêåýïíôáé ïé ôáéíßåò ôùí ïðïßùí ç äéáèåóéìüôçôá óå VHS
êáé DVD åßíáé 0. Íá ó÷åäéáóèåß Ýíáò óêáíäáëéóìüò Ýôóé þóôå ìåôÜ ôçí åíçìÝ-
ñùóç ôùí ÷áñáêôçñéóôéêþí VHS Þ DVD ôïõ ðßíáêá Ôáéíßá íá åëÝã÷åôáé áí êáé
ôá äýï ðåäßá åßíáé 0. Áí éó÷ýåé ç óõíèÞêç, ôüôå íá åéóÜãïíôáé ôá ÷áñáêôçñéóôéêÜ
ôçò ôáéíßáò óôïí ðßíáêá Ìç ÄéáèÝóéìç Ôáéíßá.

21.3. ÐïéÝò äõíáôüôçôåò ðñïóöÝñåé ï MSSQLS-2000 ãéá ôçí áðïèÞêåõóç ìåãÜ-


ëùí áíôéêåéìÝíùí;

21.4. Íá ðåñéãñáöïýí ïé äéáöïñåôéêÝò ìïñöÝò ðïëõäéÜóôáôùí êýâùí äåäïìÝíùí


ðïõ õðïóôçñßæïíôáé áðü ôï óýóôçìá MAS (Microsoft Analysis Services).

21.5. ÐåñéãñÜøôå ôéò Ýííïéåò ìÝôñçóç, äéÜóôáóç, êåëß.

21.6. Ôé åßíáé ç ãëþóóá MDX; Äþóôå Ýíá ðáñÜäåéãìá ÷ñÞóçò.

21.7. ÐïéÝò ëåéôïõñãßåò åîüñõîçò äåäïìÝíùí õðïóôçñßæïíôáé áðü ôïí MSSQLS-


2000;

21.8. Íá äþóåôå Ýíá ðáñÜäåéãìá êáôáóêåõÞò óêáíäáëéóìïý óôïí MSSQLS-2000.

21.9. Íá äþóåôå Ýíá ðáñÜäåéãìá êáôáóêåõÞò íÝáò äéåñãáóßáò óôïí MSSQLS-


ÓõóôÞìáôá ÂÜóåùí ÄåäïìÝíùí: Èåùñßá êáé ÐñáêôéêÞ ÅöáñìïãÞ 539

2000.

21.10. Íá äþóåôå Ýíá ðáñÜäåéãìá êáôáóêåõÞò íÝáò óõíÜñôçóçò óôïí MSSQLS-


2000.
Âéâëéïãñáößá

[Adam 1989] N. Adam and J. Worthmann: "Security-control Methods for Statisti-


cal Databases: a Comparative Study", ACM Computing Surveys, Vol.21 No.4,
pp.515-556, 1989.

[Agrawal 1994] R. Agrawal and R. Srikant: "Fast Algorithms for Mining Asso-
ciation Rules", Proceedings 20th International Conference on Very Large Data
Bases, pp.487-499, 1994.

[Agrawal 1998] R. Agrawal, J. Gehrke, D. Gunopoulos and P. Raghavan: "Auto-


matic Subspace Clustering of High-Dimensional Data for Data Mining Ap-
plications", Proceedings ACM SIGMOD Conference, pp.94-105, 1998.

[Aho 1979] A. Aho, Y. Sagiv and J. D. Ullman: "Equivalence Among Relational


Expressions", SIAM Journal of Computing, Vol.8, No.2, pp.218-246, 1979.

[Aho 1979b] A. Aho, C. Beeri and J. D. Ullman: "The Theory of Joins in Re-
lational Databases", ACM Transactions on Database Systems, Vol.4, No.3,
pp.297-314, 1979.

[Andrews 2003] C. Andrews, D. Litchfield, B. Grindlay and NGS Software: "SQL


Server Security", McGraw-Hill/Osborne, 2003.

[Ankerst 1999] M. Ankerst, C. Elsen, M. Ester and H.-P. Kriegel: "Visual Classifi-
cation: an Interactive Approach to Decision Tree Construction", Proceedings
International Conference on Knowledge Discovery and Data Mining, pp.392-396,
1999.

[ANSI 1986] ANSI: "American National Standards for Information Systems:


Database Language SQL", FDT, ANSI X3,135-1986, ANSI, New York, 1986.

[ANSI 1989] ANSI: "Database Language SQL with Integrity Enhancement", ANSI
X3,135-1989, ANSI, New York, 1989. Also as ISO/IEC Document 9075:1989.

541
542 Âéâëéïãñáößá

[ANSI 1992] ANSI: "Database Language SQL", ANSI X3,135-1992, ANSI, New
York, 1992. Also as ISO/IEC Document 9075:1992.

[Atkinson 1989] M. Atkinson, F. Banchilhon, D. DeWitt, K. Dittrich, D. Maier


and S. Zdonik: "Object-Oriented Database System Manifesto", Proceedings 1st
International Conference on Deductive and Object-Oriented Databases, pp.40-
57, 1989.

[Armstrong 1974] W. Armstrong: ‘‘Dependency Structures of Data Base Relation-


ships’’, Proceedings of the IFIP Congress, pp.580-583, 1974.

[Baeza-Yates 1989] R. A. Baeza-Yates: "Expected Behavior of B+ -trees", Acta


Informatica, Vol.26, No.5, pp.439-471, 1989.

[Batini 1991] C. Batini, S. Ceri, S. B. Navathe: "Conceptual Database Design: an


Entity/Relationship Approach", Addison-Wesley, 1991.

[Bayer 1972] R. Bayer and E. M. McCreight: "Organization and Maintenance of


Large Ordered Indices", Acta Informatica, Vol.1, No.3, pp.173-189, 1972.

[Bayer 1972b] R. Bayer and E. M. McGreight: "Symmetric Binary B-trees -


Data Structures and Maintenance Algorithms", Acta Informatica, Vol.1, No.4,
pp.209-306, 1972.

[Bayer 1977] R. Bayer and K. Unteraurer: "Prefix B-trees", ACM Transactions on


Database Systems, Vol.2, No.1, pp.1-21, 1977.

[Beauchemin 2004] B. Beauchemin, N. Berglund and D. Sullivan: ‘‘ A First Look


at SQL Server 2005 for Developers’’, Addison-Wesley, 2004.

[Bell 1974] D.E. Bell and L.J. La Padulla: "Secure Computer Systems: Mathemat-
ical Foundations and Model", MITRE Technical Report M74-244, 1974.

[Bernstein 1987] P.A. Bernstein, V. Hadzilakos and N. Goodman: "Concurrency


Control and Recovery in Database Systems", Addison-Wesley, 1987.

[Castano 1995] S. Castano, M.-G. Fugini, G. Martella and P. Samarati: "Database


Security", Addison-Wesley, 1995.

[Cattell 2000] R.G.G. Cattell (ed.): "The Object Database Standard: ODMG Re-
lease 3.0", Morgan Kaufmann, 2000.
Âéâëéïãñáößá 543

[Ceri 2000] S. Ceri, R. J. Cochrane and J. Widom: "Practical Applications of


Triggers and Constraints: Successes and Lingering Issues", Proceedings 26th
International Conference on Very Large Data Bases, pp.254-262, 2000.

[Chaudhuri 1997] S. Chaudhuri and U. Dayal: "An Overview of Data Warehousing


and OLAP Technology", ACM SIGMOD Record, Vol.26, No.1, pp.65-74, 1997.

[Chaudhuri 1998] S. Chaudhuri: "An Overview of Query Optimization in Rela-


tional Systems", Proceedings ACM Symposium on Principles of Database Sys-
tems, pp.34-43, 1998.

[Chen 1976] P. P. Chen: "The Entity-Relationship Model: Toward a Unified View


of Data", ACM Transactions on Database Systems, Vol.1, No.1, pp.9-36, 1976.

[Chen 1990] P. M. Chen and D. A. Patterson: "Maximizing Performance in a


Striped Disk Array", Proceedings 17th Annual International Symposium on
Computer Architecture, pp.322-331, 1990.

[Chen 1994] P.M. Chen, E.K. Lee, G.A. Gibson, R.H. Katz and D.A. Patterson:
"RAID: High-Performance, Reliable Secondary Storage", ACM Computing
Surveys, Vol.26, No.2, pp.145-185, 1994.

[Clark 1991] R. Clark, S. Holloway and W. List: "The Security, Audit and Control
of Databases", Avebury Technical Pub. Group, 1991.

[Codd 1970] E. F.Codd, "A Relational Model for Large Shared Databanks", Com-
munications of the ACM, Vol.13, No.6, pp.377-387, 1970.

[Codd 1972] E.F. Codd: "Further Normalization of the Data Base Relational
Model", in Data Base Systems (R. Rustin, ed.), Prentice-Hall, 1972.

[Codd 1979] E.F. Codd, Extending the Relational Model to Capture More Mean-
ing, ACM Transactions on Database Systems, Vol.4, No.4, pp.397-434, 1979.

[Comer 1979] D. Comer: "The Ubiquitous B-tree", ACM Computing Surveys,


Vol.11, No.2, pp.121-137, 1979.

[Connolly 2002] T.M. Connolly and C.E. Begg: "Database Systems: a Practical
Approach to Design, Implementation and Management", (3rd edition), Addison-
Wesley, 2002.

[Date 2003] C.J. Date: ‘‘An Introduction to Database Systems’’, Addison Wesley,
8th edition, 2003.
544 Âéâëéïãñáößá

[DBTG 1971] DBTG: "Report of the CODASYL Database Task Group", ACM,
April 1971.

[Denning 1979a] D. Denning, P. Denning, and M. Schwartz: "The Tracker: A


Threat to Statistical Database Security", ACM Transactions on Database Sys-
tems, Vol.4, No.1, pp.76-96, 1979.

[Denning 1979b] D. Denning and P. Denning: "Data Security", Computing Surveys,


Vol.11, No.3, pp.227-249, 1979.

[Denning 1983] D.E. Denning: "Cryptography and Data Security", Addison-Wesley,


1983.

[Devarakonda 2001] R.S. Devarakonda: "Object-Relational Database Systems -


the Road Ahead", ACM Crossroads Student Magazine, Vol.7, No.3, 2001.

[Dunham 2003] M.H. Dunham: "Data Mining, Introductory and Advanced Topics",
Prentice Hall, 2003.

[Dutka 1989] A.F. Dutka and H.H. Hanson: "Fundamentals of Data Normaliza-
tion", Addison-Wesley, 1989.

[Eaglestone 1998] B. Eaglestone and M. Ridley: "Object Databases: an Introduc-


tion ", McGraw-Hill, 1998.

[Eisenbarth 1982] B. Eisenbarth, N. Ziviani, G.H. Gonnet, K. Melhorn and D.


Wood: "The Theory of Fringe Analysis and its Applications to 2-3 trees and
B-trees", Information and Control, Vol.55, pp.125-174, 1982.

[Eisenberg 1999] A. Eisenberg and J. Melton: "SQL:1999, Formerly Known as


SQL3", ACM SIGMOD Record, Vol.28, No.1, pp.131-138, 1999.

[Eisenberg 2001] A. Eisenberg and J. Melton: "SQL Multimedia and Application


Packages (SQL/MM)", ACM SIGMOD Record, Vol.30, No.4, pp.97-102, 2001.

[Elmasri 2000] R. Elmasri and S.B. Navathe: "Fundamentals of Database Systems",


3rd edition, Benjamin/Cummings, 1994.

[Ester 1996] M. Ester, H.-P. Kriegel, J. Sander and X. Xu: "A Density-Based
Algorithm for Discovering Clusters in Large Spatial Databases", Proceedings
International Conference on Knowledge Discovery and Data Mining, pp.226-231,
1996.
Âéâëéïãñáößá 545

[Eswaran 1976] K.P. Eswaran, J.N. Gray, R.A. Lorie and I.L. Traiger: "The Notion
of Consistency and Predicate Locks in Database Systems", Communications
of the ACM, Vol.19, No.11, pp.624-633, 1976.

[Fagin 1977] R. Fagin: "Multivalued Dependencies and a New Normal Form for
Relational Databases", ACM Transactions on Database Systems, Vol.2, No.3,
pp.262-278, 1977.

[Fagin 1979] R. Fagin: "Normal Forms and Relational Database Operators", Pro-
ceedings ACM SIGMOD Conference, pp.153-160, 1979.

[Fagin 1979b] R. Fagin, J. Nievergelt, N. Pippenger and H. R. Strong: "Extendible


Hashing - a Fast Method for Dynamic Files", ACM Transactions on Database
Systems, Vol.4, No.3, pp.315-344, 1979.

[Fagin 1981] R. Fagin: "A Normal Form for Relational Databases that is Based
on Domains and Keys", ACM Transactions on Database Systems, Vol.6, No.3,
pp.387-415, 1981.

[Fernandez 1981] E.B. Fernandez, R.C. Summers and C. Wood: "Database Secu-
rity and Integrity", Addison-Wesley, 1981.

[Fujitani 1984] L. Fujitani: "Laser Optical Disk: The Coming Revolution in On-
Line Storage", Communications of the ACM, Vol.27, No.6, pp.546-554, 1984.

[Gonnet 1984] G.H. Gonnet: "Handbook of Algorithms and Data Structures",


Addison-Wesley, 1984.

[Graefe 1993] G. Graefe: "Query Evaluation Techniques for Large Databases",


ACM Computing Surveys, Vol.25, No.2, pp.73-170, 1993.

[Guha 1998] S. Guha, R. Rastogi and K. Shim: "A Robust Clustering Algorithm
for Categorical Attributes", Proceedings IEEE International Conference on Data
Engineering, pp.512-521, 1990.

[Gulutzan 1999] P. Gulutzan, T. Pelzer: "SQL-99 Complete, Really", CMP Books,


1999.

[Guttman 1984] A. Guttman: "R-trees: a Dynamic Index Structure for Spatial


Searching", Proceedings ACM SIGMOD Conference, pp.45-57, 1984.

[Han 2001] J. Han and M. Kamber: "Data Mining, Concepts and Techniques", Mor-
gan Kaufmann, 2001.
546 Âéâëéïãñáößá

[Harker 1981] J. M. Harker, D. W. Brede, R. E. Pattison, G. R. Santana and L. G.


Taft: "A Quarter Century of Disk File Innovation", IBM Journal of Research
and Development, Vol.25, No.5, pp.677-689, 1981.

[Hennessy 1996] J.L. Hennessy and D.A. Patterson: "Computer Architecture, a


Quantitative Approach", Morgan Kaufmann, 1996.

[IDC 2000] IDC (www.idc.com): "Enterprise Database Management Systems


Market Forecast and Analysis, 2000-2004", Report No. 22542, 2000.

[Inmon 1996] W.H. Inmon: "Building the Data Warehouse", John Wiley, 1996.

[ISO 1999a] ISO: "Database Language SQL - Part 2: Foundation (ISO/IEC 9075-
2)", International Organization for Standardization, 1999.

[ISO 1999b] ISO: "Database Language SQL - Part 2: Persistent Stored Modules
(ISO/IEC 9075-4)", International Organization for Standardization, 1999.

[Jardine 1977] D. Jardine (editor): "The ANSI/SPARC DBMS Model", North-


Holland, 1977.

[Kaufman 1990] L. Kaufman and P.J. Rousseeuw: "Finding Groups in Data: an


Introduction to Cluster Analysis", John Wiley, 1990.

[Kenville 1982] R.F. Kenville: "Optical Disk Data Storage", IEEE Computer,
Vol.15, No.7, pp.787-804, 1982.

[Khoshafian 1996] S. Khoshafian and A.B. Baker: "Multimedia and Imaging


Databases", Morgan Kaufmann, 1996.

[Knuth 1973] D.E. Knuth: "The Art of Computer Programming: Sorting and Search-
ing", Addison-Wesley, 1973.

[Larson 1978] P.A. Larson: "Dynamic Hashing", BIT, Vol.18, No.2, pp.184-201,
1978.

[Larson 1980] P. A. Larson: "Linear Hashing with Partial Extensions", Proceedings


6th International Conference on Very Large Data Bases, pp.224-232, 1980.

[Laurini 1993] R. Laurini and D. Thompson: "Fundamentals of Spatial Information


Systems", Academic Press, 1993.
Âéâëéïãñáößá 547

[Leung 1984] C.H.C. Leung: "Approximate Storage Utilization of B-trees - A Sim-


ple Derivation and Generalizations", Information Processing Letters, Vol.19,
No.4, pp.199-201, 1984.

[Litwin 1980] W. Litwin: "Linear Hashing - A New Tool for File and Table Ad-
dressing", Proceedings 6th International Conference on Very Large Data Bases,
pp.212-223, 1980.

[Lomet 1983] D. Lomet: "Bounded Index Exponential Hashing", ACM Transac-


tions on Database Systems, Vol.8, No.1, pp.136-165, 1983.

[Lorie 1977] R. Lorie: "Physical Integrity in a Large Segmented Database", ACM


Transactions on Database Systems, Vol.2, No.1, pp.91-104, 1977.

[Mannila 1994] H. Mannila, H. Toivonen and A.I. Verkamo: "Efficient Algorithms


for Discovering Association Rules", Proceedings AAAI Workshop Knowledge
Discovery in Databases, pp.181-192, 1994.

[Manolo 94] Y. Manolopoulos and N. Lorentzos: "Performance of Linear Hash-


ing Schemes for Primary Key Retrieval", Information Systems, Vol.19, No.5,
pp.433-446, 1994.

[Manolopoulos 1999] Y. Manolopoulos, Y. Theodoridis and V. Tsotras: "Ad-


vanced Database Indexing", Kluwer Academic Publishers, 1999.

[Manolopoulos 2003] Y. Manolopoulos, A. Nanopoulos and E. Tousidou: "Ad-


vanced Signature Indexing for Multimedia and Web Applications", Kluwer Aca-
demic Publishers, 2003.

[Manolopoulos 2005] Y. Manolopoulos, A. Nanopoulos, A.N. Papadopoulos and


Y. Theodoridis: ‘‘R-trees: Theory and Applications’’, Springer, 2005.

[MacQueen 1967] J. MacQueen: "Some Methods for Classification and Analysis


of Multivariate Observations", Proceedings 5th Berkeley Symposium on Mathe-
matics and Statistics, pp.281-297, 1967.

[Maier 1983] D. Maier: "The Theory of Relational Databases", Computer Science


Press, 1983.

[McGreight 1977] E.M. McGreight: "Pagination of B∗ -trees with Variable Length


Records", Communications of the ACM, Vol.20, No.9, pp.670-674, 1977.
548 Âéâëéïãñáößá

[Mishra 1992] P. Mishra and M.H. Eich: "Join Processing in Relational


Databases", ACM Computing Surveys, Vol.24, No.1, pp.63-113, 1992.

[Molina 2002] H.G. Molina, J.D. Ullman and J. Widom: ‘‘Database Systems: the
Complete Book’’, Prentice Hall, 2002.

[Nanopoulos 2001] A. Nanopoulos, Y. Theodoridis and Y. Manolopoulos: "C2 P


Clustering based on Closest Pairs", Proceedings 27th International Conference
on Very Large Data Bases, pp.331-340, 2001.

[Natan 2005] R.B. Natan: ‘‘Implementing Database Security and Auditing’’, Digital
Press, 2005.

[NBS 1977] National Bureau of Standards: Data Encryption Standard, FIPS-


Pub.46, U.S. Department of Commerce, Washington D.C., January 1977.

[O’Leary 1985] B.T. O’Leary and D.L. Kitts: "Optical Device for a Mass Storage
System", IEEE Computer, Vol.18, No.7, pp.24-32, 1985.

[Patterson 1988] D.A. Patterson, G. Gibson and R.H. Katz: "A Case for Redun-
dant Arrays of Inexpensive Disks (RAID)", Proceedings ACM SIGMOD Con-
ference, pp.109-116, 1988.

[Petkovic 2000] D. Petkovic: "SQL Server 2000: a Beginner’s Guide", McGraw-Hill,


2000.

[Polk 1993] T.W. Polk and L.E. Bassham: "Security Issues in the Database Lan-
guage SQL", Technical Report NIST Special Publication 800-8, National In-
stitute of Standards and Technology, USA, 1993. ÄéáèÝóéìï óôç äéåýèõíóç:
http://www.secinf.net/uplarticle/14/sqlsec.ps

[Ramakrisnan 2003] R. Ramakrisnan and J. Gehrke: "Database Management Sys-


tems", 3rd edition, McGraw-Hill, 2003.

[Rankins 2003] R. Rankins, P. Bertucci and P. Jensen: "Microsoft SQL Server 2000
Unleashed", Sams Publishing, 2003.

[Rigaux 2002] P. Rigaux, M. Scholl and A. Voisard: "Spatial Databases with Appli-
cations to GIS", Morgan Kaufmann, 2002.

[Riordan 2000] R.M. Riordan: "Microsoft SQL Server 2000 Programming Step by
Step", Microsoft Corporation, 2000.
Âéâëéïãñáößá 549

[Rivest 1978] Rivest R., Shamir A. and Adleman L.: "A Method for Obtaining Dig-
ital Signatures and Public-Key Cryptosystems", Communications of the ACM,
Vol.21, No.2, pp.120-126, 1978.

[Rosenberg 1981] A.L. Rosenberg and L. Snyder: "Time and Space Optimality
in B-trees", ACM Transactions on Database Systems, Vol.6, No.1, pp.174-183,
1981.

[Rosenkrantz 1978] D.J. Rosenkrantz, R.E. Streams and P.M. Lewis II: "System
Level Concurrency Control for Distributed Database Systems", ACM Trans-
actions on Database Systems, Vol.3, No.2, pp.178-198, 1978.

[Ruemmler 1994] C. Ruemmler and J. Wilkes: "An Introduction to Disk Drive


Modeling", IEEE Computer, Vol.27, No.3, pp.144-172, 1994.

[Salzberg 1988] B. Saltzberg: "File Structures", Prentice Hall, 1988.

[Scholl 1981] M. Scholl: "New File Organizations Based on Dynamic Hashing",


ACM Transactions on Database Systems, Vol.6, No.1, pp.194-211, 1981.

[Sharma 2002] R. Sharma: "Microsoft SQL Server 2000, A Guide to Enhancements


and New Features", Addison-Wesley, 2002.

[Sheikholeslami 1998] G. Sheikholeslami, S. Chatterjee and A. Zhang:


"WaveCluster: A Multiresolution Clustering Approach for Very Large
Spatial Databases", Proceedings 24th International Conference on Very Large
Data Bases, pp.428-439, 1998.

[Silberschatz 2002] A. Silberschatz, H.F. Korth and S. Sudarshan: "Database Sys-


tem Concepts", 4th edition, McGraw-Hill, 2002.

[Spett 2002] K. Spett: "SQL Injection: Is Your Web Applications Vulnerable?",


Technical Report, SPI Dynamics, 2002.

[Stonebraker 1996] M. Stonebraker: "Object-Relational DBMSs: the Next Great


Wave", Morgan Kaufmann, 1996.

[Subrahmanian 1998] V.S. Subrahmanian: "Principles of Multimedia Database Sys-


tems", Morgan Kaufmann, 1998.

[Teorey 1994] T.J. Teorey: "Database Modeling and Design: the Fundamental Prin-
ciples", 2nd edition, Morgan Kaufmann, 1994.
550 Âéâëéïãñáößá

[Tharp 1987] A.L. Tharp: "File Organization and Processing", John Wiley, 1988.

[Thalheim 2000] B. Thalheim: "Fundamentals of Entity-Relationship Modeling",


Springer-Verlag, 2000.

[Tsichritzis 1978] D. Tsichritzis and A. Klug (eds.): "The ANSI/X3/SPARC DBMS


Framework", AFIPS Press, 1978.

[Wang 1997] W. Wang, J. Yang and R. Muntz: "STING: a Statistical Informa-


tion Grid Approach to Spatial Data Mining", Proceedings 23rd International
Conference on Very Large Data Bases, pp.186-195, 1997.

[Wiederhold 1983] G. Wiederhold: "Database Design", McGraw-Hill, 2nd edition,


1983.

[Wiederhold 1987] Wiederhold G.: "File Organizations for Database Design",


McGraw-Hill, 1987.

[Wong 1983] C.K. Wong: "Algorithmic Studies in Mass Storage Systems", Springer
Verlag, 1983.

[Zaniolo 1976] C. Zaniolo: "Analysis and Design of Relation Schemata for Database
Systems", Ph.D. Thesis, Department of Computer Science, University of Cal-
ifornia, Los Angeles, 1976.

[Zhang 1996] T. Zhang, R. Ramakrishnan and M. Livny: "BIRCH: an Efficient


Data Clustering Algorithm for Very Large Databases", Proceedings ACM SIG-
MOD Conference, pp.103-114, 1996.
ÅõñåôÞñéï

Armstrong, 182 Enterprise Manager, 122--124, 129,


131, 238, 240, 242, 244, 252,
Bayer, 290, 317 444, 455, 458
Bell-LaPadula, 419 Full Text, 126
Boyce, 187 Profiler, 123
Chen, 99 Query Analyzer, 123, 237, 241,
Codd, 135, 153, 187 242, 252, 447
Service Manager, 126
Fagin, 333 Transact-SQL, 237

Gonnet, 317 Rain Forest Puppy, 429


Reed-Solomon, 61
Hamming, 59, 66 Rosenberg, 300
Knuth, 305 Scholl, 332
Larson, 330, 348 Snyder, 300
Leung, 291 Stonebraker, 494
Litwin, 342 Tharp, 348
Lomet, 339 Thomas, 398
Maier, 187
Unteraurer, 317
McCreight, 290
Microsoft SQL Server, 119, 237, 437, Üñíçóç åîõðçñÝôçóçò, 432
525
Agent, 123 Ýã÷õóç, 429
Analysis Services, 125 Ýëåã÷ïò ïñèüôçôáò äåäïìÝíùí, 412
Data Transformation Services, 124 Ýëåã÷ïò ðñïóðÝëáóçò, 414
Database Engine, 121 äéáêñéôéêüò Ýëåã÷ïò ðñïóðÝëá-
Distributed Transaction Coordi- óçò, 414
nator, 126 õðï÷ñåùôéêüò Ýëåã÷ïò ðñïóðÝëá-
English Query, 126 óçò, 419

551
552 ÅõñåôÞñéï

Ýìðéóôï ÓÄÂÄ, 421 äõíáìéêÞ, 355


åõñéóôéêÞ, 358
áäéÝîïäï, 394 óôáôéêÞ, 356
áíáãíþñéóç êáé êáôÜñãçóç áäéå-
îüäïõ, 395 ãëþóóá SQL, 205
áðïöõãÞ áäéåîüäïõ, 394 ALL, 226
ãñÜöïò áíáìïíÞò, 395 ALTER TABLE, 212
êáíüíáò áðïèÞêåõóçò ôïõ Thomas, BETWEEN, 228
398 CASCADE, 212
ìç÷áíéóìüò ÷ñïíéêþí óöñáãßäùí, CHECK, 211
397 CREATE DOMAIN, 213
ðñùôüêïëëï äéÜôáîçò ÷ñïíéêþí CREATE FUNCTION, 489
óöñáãßäùí, 398 CREATE INDEX, 233, 444
÷ñïíéêÞ óöñáãßäá, 394, 397 CREATE PROCEDURE, 526
áíÜëõóç äåäïìÝíùí, 509 CREATE SCHEMA, 210
áíÜëõóç êñáóðÝäïõ, 294 CREATE TABLE, 87, 211, 415
áíáêÜëõøç ãíþóçò, 500 CREATE TRIGGER, 531
áíåîáñôçóßá äåäïìÝíùí, 83 CREATE VIEW, 232, 253, 415,
ëïãéêÞ, 83 422, 460
öõóéêÞ, 83 DEFAULT, 211
áíôéêåßìåíï, 413 DISTINCT, 215
áðáëïéöÞ äéðëïôýðùí, 161 DROP DOMAIN, 214
áðïèÞêç äåäïìÝíùí, 508 DROP INDEX, 233
áñ÷éôåêôïíéêÞ ANSI-SPARC, 81 DROP TABLE, 211, 213
åííïéïëïãéêü åðßðåäï, 82 DROP VIEW, 232
åîùôåñéêü åðßðåäï, 82 EXCEPT, 220
åóùôåñéêü åðßðåäï, 83 EXISTS, 226
áóöÜëåéá, 411, 412 FOREIGN KEY, 212
áêåñáéüôçôá, 411 GRANT, 415, 416
äéáèåóéìüôçôá, 411 GROUP BY, 215, 222
åìðéóôåõôéêüôçôá, 411 HAVING, 215, 223, 227
áôïìéêÞ åêôÝëåóç, 379 INSERT, 88
áõèåíôéêïðïßçóç, 413 INTERSECT, 220
IS NOT NULL, 217
âÜóç äåäïìÝíùí, 40 IS NULL, 217
âáèìüò áóöáëåßáò, 419 JOIN, 219
âåëôéóôïðïßçóç åñùôÞìáôïò, 94, 353, LIKE, 224
446, 481 NOT BETWEEN, 228
âáóéóìÝíç óôï êüóôïò, 362 NOT LIKE, 224
ÅõñåôÞñéï 553

ON DELETE, 212 SAN, 73


ON UPDATE, 212 äéá÷åßñéóç áðïìïíùôéêÞò ìíÞìçò, 273
ORDER BY, 215, 227 äéá÷åßñéóç åéóüäïõ/åîüäïõ, 261
OVERLAPS, 229 äïýñåéïò ßððïò, 418
PRIMARY KEY, 211
REFERENCES, 212 åããñáöÞ, 65, 90, 137, 262
REVOKE, 415, 417 ãñáììïãñÜöçóç, 262
SELECT, 88, 215 åããñáöÞ ìåôáâëçôïý ìÞêïõò, 263
SOME, 226 åããñáöÞ óôáèåñïý ìÞêïõò, 262
UNION, 219 ëïãéêÞ åããñáöÞ, 66
UNIQUE, 211 öõóéêÞ åããñáöÞ, 66
ðñüôõðï SQL-86, 205 åéêïíéêÞ ìíÞìç, 275
ðñüôõðï SQL-89, 205 åîÜñôçóç ðëåéïíüôéìç, 195
ðñüôõðï SQL-92, 205 åîÜñôçóç óõíáñôçóéáêÞ, 181
ðñüôõðï SQL:1999, 205, 485 åëÜ÷éóôç êÜëõøç, 186
óõíáñôÞóåéò óõíÜèñïéóçò, 221 åëÜ÷éóôï óýíïëï åîáñôÞóåùí, 186
ôýðïé äåäïìÝíùí, 206
éóïäýíáìá óýíïëá, 182
ãëþóóá âÜóåùí äåäïìÝíùí, 85
êáíïíéêÞ êÜëõøç, 186
ãëþóóá ïñéóìïý äåäïìÝíùí, 85
êáíüíåò Armstrong, 182
ãëþóóá ÷åéñéóìïý äåäïìÝíùí, 86
êëåéóôüôçôá, 182
ãëþóóá ôÝôáñôçò ãåíéÜò, 88
êëåéóôüôçôá óõíüëïõ ÷áñáêôçñé-
äÝíäñï Ýêöñáóçò, 357 óôéêþí, 184
äßáõëïò äåäïìÝíùí, 261 ÷áñáêôçñéóôéêü Üó÷åôï, 186
äåíäñéêüò êáôÜëïãïò, 288 åîÜñôçóç óýíäåóçò, 198
äÝíäñï 1-2, 317 åîÜñôçóç ýðáñîçò, 109
äÝíäñï 2-3, 317 êõñßáñ÷ç ïíôüôçôá, 110
äÝíäñï B, 290 õðïôåëÞò ïíôüôçôá, 110
äÝíäñï R, 505 åîïõóéïäüôçóç, 413
äÝíäñï Â∗ , 301 åîüñõîç äåäïìÝíùí, 500
äÝíäñï Â+ , 305 êáíüíåò óõó÷Ýôéóçò, 519
äÝíäñï åôåñïãåíÝò, 288 ïìáäïðïßçóç, 516
äÝíäñï ïìïãåíÝò, 288 åðáíÜêôçóç äåäïìÝíùí, 400
óõììåôñéêü äõáäéêü Â-äÝíäñï, 317 ìÝèïäïò Üìåóçò åíçìÝñùóçò, 404
äéÜãñáììá ïíôïôÞôùí-óõó÷åôßóåùí, 99 ìÝèïäïò êáèõóôåñçìÝíçò åíçìÝ-
äéáóýíäåóç óõóêåõþí áðïèÞêåõóçò, ñùóçò, 402
72 ìÝèïäïò óêéùäþí óåëßäùí, 406
DAS, 72 åðåêôÜóåéò ìïíôÝëïõ ÏÓ, 111
NAS, 72 åðåîåñãáóßá ìå äéï÷Ýôåõóç, 376
554 ÅõñåôÞñéï

åðåîåñãáóßá ìå ðñïóùñéíÞ áðïèÞ- åíáëëáêôéêü êëåéäß, 103


êåõóç, 375 êëåéäß óõíüëïõ ïíôïôÞôùí, 103
åðéëåêôéêüôçôá, 445 ìåñéêü êëåéäß, 110
åóùôåñéêÞ ôìçìáôïðïßçóç, 270 îÝíï êëåéäß, 142
åöáñìïãÝò ðïëõìÝóùí, 506 ðñùôåýïí êëåéäß, 103, 139
åýêðáìðôïò äßóêïò, 69 óýíèåôï êëåéäß, 103, 140
êëåéäáñéÜ, 388
çìéáãþãéìïé äßóêïé, 70 áíÜãíùóçò, 389
áíáâÜèìéóç, 390
éäéïêôÞôçò ðßíáêá, 415 áðïèÞêåõóçò, 389
éäéüôçôåò ACID, 382 ðñùôüêïëëï êëåéäþìáôïò, 390
éåñáñ÷ßá ìíÞìçò, 51 ðñùôüêïëëï êëåéäþìáôïò âáóé-
éóïôéìßá, 59, 66 óìÝíï óå ãñÜöï, 392
ðñùôüêïëëï êëåéäþìáôïò äýï öÜ-
êáíïíéêïðïßçóç, 179 óåùí, 391
äåýôåñç êáíïíéêÞ ìïñöÞ, 189 õðïâÜèìéóç, 390
êáíïíéêÞ ìïñöÞ, 186 êñõðôïãñÜöçóç, 423
êáíïíéêÞ ìïñöÞ Boyce-Codd, 191 áíáóôñÝøéìç, 423
ðÝìðôç êáíïíéêÞ ìïñöÞ, 198 áóýììåôñç, 424
ðñþôç êáíïíéêÞ ìïñöÞ, 188 äçìüóéï êëåéäß, 424
ôÝôáñôç êáíïíéêÞ ìïñöÞ, 196 éäéùôéêü êëåéäß, 424
ôñßôç êáíïíéêÞ ìïñöÞ, 190 êëåéäß áðïêñõðôïãñÜöçóçò, 423
êáôÜëïãïò, 233, 287 êñõðôïóýóôçìá, 423
êáôáêåñìáôéóìüò, 323 ìç-áíáóôñÝøéìç, 423
áñ÷åßá êáôáêåñìáôéóìïý, 324 óõììåôñéêÞ, 424
ãñáììéêüò êáôáêåñìáôéóìüò, 342 êñõöÞ ìíÞìç, 52
äõíáìéêüò êáôáêåñìáôéóìüò, 330 êùäéêüò ðñüóâáóçò, 414
åêèåôéêüò êáôáêåñìáôéóìüò, 338 êýñéá ìíÞìç, 52
åðåêôáôüò êáôáêåñìáôéóìüò, 333
êýñéá ðåñéï÷Þ, 324 ëåéôïõñãßåò ÓÄÂÄ, 93
ðáñÜãïíôáò äéåõèýíóåùí, 324 ëåîéêü äåäïìÝíùí, 86
ðáñÜãïíôáò öüñôéóçò, 327 ëüãïò äéáêëÜäùóçò, 289
ðåñéï÷Þ õðåñ÷åßëéóçò, 324
óõíÜñôçóç êáôáêåñìáôéóìïý, 325 ìáãíçôéêÞ ôáéíßá, 53, 65
óõíþíõìá, 325 ãñáììéêÞ áðïèÞêåõóç, 67
óýãêñïõóç, 325 åãêÜñóéá áðïèÞêåõóç, 68
êáôá÷ùñçôÞò, 51 åëéêïåéäÞò óÜñùóç, 67
êåíÞ ôéìÞ (NULL), 102 ïöéïåéäÞò áðïèÞêåõóç, 67
êëåéäß, 103, 287 óõóôïé÷ßá, 68
ÅõñåôÞñéï 555

ôá÷ýôçôá áíÜãíùóçò/áðïèÞêåõóçò, ðßíáêáò óåëßäùí, 406


65 ðáñÜãïíôáò ÷ñçóéìïðïßçóçò ÷þñïõ,
÷ñüíïò åêêßíçóçò/óôÜóçò, 66 66
ìáãíçôéêüò äßóêïò, 53, 54 ðåäßï ïñéóìïý, 137
Üîïíáò ðåñéóôñïöÞò, 55 ðåñéïñéóìüò áêåñáéüôçôáò, 141, 143,
Üôñáêôïò, 55 211, 212, 215, 241, 242, 379,
áðïìïíùôéêÞ ìíÞìç, 57 493
äßóêïò RAMAC, 58 áêåñáéüôçôá áíáöïñþí, 142
åëåãêôÞò óêëçñïý äßóêïõ, 56 áêåñáéüôçôá ïíôïôÞôùí, 142
åðéöÜíåéåò äßóêùí, 55 êåíÞ ôéìÞ, 141
êáêüò ôïìÝáò, 56 ðåñéïñéóìüò áóöÜëåéáò, 419
êåöáëÞ, 55 ðåñéïñéóìüò áðëÞò áóöáëåßáò, 419
êýëéíäñïò, 55 ðåñéïñéóìüò-*, 419
ìÝóïò ÷ñüíïò ãéá áðïêáôÜóôáóç, ðëÜíï åêôÝëåóçò, 353
57 ðëåïíáóìüò äåäïìÝíùí, 135
ìÝóïò ÷ñüíïò ìåôáîý âëáâþí, 57 ðëçèéêüò ëüãïò, 105
ðõêíüôçôá, 55 ðïëõäéÜóôáôï ìïíôÝëï äåäïìÝíùí, 510
ôïìÝáò, 55 ðïëõåðßðåäç ó÷Ýóç, 420
öÜóç áíáæÞôçóçò, 56 ðïëõóôéãìéïôõðßá, 421
öÜóç ìåôáöïñÜò äåäïìÝíùí, 56 ðñáãìáôéêüò ÷ñüíïò ìåôáöïñÜò óåëß-
öÜóç ðåñéóôñïöéêÞò êáèõóôÝñç- äáò, 269
óçò, 56 ðñïíüìéï, 414
ìåôá-äåäïìÝíá, 86 ðñïóùðéêüò é÷íçëÜôçò, 428
ìç÷áíÞ åêôÝëåóçò, 354
ìç÷áíéóìïß êëåéäþìáôïò, 388 óåéñéáêÞ ðëçììýñá, 280
ìíÞìåò ìáãíçôéêþí öõóáëßäùí, 70 óôáôéóôéêÞ ÂÜóç ÄåäïìÝíùí, 425
ìíÞìç flash, 52 óôéãìéüôõðï âÜóçò äåäïìÝíùí, 138
ìïíôÝëá äåäïìÝíùí, 90 óõììåôï÷Þ ïíôüôçôáò, 108
ìïíôÝëï oíôïôÞôùí-óõó÷åôßóåùí, 99 óõíáëëáãÞ, 379
ìïíôÝëï ïíôïôÞôùí-óõó÷åôßóåùí, 91 ROLLBACK, 395, 402
ROLLFORWARD, 402
ïëïãñáößá, 71 áðïìüíùóç, 382
ïðôéêÞ ôáéíßá, 71 áôïìéêüôçôá, 382
ïðôéêüò äßóêïò, 53, 62 êáôáóôÜóåéò óõíáëëáãÞò, 380
ãñáììéêÞ ôá÷ýôçôá, 63 ìïíéìüôçôá, 382
åðáíåããñÜøéìïò, 62 óåéñéáêü ÷ñïíïäéÜãñáììá, 385
æþíç, 64 óåéñéïðïßçóç óõíáëëáãþí, 385
ðõêíüôçôá, 63 óåéñéïðïßçóç óýãêñïõóçò, 386
óõóôïé÷ßá, 65 óåéñéïðïßçóç üøçò, 386, 387
556 ÅõñåôÞñéï

óõíÝðåéá, 382 óýóôçìá áñ÷åßùí, 37


óýãêñïõóç, 386 óýóôçìá äéá÷åßñéóçò ÂÜóåùí ÄåäïìÝ-
óõóêåõÝò äßóêùí ìå óôáèåñÝò êåöáëÝò, íùí, 41
69
óõóôïé÷ßá äßóêùí, 58 ôáõôï÷ñïíéóìüò, 382
åðßðåäï 0, 58 Ýëåã÷ïò ôáõôï÷ñïíéóìïý, 383
åðßðåäï 1, 59 ôýðïé áðåéêüíéóçò, 105
åðßðåäï 2, 59 õðïêåßìåíï, 413
åðßðåäï 3, 59
åðßðåäï 4, 60 öõóéêÜ ìÝóá áðïèÞêåõóçò, 51
åðßðåäï 5, 61 öõóéêÜ ìïíôÝëá äåäïìÝíùí, 93
åðßðåäï 6, 61 öõóéêÞ ïñãÜíùóç, 259
óõíäõáóìüò åðéðÝäùí, 62
ó÷Þìá âÜóçò äåäïìÝíùí, 83, 138 ÷áñáêôçñéóôéêü, 101
åííïéïëïãéêü ó÷Þìá, 83 áðëÞò ôéìÞò, 102
áðëü, 101
åîùôåñéêü ó÷Þìá, 83
êåíü, 102
åóùôåñéêü ó÷Þìá, 83
ðáñáãüìåíï, 102
ó÷åóéáêÞ Üëãåâñá, 157
ðïëëáðëÞò ôéìÞò, 102
Ýíùóç, 163
óýíèåôï, 101
äéáßñåóç, 168
÷ñÞóôçò ÓÄÂÄ, 79
äéáöïñÜ, 164
áðëüò, 79
åê÷þñçóç, 167
äéá÷åéñéóôÞò âÜóçò äåäïìÝíùí,
åîùôåñéêÞ óýíäåóç, 166
80
åðéëïãÞ, 159 ðñïãñáììáôéóôÞò åöáñìïãþí, 80
çìéóýíäåóç, 167 ðñï÷ùñçìÝíïò, 79
êáñôåóéáíü ãéíüìåíï, 161 ó÷åäéáóôÞò âÜóçò äåäïìÝíùí, 80
ìåôïíïìáóßá, 162 ÷ñïíéêü óçìåßï åëÝã÷ïõ, 400
ðñïâïëÞ, 161 ÷ùñßò áðþëåéåò ó÷Þìá, 192
óýíäåóç-θ, 165
ôïìÞ, 164 øçöéáêÞ õðïãñáöÞ, 425
öõóéêÞ óýíäåóç, 164
ó÷åóéáêü ìïíôÝëï, 135 üíïìá ÷ñÞóôç, 414
ó÷åóéáêüò ëïãéóìüò, 169 üøç, 150
ó÷åóéáêüò ëïãéóìüò ðåäßïõ, 171
ó÷åóéáêüò ëïãéóìüò ðëåéÜäùí, 169
óýíïëï ïíôïôÞôùí, 101
óýíïëï óõó÷åôßóåùí, 104
óýóôçìá ÂÜóçò ÄåäïìÝíùí, 40

You might also like