1 chapter 10 – database management 10.1 an introduction to databases 10.2 editing and designing...
TRANSCRIPT
1
Chapter 10 – Database Management
10.1 An Introduction to Databases
10.2 Editing and Designing Databases
2
10.1 An Introduction to Databases
• Accessing a Database Table
• Binding to Additional Tables
• Querying a Table with LINQ
• Primary and Foreign Keys
• The Join of Two Tables
3
Sample Table – Cities Table
4
Sample Table – Countries Table
5
Database Terminology
• A table is a rectangular array of data.
• Each column of the table, called a field, contains the same type of information.
• Each row, called a record, contains all the information about one entry in the table.
6
Database Management Software (DBMS)
• Used to create databases
• Databases contain one or more related tables
• Examples of DBMS are Access, Oracle, and SQL Server.
• The databases used in this chapter are found in the folder Programs\Ch10\Databases. They were created with Access and have the extension accdb.
Megacities.accdb
• Contains the two tables Cities and Countries shown earlier.
• This database will be used extensively in the examples for this chapter.
• Several steps are required to bind to a table of the database. (See the next sixteen slides.)
7
Binding to the Cities Table
Add a BindingSource control to the form. (The control is in the Data and All Windows Forms group of the Toolbox. It appears in the form’s component tray with the name BindingSource1.)
8
DataSource Property of BindingSource1
9
click here
Choose Data Source Type
10
click on Next button
select
Choose Database Model
11
click on Next button
select
Choose Data Connection
12
click on New Connection button
Add Connection Dialog Box
13
click on Change button
Change Data Source Box
14
select
click on OK button
15
Add Connection Dialog Box
click on Browse button
Select Database File
16
double-click on Megacities.accdb
Add Connection Dialog Box
17
click on OK button
Choose Data Connection
18
click on Next button
19
click on Yes button
Save to File
20
check this box
click on Next button
Choose Database Objects
21
check on Tables box
click on Finish button
Changes in Properties Window and Form
22
After Clicking on DataMember Down-Arrow
23
click on Cities
VB Generated Items
24
new iconnew code
Binding Complete
• We are now bound to the Cities table via the MegacitiesDataSet and the CitiesTableAdapter.
• The next four slides show how to bind an additional table.
25
Connect an Additional Table
Add another BindingSource control to the form.
26
Set DataSource Property
27
click on MegacitiesDataSet
Set DataMember Property
28
click on Countries
VB Generated Items
29
additional code shows in Load event procedureMe.CountriesTableAdapter.Fill(Me.MegacitiesDataSet.Countries)
new icon
Example 1: Form
30
txtTotalPop
Example 1: CodePrivate Sub btnDisplay_Click(...) Handles _ btnDisplay.Click Dim query1 = From city In MegacitiesDataSet.Cities
Where city.country = "India"
Order By city.pop2010 Descending
Select city.name
lstOutput.DataSource = query1.ToList
lstOutput.SelectedItem = Nothing
31
Example 1: Code (continued)
Dim query2 = From city In _ MegacitiesDataSet.Cities
Where city.country = "India"
Select city.pop2010
txtTotalPop.Text = CStr(query2.Sum)
End Sub
32
Example 1: Output
33
Example 2: Form
34
txtName
dgvOutput
Example 2: CodeDim query = From country In _ MegacitiesDataSet.Countries
Where country.name = txtName.Text
Select country.name, country.pop2010, country.monetaryUnit
If query.Count = 1 Then
dgvOutput.DataSource = query.ToList
dgvOutput.CurrentCell = Nothing
Else
MessageBox.Show("Country not found")
End If35
Example 2: Output
36
Example 3: Form
37
dgvOutput
Example 3: CodeDim query = From city In _ MegacitiesDataSet.Cities
Let popIncrease = city.pop2015 - city.pop2010
Let formattedIncr = FormatNumber(popIncrease, 1)
Where popIncrease > 1
Order By popIncrease Descending
Select city.name, formattedIncr
38
Example 3: Code (continued)
dgvOutput.DataSource = query.ToList
dgvOutput.CurrentCell = Nothing
dgvOutput.Columns("name").HeaderText = "City"
dgvOutput.Columns("formattedIncr").HeaderText = "Population Increase"
39
Example 3: Output
40
41
Primary Keys
• A primary key is used to uniquely identify each record.
• Databases of student enrollments in a college usually use a field of student ID numbers as the primary key.
• Why wouldn't names be a good choice as a primary key?
42
Primary Key Fields• Specified when database is created.• Every record must have an entry in the
primary-key field. • Two records cannot have the same entry in
the primary-key field.• This pair of requirements is called the Rule
of Entity Integrity.
43
Two or More Tables• When a database contains two or more tables,
the tables are usually related. • For instance, the two tables Cities and
Countries are related by their country and name fields.
• Notice that every entry in Cities.country appears uniquely in Countries.name and Countries.name is a primary key.
• We say that Cities.country is a foreign key of Countries.name.
44
Foreign Keys
• Foreign keys can be specified when a table is first created. Visual Basic will insist on the Rule of Referential Integrity.
• This Rule says that each value in the foreign key must also appear in the primary key of the other table.
45
Join• A foreign key allows Visual Basic to link (or
join) two tables from a relational database
• When the two tables Cities and Countries from Megacities.accdb are joined based on the foreign key Cities.country, the result is the table in the next slide.
• The record for each city is expanded to show its country’s population and its monetary unit.
46
A Join of Two Tables
47
Beginning of Query to Join the Two Tables from Megacities
Dim query = From city In _ MegacitiesDataSet.Cities
Join country In MegacitiesDataSet.Countries
On city.country Equals country.name
Example 6: Form
48
Example 6: Code for Load Event
Me.CountriesTableAdapter.Fill(Me.MegacitiesDataSet.Countries)
Me.CitiesTableAdapter.Fill(Me.MegacitiesDataSet.Cities)
Dim query = From country In _ MegacitiesDataSet.Countries
Order By country.monetaryUnit Ascending
Select country.monetaryUnit
Distinct
lstCurrencies.DataSource = query.ToList
49
Example 6: Later CodeDim query = From city In _ MegacitiesDataSet.Cities
Join country In MegacitiesDataSet.Countries
On city.country Equals country.name
Where country.monetaryUnit = lstCurrencies.Text
Order By city.name Ascending
Select city.name
For Each city As String In query
lstCities.Items.Add(city)
Next50
Example 6: Sample Output
51
52
10.2 Editing and Designing Databases
• A Program to Edit the Cities Table
• Designing the Form for the Table-Editing Program
• Writing the Table-Editing Program
• Principles of Database Design
Editing Program: Form
53
navigation toolbar
Navigation Toolbar
54
Editing Program: Output
55
Building the Form
• Start a new program and bind the Cities table.
• Add a BindingNavigator control (found in Data group of Toolbox) to the form. Note: BindingNavigator1 appears in component tray and a navigation toolbar appears at the top of the form.
56
Navigation Bar Added
57
button to be changed
Change Last Button
58
click here
Change Last Button (continued)
59
click on Button
Change Last Button (continued)
60
new button
• New button has name ToolStripButton 1• Use the Properties window for the button to
change the Name, Text, and Image settings to btnUpdate, Update, and Disk.bmp.
Change Last Button (continued)
61
Disk.bmp used for picture on button
Bind to Cities Table
62
click here
Bind Text Boxes to Cities Table Fields
63
drag these four items onto form
Text Boxes and Labels Generated by VB
64
Complete Design of Form
65
Index Numbers
• Each record of the table Cities has an index number ranging from 0 to 9.
• The value of BindingSource1.Position is the index number of the record currently displayed in the form.
66
Index Numbers (continued)
• The statement BindingSource1.Position = n
displays the record having index number n.
• The value of BindingSource1.Find("name", cityName)
is the index number of the specified city.
67
Principles of Database Design
• Data should often be stored in their smallest parts.
• Avoid redundancy.
• Avoid tables with intentionally blank entries.
• Strive for table cohesion.
• Avoid fields whose values can be calculated from existing fields.
68