Relational Model. CSE462 Database Concepts. Demian Lessa. Department of Computer Science and Engineering State University of New York, Buffalo

Similar documents
Databases - Relations in Databases. (N Spadaccini 2010) Relations in Databases 1 / 16

EGCI 321: Database Systems. Dr. Tanasanee Phienthrakul

Relational Algebra. Spring 2012 Instructor: Hassan Khosravi

CMPT 354: Database System I. Lecture 2. Relational Model

Programming and Database Fundamentals for Data Scientists

Relational Model, Key Constraints

SQL Data Definition and Data Manipulation Languages (DDL and DML)

The Relational Model of Data (ii)

SQL DATA DEFINITION LANGUAGE

Information Systems Engineering. SQL Structured Query Language DDL Data Definition (sub)language

2.9 Table Creation. CREATE TABLE TableName ( AttrName AttrType, AttrName AttrType,... )

SQL language. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

COSC 304 Introduction to Database Systems SQL DDL. Dr. Ramon Lawrence University of British Columbia Okanagan

SQL DATA DEFINITION LANGUAGE

Introduction to Databases, Fall 2005 IT University of Copenhagen. Lecture 2: Relations and SQL. September 5, Lecturer: Rasmus Pagh

SQL: Concepts. Todd Bacastow IST 210: Organization of Data 2/17/ IST 210

Chapter 4. Basic SQL. Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

SQL: Data Definition Language

BASIC SQL CHAPTER 4 (6/E) CHAPTER 8 (5/E)

SQL Functionality SQL. Creating Relation Schemas. Creating Relation Schemas

WHAT IS SQL. Database query language, which can also: Define structure of data Modify data Specify security constraints

Private Institute of Aga NETWORK DATABASE LECTURER NIYAZ M. SALIH

CSCC43H: Introduction to Databases. Lecture 4

Database Management Systems,

BASIC SQL CHAPTER 4 (6/E) CHAPTER 8 (5/E)

Chapter 4. Basic SQL. SQL Data Definition and Data Types. Basic SQL. SQL language SQL. Terminology: CREATE statement

SQL DATA DEFINITION LANGUAGE

CSE 530A. Inheritance and Partitioning. Washington University Fall 2013

The SQL data-definition language (DDL) allows defining :

COGS 121 HCI Programming Studio. Week 03 - Tech Lecture

Basant Group of Institution

Mahathma Gandhi University

Copyright 2016 Ramez Elmasri and Shamkant B. Navathe

D B M G. SQL language: basics. Managing tables. Creating a table Modifying table structure Deleting a table The data dictionary Data integrity

SQL: Data Definition Language. csc343, Introduction to Databases Diane Horton Fall 2017

ITCS 3160 DATA BASE DESIGN AND IMPLEMENTATION

Data Modelling and Databases. Exercise Session 7: Integrity Constraints

An Introduction to Structured Query Language

Basic SQL. Basic SQL. Basic SQL

SQL Fundamentals. Chapter 3. Class 03: SQL Fundamentals 1

An Introduction to Structured Query Language

An Introduction to Structured Query Language

MTAT Introduction to Databases

Chapter 1 SQL and Data

CSC 453 Database Technologies. Tanu Malik DePaul University

SQL: Data De ni on. B0B36DBS, BD6B36DBS: Database Systems. h p:// Lecture 3

SQL Simple Queries. Chapter 3.1 V3.01. Napier University

An Introduction to Structured Query Language

An Introduction to Structured Query Language

Conceptual Design. The Entity-Relationship (ER) Model

Chapter 3: Introduction to SQL

SQL Introduction. CS 377: Database Systems

Chapter 2 The relational Model of data. Relational model introduction

Lab # 4. Data Definition Language (DDL)

SQL: The Query Language Part 1. Relational Query Languages

Lecture 3 SQL. Shuigeng Zhou. September 23, 2008 School of Computer Science Fudan University

Basic Structure Set Operations Aggregate Functions Null Values Nested Subqueries Derived Relations Views Modification of the Database Data Definition

SQL OVERVIEW. CS121: Relational Databases Fall 2017 Lecture 4

Information Systems for Engineers Fall Data Definition with SQL

The DBMS accepts requests for data from the application program and instructs the operating system to transfer the appropriate data.

Islamic University of Gaza Faculty of Engineering Department of Computer Engineering Fall 2011 ECOM 4113: Database System Lab Eng.

CS143: Relational Model

user specifies what is wanted, not how to find it

Introduction to Databases CSE 414. Lecture 2: Data Models

Data about data is database Select correct option: True False Partially True None of the Above

From theory to practice. Designing Tables for an Oracle Database System. Sqlplus. Sqlplus. Technicalities. Add the following to your.

Chapter # 7 Introduction to Structured Query Language (SQL) Part I

Chapter 1: Introduction

Full file at

Chapter 3: Introduction to SQL

Database Systems SQL SL03

ACS-3902 Fall Ron McFadyen 3D21 Slides are based on chapter 5 (7 th edition) (chapter 3 in 6 th edition)

CS2300: File Structures and Introduction to Database Systems

Part II Relational Databases Data as Tables

Lab # 2. Data Definition Language (DDL) Eng. Alaa O Shama

COSC344 Database Theory and Applications. Lecture 5 SQL - Data Definition Language. COSC344 Lecture 5 1

Database Systems CSE 303. Lecture 02

Database Systems CSE 303. Lecture 02

SQL Data Definition Language

Lecture 1: Relational Databases

Basic SQL. Dr Fawaz Alarfaj. ACKNOWLEDGEMENT Slides are adopted from: Elmasri & Navathe, Fundamentals of Database Systems MySQL Documentation

Database Systems SQL SL03

The Relational Model

Chapter 3: Introduction to SQL. Chapter 3: Introduction to SQL

Structured Query Language (SQL)

Database Technology Introduction. Heiko Paulheim

SQL. Lecture 4 SQL. Basic Structure. The select Clause. The select Clause (Cont.) The select Clause (Cont.) Basic Structure.

QQ Group

1) Introduction to SQL

From theory to practice. Designing Tables for a postgresql Database System. psql. Reminder. A few useful commands

HOW TO CREATE AND MAINTAIN DATABASES AND TABLES. By S. Sabraz Nawaz Senior Lecturer in MIT FMC, SEUSL

Solved MCQ on fundamental of DBMS. Set-1

doc. RNDr. Tomáš Skopal, Ph.D. RNDr. Michal Kopecký, Ph.D.

Alper VAHAPLAR

4 Schema Definition with SQL / DDL (II)

Designing Tables for an Oracle Database System. From theory to practice

Full file at

Outline. Textbook Chapter 6. Note 1. CSIE30600/CSIEB0290 Database Systems Basic SQL 2

Relational Database Systems Part 01. Karine Reis Ferreira

Carnegie Mellon Univ. Dept. of Computer Science Database Applications. General Overview - rel. model. Overview - detailed - SQL

Transcription:

Relational Model CSE462 Database Concepts Demian Lessa Department of Computer Science and Engineering State University of New York, Buffalo January 21 24, 2011

Next... 1 Relational Model Lessa Relational Model :: CSE462 Database Concepts 2 / 30

Data Model A data model is a set of concepts used to describe the structure of the data and the constraints it should obey. It also provides operations for data retrieval and modification. In database design, we typically use three different data models. Conceptual: concepts are closer to the way users perceive them. Logical: falls between the other two, balancing user views with some representation details. Physical: representation details such as data organization on disk, available access methods, etc. Lessa Relational Model :: CSE462 Database Concepts 3 / 30

Data Model Why do different data models? Requirements Analysis Determines data, applications, critical operations, etc. Conceptual Design High-level description of data and constraints (e.g., ERM). Logical Design Conversion of the conceptual design into a database schema. Schema Refinement Redundancy elimination through a process called normalization. Physical Design Considers workloads, indexes, clustering/partitioning, etc. Application and Security Design... Lessa Relational Model :: CSE462 Database Concepts 4 / 30

Overview Relational Model (1970) Originally proposed by Ted Codd. Separates physical implementation from conceptual view. Models data independently from its intended or actual use. Describes data both minimally and mathematically. A relation describes an association between data items tuples with attributes. Uses standard mathematical (logical) operations over the data relational algebra or relational calculus. Lessa Relational Model :: CSE462 Database Concepts 5 / 30

Definitions The relational model represents data as two-dimensional relations. title year length genre Gone With the Wind 1939 231 drama Star Wars 1977 124 scifi Wayne s World 1992 95 comedy Table: The Movies relation. Each row in the Movies relation represents a movie and each column a movie property. Every column header is an attribute. A relation schema consists of a relation name and a set of attributes. Notation: Movies(title, year, length, genre). A database schema is the set of all relation schemas in the database. Lessa Relational Model :: CSE462 Database Concepts 6 / 30

Definitions (cont.) Every relation attribute is associated with a domain, an elementary type such as int or string. Domains may optionally be included in relation schemas: Movies(title : string,year : int,length : int,genre : string) Rows of a relation are called tuples. A tuple has one component for each relation attribute. Every tuple component must have a value that belongs to the corresponding column s domain or is NULL (NULL is not a value!). The arity of a tuple is the number of components in the tuple. Notation: ( Gone With the Wind, 1939, 231, drama ). Lessa Relational Model :: CSE462 Database Concepts 7 / 30

Definitions (cont.) Attributes in a relation schema are a set. A standard order may be specified or else the given order is used. Relations are sets of tuples, so presentation order is irrelevant. Attributes may be reordered without changing the relation, but tuple components must be reordered accordingly. In how many different ways can the Movies relation be presented? year genre title length 1939 drama Gone With the Wind 231 1977 scifi Star Wars 124 1992 comedy Wayne s World 95 Table: Alternate presentation of the Movies relation. Lessa Relational Model :: CSE462 Database Concepts 8 / 30

Schemas and Instances A relation instance is the set of tuples of a given relation. Instances usually change over time as users insert, delete, and update data. Conventional databases maintain one version of each relation: the current instance. A database instance is the set of all relation instances in the database. Relation schemas change much less frequently. When modifying a relation schema, all tuples in the relation must be rewritten to accomodate the changes. It may be difficult or impossible to generate appropriate values for new components in existing tuples. Users formulate queries against a database schema. Queries are validated against the database schema and evaluated against the database instance. Lessa Relational Model :: CSE462 Database Concepts 9 / 30

Key Constraint A set of attributes forms a key for a relation if no two tuples in a relation instance are allowed to have the same values in all key attributes. Notation: Movies(title, year, length, genre). A key is minimal if the set obtained by removing any attribute from the key is no longer a key. A relation may have multiple keys. It may also have no natural key, in which case an artificial (synthetic) one may be created. How would you identify: a university student? a company employee? a driver? an automobile? Lessa Relational Model :: CSE462 Database Concepts 10 / 30

Required Read sections 2.1 and 2.2 of chapter #2. Review the movies database schema of section 2.2.8. Lessa Relational Model :: CSE462 Database Concepts 11 / 30

Exercise 2.2.1 The relations below constitute part of a banking database. acctno type balance 12345 savings 12000 23456 checking 1000 34567 savings 25 Table: The Accounts relation. firstname lastname idno account Robbie Banks 901-222 12345 Lena Hand 805-333 12345 Lena Hand 805-333 23456 Table: The Customers relation. Specify: The attributes of each relation. The tuples of each relation. The components of the first tuple of each relation. The relation schema for each relation. The database schema. A suitable domain for each attribute. Another equivalent way to present each relation. Lessa Relational Model :: CSE462 Database Concepts 12 / 30

Exercise 2.2.3: Considering orders of tuples and attributes, how many different ways are there to represent a relation instance if the instance has: Three attributes and three tuples? Four attributes and five tuples? n attributes and m tuples? Lessa Relational Model :: CSE462 Database Concepts 13 / 30

Classwork #1 Web Page Day Hits index.html 2011-01-21 18 schedule.html 2011-01-21 12 syllabus.html 2011-01-21 11 index.html 2011-01-22 18 schedule.html 2011-01-22 9 syllabus.html 2011-01-22 6 Web Statistics: Snapshot of our course s web site statistics. 1 Specify a schema for WebStats. Include attribute names, their domains, and a minimal key. 2 Can ( index.html, 2011-01-22, 15) be inserted into WebStats? Justify your answer based on your answer above. Lessa Relational Model :: CSE462 Database Concepts 14 / 30

SQL Structured Query Language (SQL) is a standardized language used to specify and manipulate relational databases. It consists of a data definition language (DDL) and a data manipulation language (DML). The current standard is SQL:2008. SQL defines three kinds of relation stored relations (tables), computed relations (views), and temporary tables. Lessa Relational Model :: CSE462 Database Concepts 15 / 30

SQL: Creating Tables The CREATE TABLE command creates a table by specifying its schema and optional constraints. Simplified syntax: CREATE TABLE tablename ( attr1 type1 [colum_constraint [...]],... attrn typen [colum_constraint [...]] [, table_constraint] [,...] ); Constraints may be specified either as part of an attribute declaration (column constraint) or provided after all attribute declarations (table constraint). Certain constraints must be specified as column constraints (DEFAULT, NOT NULL) while others as table constraints (multi-column constraints). Lessa Relational Model :: CSE462 Database Concepts 16 / 30

SQL: Data Types SQL data types (not extensive). BIT(n), BIT VARYING(n) Bit strings of fixed or varying length. BOOLEAN Logical values, with three truth values: TRUE, FALSE, UNKNOWN. CHAR(n), VARCHAR(n) Character strings of fixed or varying length. DATE, TIME, TIMESTAMP. Temporal values consisting of date, time, or date-and-time: Numbers INT (also INTEGER), SMALLINT: integers. FLOAT (also REAL): single-precision real numbers. DECIMAL(n,d): higher precision real numbers, where n is the number of decimal digits and d is the number of significant digits to the right of the decimal point. Lessa Relational Model :: CSE462 Database Concepts 17 / 30

SQL: Constraints Specifying NOT NULL, DEFAULT, and CHECK constraints using the CREATE TABLE command: CREATE TABLE tablename ( attr1 type1 [[NOT] NULL] [DEFAULT val1] [CHECK(expr1)],... attrn typen [[NOT] NULL] [DEFAULT valn] [CHECK(exprN)] [, [CONSTRAINT chk_name] CHECK(expr)] [,...] ); Constraints: NOT NULL: tuples must have a value for that attribute at all times. DEFAULT: the value a tuple component takes if no value is supplied at insertion. If no default value is specified, NULL is used. CHECK: the boolean expression must evaluate to TRUE or UNKNOWN for all tuples at all times. The expression for a column constraint may only reference that column, but multiple columns for a table constraint. Lessa Relational Model :: CSE462 Database Concepts 18 / 30

SQL: Constraints (cont.) Specifying PRIMARY KEY and UNIQUE constraints using the CREATE TABLE command: CREATE TABLE tablename ( attr1 type1 [PRIMARY KEY] [UNIQUE],... attrn typen [PRIMARY KEY] [UNIQUE] [, [CONSTRAINT pk_name] PRIMARY KEY(attr_list)] [, [CONSTRAINT uc_name] UNIQUE(attr_list)] [,...] ); Keys may be declared as PRIMARY KEY or UNIQUE. No two tuples in a relation instance may agree on their key attribute values, unless one of those is NULL. None of the attributes in a PRIMARY KEY may be assigned NULL. A table may have at most one PRIMARY KEY but multiple UNIQUE keys. Multi-attribute keys must be declared as table constraints. Lessa Relational Model :: CSE462 Database Concepts 19 / 30

Example #1 The Movies relation, specified with column constraints: CREATE TABLE Movies ( title VARCHAR(100) PRIMARY KEY, year INT NOT NULL CHECK(year > 1900), length INT CHECK(length > 0), genre VARCHAR(10) DEFAULT unknown ); The Movies relation, specified with table constraints: CREATE TABLE Movies ( title VARCHAR(100), year INT NOT NULL, -- must be defined here length INT, genre VARCHAR(10) DEFAULT unknown, -- this one too CONSTRAINT pkmovies PRIMARY KEY(title), CONSTRAINT chkyearlength CHECK(year > 1900 AND length > 0) ); Lessa Relational Model :: CSE462 Database Concepts 20 / 30

SQL: Constraints (cont.) A FOREIGN KEY constraint identifies a set of attributes in a referencing table that refers to a set of attributes in a referenced table. Attributes must be type compatible but need not have the same names. Attributes in the referenced table must be a unique or primary key constraint. Semantics: For every tuple t in the referencing table, there exists a unique tuple t in the referenced table such that the referencing attribute values in t match (except NULL) the referenced attribute values in t. Observation Usually, multiple referencing tuples may refer to the same referenced tuple, reflecting a one-to-many relationship between the tables the referenced table is the master ( one ) and the referencing table is the child ( many ). Lessa Relational Model :: CSE462 Database Concepts 21 / 30

SQL: Constraints (cont.) Specifying FOREIGN KEY constraints using the CREATE TABLE command: CREATE TABLE tablename ( attr1 type1 [REFERENCES reftable (attr_list)],... attrn typen [REFERENCES reftable (attr_list)] [, [CONSTRAINT fk_name] FOREIGN KEY(attr_list) REFERENCES reftable (attr_list)] [,...] ); Lessa Relational Model :: CSE462 Database Concepts 22 / 30

Example #2 The State relation: US state names and abbreviations. CREATE TABLE State ( state CHAR(2) PRIMARY KEY, name VARCHAR(30) UNIQUE ); The City relation: US cities and their associated states and populations. CREATE TABLE City ( cid INT PRIMARY KEY, name VARCHAR(100), state CHAR(2), population NUMERIC CHECK(population > 1000), CONSTRAINT ucnamestate UNIQUE(name,state), -- named FOREIGN KEY(state) REFERENCES State(state) -- unnamed ); Lessa Relational Model :: CSE462 Database Concepts 23 / 30

SQL: Modifying Schemas The DROP TABLE command removes a table from the database, including all its tuples: DROP TABLE tablename; The ALTER TABLE command allows attributes to be added (1) or dropped (2) from a table: 1 ALTER TABLE tablename ADD attr datatype; 2 ALTER TABLE tablename DROP attr; -- by name The ALTER TABLE command also allows constraints to be added (1) or dropped (2) to a table. For example: 1 ALTER TABLE Movies ADD PRIMARY KEY (title, year); 2 ALTER TABLE Movies DROP CONSTRAINT pkmovies; -- by name Lessa Relational Model :: CSE462 Database Concepts 24 / 30

Required Read section 2.3 of chapter #2. Answer exercises 2.3.1 and 2.3.2. Lessa Relational Model :: CSE462 Database Concepts 25 / 30

Classwork #2 Consider a data model in which all data is modeled as trees. Each tree node has at most one unique parent and may contain arbitrary amounts of string data. Define a relational schema for this model. Lessa Relational Model :: CSE462 Database Concepts 26 / 30

Classwork #2 (cont.) Alternative #1: each node has any number of data values. Node(nid, parentid) Data(nid, data) Except for Node.parentid, all fields are NOT NULL. Data.data is a string, all other fields are integers. Lessa Relational Model :: CSE462 Database Concepts 27 / 30

Classwork #2 (cont.) Alternative #1: each node has any number of data values. Node(nid, parentid) Data(nid, data) Except for Node.parentid, all fields are NOT NULL. Data.data is a string, all other fields are integers. Alternative #2: each node has any number of key/data pairs. Node(nid, parentid) Data(nid, key, data) Except for Node.parentid, all fields are NOT NULL. Data.key and Data.data are strings, all other fields are integers. Lessa Relational Model :: CSE462 Database Concepts 27 / 30

Classwork #2 (cont.) Alternative #1: each node has any number of data values. Node(nid, parentid) Data(nid, data) Except for Node.parentid, all fields are NOT NULL. Data.data is a string, all other fields are integers. Alternative #2: each node has any number of key/data pairs. Node(nid, parentid) Data(nid, key, data) Except for Node.parentid, all fields are NOT NULL. Data.key and Data.data are strings, all other fields are integers. Alternative #3: ancestry information implicitly encoded. Node(nid, parentid, ibegin, iend) Data(nid, key, data) All fields are NOT NULL. Node.ibegin and Node.iend are reals, Node.ibegin < Node.iend. Data.key and Data.data are strings, all other fields are integers. Lessa Relational Model :: CSE462 Database Concepts 27 / 30

Classwork #2 Can you define a simplified relational schema that encodes a relational database? Lessa Relational Model :: CSE462 Database Concepts 28 / 30

Classwork #2 Can you define a simplified relational schema that encodes a relational database? Tip #1: consider only two relations one that encodes relation schemas and one that encodes relation instances. Lessa Relational Model :: CSE462 Database Concepts 28 / 30

Classwork #2 Can you define a simplified relational schema that encodes a relational database? Tip #1: consider only two relations one that encodes relation schemas and one that encodes relation instances. Tip #2: assume that schemas consist of relations names with their attributes names and type names. Lessa Relational Model :: CSE462 Database Concepts 28 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Now answer: Why do we need RelInstance.tid? RelInstance.attr_name? Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Now answer: Why do we need RelInstance.tid? RelInstance.attr_name? RelInstance.tid uniquely identifies a tuple within a relation instance. Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Now answer: Why do we need RelInstance.tid? RelInstance.attr_name? RelInstance.tid uniquely identifies a tuple within a relation instance. RelInstance.attr_name uniquely identifies a component within a tuple. Which fields, if any, would you declared as NOT NULL? Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Now answer: Why do we need RelInstance.tid? RelInstance.attr_name? RelInstance.tid uniquely identifies a tuple within a relation instance. RelInstance.attr_name uniquely identifies a component within a tuple. Which fields, if any, would you declared as NOT NULL? RelSchema.attr_type: all attributes must have a type. RelInstance.data: no need to assign NULL, simply omit the component. All other fields are part of primary keys. Would you specify a foreign key for this schema? Explain. Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Now answer: Why do we need RelInstance.tid? RelInstance.attr_name? RelInstance.tid uniquely identifies a tuple within a relation instance. RelInstance.attr_name uniquely identifies a component within a tuple. Which fields, if any, would you declared as NOT NULL? RelSchema.attr_type: all attributes must have a type. RelInstance.data: no need to assign NULL, simply omit the component. All other fields are part of primary keys. Would you specify a foreign key for this schema? Explain. Yes. RelInstance references RelSchema on {relname, attr_name}. Only data associated with some schema element would be recorded. Is it possible to enforce constraints at the database level? Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Proposed solution: RelSchema(relname, attr_name, attr_type) RelInstance(relname, attr_name, tid, data) Now answer: Why do we need RelInstance.tid? RelInstance.attr_name? RelInstance.tid uniquely identifies a tuple within a relation instance. RelInstance.attr_name uniquely identifies a component within a tuple. Which fields, if any, would you declared as NOT NULL? RelSchema.attr_type: all attributes must have a type. RelInstance.data: no need to assign NULL, simply omit the component. All other fields are part of primary keys. Would you specify a foreign key for this schema? Explain. Yes. RelInstance references RelSchema on {relname, attr_name}. Only data associated with some schema element would be recorded. Is it possible to enforce constraints at the database level? In a nutshell: no, it must be enforced on the application side. Longer: advanced features and/or sophisticated encodings may help (in part). Lessa Relational Model :: CSE462 Database Concepts 29 / 30

Classwork #2 (cont.) Feeling adventurous? In the Object-Oriented model, data is modeled as objects. Each object belongs to a type (its class), may inherit from one (or more) types, and has a fixed number of typed attributes. Can you come up with a relational schema that encodes an Object-Oriented database? Lessa Relational Model :: CSE462 Database Concepts 30 / 30