嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈�《超噌�殻窟�嵌虜隆輓麈觚翹瀘卉韮�仍仍�。� 烏御危列
浪慕利 卦指云慕朕村 厘議慕尺 厘議慕禰 TXT畠云和墮 序秘慕杏 紗秘慕禰

VB2008貫秘壇欺娼宥(PDF鯉塀哂猟井)-及132嫗

梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈��梓囚徒貧議 Enter 囚辛指欺云慕朕村匈��梓囚徒貧圭�鮗� ● 辛指欺云匈競何��
!!!!隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��




and the Visual Studio Dataset Designer。 Since we¨ll need a database to work with�察�you¨ll also  

learn how to create a database with Visual Basic Express。  

     A relational database stores data�察�such as the lottery numbers in Chapter 10¨s example。  

Building on that lottery´prediction example�察�in this chapter�察�you¨ll see how to create a database  

application that reads and writes the lottery numbers�察�and associates winners with a particular  

lottery drawing。 



Understanding Relational Databases 



As a beginner developer�察�one of your greatest challenges will be how to manage relational database  

data。 A relational database is an old piece of technology。 The relational model on which it is based  

was written in about 1969 ��according to the relational model entry at http��//en。wikipedia。org/ 

wiki/Relational_model��。 A relational database is defined as follows ��http��//en。wikipedia。org/ 

wiki/Relational_database���此�



     Strictly�察 �a  relational  database  is  merely  a  collection  of  relations  ��frequently  called 

     tables��。 Other items are frequently considered part of the database�察�as they help to organize 

     and  structure  the  data�察 �in  addition  to  forcing  the  database  to  conform  to  a  set  of 

     requirements。 



Relational Database Tables 



A relational database is a collection of tables。 When you were reading and writing a file in  

Chapter 10¨s example�察�you were actually reading and writing a table of lottery numbers�察�which  

looked something like this�此�



                                                                                                                371 


´´´´´´´´´´´´´´´´´´´´´´Page 394´´´´´´´´´´´´´´´´´´´´´´´

372       CH AP T E R   1 4   *    L E A R N I N G   A B OU T   R E L A TI O N AL   DA TA B AS E   D AT A 



           2000。05。31 5 6 13 23 25 37 43 

           2000。06。03 7 10 11 18 32 41 5 

           2000。06。07 15 23 24 28 38 39 45 

           2000。06。10 1 3 12 23 29 33 27 

           2000。06。14 2 4 13 19 39 45 26 

           2000。06。17 3 8 17 19 21 25 35 



                The data is arranged as a table�察�and thus could be easily converted into a relational data

           base table。 In relational database´speak�察�each row in the file corresponds to a row of data。 But  

           to create a row of data�察�you need fields�察�each of which is also in a column。 A relational database  

           table is a grid of rows and columns。 When working with a relational database�察�you don¨t  

           manipulate columns�察�you manipulate individual rows。 

                What distinguishes a relational database is that you can bine tables and create more  

           plicated data structures。 It is the relationships ��called relations�� between pieces of data  

           that make a relational database so powerful。 For the lottery data�察�a relation could be who won  

           the jackpot on the draw dates。 Modifying the table to include the person who won would look  

           this�此�



           2000。05。31 nobody 5 6 13 23 25 37 43 

           2000。06。03 nobody 7 10 11 18 32 41 5 

           2000。06。07 nobody 15 23 24 28 38 39 45 

           2000。06。10 jack 1 3 12 23 29 33 27 

           2000。06。14 nobody 2 4 13 19 39 45 26 

           2000。06。17 nobody 3 8 17 19 21 25 35 



                For the most part�察�no one won the jackpot。 But on June 10�察�2000 ��2000。06。10���察�a person  

           named Jack won the jackpot。 You might know a Jack。 I might know a Jack。 But would he be the  

           same Jack�拭�Probably not。 So to distinguish winner Jack from another Jack�察�you would need his  

           full name�察�address�察�and other details。 But where do you put this extra information�拭 �

                Do you put the information about Jack into the lottery data table�拭�Or do you create another  

           table�拭�The answer is that you create another table。 But since you are working with files�察�it will  

           be a file�察�not a table。 The file will be called jack。txt because the winner of the lottery jackpot  

          was Jack。 The jack。txt file could contain the following information。 



           Jack Smith 

           Address 

           City 

           Country 



                The information in jack。txt and the information in the lottery data file have a relation。 The  

           relation is the winner of the jackpot。 This is what a relational database is all about。 The reason you  

           use a relational database and not files that cross´reference each other is because a relational  

           database is extremely efficient at managing tables and relations。 The techniques demonstrated  

           in Chapter 10 are nowhere near as efficient and effective as using a relational database。 

                Relational databases are quite capable of handling terabytes of data。 Additionally�察�relational  

           databases are capable of building efficient relations that span terabytes of data。 


´´´´´´´´´´´´´´´´´´´´´´Page 395´´´´´´´´´´´´´´´´´´´´´´´

                                      C HA P TE R   1 4   *    L E AR N I N G   AB O U T  R E L AT IO N A L   D AT AB A SE   D A TA 373 



Database Relations 



Relations are very powerful�察�but they can also make things extremely plicated。 When you  

split tables and create relations between the tables�察�you are normalizing the data。 Database  

normalization is defined as follows ��http��//en。wikipedia。org/wiki/Database_normalization���此�



     Database  normalization  is  a  technique  for  designing  relational  database  tables  to 

     minimize  duplication  of  information  and�察 �in  so  doing�察 �to  safeguard  the  database 

     against  certain  types  of  logical  or  structural  problems�察 �namely  data  anomalies。  For 

     example�察�when multiple instances of a given piece of information occur in a table�察�the 

     possibility exists that these instances will  not be kept consistent when the data within 

      the  table  is  updated�察 �leading  to  a  loss  of  data  integrity。  A  table  that  is  sufficiently 

     normalized is less vulnerable to problems of this kind�察�because its structure reflects the 

     basic  assumptions  for  when  multiple  instances  of  the  same  information  should  be 

      represented by a single instance only。 



     For example�察�the data on the winner and the data on the lottery ticket are kept in separate  

tables�察�making the overall data structure more efficient from a maintenance and performance  

point of view。 

     Creating relations between tables is a form of referencing�察�where one table says informa

tion here references information in another table。 The referencing is carried out using columns  

of one table that are cross´referenced with columns of another table。 

     The lottery ticket example is interesting because of the relations between the lottery draws  

and the winners�察�which could be of two types�此�



     o  One draw to many winners�此�When a lottery ticket is drawn�察�there can be many winners。 



     o  One winner to many draws�此�Even though it is improbable�察�one winner could win  

        multiple draws。 



     In the file example�察�you saw the one´winner´to´many´draws relation。 You probably did  

not think it was that type of relation�察�and more likely thought it was a one´draw´to´one´winner  

relation。 But consider the following text file�察�where jack is referenced twice。 



2000。05。31 nobody 5 6 13 23 25 37 43 

2000。06。03 jack 7 10 11 18 32 41 5 

2000。06。07 nobody 15 23 24 28 38 39 45 

2000。06。10 jack 1 3 12 23 29 33 27 

2000。06。14 nobody 2 4 13 19 39 45 26 

2000。06。17 nobody 3 8 17 19 21 25 35 



     The table of draws has the ability to reference the same winner twice�察�which means the  

relation of one winner to many draws is possible。 To add the relation of one draw to many  

winners�察�the table would need to be modified like this�此�



2000。05。31 nobody 5 6 13 23 25 37 43 

2000。06。03 jack jill 7 10 11 18 32
卦指朕村 貧匯匈 和匯匈 指欺競何 壘��0�� 家��0��
隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��