{"id":1000,"date":"2025-01-12T20:50:17","date_gmt":"2025-01-13T01:50:17","guid":{"rendered":"https:\/\/pressbooks.bccampus.ca\/nelson\/chapter\/chapter-3-characteristics-and-benefits-of-a-database-3\/"},"modified":"2025-01-12T20:59:56","modified_gmt":"2025-01-13T01:59:56","slug":"chapter03thirdedition","status":"publish","type":"chapter","link":"https:\/\/pressbooks.bccampus.ca\/nelson\/chapter\/chapter03thirdedition\/","title":{"raw":"Chapter 3 Characteristics and Benefits of a Database","rendered":"Chapter 3 Characteristics and Benefits of a Database"},"content":{"raw":"<div class=\"chapter-3-characteristics-and-benefits-of-a-database\">\r\n<p class=\"import-Normal\">Original Author: Adrienne Watt<\/p>\r\n<p class=\"import-Normal\">Rewrite: Fred Strickland<\/p>\r\n\r\n<h2>Learning Outcomes<\/h2>\r\n<table>\r\n<tbody>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\"><strong>Computing Sub Discipline<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\"><strong>Document <\/strong><strong>C<\/strong><strong>ode, Reference Code, and Page Number<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\"><strong>Text<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Computer Engineering<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">CE2016<\/p>\r\n<p class=\"import-Normal\">CE-PPP 9 Contemporary issues)<\/p>\r\n<p class=\"import-Normal\">(Page 88)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Articulate some of the privacy implications related to massive database systems.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\" rowspan=\"4\">\r\n<p class=\"import-Normal\">Computer Science<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">CS2013<\/p>\r\n<p class=\"import-Normal\">IM\/Database Systems (DS)<\/p>\r\n<p class=\"import-Normal\">(Page 113)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">6. <a id=\"_Hlk167526655\"><\/a>Explain the concept of data independence and its importance in a database system. [Familiarity]<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">CS2013<\/p>\r\n<p class=\"import-Normal\">IM\/Relational Databases (RD)<\/p>\r\n<p class=\"import-Normal\">(Page 115-116)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">2. Explain and demonstrate the concepts of entity integrity constraint and referential integrity constraint (including definition of the concept of a foreign key). [Usage]<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">CS2023<\/p>\r\n<p class=\"import-Normal\">DM Core: Core Database Systems concepts<\/p>\r\n<p class=\"import-Normal\">(Pages 15-11)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">CS Core 1. Purpose and advantages of database systems<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">CS2023<\/p>\r\n<p class=\"import-Normal\">DM relational: Relational Databases<\/p>\r\n<p class=\"import-Normal\">(Pages 117-118)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">ILO CS Core 3. Enumerate the different types of integrity constraints.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Data Science<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">DS2021<\/p>\r\n<p class=\"import-Normal\">DPSIA\/DI Logical Integrity \u2013 T1<\/p>\r\n<p class=\"import-Normal\">(Page 89)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Students need to have knowledge of<\/p>\r\n<p class=\"import-Normal\">\u2022 Types of integrity constraints in database systems<\/p>\r\n<p class=\"import-Normal\">\u2022 Entity integrity, referential integrity, domain integrity, user-defined integrity<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\" rowspan=\"4\">\r\n<p class=\"import-Normal\">Information Technology<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">IT2017<\/p>\r\n<p class=\"import-Normal\">ITE-IMA-03 Data modeling<\/p>\r\n<p class=\"import-Normal\">(Page 92)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">c. Evaluate importance of database constraints<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">IT2017<\/p>\r\n<p class=\"import-Normal\">ITE- IMA-05 Data organization architecture<\/p>\r\n<p class=\"import-Normal\">(Page 92)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">d. Evaluate data integrity and provide examples of entity and referential integrity.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\" rowspan=\"2\">\r\n<p class=\"import-Normal\">IT2017<\/p>\r\n<p class=\"import-Normal\">ITE-IMA -07 Managing the database environment<\/p>\r\n<p class=\"import-Normal\">(Page 92)<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">d. Consider the concept of database security and backup and recovery.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">e. Evaluate the importance of metadata in database environment.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><\/td>\r\n<td><\/td>\r\n<td><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h2>Review and Direction of Chapter 3<\/h2>\r\n<p class=\"import-Normal\">Chapter 2 explored the history of databases and examined some of the database models. A brief listing of the advantages and the disadvantages was provided. Chapter 2 ended with a brief introduction to the concept of a database management system. Chapter 3 will go deeper.<\/p>\r\n\r\n<h2>Why Use a Database Management System?<\/h2>\r\n<p class=\"import-Normal\">A database management system (DBMS) can be used to collect data. If the DBMS is configured as a centralized repository of data, then users can route their data to the DBMS. This arrangement helps to avoid problems such as misplaced data, duplication of data, and accidental loss. The result is that users can use the data to perform various tasks. The following are examples of possible tasks that the collected data could be used for:<\/p>\r\n\r\n<ul>\r\n \t<li class=\"import-Normal\">Creating mailing lists<\/li>\r\n \t<li class=\"import-Normal\">Writing management reports<\/li>\r\n \t<li class=\"import-Normal\">Generating lists of selected news stories<\/li>\r\n \t<li class=\"import-Normal\">Identifying various client needs<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\">The actual DBMS contains utilities that can manipulate the stored data:<\/p>\r\n\r\n<ul>\r\n \t<li class=\"import-Normal\">Sorting<\/li>\r\n \t<li class=\"import-Normal\">Pattern matching<\/li>\r\n \t<li class=\"import-Normal\">Aggregating<\/li>\r\n \t<li class=\"import-Normal\">Calculating<\/li>\r\n \t<li class=\"import-Normal\">Arranging<\/li>\r\n \t<li class=\"import-Normal\">Updating<\/li>\r\n \t<li class=\"import-Normal\">Deleting<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\">A DBMS could be linked to support the following:<\/p>\r\n\r\n<ul>\r\n \t<li class=\"import-Normal\">A website that is capturing registered users<\/li>\r\n \t<li class=\"import-Normal\">A client-tracking application for social service organizations<\/li>\r\n \t<li class=\"import-Normal\">A medical record system for a health care facility<\/li>\r\n \t<li class=\"import-Normal\">A personal address book in your e-mail client<\/li>\r\n \t<li class=\"import-Normal\">A collection of word-processed documents<\/li>\r\n \t<li class=\"import-Normal\">A system that issues airline reservations<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\"><strong>\u00a0<\/strong><\/p>\r\n\r\n<h2>Characteristics and Benefits of a Database<\/h2>\r\n<p class=\"import-Normal\">As noted in chapter 2, there are several characteristics that distinguish the database approach from the file-based system or approach. This chapter describes the benefits (and features) of the database system.<\/p>\r\n\r\n<h3>Self-Describing Nature of a Database<\/h3>\r\n<p class=\"import-Normal\"><a id=\"_Hlk167511776\"><\/a>A database is <em>self-describing<\/em> since it not only contains the database itself, but also has <em>metadata<\/em> that <a id=\"_Hlk167511844\"><\/a>defines and describes the data and relationships between the tables in the database. This information is used by the DBMS software and by the database users as needed.<\/p>\r\n<p class=\"import-Normal\">This separation of data and information about the data makes a database totally different from the traditional file-based system in which the data definition is part of the application programs.<\/p>\r\n\r\n<h3>Insulation Between Program and Data<\/h3>\r\n<p class=\"import-Normal\">In a file-based system, the structure of the data files is defined in the application programs. If a user wants to change the structure of a file, all the programs that access that file might need to be changed as well.<\/p>\r\n<p class=\"import-Normal\">In the database approach, the data structure, the databases tables, the database views, and other vital pieces of information are stored in the <em>system catalogue<\/em> and not in the programs. This insulation between the programs and data is called<em> program-data independence<\/em> or simply <em>data independence<\/em>. In other words, the system data descriptions or data describing data (metadata) are separated from the application programs. This is possible since changes to the data structure are handled by the DBMS and are not embedded in the program itself.<\/p>\r\n\r\n<h3>Support for Multiple Views of Data<\/h3>\r\n<p class=\"import-Normal\">A database supports multiple views of data. A <em>view<\/em> is a subset of the database that is defined and dedicated for a particular set of users. Multiple users in the system might have different views. Each view would contain only the data of interest to a user or group of users.<\/p>\r\n\r\n<h3>Sharing of Data and Multi-user System<\/h3>\r\n<p class=\"import-Normal\">Collecting the organization\u2019s data in one location has many advantages.<\/p>\r\n\r\n<ul>\r\n \t<li>It allows employees and others who have access to the system to share data.<\/li>\r\n \t<li>It gives users the ability to gain insights by viewing data from different entities within the organization.<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\">Current DBMSs are designed for multiple users and DBMSs allow many users to access the same data at the same time. This access is achieved through a feature called <em>concurrency control strategies<\/em>. These strategies ensure that <a id=\"_Hlk167512425\"><\/a>the data access is always correct and that data integrity is maintained. <em>Data integrity<\/em> is the assurance that an organization\u2019s data is accurate, complete, and consistent at any point in its lifecycle. This involves safeguarding an organization\u2019s data against loss, leaks, and corrupting influences.<\/p>\r\n\r\n<h3>Enforcement of Integrity Constraints<\/h3>\r\n<p class=\"import-Normal\"><em>Database <\/em><em>constraints<\/em> or better known as<em> i<\/em><em>ntegrity constraints<\/em> are used to maintain the quality of the data. Integrity constraints <a id=\"_Hlk167512646\"><\/a>ensure that the actions of insertion, of updating, of deleting, and of other actions are done in a way that the actual data is not impacted incorrectly.<\/p>\r\n<p class=\"import-Normal\">There are four types of integrity constraints:<\/p>\r\n\r\n<ul>\r\n \t<li>Domain Constraints<\/li>\r\n \t<li>Entity Integrity Constraints<\/li>\r\n \t<li>Key Constraints<\/li>\r\n \t<li>Referential Integrity Constraints<\/li>\r\n<\/ul>\r\n<table>\r\n<tbody>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Student ID<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>First Name<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Last Name<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>City<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Two-Letter Postal Code<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">1<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">James<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Smith<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Vancouver<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">BC<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">2<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">John<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Johnson<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Grand Falls<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">NB<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">3<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Robert<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Williams<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Toronto<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">ON<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">4<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Michael<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Brown<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Caribou<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">ME<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">5<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">William<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Jones<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Presque Isle<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">ME<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><\/td>\r\n<td><\/td>\r\n<td><\/td>\r\n<td><\/td>\r\n<td><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"import-Normal\">Figure 3.1 Example of a database table<\/p>\r\n<p class=\"import-Normal\"><em>Domain <\/em><em>c<\/em><em>onstraints<\/em> define the legal values for a column. The following are examples:<\/p>\r\n\r\n<ul>\r\n \t<li>An ID must be a number.<\/li>\r\n \t<li>A student\u2019s grade must be a number.<\/li>\r\n \t<li>Set of two-letter postal codes for the United States<\/li>\r\n \t<li>Set of two-letter postal codes for Canada<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\">Figure 3.1 shows a valid table. The student ID values are only integers (whole numbers). These are drawn from the universe of integers ranging from 1 through the highest support number. The first name, the last name, and the city columns are populated with strings. These could be drawn from the universe of all possible strings. The two-letter postal code values contain only two letters. These could be drawn from the universe of two-letter codes ranging from AA through to ZZ.<\/p>\r\n<p class=\"import-Normal\"><em>Entity <\/em><em>i<\/em><em>ntegrity <\/em><em>c<\/em><em>onstraints<\/em> pertain to the <em>primary key<\/em>. A primary key is a unique value for locating a row of data in a database table. Entity integrity constraints prevent a <em>null<\/em> or empty value or undefined value from being used.<\/p>\r\n<p class=\"import-Normal\">Figure 3.1 shows a valid table. The student ID column does not contain any null entries.<\/p>\r\n<p class=\"import-Normal\"><a id=\"_Hlk167513098\"><\/a><em>Key <\/em><em>c<\/em><em>onstraints<\/em> pertain to the primary key. The primary key must be unique.<\/p>\r\n<p class=\"import-Normal\">Figure 3.1 shows a valid table. The student ID values are unique for each student. A student ID number is not used again for a different student.<\/p>\r\n<p class=\"import-Normal\"><em>Referential integrity constraints<\/em> refer to the linkage between two tables. If a table uses a <em>foreign key<\/em> (a primary key appearing in another table) to reference another table, then that key value must be present in that table.<\/p>\r\n\r\n<table>\r\n<tbody>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Advisor ID<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>First Name<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Last Name<\/strong><\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Student ID<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">1<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">David<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Garcia<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">1<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">1<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">David<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Garcia<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">3<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">2<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Richard<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Miller<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">2<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">2<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Richard<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Miller<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">4<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr class=\"TableGrid-R\">\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">3<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Charles<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">Davis<\/p>\r\n<\/td>\r\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\r\n<p class=\"import-Normal\">5<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><\/td>\r\n<td><\/td>\r\n<td><\/td>\r\n<td><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"import-Normal\">Figure 3.2 Example of a database table with a foreign key<\/p>\r\n<p class=\"import-Normal\">Figure 3.2 shows a valid table. The last column contains the student IDs of students listed in the Figure 3.1 table. If student ID 6 appeared in this table, but not in Figure 3.1 table, then referential integrity has been violated.<\/p>\r\n\r\n<h3>Control of Data Redundancy<\/h3>\r\n<p class=\"import-Normal\">Ideally, each data item is stored in only one place in the database and thus avoids <em>data redundancy<\/em>, which is the situation where a piece of data is stored in two or more places. Relational databases use the <em>normalization<\/em> rules to eliminate data redundancy.<\/p>\r\n<p class=\"import-Normal\">In some cases, data redundancy may be retained in order to improve system performance.<\/p>\r\n<p class=\"import-Normal\">Figure 3.1 has no data redundancy. Figure 3.2 does have data redundancy. See Figure 2.6 for an example that does not have any data redundancy.<\/p>\r\n\r\n<h3>Enforcement of Access and Permissions<\/h3>\r\n<p class=\"import-Normal\">Not all users of a database system will have the same access and the same privileges. The combination could be done for an individual or for a work group or for a work role.<\/p>\r\n<p class=\"import-Normal\"><em>Access<\/em> pertains to what can be viewed. A user might have access to inventory data, but not to employee salary data. Another individual might have access to employee salary data, but not to inventory. The human resource group would have access to employees\u2019 personal information. The sales group would have access to sales plans. The person filling the role as a chief executive officer would have access to personnel data, to planning documents, to budgeting documents, and so on. The person filling the role as the network administrator would have greater access.<\/p>\r\n<p class=\"import-Normal\"><em>Permissions<\/em> pertain to what a person or a group or a role can do. R<em>ead-only <\/em><em>permission<\/em> is the ability to read a file but not make changes. <em>Write <\/em><em>permission<\/em> is the ability to make changes to a file or to a resource. Typically, if write permission is being granted, then read permission is being granted at the same time (<em>read and write privileges<\/em>). There are situations when write permission is granted without read permission. For example, a log file could be write-only and thus prevents users from reading what others have written. This is an interesting topic, but is beyond the scope of this textbook. If you wish to learn more, use a search engine and look for POSIX file permissions or UNIX file permissions or Linux file permissions.<\/p>\r\n\r\n<h3>Transaction Processing<\/h3>\r\n<p class=\"import-Normal\">A database management system must include concurrency control subsystems. This feature ensures that the data remains consistent and valid during transaction processing even if several users update the same data.<\/p>\r\n\r\n<h3>Backup and Recovery Facilities<\/h3>\r\n<p class=\"import-Normal\">Backup and recovery are methods that protect the data from loss. The DBMS provides a separate process for backing up and recovering data. This is different and independent of a network backup system.<\/p>\r\n<p class=\"import-Normal\">If a hard drive fails and the database is stored on that hard drive, then it would not be accessible. The only way to recover the database is from a backup.<\/p>\r\n<p class=\"import-Normal\">If a computer system fails in the middle of a complex update process, the recovery subsystem is responsible for making sure that the database is restored to its original state.<\/p>\r\n<p class=\"import-Normal\"><strong>\u00a0<\/strong><\/p>\r\n\r\n<h2>Key Terms<\/h2>\r\n<p class=\"import-Normal\"><strong>access<\/strong><strong>: <\/strong>This pertains to what can be viewed by a user.<\/p>\r\n<p class=\"import-Normal\"><strong>concurrency control strategies<\/strong>: Strategies that ensure the data access is always correct and that data integrity is maintained.<\/p>\r\n<p class=\"import-Normal\"><strong>data independence: <\/strong>The insulation between the programs and data is also called program-data independence.<\/p>\r\n<p class=\"import-Normal\"><strong>data integrity<\/strong><strong>:<\/strong> The assurance that an organization\u2019s data is accurate, complete, and consistent at any point in its lifecycle.<\/p>\r\n<p class=\"import-Normal\"><strong>data redundancy<\/strong>: This is the situation where a piece of data is stored in two or more places.<\/p>\r\n<p class=\"import-Normal\"><strong>database constraint<\/strong><strong> or integrity constraints<\/strong>: Steps that ensure that the actions of insertion, of updating, of deleting, and of other actions are done in a way that the actual data is not impacted incorrectly.<\/p>\r\n<p class=\"import-Normal\"><strong>d<\/strong><strong>omain constraint<\/strong>: This defines the legal values for a column.<\/p>\r\n<p class=\"import-Normal\"><strong>entity integrity constraint<\/strong>: This pertains to the primary key. Entity integrity constraints prevent a null or empty value from being used.<\/p>\r\n<p class=\"import-Normal\"><strong>foreign key:<\/strong> This is a primary key appearing in another table.<\/p>\r\n<p class=\"import-Normal\"><strong>key constraint<\/strong>: This pertains to the primary key. The primary key must be unique.<\/p>\r\n<p class=\"import-Normal\"><strong>metadata<\/strong>: Defines and describes the data and relationships between the tables in the database.<\/p>\r\n<p class=\"import-Normal\"><strong>n<\/strong><strong>ormalization<\/strong>: Relational databases use a set of rules for eliminating data redundancy.<\/p>\r\n<p class=\"import-Normal\"><strong>null:<\/strong> This is the absence of a user-defined value. This is not the same thing as zero.<\/p>\r\n<p class=\"import-Normal\"><strong>permission<\/strong>: This pertains to what a person or a group or a role can do.<\/p>\r\n<p class=\"import-Normal\"><strong>primary key<\/strong>: This is a unique value for locating a row of data in a database table.<\/p>\r\n<p class=\"import-Normal\"><strong>program-data independence<\/strong>: See data independence.<\/p>\r\n<p class=\"import-Normal\"><strong>read and write privileges:<\/strong> This is the ability to both read and modify a file.<\/p>\r\n<p class=\"import-Normal\"><strong>read-only permission:<\/strong> This is the ability to read a file but not make changes.<\/p>\r\n<p class=\"import-Normal\"><strong>r<\/strong><strong>eferential integrity constraint<\/strong><strong>: <\/strong>This refers to the linkage between two tables. If a table uses a foreign key (a primary key appearing in another table) to reference another table, then that key value must be present in that table.<\/p>\r\n<p class=\"import-Normal\"><strong>self-describing<\/strong>: A database is self-describing because it not only contains the database itself, but also metadata that defines and describes the data and relationships between the tables in the database.<\/p>\r\n<p class=\"import-Normal\"><strong>system catalogue (system catalog<\/strong>): In the database approach, the data structure, the databases tables, the database views, and other vital pieces of information are stored.<\/p>\r\n<p class=\"import-Normal\"><strong>view<\/strong>: A subset of the database that is defined and dedicated for a particular set of users.<\/p>\r\n<p class=\"import-Normal\"><strong>write permission<\/strong>: This is the ability to make changes to a file or to a resource.<\/p>\r\n\r\n<h2>Exercises<\/h2>\r\n<ol>\r\n \t<li class=\"import-Normal\">List three reasons why a database management system should be used.<\/li>\r\n \t<li class=\"import-Normal\">Explain what is meant by the phrase that a database is self-describing?<\/li>\r\n \t<li class=\"import-Normal\">Explain the concept of data independence and its importance in a database system. (CS2018 IM\/DS 6)<\/li>\r\n \t<li class=\"import-Normal\">Explain how data can be kept private from some users through access and through views. (CE2016 CE-PPP 9)<\/li>\r\n \t<li class=\"import-Normal\">Explain concurrency control strategies.<\/li>\r\n \t<li class=\"import-Normal\">Why is it important to have database constraints? (IT2017 ITE-IMA-03c)<\/li>\r\n \t<li class=\"import-Normal\">Explain the concept of domain constraints and provide two examples.<\/li>\r\n \t<li class=\"import-Normal\">Explain the concept of entity integrity constraints and provide two examples. Be sure to address the concept of a primary key in your answer. (CS2013 IM\/RD 2 and IT2017 ITE-IMA-05d)<\/li>\r\n \t<li class=\"import-Normal\">Explain the concept of referential integrity constraints. Be sure to address the concept of a foreign key in your answer. Provide two examples. (CS2013 IM\/RD 2 and IT2017 ITE-IMA-05d)<\/li>\r\n \t<li class=\"import-Normal\">Explain data redundancy.<\/li>\r\n \t<li class=\"import-Normal\">Explain access and permissions.<\/li>\r\n \t<li class=\"import-Normal\">Explain how database backups and database recoveries can provide database security. (IT2017 ITE-IMA-07d)<\/li>\r\n \t<li class=\"import-Normal\">What is the importance of metadata in a database environment? (IT2017 ITE-IMA-07e)<\/li>\r\n<\/ol>\r\n<h2>A Running Project<\/h2>\r\n<p class=\"import-Normal\">A running project was introduced in Chapter 2. Review what you have collected. Have you overlooked anything?<\/p>\r\n<p class=\"import-Normal\">If you are doing this as a service project or as an internship, continue to chat with the organization. If possible, chat with others besides the main contact person.<\/p>\r\n<p class=\"import-Normal\">Use a word processor to create tables with columns for the entity pieces. DO NOT USE SQL COMMANDS FROM A DATABASE MANAGEMENT SYSTEM! It is too early to think about doing this.<\/p>\r\n<p class=\"import-Normal\"><strong>\u00a0<\/strong><\/p>\r\n\r\n<h2>Attribution<\/h2>\r\n<p class=\"import-Normal\">This chapter of\u00a0<em>Database Design<\/em> is a derivative copy of\u00a0<a class=\"rId7\" href=\"http:\/\/cnx.org\/contents\/b57b8760-6898-469d-a0f7-06e0537f6817@1\">Database System Concepts<\/a>\u00a0by\u00a0Nguyen Kim Anh\u00a0licensed under\u00a0<a class=\"rId8\" href=\"http:\/\/creativecommons.org\/licenses\/by\/3.0\/\">Creative Commons Attribution License 3.0 license<\/a><\/p>\r\n<p class=\"import-Normal\">The following material was written by Adrienne Watt for the second edition:<\/p>\r\n\r\n<ul>\r\n \t<li class=\"import-Normal\">Introduction<\/li>\r\n \t<li class=\"import-Normal\">Key Terms<\/li>\r\n \t<li class=\"import-Normal\">Exercises<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\"><a id=\"_Hlk165870885\"><\/a>The whole chapter was completely revised by Fred Strickland for the third edition.<\/p>\r\n\r\n<h2>References<\/h2>\r\n<p class=\"import-Normal\">\u201cDBMS Integrity Constraints,\u201d Geeks for Geeks, February 28, 2024. <a class=\"rId9\" href=\"https:\/\/www.geeksforgeeks.org\/dbms-integrity-constraints\/\"><span class=\"import-Hyperlink\">https:\/\/www.geeksforgeeks.org\/dbms-integrity-constraints\/<\/span><\/a><\/p>\r\n<p class=\"import-Normal\">\u201cNULL values in SQL,\u201d Geeks for Geeks, April 24, 2023. <a class=\"rId10\" href=\"https:\/\/www.geeksforgeeks.org\/sql-null-values\/\"><span class=\"import-Hyperlink\">https:\/\/www.geeksforgeeks.org\/sql-null-values\/<\/span><\/a><\/p>\r\n<p class=\"import-Normal\">\u201cWrite access without read access,\u201d Unix &amp; Linux, n.d. <a class=\"rId11\" href=\"https:\/\/unix.stackexchange.com\/questions\/22577\/write-access-without-read-access\"><span class=\"import-Hyperlink\">https:\/\/unix.stackexchange.com\/questions\/22577\/write-access-without-read-access<\/span><\/a><\/p>\r\n<p class=\"import-Normal\">Mayank Dham. \u201cTypes of Constraints in DBMS,\u201d PrepBytes Blog, July 21, 2023. <a class=\"rId12\" href=\"https:\/\/www.prepbytes.com\/blog\/dbms\/constraints-in-dbms-and-types\/\"><span class=\"import-Hyperlink\">https:\/\/www.prepbytes.com\/blog\/dbms\/constraints-in-dbms-and-types\/<\/span><\/a><\/p>\r\n<p class=\"import-Normal\">Falguni Thakker. \u201cSQL Domain Constraints (NOT NULL, Check, UNIQUE),\u201d GoLinuxCloud, November 4, 2022. <a class=\"rId13\" href=\"https:\/\/www.golinuxcloud.com\/sql-domain-constraints\/\"><span class=\"import-Hyperlink\">https:\/\/www.golinuxcloud.com\/sql-domain-constraints\/#google_vignette<\/span><\/a><\/p>\r\n\r\n<ul>\r\n \t<li>This contains example SQL commands.<\/li>\r\n<\/ul>\r\n<p class=\"import-Normal\">\u201cWhat is the most common last name in the United States?\u201d Mongabay, n.d. <a class=\"rId14\" href=\"https:\/\/names.mongabay.com\/data\/1000.html\"><span class=\"import-Hyperlink\">https:\/\/names.mongabay.com\/data\/1000.html<\/span><\/a><\/p>\r\n<p class=\"import-Normal\">\u201c300 Most Common Male Names in the U.S.\u201d Mongabay, November 20, 2005. <a class=\"rId15\" href=\"https:\/\/names.mongabay.com\/male_names.htm\"><span class=\"import-Hyperlink\">https:\/\/names.mongabay.com\/male_names.htm<\/span><\/a><\/p>\r\n<p class=\"import-Normal\"><\/p>\r\n\r\n<\/div>","rendered":"<div class=\"chapter-3-characteristics-and-benefits-of-a-database\">\n<p class=\"import-Normal\">Original Author: Adrienne Watt<\/p>\n<p class=\"import-Normal\">Rewrite: Fred Strickland<\/p>\n<h2>Learning Outcomes<\/h2>\n<table>\n<tbody>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\"><strong>Computing Sub Discipline<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\"><strong>Document <\/strong><strong>C<\/strong><strong>ode, Reference Code, and Page Number<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\"><strong>Text<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Computer Engineering<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">CE2016<\/p>\n<p class=\"import-Normal\">CE-PPP 9 Contemporary issues)<\/p>\n<p class=\"import-Normal\">(Page 88)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Articulate some of the privacy implications related to massive database systems.<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\" rowspan=\"4\">\n<p class=\"import-Normal\">Computer Science<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">CS2013<\/p>\n<p class=\"import-Normal\">IM\/Database Systems (DS)<\/p>\n<p class=\"import-Normal\">(Page 113)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">6. <a id=\"_Hlk167526655\"><\/a>Explain the concept of data independence and its importance in a database system. [Familiarity]<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">CS2013<\/p>\n<p class=\"import-Normal\">IM\/Relational Databases (RD)<\/p>\n<p class=\"import-Normal\">(Page 115-116)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">2. Explain and demonstrate the concepts of entity integrity constraint and referential integrity constraint (including definition of the concept of a foreign key). [Usage]<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">CS2023<\/p>\n<p class=\"import-Normal\">DM Core: Core Database Systems concepts<\/p>\n<p class=\"import-Normal\">(Pages 15-11)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">CS Core 1. Purpose and advantages of database systems<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">CS2023<\/p>\n<p class=\"import-Normal\">DM relational: Relational Databases<\/p>\n<p class=\"import-Normal\">(Pages 117-118)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">ILO CS Core 3. Enumerate the different types of integrity constraints.<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Data Science<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">DS2021<\/p>\n<p class=\"import-Normal\">DPSIA\/DI Logical Integrity \u2013 T1<\/p>\n<p class=\"import-Normal\">(Page 89)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Students need to have knowledge of<\/p>\n<p class=\"import-Normal\">\u2022 Types of integrity constraints in database systems<\/p>\n<p class=\"import-Normal\">\u2022 Entity integrity, referential integrity, domain integrity, user-defined integrity<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\" rowspan=\"4\">\n<p class=\"import-Normal\">Information Technology<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">IT2017<\/p>\n<p class=\"import-Normal\">ITE-IMA-03 Data modeling<\/p>\n<p class=\"import-Normal\">(Page 92)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">c. Evaluate importance of database constraints<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">IT2017<\/p>\n<p class=\"import-Normal\">ITE- IMA-05 Data organization architecture<\/p>\n<p class=\"import-Normal\">(Page 92)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">d. Evaluate data integrity and provide examples of entity and referential integrity.<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\" rowspan=\"2\">\n<p class=\"import-Normal\">IT2017<\/p>\n<p class=\"import-Normal\">ITE-IMA -07 Managing the database environment<\/p>\n<p class=\"import-Normal\">(Page 92)<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">d. Consider the concept of database security and backup and recovery.<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">e. Evaluate the importance of metadata in database environment.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Review and Direction of Chapter 3<\/h2>\n<p class=\"import-Normal\">Chapter 2 explored the history of databases and examined some of the database models. A brief listing of the advantages and the disadvantages was provided. Chapter 2 ended with a brief introduction to the concept of a database management system. Chapter 3 will go deeper.<\/p>\n<h2>Why Use a Database Management System?<\/h2>\n<p class=\"import-Normal\">A database management system (DBMS) can be used to collect data. If the DBMS is configured as a centralized repository of data, then users can route their data to the DBMS. This arrangement helps to avoid problems such as misplaced data, duplication of data, and accidental loss. The result is that users can use the data to perform various tasks. The following are examples of possible tasks that the collected data could be used for:<\/p>\n<ul>\n<li class=\"import-Normal\">Creating mailing lists<\/li>\n<li class=\"import-Normal\">Writing management reports<\/li>\n<li class=\"import-Normal\">Generating lists of selected news stories<\/li>\n<li class=\"import-Normal\">Identifying various client needs<\/li>\n<\/ul>\n<p class=\"import-Normal\">The actual DBMS contains utilities that can manipulate the stored data:<\/p>\n<ul>\n<li class=\"import-Normal\">Sorting<\/li>\n<li class=\"import-Normal\">Pattern matching<\/li>\n<li class=\"import-Normal\">Aggregating<\/li>\n<li class=\"import-Normal\">Calculating<\/li>\n<li class=\"import-Normal\">Arranging<\/li>\n<li class=\"import-Normal\">Updating<\/li>\n<li class=\"import-Normal\">Deleting<\/li>\n<\/ul>\n<p class=\"import-Normal\">A DBMS could be linked to support the following:<\/p>\n<ul>\n<li class=\"import-Normal\">A website that is capturing registered users<\/li>\n<li class=\"import-Normal\">A client-tracking application for social service organizations<\/li>\n<li class=\"import-Normal\">A medical record system for a health care facility<\/li>\n<li class=\"import-Normal\">A personal address book in your e-mail client<\/li>\n<li class=\"import-Normal\">A collection of word-processed documents<\/li>\n<li class=\"import-Normal\">A system that issues airline reservations<\/li>\n<\/ul>\n<p class=\"import-Normal\"><strong>\u00a0<\/strong><\/p>\n<h2>Characteristics and Benefits of a Database<\/h2>\n<p class=\"import-Normal\">As noted in chapter 2, there are several characteristics that distinguish the database approach from the file-based system or approach. This chapter describes the benefits (and features) of the database system.<\/p>\n<h3>Self-Describing Nature of a Database<\/h3>\n<p class=\"import-Normal\"><a id=\"_Hlk167511776\"><\/a>A database is <em>self-describing<\/em> since it not only contains the database itself, but also has <em>metadata<\/em> that <a id=\"_Hlk167511844\"><\/a>defines and describes the data and relationships between the tables in the database. This information is used by the DBMS software and by the database users as needed.<\/p>\n<p class=\"import-Normal\">This separation of data and information about the data makes a database totally different from the traditional file-based system in which the data definition is part of the application programs.<\/p>\n<h3>Insulation Between Program and Data<\/h3>\n<p class=\"import-Normal\">In a file-based system, the structure of the data files is defined in the application programs. If a user wants to change the structure of a file, all the programs that access that file might need to be changed as well.<\/p>\n<p class=\"import-Normal\">In the database approach, the data structure, the databases tables, the database views, and other vital pieces of information are stored in the <em>system catalogue<\/em> and not in the programs. This insulation between the programs and data is called<em> program-data independence<\/em> or simply <em>data independence<\/em>. In other words, the system data descriptions or data describing data (metadata) are separated from the application programs. This is possible since changes to the data structure are handled by the DBMS and are not embedded in the program itself.<\/p>\n<h3>Support for Multiple Views of Data<\/h3>\n<p class=\"import-Normal\">A database supports multiple views of data. A <em>view<\/em> is a subset of the database that is defined and dedicated for a particular set of users. Multiple users in the system might have different views. Each view would contain only the data of interest to a user or group of users.<\/p>\n<h3>Sharing of Data and Multi-user System<\/h3>\n<p class=\"import-Normal\">Collecting the organization\u2019s data in one location has many advantages.<\/p>\n<ul>\n<li>It allows employees and others who have access to the system to share data.<\/li>\n<li>It gives users the ability to gain insights by viewing data from different entities within the organization.<\/li>\n<\/ul>\n<p class=\"import-Normal\">Current DBMSs are designed for multiple users and DBMSs allow many users to access the same data at the same time. This access is achieved through a feature called <em>concurrency control strategies<\/em>. These strategies ensure that <a id=\"_Hlk167512425\"><\/a>the data access is always correct and that data integrity is maintained. <em>Data integrity<\/em> is the assurance that an organization\u2019s data is accurate, complete, and consistent at any point in its lifecycle. This involves safeguarding an organization\u2019s data against loss, leaks, and corrupting influences.<\/p>\n<h3>Enforcement of Integrity Constraints<\/h3>\n<p class=\"import-Normal\"><em>Database <\/em><em>constraints<\/em> or better known as<em> i<\/em><em>ntegrity constraints<\/em> are used to maintain the quality of the data. Integrity constraints <a id=\"_Hlk167512646\"><\/a>ensure that the actions of insertion, of updating, of deleting, and of other actions are done in a way that the actual data is not impacted incorrectly.<\/p>\n<p class=\"import-Normal\">There are four types of integrity constraints:<\/p>\n<ul>\n<li>Domain Constraints<\/li>\n<li>Entity Integrity Constraints<\/li>\n<li>Key Constraints<\/li>\n<li>Referential Integrity Constraints<\/li>\n<\/ul>\n<table>\n<tbody>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Student ID<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>First Name<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Last Name<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>City<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Two-Letter Postal Code<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">1<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">James<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Smith<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Vancouver<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">BC<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">2<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">John<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Johnson<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Grand Falls<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">NB<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">3<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Robert<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Williams<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Toronto<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">ON<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">4<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Michael<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Brown<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Caribou<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">ME<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">5<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">William<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Jones<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Presque Isle<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">ME<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"import-Normal\">Figure 3.1 Example of a database table<\/p>\n<p class=\"import-Normal\"><em>Domain <\/em><em>c<\/em><em>onstraints<\/em> define the legal values for a column. The following are examples:<\/p>\n<ul>\n<li>An ID must be a number.<\/li>\n<li>A student\u2019s grade must be a number.<\/li>\n<li>Set of two-letter postal codes for the United States<\/li>\n<li>Set of two-letter postal codes for Canada<\/li>\n<\/ul>\n<p class=\"import-Normal\">Figure 3.1 shows a valid table. The student ID values are only integers (whole numbers). These are drawn from the universe of integers ranging from 1 through the highest support number. The first name, the last name, and the city columns are populated with strings. These could be drawn from the universe of all possible strings. The two-letter postal code values contain only two letters. These could be drawn from the universe of two-letter codes ranging from AA through to ZZ.<\/p>\n<p class=\"import-Normal\"><em>Entity <\/em><em>i<\/em><em>ntegrity <\/em><em>c<\/em><em>onstraints<\/em> pertain to the <em>primary key<\/em>. A primary key is a unique value for locating a row of data in a database table. Entity integrity constraints prevent a <em>null<\/em> or empty value or undefined value from being used.<\/p>\n<p class=\"import-Normal\">Figure 3.1 shows a valid table. The student ID column does not contain any null entries.<\/p>\n<p class=\"import-Normal\"><a id=\"_Hlk167513098\"><\/a><em>Key <\/em><em>c<\/em><em>onstraints<\/em> pertain to the primary key. The primary key must be unique.<\/p>\n<p class=\"import-Normal\">Figure 3.1 shows a valid table. The student ID values are unique for each student. A student ID number is not used again for a different student.<\/p>\n<p class=\"import-Normal\"><em>Referential integrity constraints<\/em> refer to the linkage between two tables. If a table uses a <em>foreign key<\/em> (a primary key appearing in another table) to reference another table, then that key value must be present in that table.<\/p>\n<table>\n<tbody>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Advisor ID<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>First Name<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Last Name<\/strong><\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\" style=\"text-align: center\"><strong>Student ID<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">1<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">David<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Garcia<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">1<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">1<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">David<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Garcia<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">3<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">2<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Richard<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Miller<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">2<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">2<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Richard<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Miller<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">4<\/p>\n<\/td>\n<\/tr>\n<tr class=\"TableGrid-R\">\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">3<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Charles<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">Davis<\/p>\n<\/td>\n<td class=\"TableGrid-C\" style=\"border: solid windowtext 0.5pt\">\n<p class=\"import-Normal\">5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"import-Normal\">Figure 3.2 Example of a database table with a foreign key<\/p>\n<p class=\"import-Normal\">Figure 3.2 shows a valid table. The last column contains the student IDs of students listed in the Figure 3.1 table. If student ID 6 appeared in this table, but not in Figure 3.1 table, then referential integrity has been violated.<\/p>\n<h3>Control of Data Redundancy<\/h3>\n<p class=\"import-Normal\">Ideally, each data item is stored in only one place in the database and thus avoids <em>data redundancy<\/em>, which is the situation where a piece of data is stored in two or more places. Relational databases use the <em>normalization<\/em> rules to eliminate data redundancy.<\/p>\n<p class=\"import-Normal\">In some cases, data redundancy may be retained in order to improve system performance.<\/p>\n<p class=\"import-Normal\">Figure 3.1 has no data redundancy. Figure 3.2 does have data redundancy. See Figure 2.6 for an example that does not have any data redundancy.<\/p>\n<h3>Enforcement of Access and Permissions<\/h3>\n<p class=\"import-Normal\">Not all users of a database system will have the same access and the same privileges. The combination could be done for an individual or for a work group or for a work role.<\/p>\n<p class=\"import-Normal\"><em>Access<\/em> pertains to what can be viewed. A user might have access to inventory data, but not to employee salary data. Another individual might have access to employee salary data, but not to inventory. The human resource group would have access to employees\u2019 personal information. The sales group would have access to sales plans. The person filling the role as a chief executive officer would have access to personnel data, to planning documents, to budgeting documents, and so on. The person filling the role as the network administrator would have greater access.<\/p>\n<p class=\"import-Normal\"><em>Permissions<\/em> pertain to what a person or a group or a role can do. R<em>ead-only <\/em><em>permission<\/em> is the ability to read a file but not make changes. <em>Write <\/em><em>permission<\/em> is the ability to make changes to a file or to a resource. Typically, if write permission is being granted, then read permission is being granted at the same time (<em>read and write privileges<\/em>). There are situations when write permission is granted without read permission. For example, a log file could be write-only and thus prevents users from reading what others have written. This is an interesting topic, but is beyond the scope of this textbook. If you wish to learn more, use a search engine and look for POSIX file permissions or UNIX file permissions or Linux file permissions.<\/p>\n<h3>Transaction Processing<\/h3>\n<p class=\"import-Normal\">A database management system must include concurrency control subsystems. This feature ensures that the data remains consistent and valid during transaction processing even if several users update the same data.<\/p>\n<h3>Backup and Recovery Facilities<\/h3>\n<p class=\"import-Normal\">Backup and recovery are methods that protect the data from loss. The DBMS provides a separate process for backing up and recovering data. This is different and independent of a network backup system.<\/p>\n<p class=\"import-Normal\">If a hard drive fails and the database is stored on that hard drive, then it would not be accessible. The only way to recover the database is from a backup.<\/p>\n<p class=\"import-Normal\">If a computer system fails in the middle of a complex update process, the recovery subsystem is responsible for making sure that the database is restored to its original state.<\/p>\n<p class=\"import-Normal\"><strong>\u00a0<\/strong><\/p>\n<h2>Key Terms<\/h2>\n<p class=\"import-Normal\"><strong>access<\/strong><strong>: <\/strong>This pertains to what can be viewed by a user.<\/p>\n<p class=\"import-Normal\"><strong>concurrency control strategies<\/strong>: Strategies that ensure the data access is always correct and that data integrity is maintained.<\/p>\n<p class=\"import-Normal\"><strong>data independence: <\/strong>The insulation between the programs and data is also called program-data independence.<\/p>\n<p class=\"import-Normal\"><strong>data integrity<\/strong><strong>:<\/strong> The assurance that an organization\u2019s data is accurate, complete, and consistent at any point in its lifecycle.<\/p>\n<p class=\"import-Normal\"><strong>data redundancy<\/strong>: This is the situation where a piece of data is stored in two or more places.<\/p>\n<p class=\"import-Normal\"><strong>database constraint<\/strong><strong> or integrity constraints<\/strong>: Steps that ensure that the actions of insertion, of updating, of deleting, and of other actions are done in a way that the actual data is not impacted incorrectly.<\/p>\n<p class=\"import-Normal\"><strong>d<\/strong><strong>omain constraint<\/strong>: This defines the legal values for a column.<\/p>\n<p class=\"import-Normal\"><strong>entity integrity constraint<\/strong>: This pertains to the primary key. Entity integrity constraints prevent a null or empty value from being used.<\/p>\n<p class=\"import-Normal\"><strong>foreign key:<\/strong> This is a primary key appearing in another table.<\/p>\n<p class=\"import-Normal\"><strong>key constraint<\/strong>: This pertains to the primary key. The primary key must be unique.<\/p>\n<p class=\"import-Normal\"><strong>metadata<\/strong>: Defines and describes the data and relationships between the tables in the database.<\/p>\n<p class=\"import-Normal\"><strong>n<\/strong><strong>ormalization<\/strong>: Relational databases use a set of rules for eliminating data redundancy.<\/p>\n<p class=\"import-Normal\"><strong>null:<\/strong> This is the absence of a user-defined value. This is not the same thing as zero.<\/p>\n<p class=\"import-Normal\"><strong>permission<\/strong>: This pertains to what a person or a group or a role can do.<\/p>\n<p class=\"import-Normal\"><strong>primary key<\/strong>: This is a unique value for locating a row of data in a database table.<\/p>\n<p class=\"import-Normal\"><strong>program-data independence<\/strong>: See data independence.<\/p>\n<p class=\"import-Normal\"><strong>read and write privileges:<\/strong> This is the ability to both read and modify a file.<\/p>\n<p class=\"import-Normal\"><strong>read-only permission:<\/strong> This is the ability to read a file but not make changes.<\/p>\n<p class=\"import-Normal\"><strong>r<\/strong><strong>eferential integrity constraint<\/strong><strong>: <\/strong>This refers to the linkage between two tables. If a table uses a foreign key (a primary key appearing in another table) to reference another table, then that key value must be present in that table.<\/p>\n<p class=\"import-Normal\"><strong>self-describing<\/strong>: A database is self-describing because it not only contains the database itself, but also metadata that defines and describes the data and relationships between the tables in the database.<\/p>\n<p class=\"import-Normal\"><strong>system catalogue (system catalog<\/strong>): In the database approach, the data structure, the databases tables, the database views, and other vital pieces of information are stored.<\/p>\n<p class=\"import-Normal\"><strong>view<\/strong>: A subset of the database that is defined and dedicated for a particular set of users.<\/p>\n<p class=\"import-Normal\"><strong>write permission<\/strong>: This is the ability to make changes to a file or to a resource.<\/p>\n<h2>Exercises<\/h2>\n<ol>\n<li class=\"import-Normal\">List three reasons why a database management system should be used.<\/li>\n<li class=\"import-Normal\">Explain what is meant by the phrase that a database is self-describing?<\/li>\n<li class=\"import-Normal\">Explain the concept of data independence and its importance in a database system. (CS2018 IM\/DS 6)<\/li>\n<li class=\"import-Normal\">Explain how data can be kept private from some users through access and through views. (CE2016 CE-PPP 9)<\/li>\n<li class=\"import-Normal\">Explain concurrency control strategies.<\/li>\n<li class=\"import-Normal\">Why is it important to have database constraints? (IT2017 ITE-IMA-03c)<\/li>\n<li class=\"import-Normal\">Explain the concept of domain constraints and provide two examples.<\/li>\n<li class=\"import-Normal\">Explain the concept of entity integrity constraints and provide two examples. Be sure to address the concept of a primary key in your answer. (CS2013 IM\/RD 2 and IT2017 ITE-IMA-05d)<\/li>\n<li class=\"import-Normal\">Explain the concept of referential integrity constraints. Be sure to address the concept of a foreign key in your answer. Provide two examples. (CS2013 IM\/RD 2 and IT2017 ITE-IMA-05d)<\/li>\n<li class=\"import-Normal\">Explain data redundancy.<\/li>\n<li class=\"import-Normal\">Explain access and permissions.<\/li>\n<li class=\"import-Normal\">Explain how database backups and database recoveries can provide database security. (IT2017 ITE-IMA-07d)<\/li>\n<li class=\"import-Normal\">What is the importance of metadata in a database environment? (IT2017 ITE-IMA-07e)<\/li>\n<\/ol>\n<h2>A Running Project<\/h2>\n<p class=\"import-Normal\">A running project was introduced in Chapter 2. Review what you have collected. Have you overlooked anything?<\/p>\n<p class=\"import-Normal\">If you are doing this as a service project or as an internship, continue to chat with the organization. If possible, chat with others besides the main contact person.<\/p>\n<p class=\"import-Normal\">Use a word processor to create tables with columns for the entity pieces. DO NOT USE SQL COMMANDS FROM A DATABASE MANAGEMENT SYSTEM! It is too early to think about doing this.<\/p>\n<p class=\"import-Normal\"><strong>\u00a0<\/strong><\/p>\n<h2>Attribution<\/h2>\n<p class=\"import-Normal\">This chapter of\u00a0<em>Database Design<\/em> is a derivative copy of\u00a0<a class=\"rId7\" href=\"http:\/\/cnx.org\/contents\/b57b8760-6898-469d-a0f7-06e0537f6817@1\">Database System Concepts<\/a>\u00a0by\u00a0Nguyen Kim Anh\u00a0licensed under\u00a0<a class=\"rId8\" href=\"http:\/\/creativecommons.org\/licenses\/by\/3.0\/\">Creative Commons Attribution License 3.0 license<\/a><\/p>\n<p class=\"import-Normal\">The following material was written by Adrienne Watt for the second edition:<\/p>\n<ul>\n<li class=\"import-Normal\">Introduction<\/li>\n<li class=\"import-Normal\">Key Terms<\/li>\n<li class=\"import-Normal\">Exercises<\/li>\n<\/ul>\n<p class=\"import-Normal\"><a id=\"_Hlk165870885\"><\/a>The whole chapter was completely revised by Fred Strickland for the third edition.<\/p>\n<h2>References<\/h2>\n<p class=\"import-Normal\">\u201cDBMS Integrity Constraints,\u201d Geeks for Geeks, February 28, 2024. <a class=\"rId9\" href=\"https:\/\/www.geeksforgeeks.org\/dbms-integrity-constraints\/\"><span class=\"import-Hyperlink\">https:\/\/www.geeksforgeeks.org\/dbms-integrity-constraints\/<\/span><\/a><\/p>\n<p class=\"import-Normal\">\u201cNULL values in SQL,\u201d Geeks for Geeks, April 24, 2023. <a class=\"rId10\" href=\"https:\/\/www.geeksforgeeks.org\/sql-null-values\/\"><span class=\"import-Hyperlink\">https:\/\/www.geeksforgeeks.org\/sql-null-values\/<\/span><\/a><\/p>\n<p class=\"import-Normal\">\u201cWrite access without read access,\u201d Unix &amp; Linux, n.d. <a class=\"rId11\" href=\"https:\/\/unix.stackexchange.com\/questions\/22577\/write-access-without-read-access\"><span class=\"import-Hyperlink\">https:\/\/unix.stackexchange.com\/questions\/22577\/write-access-without-read-access<\/span><\/a><\/p>\n<p class=\"import-Normal\">Mayank Dham. \u201cTypes of Constraints in DBMS,\u201d PrepBytes Blog, July 21, 2023. <a class=\"rId12\" href=\"https:\/\/www.prepbytes.com\/blog\/dbms\/constraints-in-dbms-and-types\/\"><span class=\"import-Hyperlink\">https:\/\/www.prepbytes.com\/blog\/dbms\/constraints-in-dbms-and-types\/<\/span><\/a><\/p>\n<p class=\"import-Normal\">Falguni Thakker. \u201cSQL Domain Constraints (NOT NULL, Check, UNIQUE),\u201d GoLinuxCloud, November 4, 2022. <a class=\"rId13\" href=\"https:\/\/www.golinuxcloud.com\/sql-domain-constraints\/\"><span class=\"import-Hyperlink\">https:\/\/www.golinuxcloud.com\/sql-domain-constraints\/#google_vignette<\/span><\/a><\/p>\n<ul>\n<li>This contains example SQL commands.<\/li>\n<\/ul>\n<p class=\"import-Normal\">\u201cWhat is the most common last name in the United States?\u201d Mongabay, n.d. <a class=\"rId14\" href=\"https:\/\/names.mongabay.com\/data\/1000.html\"><span class=\"import-Hyperlink\">https:\/\/names.mongabay.com\/data\/1000.html<\/span><\/a><\/p>\n<p class=\"import-Normal\">\u201c300 Most Common Male Names in the U.S.\u201d Mongabay, November 20, 2005. <a class=\"rId15\" href=\"https:\/\/names.mongabay.com\/male_names.htm\"><span class=\"import-Hyperlink\">https:\/\/names.mongabay.com\/male_names.htm<\/span><\/a><\/p>\n<p class=\"import-Normal\">\n<\/div>\n","protected":false},"author":2276,"menu_order":3,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["fredstrickland"],"pb_section_license":""},"chapter-type":[],"contributor":[66],"license":[],"class_list":["post-1000","chapter","type-chapter","status-publish","hentry","contributor-fredstrickland"],"part":3,"_links":{"self":[{"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/chapters\/1000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/wp\/v2\/users\/2276"}],"version-history":[{"count":2,"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/chapters\/1000\/revisions"}],"predecessor-version":[{"id":1012,"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/chapters\/1000\/revisions\/1012"}],"part":[{"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/chapters\/1000\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/wp\/v2\/media?parent=1000"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/pressbooks\/v2\/chapter-type?post=1000"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/wp\/v2\/contributor?post=1000"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/nelson\/wp-json\/wp\/v2\/license?post=1000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}