Format for Analysis and Design Presentation Format for Analysis and Design Phase • Detailed Problem Statement • Data Model .. Relational Model • ER Diagram .. E-R Model • USE Cases describing every success and failure scenario between system and user • Paper Prototype featuring the “screens” used by the application • PowerPoint presentation of Analysis and Design Relational Model Codd – 1970 Architecture of MS Access, SQL-Server, MySql, Oracle, and most modern databases Data Models - Levels • Physical Model – details of how data is stored in files using a physical schema which describes structure of files and indices. • Conceptual Model – hides the details of the physical data representation and describes syntax of data in terms of high level concepts using a conceptual schema which describes data in terms of conceptual units. – Example : Student(Id : Int, Name: String, Address: String, Status: String) • External Model – describes syntax of data in terms of high level concepts – (same as conceptual model) but selects concepts appropriate for a particular user category or view (e.g. Accounting, Payroll, etc.). • Physical Data Independence – separate schemas at the physical and conceptual levels. Levels of data independence Relational Data Model Data Model – Set of concepts and language for describing: • Conceptual and External Schemas. A Schema specifies the structure of the data stored in the database. There is one conceptual schema per database but possibly several external schemas (one per user group). Schemas are described using a data definition language (DDL). • Constraints – conditions that data items must satisfy such as type constraints, key constraints (primary and foreign) and semantic constraints. Constraints are usually expressed in the DDL sublanguage. • Operations – operations on database items to retrieve, update, insert, or delete, are specified in the data manipulation language DML. • Storage – specified by storage definition language (SDL) The Relational Model • The Relational Model uses SQL (structured query language) to describe conceptual and external schemas, various constraints, operations on database items, and database storage. • The Relational Model uses – An n-ary relation between n attribute sets to model data – Relation instance is table with • • • • column for each attribute set which is atomic Row or n-tuple for each entity in entity set represented by table Order of columns does not matter because they are named Order of rows does not matter because relation is set of rows or tuples Relation Schemas and Relational Database • A relation schema is a relation name (e.g. student, customer, etc.) followed by a parenthesized list of attribute names with associated domains, followed by constraints. – Example: The SQL Create Table statement contains an embedded relation schema: – Create Table Student( – ID Text(8), – Name Text(20), – Address Text(50), – Status Text(10), – Primary Key(ID) – ) • Instances – An instance of a relation is an actual table and is a legal instance if it satisfies all constraints. • A relational database schema is a finite set of relation schemas. Relation and database instances are actual tables. Constraints • Type Constraint : If S is a relation schema and s is an instance (i.e. a table), then – 1-1 correspondence between columns of s and attributes of S – values in column of s must be in attribute domain. – Example data types • Text, memo, date, integer, varchar, currency • Data atomicity – Values of an attribute must be atomic – can’t have set valued attributes such as • “dependents” as an attribute of employee • “hobbies” as an attribute of applicant Constraints (continued) • Integrity Constraint – statement about all legal instances of a database. Can be intra or inter – relational. – Key constraint : A key of a relation is an attribute which uniquely identifies a tuple (or row). • If (StudID, CrsCode, Semester) is a key of the transcript relation, then any transcript table has at most one row for some combination of values of these attributes. – Semantic constraint : Statements concerning the business rules of an enterprise • e.g., cannot enter student into a section table if the transcript table does not contain rows to show he/she has satisfied all the prerequisites. Relation Schema Retail Furniture Store* Schema for Furniture-Types and Inventory Custom Fence Schema Customers and Fence-Type Equipment Rental* Schema for Equipment-Type and Rental Antique Store* Schema for Antique Relation Schema Retail Furniture Store* Schema for Furniture-Types and Inventory Furniture_Type(Type:String,TypeID:AutoNumber,SupplierID:Integer,Price:Currency) Inventory(StockID:Autonumber,TypeID:Integer,Color:String,Fabric:String,Quant:Integer) Custom Fence Schema Customers and Fence-Type Customer(Name:String,Address:String,Phone:String,ID:Autonumber,Balance:Currency) FenceType(Name:String,ID:Autonumber,Price:Currency) Equipment Rental* Schema for Equipment-Type and Rental Equipment-Type(Name:String,ID:Autonumber,Rental:Currency) Rental(ID:Autonumber,TypeID:Integer,CustomerID:Integer,RentalDate:Date) Antique Store* Schema for Antique Antique(Name:String,ID:autonumber,Description:string,AntiqueDate:date,Price:Currency) Example of table instances Schema Transcript(StudID:String, CrsCode:String,Semester:String,Grade:Grade) KEY …… Attribute D in Table T1 is a foreign key that refers to the candidate key, attribute E, in Table T2. T1 might be Purchases and D might be CustID Keys • A (candidate) key K of a relation schema S is a set of attributes such that – Any legal instance s of S does not have two distinct rows which agree on the values of K – This condition does not hold for any proper subset of K. • Two rows can agree on StudID, CrsCode (student repeated course) or StudID, Semester (student has several courses) • If K1 contains a proper set K2 which uniquely determines a row of any legal instance s of S, then K1 is a superkey of S. • Every relation has a key – the set of all attributes serves as a superkey since a relation is a set of distinct tuples. If the set of all attributes is not minimal, let K1 be a proper set which uniquely identifies all tuples. If K1 is not minimal, then it contains K2, and so on. This process must terminate with a minimal set of attributes which is a key. Keys - continued • A schema may have several keys which are referred to as candidate keys. Example for company with nepotism rule that related people cannot work in same department: – Employees( SSNo, Name, Dept, Phone, Address, BirthDate ) • • • • (SSNo,Name) is a superkey (Name,Phone) is probably a candidate key (Name,Address,Dept) is probably a candidate key. SSNo is a candidate key. If selected by the designer as the key of the relation, it becomes the primary key. • Foreign keys - a schemas T is referenced by a schema S by foreign key F of S if K is a key of T and for every legal instance s and t of S and T, there is a tuple of t with the same values of K as the values of F in s (referential integrity) – Example - Dependents(EmpSSNo, Name, Relation) has a foreign key EmpSSNo for which there must be a tuple of Employees with same value of SSNo and EmpSSNo. Candidate, Primary and Foreign Keys Used Car Sales Keys for Cars & Customers Houseboat Rentals Keys for Boats & Customers Rental Property * Keys for Properties, Units, Tenants Check Advance * Keys for Loans, Payments, Customers Candidate, Primary and Foreign Keys Used Car Sales Keys for Cars & Customers Car – Vehicle Identification Number (VIN) Customer – CustomerID:autonumber Houseboat Rentals Keys for Boats & Customers Boat – BoatNumber : autonumber Customer – CustomerID:autonumber Rental Property * Keys for Properties, Units, Tenants Property – PropID : autonumber, Unit - UnitID: autonumber, Tenant : TenantID : autonumber Check Advance * Keys for Loans, Payments, Customers Loan – LoanID : autonumber, Payment – PaymentID : autonumber Customer – CustomerID:autonumber SQL – Data Definition Sublanguage • Creating relations / tables – Create Table Employee( • SSNo char(9), Name char(20), Dept char(5), Phone char(9), Address char(30), BirthDate char(50) ) • Primary and Candidate keys – Create Table Employee( • SSNo char(9), Name char(20), Dept integer(2), Phone char(9), Address char(30), BirthDate char(50), Primary Key (SSNO), Unique (Phone) ) Data Definition Language DDL Bicycle Bicycles Clinical Record Prescriptions assuming a Patient table Machine Shop Inventory (rods, bars, etc.) GPS tracking Trucks Data Definition Language DDL Bicycle Bicycles Create Table Bicycle( ID : autonumber, MfrID : Integer, Style : String, Price : currency, Primary Key(ID)) Clinical Record Prescriptions assuming a Patient table Create Table Prescriptions( PatientID number, Pdate Date, DrugID number,Primary Key(PatientID,Pdate,DrugID)) Machine Shop Inventory (rods, bars, etc.) Create Table Inventory(MaterialType Text,Cost Currency,Quantity Number, Primary Key(MaterialType)) GPS tracking Trucks Create Table Trucks(TruckVIN text,TDate date,TruckPosition text,Primary Key(TruckVIN)) DDL Create Table (in Access) System Catalog • The system catalog is a table in a relational database called Columns. • Columns has a schema Columns(AttrName, RelName, Position, Format) which has four tuples for the system catalog table and then a tuple for each attribute of other relations Catalog relation Columns (Database table describing itself) Columns Courses Missing Information • Causes of missing information – Currently unknown or unavailable. As an example, if a transcript record is created at the beginning of the semester, Grade is unavailable until the end of the semester. – Not applicable. As an example, if maiden name is a field in the employee table, it is not applicable for male employees. • The Null Value – The null value is treated as a member of EVERY domain (number, char, etc.) but has the property that in doing a retrieval, Select * From <Table> Where <attribute> = <selected-value>, if the <selected-value> has been retrieved from the database and is null, it will not match a null value of <attribute>. • Restrictions – A primary key should never have a null value. SQL – Data Definition Sublanguage continued • Semantic Constraints – enforce business rules. Suppose a company rule that says maximum hourly rate is 12.50/hr. – Create Table Employee( • SSNo char(9), Name char(20), Dept integer(2), Phone char(9), Address char(30), BirthDate char(50), payRate decimal, Primary Key (SSNO), Unique (Phone) Check ( (5.50 < payRate) and (payRate < 12.51) ) ) Semantic Constraint Examples • Create Table Employee ( ID Integer, Name Char(20), Salary Integer, DepID Char(4), Check (0 < (Select Count(*) From Employee)), Check ((Select Count(*) From Manager) < (Select Count(*) From Employee) ) – The semantics of the Check clause inside the Create table requires that every tuple of a relation instance satisfy the conditional expression inside the Check clause. – Since the condition in the first Check clause applies to the Employee relation instance, it is vacuously satisfied, even for the empty instance. – The second condition imposes an interrelational constraint requiring that the number of managers be less than the number of employees. This is enforced for every tuple of Employee unless Employee is empty. User Defined Domains • SQL permits the definition of a user defined domain : – Create Domain Grades Char(1) • Check ( Value in (‘A’, ‘B’, ‘C’, ‘D’, ‘E’,’F’) ) – Now attribute Grade Grades can be added to the schema for Student. Foreign Key Constraints A Rental Properties table A Rental Units with foreign key PID which references property unit belongs to Constraint : For unit u with PID x, there must exist a property p with PropID x. Foreign Keys & Circularity • An example of circularity with foreign keys is to have Employees have a DeptID attribute referencing Departments and Departments have a MgrID attribute referencing Employees. This problem is avoided by replacing the MgrID in Departments by third table DeptMgrs with DeptID and MgrID attributes. Reactive Constraints • A reactive constraint or trigger is a static constraint coupled with a specification of a reaction to a specified event: – Semantics : Whenever <event> Do <Action> – Example : Whenever a Property is deleted, so are any apartment units which are part of the property. This reactive constraint specifies than on the event of deleting a property, all rental units belonging to that property will also be deleted. Cascade Delete Deleting a rentalproperty in the database results in this message being displayed: