Upload
barry-ford
View
218
Download
0
Tags:
Embed Size (px)
Citation preview
Chapter 5
Types
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-2
Topics in this Chapter
• Values vs. Variables• Types vs. Representations• Type Definition• Operators• Type Generators• SQL Facilities
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-3
Types
• A type is a set of values• F/k/a (formerly known as) a domain• Types can be system-defined or user-defined• All types have associated operators• Formally, this means that the operator can
take the given type as a parameter• For example integers can be passed to an
addition operator but not a sub-string operator
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-4
Values vs. Variables - Values
• A value is an individual constant• It has no location in time or space• A value is represented by encoding, which
generates its appearance, which is spatial and temporal
• Appearances can occur in different times and spaces: they are manifold
• A value cannot be updated, for then it would be some other value: a value is immutable
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-5
Values vs. Variables - Variables
• A variable is a holder for an appearance of a value
• It has location in time or space• A variable can be updated, that is, it can hold
another value• A variable maintains its identity during the
update: it is still the same variable
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-6
Values vs. Variables
• Values can be simple or complex– Simple: integer, char
– Complex: an XML document, a relation
• A value per se can have multiple appearances• An appearance can have multiple encodings• When we refer to a “value,” we often mean
“an appearance of an encoding of a value”
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-7
Values and Variables are Typed
• Every value has its immutable type• Every variable has its immutable type, so that
all its values will be of that type• Every attribute of every relvar has its
immutable type• Operators have a type when operating, but this
can be polymorphic in different contexts– e.g. = can operate on integers or characters, but
not both at the same time
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-8
Types and their Representations
• A type per se is idealized, conceptual, a model• A representation (appearance) of the type is
its implementation• Sometimes a type is called an ADT – Abstract
Data Type, but this is inherently redundant• This logical and physical distinction is an
aspect of data independence
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-9
Types and their Representations - Scalar vs. Non-Scalar
• A scalar type is atomic and encapsulated– Integer, char, bool
• A non-scalar type is complex and user-visible– Name, address, employee, radiology image
• Values, variables, attributes, operators, parameters, expressions: all can be scalar or not, mutatis mutandis
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-10
Types and their Representations - Possible Representations
• Let T be a scalar type• The physical representation is hidden from the
user• Values of type T must have at least one
possible representation, which is not hidden from the user
• The possible representation of a scalar type may have components, and if so, then at least one set of these must be visible to the user
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-11
Types and their Representations - Possible Representations
• Each type has at least one POSSREP visible to the user in its declaration
• Each POSSREP includes two operators– Selector to specify a value for each representation– Ex.: QTY (100), QTY(N1 – N2)– THE_ to access each representation– Ex.: THE_QTY (Q), THE_QTY (Q1 – Q2),
• QTY cannot equal 100, because quantity is not an integer, if it has been declared as a type
• QTY can equal QTY(100)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-12
Type Definition
• TYPE WEIGHT
POSSREP { D DECIMAL (5,1)
CONSTRAINT D > 0.0 AND D < 5000.0 };
• TYPE WEIGHT
POSSREP LBS { L DECIMAL (5,1)
CONSTRAINT L > 0.0 AND L < 5000.0 };
POSSREP GMS { G DECIMAL (7,1)
CONSTRAINT G > 0.0
AND G < 2270000.0
AND MOD (G, 45.4) = 0.0 };
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-13
Operators
• OPERATOR ABS (Z RATIONAL)
RETURNS RATIONAL;
RETURN (CASE
WHEN Z > 0.0 THEN +Z
WHEN Z < 0.0 THEN –Z
END CASE);
END OPERATOR;
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-14
Operators
• OPERATOR REFLECT (P POINT)UPDATES P;
BEGIN;THE_X (P) := - THE_X (P) ;THE_Y (P) := - THE_Y (P) ;RETURN;
END;END OPERATOR;
DROP OPERATOR REFLECT;
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-15
Type Conversions
• QTY(100) converts an integer to a quantity• THE_QTY (Q1) converts a quantity to an
integer• P# = ‘P2’ violates the rule that both sides of
an assignment must be of the same type• Compiler uses the P# selector implicitly to
convert ‘P2’ from Char to P#• a/k/a “Coercion” • Coercion is not permitted
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-16
Type Conversions
• Coercion is not permitted• Explicit casting is permitted
CAST_AS_CHAR (530.00)• This is called strong typing:• i.e., every value has a type,• and the compiler checks to verify that
operands are of the correct type for an operation– Can’t add weight to quantity, but can multiply
them
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-17
Type and Domain
• All types are known to the system• The types in a database are a closed set• Assignments and comparisons, ditto• In a database system, a domain is a type, and
thereby is an object class• Hence we can speak about relations and
objects simultaneously
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-18
Type Generators
• a/k/a parameterized types, or templates• ARRAY is a classic invocation of a type
generator• ARRAY can take in all sorts of types, and can
return all sorts of other types
VAR SALES ARRAY INTEGER [12];• ARRAY operators such as assignment,
equality, THE_ work equally well with any valid type, i.e., a type known to the system
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-19
SQL Facilities
• Built-in operators such as CHAR, NUMERIC, BLOB, BOOL…
• Mostly strong typing, but SQL will coerce FLOAT to NUMERIC, for example
• Supports two kinds of user-defined types: distinct types and structured types
• SQL does not support POSSREP – only one representation per type
• SQL does not support CONSTRAINTs
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-20
SQL Facilities – Distinct Types
• CREATE TYPE WEIGHT
AS DECIMAL (5,1) FINAL;• For distinct types, SQL supports Selector and
THE_• POSSREP not supported, so WEIGHT is
always a DECIMAL• Distinct types are strong, so you cannot use a
comparison operator between the type and its underlying representation
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-21
SQL Facilities – Structured Types
• CREATE TYPE POINT
AS (X FLOAT,Y FLOAT) NOT FINAL;
• Uses operators in place of Select and THE_• Observe and mutate methods• Structured types can be ALTERed or
DROPped• Tuples and relations are structured types
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5-22
SQL Facilities –Type Generators
• SQL includes three type generators:
REF, ROW, ARRAY• REFERENCE generates a reference• ROW generates a set of fields• ARRAY generates an array