1 Chapter 10 – Database Management 10.1 An Introduction to Databases 10.2 Editing and Designing Databases
Jan 07, 2016
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
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
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
VB Generated Items
29
additional code shows in Load event procedureMe.CountriesTableAdapter.Fill(Me.MegacitiesDataSet.Countries)
new icon
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 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 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
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.
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: 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
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
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
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.
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