Prof. Dr. rer.nat.habil. Bernhard Thalheim Information Systems Engineering Institute of Computer Science Christian-Albrechts-University Kiel Olshausenstr. 40 D - 24098 Kiel Skript zur Vorlesung Analysis, Design and Development of Information Systems & Modellierung von Informationssystemen & Web-Informationssysteme 2. Strukturierung von IS ab SS 2012 Sonderfarben der Seiten im Skript für zusätzliches Material. Forschung Hintergrundinformation (auch Inhalte der Grundvorlesungen) Zusatzliteratur und Lesestoff 1 Einführung In den Vorlesungen werden vier zentrale Spezifikationssprachen zur Spezifikation von Informationssystemen im Co-Design-Zugang vorgestellt: die Strukturierung und die Funktionalität auf der Grundlage des erweiterten EntityRelationship-Modellen HERM, die Verteilung auf der Grundlage der Verteilungsspezifikationsprache DistrLang und die Spezifikation durch die Web-Informationssystem-Spezifikationssprache SiteLang. Übungen: jeweils eine Übung zur Spezifikation der Strukturierung, zur Spezifikation der Funktionalität, zur Spezifikation der Medientypen und zur Spezifikation der Interaktivität. Es werden die Systeme ERWin und Silverrun, sowie DBMain zur Modellierung der Strukturierung bzw. Funktionalität eingesetzt. 2 Strukturierung von Informationssystemen Strukturierung = Struktur + statische Integritätsbedingungen (+ Modellinhärentes !!!) HERM : higher-order entity-relationship model EER : extended ER model (meist auch nur für die Definition der Struktur(ierung) genutzt!!!) Bemerkung: Modell meint hier eigentlich Sprache. Brief Survey: The Higher-Order Entity-Relationship Model (HERM). The entity-relationship model has been extended by more than three-score proposals in the past. Some of the extensions contradict other extensions. Within this chapter we use the higher-order (or hierarchical) entity relationship model (HERM). It is a special case of an extended entity-relationship model (EER) e.g. [EWH85, Gog94, Hoh93, Tha00]. The higher-order ER model used in this chapter has the following basic and extended modeling constructs: Simple attributes: For a given set of domains there are defined attributes and their corresponding domains. Complex attributes: Using basic types, complex attributes can be defined by means of the tuple and the set constructors The tuple constructor is used to define complex attributes by Cartesian aggregation. The set constructor allow construction of a new complex attribute by set aggregation. Additionally, the bag, the list, and the variant constructors can be used. CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 152 Entities: Entity types are characterized by their attributes. Entity types have a set of attributes which serve to identify the elements of the class of the type. This concept is similar to the concept of key known for relational databases. · Clusters: A disjoint union ∪ of types whose identification type is domain compatible is called a cluster. Cluster types (or variant types) are well known in programming languages, but are often overlooked in database models, where this absence creates needless fragmentation of the databases, confusing mixing of generalization and specialization and confusion over null values. First-order relationships: First-order relationship types are defined as associations between single entity types or clusters of entity types. They can also be characterized by attributes. Higher-order relationships: The relationship type of order i is defined as an association of relationship types of order less than i or of entity types and can also be characterized by attributes. Integrity constraints: A corresponding logical operator can be defined for each type. A set of logical formulas using this operator can define the integrity constraints which are valid for each instance of the type. Operations: Operations can be defined for each type. • The generic operations insert, delete, and update are defined for each type. • The algebra consists of classical set operations, such as union, intersection, difference and restricted complement, and general type operations, such as selection, map (particular examples of this operation are (tagged) nest, unnest, projection, renaming), and pump (particular examples of this operation are the classical aggregation functions). The fixpoint operator is not used. • Each type can have a set of (conditional) operations. • Based on the algebra, query forms and transactions can be specified. The extensions of the ER model should be safe in the sense that appropriate semantics exist. There is a large variety of proposals which are not safe. Some reasons for this include higher-order or function types, such as those used for the definition of derived attributes, or the loss of identification. It can be observed that higher-order functions can be attached to the type system. However, in this case types do not specify sets, although their semantics can be defined by topoi [Sch94, Gol06]. This possibility limits simplicity for the introduction of constraints and operations. Furthermore, these semantics are far too complex to be a candidate for semantics. The ER model is simpler than OO models. Es taucht oft die Frage auf, ob dies adäquat ist. In [HL07] wurde dazu ein Vergleich von englischen Sprachäußerungen und dem HERM vorgenommen. Eine der Tabellen dazu ist die folgende English sentence concept HERM feature transitive verb relationship type common noun component of relationship type adjective attribute of component adverb attribute of relationship type numerical expression attribute of object type preposition role name of component gerund relationship type that is component of another relationship type clause relationship type with components complex sentence relationship type of order higher than 1 alternative phrase cluster type plural collection type/nested attribute “IsA” sentence specialisation Comparison to Chen’s original correspondences by [HL07] Peter P.-S. Chen: English Sentence Structure and ER Diagrams, Inf. Sci. 29(2-3): 127-149, 1983 Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β English sentence concept transitive verb common noun adjective adverb numerical expression gerund clause complex sentence 2. Strukturierung von IS ab SS 2012 153 ER feature relationship type entity type attribute of entity type attribute of relationship type attribute of entity or relationship type relationship-converted entity type high-level entity type abstracted from group of interconnected low-level entity and relationship types one or more entity types connected by relationship type in which each entity type can be decomposed recursively into low-level entity types interconnected by relationship types Conclusions: à EER reflects (English) sentence structures more soundly and naturally à higher-order object types reflect dependence between sentences à this provides justification for introduction of new ER features à ER model does not just provide safe constructs that result in good database design, but also features that enable good communication between designer and user à essential to best approximate requirements à additional EER features justified in the sense that modelling becomes more natural à provides also a justification why the EER features exist à higher-order object types reminiscent of nested sentence structure in natural language text 2.1 Spezifikation der Struktur von Datenbanken eine Vorlesung (da bereits in der Vorlesung Informationssystem in Grundzügen in abweichender Form behandelt) 2.1.1 Modellierungsannahmen • Konstruktiver Aufbau mit kompositioneller Semantik damit dann auch induktive Sprache (inkrementelle Modellierung als resultierende Variante des Modellierens) Vorteil: die Semantik wird kompositional • Abstraktionsresistenz, Verfeinerungsstrategie (scaling depending on its modes (visibility (zoom), hierarchy (fold), manifestation (express, suppress))) Modularisierbarkeit als Option • Äquivalenzbegriff für Sprachkonstrukte • rigide Trennung von Klassen und Typen, aber 1-1-Bindung von Klassen an Typen • Abbildungseigenschaften • Wohlfundiertheit • Einschränkung auf Mengensemantik, keine Kollektionssemantik • Visualisierung • Skalierbarkeit/Modularisierbarkeit der Sprachäußerungen je nach Auffassungsmöglichkeiten Modularisierbarkeit als Option Modular modelling supports information abstraction and hiding by encouraging and facilitating the decomposition of systems [BM97] into components Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 154 and their modular development based on a precise definition of interfaces and the collaboration of components through which the systems are put together. Implicit modularisation can be achieved by introduction of name spaces on signatures. Explicit modularisation offers a better understanding of structure and architecture of systems and thus supports consideration of evolution of systems and of collaboration of systems. Modularisation offers a number of advantages: separation of concerns, discovery of basic concepts, validation and verification of development, efficiency of tool support, and - last but not least - scoped changes. The last advantage of modularisation is based on an explicit framing of development to a number of elements while preserving all other elements in its current form. We model this impact by introducing name spaces on signatures. Typically, small submachines capture smaller models that are easier to understand and to refine. Small models can better be ascertained as to whether we need to apply refinements. Modularization is a specification technique of structuring large specifications into modules. It is classically based on structural and functional decomposition [BS00]. We additionally consider control decomposition. Modules form a lattice of associated submachines having their own states and their own control. Modularisation is based on implementation abstraction and on localization abstraction. Implementation abstraction selectively hides information about structures, semantics and the behavior of ASM concepts. Implementation abstraction is a generalization of encapsulation and scoping. It provides data independence through the implementation, allowing the private portion of a concept to be changed without affecting other concepts using that concept. Localization abstraction “factors out” repeating or shared patterns of concepts and functionality from individual concepts into a shared application environment. Naming is the basic mechanism for achieving localization. Parametrisation can be used for abstraction over partial object descriptions. We use the name space for handling localisation abstraction. • Agentorientierte Darstellung und damit Separation für verteilte Anwendungen A submachine consists of a vocabulary and a set of rules. In this case, any clustering of rules and of elements from the vocabulary may define a submachine. Turbo machines [BS03] capture our notion of a submachine by encapsulating elements of the vocabulary and rules into a machine. They hide the internals of subcomputations within a separate machine. The submachine has its own local state and its own interface. The set of functions of each submachine can be separated into basic and derived functions. Basic functions may be static functions or dynamic functions. Classically [BS03] dynamic functions can be classified as in(put) functions, out(put) functions, controlled or local functions that are hidden from the environment, and shared functions that are visible to the environment. A similar classification can also be applied to basic static functions. They are either functions only used by a its own machine or read by several environments. We thus extend the notion of shared and controlled functions to static functions as well. We do not use derived static functions since they can be considered as syntactic sugar. We differentiate these functions according to their role in Figure 1 which displays the functions internal for an agent machine. A similar classification can be developed for functions external to an agent. An agent machine consists of all functions that assigned to the agent and of rules that are assigned to the agent and that use only those functions assigned to the agent. function/relation/location basic static non-updatable by any agent derived dynamic indirectly indirectly indirectly monitored controlled shared out in (monitored) controlled shared (interaction) updatable updatable non-updatable updatable by agent by agent by agent by agent controlled shared Abbildung 1: The Kinds of Internal Functions for Agent Machines Static functions may also be local functions. They are not updated by any submachine. [BM97] distinguish derived function to whether these functions are monitored functions, controlled functions, or shared functions. Typically, derived functions are functions that do not exist on their own right, but may be dynamically computed from one or more base functions. They provide a powerful and flexible information hiding mechanism. Updates made in the base functions that affect the derived function are immediately reflected in derived functions. We may additionally assume that derived functions are allowed to update dynamic functions. In this case, dynamic functions may be used as a security mechanism, as an access mechanism, and as a simplification mechanism that allows to use complex derived functions in rules instead of complex computations in rules. • Perspektiven und Stile der Modellierung sind explizit wählbar Different modelling perspectives can be distinguished: 1. The structure-oriented perspective focuses on structural description of the machine. Sometimes, the structure-oriented perspective is unified with the semantic perspective. In this case, design of the structure is combined with design of invariants. 2. The behavior-oriented perspective is concerned with the behavior of the machine during its lifetime. It can be based on event approaches or on Petri-net approaches and predicate transition systems. 3. The process-oriented perspective is concerned with the operation of the system. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 155 The structure-oriented perspective is often used for data-intensive applications. Almost all recognized database design approaches are based on the structure-oriented perspective. The process-oriented perspective uses approaches considered in software engineering. The behavior-oriented perspective is a high-level descriptive approach to an integrated specification of the vocabulary and rules. Modelling styles provide a very abstract description of a particular set of general characteristics of a model. Different constructional notations may be useful for describing a machine. We use the Turbo machine approach for component or submachine description. Typically, the role of the components of the system follow the rules specified by the style. The modelling style explains the structure, the abstraction and grouping of the elements. Parts of the system may follow different modelling styles. The style of modelling is a specification of the high level structure and organisation of system modelling. The structure describes the handling of elements of the vocabulary, the topology or relationships between elements, the semantical limitations for their usage, and the interaction mechanism between the elements such as blackboard, submodule calls,etc. The organisational style describes relevant local and global structures, the decomposition strategy, and control mechanisms between parts of the machine. The organisational style is based on the architectural style. It is our aim to maintain and to preserve the strategy over the life cycle of the system. The perspective and the style result in strategies that are use for step-wise development of specifications. The different strategies [Tha00] based on the structure-oriented perspective are sketched in Figure 2. structure-oriented strategies ¼ s flat (first-order) (uncontrolled) (one-dimensional) ª ª R q second-order mixed (skeleton-based flat) controlled R ª modular (design by modules) R inside-out (by neighborhood) 1. design central type 1. design general 1. design basic modules 2. (recursion step) module schema with interface (bottom-up or top-down) design next level 1. design all 2. (iteration step) 1. design (skeleton) (bottom-up or basic concepts connect modules top-down) 2. build more all main concepts 2. refine each module or design (bottom-up or complex concepts 2. refine concepts design or attach combined modules top-down) concept from them bottom-up top-down Abbildung 2: Structure-Oriented Specification Strategies • Integritätsbedingungen werden anhand von Mustern definiert und eingesetzt Invariants, e.g. integrity constraints in database applications, are used to define semantics of applications. We know different pattern for their specification: • Operational representation of invariants incorporates invariants into the programs or rules. The invariant enforcement mechanism may be hidden because of control conditions or to the specification of actions. • Descriptive representation uses explicit specification and refinement obligations. These descriptions are combined with the specification of invariant enforcement: • Eager enforcement maintains invariants based on a scheduling mechanism for maintenance of invariants. Transactional systems are typical scheduling mechanisms. They bind invariant enforcement to programs. • Lazy enforcement maintains invariants in a delayed mode. Inconsistency is temporarily tolerated. This tolerance reduces some of the cost of enforcing invariants within large structures. • Refusal enforcement maintains invariants by rollback of all activities since the last consistent state and by executing a subset of activities. Partially ordered runs are based on refusal enforcement. Depending on the pattern chosen invariant handling is varies. If we choose an implicit invariant handling then any change applied to the current ASM must explicitly consider all invariants and must be entirely aware of the effects of these. Therefore this pattern is the most inefficient for early design phases. This pattern is however applicable during implementation if later revision is going to be based on a more general ASM. The completeness of invariant specification is a dream that is never satisfied. Sets of invariants are inherently open since we cannot know all invariants valid in the current application, we cannot envision all possible changes in invariant sets, and we cannot choose the most appropriate selection of invariants from which all other invariants follow. Therefore, we use a separation into • hard (or iron) invariants that must be preserved and which are valid over a long time in the application and • soft invariants that can be preserved or are causing later corrections or which are not valid for a longer time in the application. • Modellierung im Local-As-View-Ansatz • Konzeptuelles Modell ist dann zugleich die globale Sicht Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 156 • Lokale Sichten werden mit der Schema-Algebra über dem konzeptuellen Schema als abgeleitetes Konzept verwendet Damit (S, V1 , ...., Vk ) als Modell, das den Anspruch erfüllen könnte, kognitiv vollständig zu sein. Siehe Arbeit von B. Thalheim zur kognitiven Vollständigkeit der Modellierung mit einem erweiterten ER-Modell. • als klassischer Zugang Alternativ könnte auch der Global-As-View-Ansatz verwendet werden. • Damit wird eine natürlichere Form der Repräsentation gewählt. • Damit kann auch unterschiedliche Abstraktion und Granularität verwendet werden. • Kompromiß ist der sichtenzentrierte Entwurf. • ((V1 , ..., Vk ), Association Constraints) als Modell-Suite (siehe B. Thalheim, A. Dahanayake) • Man könnte hier den Komponenten-Zugang nach Thalheim/Hegner verwenden. Unterschiedliche HERM-Annahmen je nach Abstraktionsschicht • mit Identifikation • mit partiellen Constraintmengen (z.B. nur ein Schlüssel) • Schemavollständigkeitskriterium Pragmatische strikte Unterscheidung Wir unterscheiden in modernen Sprachen zwischen Einführung von Variablen, Daten, die damit auch Rechte an der Modifikation und am Auslöschen mit einschließt, Mitnutzung von Variablen, Daten, die immer eine entsprechende Koordination mit einschließt und Mitbenutzung von Variablen, Daten etc., die keine Rechte an Modifikation und Auslöschen einschließt! siehe auch Handbook, HERM-Kapitel Implicit Assumptions and Inherent Constraints of DB Specification Languages. Each language used should be based on a clear definition of structure, semantics, operations, behavior and environment. At the same time, languages presuppose implicit assumptions and constraints. The enhanced or extended ER (EER) model might, for instance, use the following assumptions: Set semantics: The default semantics of entity and relationship types are set semantics. If extended type constructors are used then their semantics are explicitly defined. Identifiability: Each entity type is identifiable. Each component type needs to be labelled whenever it cannot be distinguished from other components. In relationship types components are ordered. Their labels can be omitted whenever there is an identification. Set semantics implies identifiability of any element in the database. Partial Unique Name Assumption: Attribute names are unique for each entity and relationship type. Entity type names and relationship type names are unique for the ER-schema. Referential Integrity: If a type is based on component types then each value for this type can only use such values in components which exist as values in the component instance. Monotonicity of Semantics: If integrity constraints Φ are added to a given set of integrity constraints Σ, then the set of possible instances which satisfy the extended set of constraints Σ ∪ Φ is a subset of the set of instances which satisfy Σ. Resulting coincidence theorems Mod IS as a matter of convenience. IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 157 Storage and Representation Alternatives. The classical approach to objects is to store an object based on strong typing. Each real-life thing is thus represented by a number of objects which are either coupled by the object identifier or by specific maintenance procedures. This approach has led to the variety of types. Thus, we might consider two different approaches: Class-wise, strongly identification-based representation and storage: Things of reality may be represented by several objects. Such choice increases maintenance costs. For this reason, we couple things under consideration and objects in the database by an injective association. Since we may be not able to identify things by their value in the database due to the complexity of the identification mechanism in real life we introduce the notion of the object identifier (OID) in order to cope with identification without representing the complex real-life identification. Objects can be elements of several classes. In the early days of object-orientation it was assumed that objects belonged to one and only one class. This assumption has led to a number of migration problems which have not got any satisfying solution. The association among facets of the same thing that are represented by several objects is maintained by the object identifier. Object-wise representation and storage: Graph-based models which have been developed in order to simplify the object-oriented approaches [BT99] display objects by their sub-graphs, i.e. by the set of nodes associated to a certain object and the corresponding edges. This representation corresponds to the representation used in standardization. Object-wise storage has a high redundancy which must be maintained by the system thus decreasing performance to a significant extent. Beside the performance problems such systems also suffer from low scalability and poor utilization of resources. The operating of such systems leads to lock avalanches. Any modification of data requires a recursive lock of related objects. Therefore, objects-wise storage is applicable only under a number of restrictions: • The application is stable and the data structures and the supporting basic functions necessary for the application do not change during the lifespan of the system. • The data set is almost free of updates. Updates, insertions and deletions of data are only allowed in well-defined restricted ‘zones’ of the database. A typical application area for object-wise storage is archiving or information presentation systems. Both systems have an update system underneath. We call such systems play-out system. The data are stored in the way in which they are transferred to the user. The data modification system has a play-out generator that materializes all views necessary for the play-out system. Two implementation alternatives are already in use albeit more on an intuitive basis: Object-oriented approaches: Objects are decomposed into a set of related objects. Their association is maintained on the basis of OID’s or other explicit referencing mechanisms. The decomposed objects are stored in corresponding classes. XML-based approaches: The XML description allows to use null values without notification. If a value for an object does not exist, is not known, is not applicable or cannot be obtained etc. the XML schema does not use the tag corresponding to the attribute or the component. Classes are hidden. Thus, we have two storage alternatives for XML approaches which might be used at the same time or might be used separately: Class-separated snowflake representation: An object is stored in several classes. Each class has a partial view on the entire object. This view is associated with the structure of the class. Full-object representation: All data associated with the object are compiled into one object. The associations among the components of objects with other objects are based on pointers or references. We may use the first representation for our storage engine and the second representation for out input engine and our output engine in data warehouse approaches. The input of an object leads to a generation of a new OID and to a bulk insert into several classes. The output is based on views. The first representation leads to an object-relational storage approach which is based on the ER schema. Thus, we may apply translation techniques developed for ER schemata[Tha00]. The second representation is very useful if we want to represent an object with all its facets. For instance, an Address object may be presented with all its data, e.g., the geographical information, the contact information, the acquisition information etc. Another Address object is only instantiated by the geographical information. A third one has only contact information. We could represent these three object by XML files on the same DTD or XSchema. Grundlegende Strukturbeziehungen Modellierung muß ist auch eine Ingenieursdisziplin. Deshalb werden auch die Engineering-Annahmen des Einführungskapitels betrachtet. The four fundamental structural relations used for construction abstraction are: Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 158 Aggregation/participation characterizing which object consists of which object or resp. which object is part of which object. Aggregation is based on constructors such as sets, lists, multisets, trees, graphs, products etc. It may include naming. Generalization/specialization characterizing which object generalizes which object or resp. which object specializes which object. Hierarchies may be defined through different classifications and taxonomies. So, we may have a different hierarchy for each point of view. Hierarchies are built based on inheritance assumptions. So, we may differentiate between generalization and specialization in dependence on whether characterization are not or are inherited and on whether transformation are or are not applicable. Qualifications may form their orthogonal hierarchy (e.g., Bachelorette for Female and Single and Bachelor for Male and sl Single). Exhibition/characterization specifying which object exhibits which object or resp. which object is characterized by which object. Exhibitions may be multi-valued depending of the data type used. They may be qualitative or quantitative. Classification/instantiation characterizing which object classifies which object or resp. which object is an instance of which object. Define/use separates definition of structures/types/objects from deployment of those. Modes of States. • Initial • Ultimate • Default Generalisation und Spezialisierung sind besser zu unterscheiden Aus der Enzyklopädie der Datenbanksysteme: Langfassung hier (in Enzyklopädie: Kurzfassung Specialisation and Generalisation. Definition 1 The generalisation and specialisation principles are main principles of database modelling. Generalisation maps or groups types or classes to more abstract or combined ones. It is used to combine common features, attributes, or methods. Specialisation is based on a refinement of types or classes to more specific ones. It allows to avoid null values and to hide details from non-authorised users. Typically, generalisations and specialisations form a hierarchy of types and classes. The more general types or classes may be bound by a mapping or by inheritance of attributes and methods from the more general one to the more special ones. Clusters of types to a type that represents common properties and abstractions from a type are the main kinds of generalisations. Is-A associations that specialise a type to a more specific one and Is-A-Role-Of associations that considers a specific behaviour of objects are the main kind of specialisations used in database modelling and implementation. Specialisation introduces a new entity type by adding specific properties belonging to that type which are different from the general properties of its generic type. Thus, generalisation introduces the Role-Of relationship or the Is-A relationship between a subtype and its generic type. Therefore, the constructs are different. For generalisation the generic type must be the union of its subtypes. Thus, the subtypes can be virtually clustered by the generic type. This tends not to be the case for specialisation. Specialisation is a refinement or restriction of a type to more special ones. Typical specialisations are Is-A and Has-Role associations. Exceptions can be modelled by specialisations. We distinguish different kinds of specialisation: Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 159 Structural specialisation T 0 ¹St T : The structure S 0 is a substructure of S. An embedding function η exists which relates each object in T 0 to one object in T . For instance, the tuple structure (A, B, C) is a substructure of (A, B). In addition, structural specialisation requires that according to η the class T 0C of the type T 0 is a subclass of T C , i.e., we require that for each o0 ∈ T 0C an o ∈ T C exists such that o = η(o0 ). The relationship among objects can be supported by identifiers or keys. In this case the subtype uses the identifier and keys and provides additional attributes and methods. Semantic specialisation T 0 ¹Se T : The logical language of T 0 can be mapped onto the logical language of T in such a way that the constraints on T 0 are stronger than the constraints on T , i.e., a mapping θ from LT 0 to LT exists such that θ(Σ0s ) |= Σs . The constraints used in T 0 are stronger than those used in T . The constraint sets of types are partitioned into static constraints Σs (applicable to elements of the type sets) and dynamic constraints Σd (applicable to operations of the types). The strong semantic specialisation T 0 ¹St,Se T is defined on the basis of both mappings η and θ whereas θ is created using η as the mapping primitive. Pragmatical specialisation T 0 ¹P r T : Objects may be used in different contexts. Pragmatical specialisation allows to separate the different usage of objects in contexts. The identification of objects is not changed. Therefore pragmatical specialisation can be based on structural specialisation. We require that the additional properties of objects in T 0C represent the additional properties that context requires. Operational specialisation T 0 ¹Op T : The operations defined for T can also be applied to T 0 objects. The strong operational specialisation T 0 ¹St,Op T requires that mappings η : Struc0 → Struc, θ : LT 0 → LT and ζ : Ops0 → Ops exist which commute, i.e., for any n-ary operation o0 from Ops and arbitrary objects o01 , ..., o0n from T 0 t the equality η(o0 (o01 , ..., o0n )) = ζ(o0 )(η(o01 ), ..., η(o0n )) and ζ(θ(Σ0d )) |= Σd . Type specialisation T 0 ¹T ype T requires strong operational and strong semantic specialisation. Is-A specialisation T 0 Is − A T requires structural and strong semantic specialisation. Is-A relationship (types) are typical semantical specialisations. We require that the properties of objects in T 0C specialise those in T C or are not applicable to T . Is-A-Role-Of specialisation T 0 Is − A − Role − Of T requires structural, pragmatical and strong semantic specialisation. We require that the additional properties of objects in T 0C represent the additional properties that context requires. Generalisation can be treated in a similar manner and is based either on abstraction or on grouping. The cluster construct of the extended ER model is used to represent generalisations. Generalisation tends to be an abstraction in which a more general (generic) type is defined by extracting common properties of one or more types while suppressing the differences between them. These types are subtypes of the generic type. New types are created by generalizing classes that already exist. Typical such feature abstractions are the separation or extraction of constructors, destructors, and identification from the rest of the type. Similarity of attributes or methods may be used for the development of more abstract ones. Grouping allows to combine types that partially share properties or methods into a new type that represents the commonalities. We thus consider structural combination, semantical combination, and pragmatical combinations of types into a more general one. Structural combination typically assumes the existence of a unifiable identification of all types. Typically unambiguity is assumed, i.e. the combination is based on a disjoint union of the types. Semantical combination allows the disjunction of types through the linear sum of semantics. Pragmatical generalisation is based on building collections whenever applications require a consideration of commonalties. Abstraction is the opposite of refinement. In this case, generalisation can been seen as the inverse of specialisation. The main difference is however which of the types has a practical relevance or importance. Kernel types can be generalised to more general types by abstraction from some attributes or methods, by consideration of generic methods with parameters that are mapped to the kernel type methods by instantiating parameters or by introduction of more general attributes. Generalisation and specialisation are supported by inheritance of properties and methods. It helps to factor out shared specifications and implementations. Type inheritance is defined on the basis of the definition of types and can be further partitioned into aggregation/decomposition inheritance, classification/instantiation inheritance and generalisation/specialisation inheritance. Localisation inheritance is based on localisation abstraction. Naming, parametrisation and binding are basic mechanisms to extract repeating or shared patterns. Implementation inheritance is concerned with the encapsulation and hiding of types. A typical kind of implementation inheritance is that of the operational environment of a type. Interface inheritance or view inheritance can cause some confusion since these can reverse other inheritance approaches, e.g. inclusion inheritance. Object-oriented databases allow four different kinds of inheritance: Substitution inheritance, inclusion inheritance, constraint inheritance, and specialisation inheritance, Specialisation and generalisation are based on the concept of refinement. We may use refinement steps such as refinement through instantiation replacing types by partially instantiated, refinement through separation using decomposition operators enabling in vertical or horizontal decomposition, refinement through specialisation specializing types to structurally, behaviorally or semantically more specific subtypes, and refinement through structural extension extending types by other components, additional semantical constraints or functions. B. Thalheim. Entity-relationship modeling – Foundations of database technology. Springer, Berlin, 2000. J. H. Ter Bekke. Semantic data modelling. Prentice-Hall, London, 1992. J. C. Mitchell. Type systems for programming languages. In J. Van Leeuwen, editor, Handbook of Theoretical Computer Science, Vol. B - Formal Models and Semantics, pages 365–458. Elsevier, Amsterdam, 1990. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 160 Modellierungsstil im HERM Aus den Annahmen heraus können wir uns einen spezifischen Modellierungsstil leisten: Mengensemantik als präferierte Semantik obwohl auch eine Listensemantik oder eine Referenzsemantik nicht ausgeschlossen ist Modularisierung innerhalb der Spezifikation als eine strukturelle Separation von Aspekten Bevorzugung der struktur-orientierten Spezifikation gegenüber der prozeß-orientierten Spezifikation Inhärente Unvollständigkeit der Spezifikation wird toleriert. Agenten-orientierte Spezifikation für verteilte Anwendungen mit expliziter Separation der Einheiten des gesamten Namensraumes der Modelle in • Input-Einheiten • Sharing-Einheiten • Control-Einheiten und • Output-Einheiten IS als Transaktionssysteme mit resultierender Steuerung und Ableitbarkeit von Informationen aus Daten anstatt eines prozeduralen Systemes Resultierende Annahmen. • Grunddatentypen werden als unstrukturiert vorausgesetzt in OLAP-Anwendungen ist dies nicht mehr aufrecht zu erhalten!!!!!! • Pragmatik der Typeneindeutigkeit für jede Einheit z.B. Typen sind entweder Attribut- oder ... Cluster-Typen • Eine linguistische Semantik der Namen für Einheiten kann verwendet werden. Es wird dazu ein Stil der Benennung im Vornherein vereinbart und dann eingehalten. Wir verwenden damit für alle Namen eine Minisemantik. • Es wird eine Pragmatik für die Repräsentation zugelassen und vorher vereinbart. • Wir unterscheiden explizit zwischen Rolle und Objektexistenz. Kern-Objekte sind in der Existenz unabhängig und werden durch Entity-Typen dargestellt. An object is a thing that has the potential of stable, unconditional physical or mental existence. Existence is derived from ‘be’, ‘have being’, ‘continue to be’. Existence means to stand out, to show itself, and have a identifiable, distinct uniqueness with the physical or mental realm.(D.Dori, Websters dictionary) 2.2 HERM-Strukturen Abstrakter Datentyp mit allen Eigenschaften der Grunddatentypen Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β Finiteness Finite Infinite 2. Strukturierung von IS Granularity Discrete Continuous Discrete Continuous Textual Text-enumerated - ab SS 2012 Expression Symbolic Symbol-enumerated Symbol-floating-enumerated - 161 Numeric Integer-enumerated Floating-enumerated Integer Floating-point Eine Sprache zur Beschreibung der Strukturierung von Datenbank-Anwendungen verfügt über Konstrukte zur Darstellung der Struktur einer Anwendung. Falls diese Sprache nicht-zyklisch und induktiv aufgebaut ist, ist damit auch eine Einbettung in die Sprache der Prädikatenlogik (der ersten Stufe) gegeben. Deshalb lassen sich dann statische Integritätsbedingungen als Formeln der Prädikatenlogik mit einer Standardinterpretation angeben. Mit der Sprachkonstruktion und mit Annahmen aus dem Umfeld werden implizite Integritätsbedingungen aufgenommen. Die Sprache zur Beschreibung der Strukturierung von Datenbanksystemen wird genutzt, um diese mit einem sogenannten Datenbank-Schema zu beschreiben. Inhalte eines statischen Modelles sind daher: Strukturen einer Anwendung, Statische Integritätsbedingungen einer Anwendung (meist für die zusätzliche Beschränkung evt. in einer Anwendung vorkommender Daten) und Common-sense-Annahmen (über das Modell, die Modellierungsart, über die Interpretation der Daten etc.). Damit wird das Wissen über die statischen Gesichtspunkte einer Anwendung modelliert durch: Die Spezifikation der Struktur in Abhängigkeit vom Typensystem mit der Spezifikation des Seienden (entity), der Beziehungen (relationship) und der Eigenschaften (Attribute). Dinge stehen in Beziehung bzw. besitzen Eigenschaften, die klassifiziert werden durch eine Rolle oder durch Klassenbildung. Die Gesamtheit der Dinge wird unter Berücksichtigung der Beziehungen untereinander modelliert: • Aussonderung (Separation/Spezialisierung), • Verallgemeinerung (Generalisierung von Gemeinsamkeiten) und • Aggregation (zur Darstellung komplexerer Daten mit entsprechenden Operationen). Die Spezifikation der statischen Semantik, d.h. durch einschränkende Bedingungen für wirklichkeitsgetreue Nachbildung der Anwendung wie • die eindeutige Bestimmung aller Objekte durch Schlüsselbedingungen, • die Hierarchie der Objekte (Aussonderungsbedingungen (specialization, IsA), Verallgemeinerungsbedingungen (partition constraints, uniqueness constraints)) • und Bedingungen für Beziehungsklassen wie die folgenden: • Darstellung eines funktionalen Zusammenhangs (viele-eins-Bedingung), • Bedingungen zur Assoziation mit Komponentenobjekten (Seinsbedingung (existence constraint)) und • Verweisbedingungen auf Objekte der Komponentenklassen, sowie • allgemeine Bedingungen (inhärente Bedingungen des Modells) wie die folgenden: • Gesamtheitsregel (universe of discourse) • Verneinungsregel Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 162 Sichten und abgeleitete Begriffe sind erschließbare Objekte und werden durch Anwendung von Spezifikationen aus den Objekten der Datenbank erzeugt. Das allgemeine Vorgehen der statischen Datenbankmodellierungssprachen läßt sich somit wie folgt charakterisieren: • Typen sind über ihre Typausdrücke definiert. Den (freien) Variablen werden wiederum Typen zugeordnet. • Die Zuordnungsvorschrift für Typausdrücke kann sowohl hierarchisch als auch zyklisch sein. Wählt man eine zyklische Struktur, dann sind meist nur Topoi-Semantiken geeignet. Wählt man hierarchische Strukturen, dann kann meist eine Mengensemantik noch garantiert werden. • Typen haben eine assoziierte statische Semantik. • Typen haben Operationen zu ihrer Manipulation und Veränderung. Man kann diese Operationen generisch definieren, wenn die Typenstruktur hierarchisch aufgebaut ist. Einige Operationen können auch Prädikate sein. A type constructor is a function from types to a new type. The constructor can be supplemented • with a selector for retrieval (like Select ) with a retrieval expression and update functions (like Insert, Delete , and Update ) for value mapping from the new type to the component types or to the new type, • with correctness criteria and rules for validation, • with default rules, • with one or several user representations , and • with a physical representation or properties of the physical representation. • Klassen sind Typen zugeordnet. • Sie stellen “Container” für die Objekte des jeweiligen Typs dar. • Die assoziierte statische Semantik der Typen muß zu jedem Zeitpunkt für eine Klasse erfüllt sein. • Die Operationen der Typen werden auf Klassen ausgeführt. Wir bezeichnen Typen mit ihrem Namen, z.B. T und die zugehörigen Klassen mit einer Annotation zum Typennamen, z.B. T C (C steht für Klasse). Es sind verschiedene Modelle möglich. Jedes Modell ist durch eine Menge von inhärenten Bedingungen gekennzeichnet. Jeder benutzte Typ hat neben Konstruktor, Selektoren (für Retrieval) und Updatefunktionen, Korrektheitskriterien, default-Regeln auch eine Benutzerrepräsentation und eine physische Repräsentation. Günstig ist eine graphische Repräsentation. Eines der populärsten Modelle ist das Entity-Relationship-Modell. Wir erweitern dieses Modell zu einem Higher-Order Entity-Relationship-Modell (HERM). 2.2.1 Attribut-Typen können einfache oder auf der Grundlage von Konstruktoren wie Mengenkonstruktor, Tupelkonstruktor, Listenkonstruktor, Multimengenkonstruktor induktiv konstruierte komplexe Attribut-Typen sein. Sie werden induktiv definiert: Basis-Datentypen sind parametrisierte Typen T = (dom(T ), ops(T ), pred(T )) des DBMS. Sie sind gegeben durch eine Bezeichnung T (evt. auch mit Abkürzung), einen Wertebereich dom(T ), eine Menge von Funktionen ops(T ) und eine Menge pred(T ) von Prädikaten. Oft wird auch der Basis-Datentyp mit einem Informationstyp assoziiert. Ein Beispiel ist der Typ der ganzen Zahlen in der 4-Byte-Repräsentation Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 163 integer := (IntegerSet4Byte , {0, s, +, -, *, ÷, }, { =, ≤ }) mit der Nachfolgefunktion s . Basis-Datentypen verfügen neben dem Wertebereich auch über Funktionen und Prädikate. Sie sind außerdem durch eine Reihe von Eigenschaften eingeschränkt, die im Datenbanksystem zu beachten sind und oft im Entwurf übersehen werden: • Die Präzision und Genauigkeit sind ggf. für Typen wie REAL eingeschränkt. • Die Granularität von Daten kann sehr unterschiedlich sein. Die Skalierung von Datentypen kann sich ggf. auch auf die Funktionalität auswirken. • Datentypen verfügen nur ggf. über eine eigene Ordnungsbeziehung. • Datentypen verfügen ggf. über eine Klassifikation innerhalb der Daten des Wertebereiches. Diese Klassifikation kann einfach oder mehrfach hierarchisch, analytisch oder synthetisch, monothetisch oder polythetisch und ein- oder mehrdimensional sein. • Datentypen können über unterschiedliche Präsentationsformen verfügen. Das Format umfaßt Länge und Größe. • Datentypen können auf unterschiedliche Art abgespeichert werden. • Datentypen verfügen über eigenständige Default- und Nullwerte. • Datentypen können durch Casting-Funktionen aufeinander abgebildet werden. • Datentypen sind bestimmten Anwendungen und Arbeitsgebieten zugeordnet. • Die Funktionen und Prädikate lassen unterschiedliche Berechnungen zu, die sich auf die Erfassung, Berechnung, Algorithmen etc. auswirken. • Bestimmte Funktionen, wie z.B. der Durchschnitt, sind evt. anders oder gar nicht definiert. • Datentypen sind oft mit Maßeinheiten ausgewiesen, womit auch Berechnungen unterlegt werden müssen. Basis-Datentypen sind meist auch in einem Typenverband geordnet. Neben den Basis-Datentypen des DBMS kann auch eine Anwendung über eigene Basis-Datentypen verfügen. Wir können z.B. den Typ varnumbersequence20 zur Darstellung von Telefonnummern mit einer angepaßten Ordnungsbeziehung und ohne Unterdrückung führender Nullen einführen. Analog kann ein Typ EmailTyp oder URL eingeführt werden. Kind of data type extension based absolute ratio intension based nominal ordinal rang interval Natural order Natural zero Predefined functions + + +/+/- +/+(type dependent) + + + + - (-) (except concatenation) (+)(e.g., concatenation) Example number of boxes length, weight names of cities preferences competitions time, space Tabelle 1: Data types and their main canonical assumptions Attribut-Typen werden über einem Basis-Datentypen-System und einem Markierungssystem L für Attributnamen induktiv ausschließlich durch die folgenden beiden Regeln definiert: • Ein Attribut-Typ ist für eine Markierung A und einen Basis-Datentyp durch einen Ausdruck A :: T gegeben. Der Wertebereich dom(A) des Attribut-Typs ist der Wertebereich des Basis-Datentyps. Der Wertebereich des leeren Datentyps λ besteht aus ⊥. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 164 • Sind X1 , ..., Xn , Y Attribut-Typen und A, B, C, D Markierungen, dann sind A(X1 , ..., Xn ) (Tupel- oder Produkt-Konstruktor), A{Y } (Mengen-Konstruktor), A < Y > (Listenkonstruktur), A[Y ] (Konstruktor für optionale Elemente), A{| Y |} (Konstruktor für Multimengen). Die entsprechenden Wertebereiche sind durch Anwendung der Konstruktion gegeben, z.B. dom(A(X1 , ..., Xn )) = dom(X1 ) × ... × dom(Xn ) und dom(A{Y }) = 2dom(Y ) . Markierungen können auch weggelassen werden. Beispiele von komplexeren Attributen sind Name (Vornamen<(Vorname :: varstring15 , Benutzung :: string1)>, Familienname :: varstring30, [Geburtsname :: varstring30,] · [Titel:{AkademischeTitel :: varstring10 } ∪ FamilienTitel :: varstring10]) Kontakt (Tel({dienstl :: varnumbersequence20 }, privat :: varnumbersequence20), email :: emailType, ...) Geburtsdatum :: date . Attribute können in einer verkürzten Notation verwendet werden, wenn dies eindeutig im Schema bleibt. Das Attribut Kontakt ist z.B. dann auch ohne seine Bestandteile verwendbar. Attribute sind hierarchisch strukturiert wie - im Falle des Namens einer Person - der Baum in Bild 3 zeigt. Diese Name ? ( ... ) z 9 Vornamen ? < ... > ? ( ... ) ) Vorname ª Familienname ? varstring30 q Benutzung ? string1 [ ... ] ? Geburtsname ? varstring30 z 9 ... } ? AkademischeTitel ? varstring10 { ? varstring15 [ ... ] ? Titel ·? ∪ z Familientitel ? varstring10 Abbildung 3: Semi-strukturiertes Attribut Name hierarchische Struktur ermöglicht auch Elemente auszuzeichnen, z.B. mit der Eigenschaft Element eines Schlüssels zu sein. So kann z.B. zum Schlüssel das Teilattribut Name (Vornamen, Familienname, [Geburtsname ]) hinzugenommen werden, wobei wir als Abkürzungsregel benutzen, daß mit dem Nennen eines Bezeichners auch der damit verbundene Teilbaum mit übernommen wird, z.B. für Vornamen auch die gesamte Teilstruktur Vornamen<(Vorname :: varstring15 , Benutzung :: string1)> . Kontrollfrage: Ist richtig Plz:String oder Plz:Number ? 2.2.2 HERM-Typen werden induktiv aufeinander basierend definiert. Grundlagen aus der Theorie der Informationssysteme Wir unterscheiden zwischen der formalen Definition und der graphischen Repräsentation. Die graphische Darstellung kann unterschiedlichen Paradigmen folgen. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 165 Begründung: Da die Werkzeuge zum Datenbank-Entwurf meist einschränkend sind bei der graphischen Darstellung, sollte man sich hier die unterschiedlichen Darstellungsformen erschließen und parallel benutzen. Allgemeiner Definitionsrahmen für Typen: für korrekte Separation wird verwendet • T $ (componT ; identifT ; integrityT ) Die drei Elemente eines Typen (componT ; identifT ; integrityT ) können als Folge definiert werden, wenn man die Separation durch das Semikolon benutzt. • Wird eine Folge verwendet, dann kann auch die Reihenfolge der Elemente für die Annotation verwendet werden. • Oft wird anstatt $ auch einfach das Gleichheitszeichen verwendet. Dies ist eine Form der Bezeichnungsökonomie, hat aber nichts mit der mathematischen Gleichhet zu tun. • alternativ aber weniger korrekt T $ (componT , identifT , integrityT ) Verwendung von Marken ist für alle Typen zugelassen. I.a. wird dazu die Form Marke:Bezeichner gewählt. Dies erlaubt dann auch die Marke als Abkürzung oder alias zu verwenden. Unique-Name-Assumption für alle Bezeichner des Schemas, d.h. alle Entity-, Relationship- und Cluster-Typen, sowie für Komponenten der Typen selbst. Ansonsten wird eine Marke notwendig. Alternativen in der Darstellung Wir verwenden - wo immer es möglich ist - das Kartesische Produkt als Typenkonstruktoren. Begründung: Die Darstellung im Stile der funktionalen Programmierung mit Funktionen hat sich nicht bewährt und wurde in den 1980ern verworfen. Entity-Typ: Eine Seiendenklasse (Objektklasse) (Entity-Klasse im weiteren) wird durch einen Entity-Typ dargestellt. Ein Entity-Typ besteht aus einer nichtleeren Folge von Attributen und einer Menge von statischen Integritätsbedingungen. Der Primärschlüssel wird direkt durch Unterstreichen der Attribute angegeben. Ist die Menge der statischen Integritätsbedingungen leer, dann kann sie auch weggelassen werden. Eine Klasse von der Struktur des Entity-Typs ist gültig, falls alle Integritätsbedingungen gelten. Wir folgen der klassischen Notation, bei der ein Entity-Typ mit einer Definitionsgleichung dargestellt wird. Zum Beispiel ist ein Person-Typ spezifiziert durch · Person $ (Name, Adresse, Kontakt, GebDatum, PersNr : StudNr ∪ MitarNr, ..., ∅) mit einer Folge von Attributen. Markierungen sind als solche ausgewiesen. Ein Entity-Typ wird durch ein Rechteck graphisch repräsentiert. Eine Entity-Klasse besteht aus einer Menge von Objekten vom Entity-Typ, die die statischen Integritätsbedingungen des Entity-Typen erfüllt. Hier verwendete Annahmen: Wir definieren die Klasse als eine Menge. Multimengen-Semantik wird z.B. im relationalen Modell für Anfragen verwendet. Dort ist die Multimenge relativ einfach beherrschbar. Wird dagegen ein paralleler Zugriff für unterschiedliche Benutzer erlaubt, dann muß ein explizites Konzept des sharing eingeführt werden. Begründung: Kollaboration kann über das 3C-Modell (siehe meine Publikationen) definiert werden. Der sehr komplexe und zugleich sehr schwer zu realiserende Teil des 3C-Modelles ist die Koordination. Man kann hier Verträge von Benutzern verwenden. Eine Spezifikation von Anwendungen wird dabei allerdings viel zu komplex. Zum Beispiel ist das folgende Objekt mit dem Identifikator β β : ((<(Karl,z),(Bernhard,r)>, Thalheim, {Prof., Dr.rer.nat.habil., Dipl.-Math.}), BTU Cottbus, (({ +49 355 692700, +49 355 692397}, +49 355 824054), Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 166 [email protected]), 10.3.52, 637861) vom Entity-Typ Person, wobei mit ‘z’ der Zusatzname und mit ‘r’ der Rufname bezeichnet wird. Darstellung im Diagramm durch ein Rechteck mit dem Namen des Typen als Bezeichner und ggf. den Attributen als Annotationen am Rechteck. Alternativ kann man auch die UML-artige Notation verwenden mit einer Liste der Attribute innerhalb eines Rechteckes. Unterschied zur Vorlesung Informationssysteme (4. Semester) Im Diagramm nutzen wir einen Typen mit annotierten Attributen. Man könnte auch noch Kreise um die Attribute ziehen. Begründung: Dies ist aber unnötigt. Die Diagramme werden unübersichtlicher. Hier verwendete Annahmen: Ein Entity-Typ hat mindestens eine Komponente, die Sinn in der Anwendung macht. Begründung: Künstliche, vom System erzeugte Identifikation macht für einen Anwender weder Sinn für das Retrieval noch für die Modifikation. Sie ist ein bequemes und zugleich sehr mächtiges Instrument der Implementation. Unterschied zur Vorlesung Informationssysteme (4. Semester) Wir verwenden nur eine interne Identifikation über Komponenten des Entity-Typs. Schwache Entity-Typen sind nicht zugelassen. Begründung: Im Buch [Tha00] wird ausführlich begründet, warum schwache Typen zu schlechten Schemata führen, in eigenartiger Se- mantik resultieren und auch mit dem higher-order Relationship-Typ vollständig überflüssig sind. Unterschied zur Vorlesung Informationssysteme (4. Semester) Wir vermeiden eine ständige Einführung eines Identifiers. Diese Attribut sollte bei der konzeptionellen Modellierung nur dann eingeführt werden, wenn dies erforderlich ist. Begründung: Der Identifier ist ein logisches Konzept. Ansonsten erfordert er eine Extra-Verwaltung, die ein Schema verschlimmbessert. Hinzu kommt der Albtraum, den wir für objekt-orientierte Schemata in aller Problematik kennenlernen mußten. Grundlagen aus der Theorie der Informationssysteme Konzeptionelle Modellierung orientiert sich an echten, in der Anwendungswelt sinnvollen Konzepten. Künstliche, der Implementation geschuldete Konstrukte sind strikt zu vermeiden, wenn man den Benutzer nicht verwirren oder von der Anwendung fernhalten möchte. Begründung: Die Theorie der relationalen Datenbanken hat sich stark an den ersten Systemrealisierungen orientiert und dabei die dort erfolgten Annahmen einfach als ‘gottgegeben’ akzeptiert. Solche Annahmen sind meist nicht mehr hinnterfragt worden. Sie bedürfen jedoch einer Revision unter modernen Gegebenheiten. Grundlagen aus der Theorie der Informationssysteme Die Identifikation kann über minimale Schlüssel definiert werden. Es ist hier nicht nur der Primärschlüssel von Interesse, sondern auch weitere Schlüssel, die in einer Anwendung Sinn machen. Begründung: Man betrachte einmal den Typ Lehrstuhl, der sowohl über den Namen (mit ggf. Zusätzen) als auch die Kostenstelle als auch den Raum oder andere Kantaktformen identifizierbar ist, wobei die spezifische Identifikation für unterschiedliche Assoziationen dann auch benötigt wird. Einfacher Relationship-Typ: Ein Relationship-Typ (erster Ordnung) besteht aus einer nicht-leeren Folge von EntityTypen, einer Menge von Attributen und einer Menge von statischen Integritätsbedingungen. Eine Menge von der Struktur des Relationship-Typen ist eine gültige Menge, wenn sie den statischen Integritätsbedingungen genügt. Elemente können markiert sein. Ein Beispiel sind die Relationship-Typen InGruppe = (Person, Gruppe, { Zeit(Von [,Bis]), Funktion }, ∅ ) Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 167 DirektVoraussetz = (setztVoraus: Kurs, vorausges : Kurs, ∅, ∅ ) Professor = (Person, { Berufungsgebiet }, ∅ ) . Ein Relationship-Typ wird mit einer Raute graphisch repräsentiert. Wir erlauben auch optionale Komponenten von Relationship-Typen, solange eine Identifikation über die obligatorischen Elemente definiert ist. Alternativen in der Darstellung Eine alternative Form ist die IDEF-Notation, bei der Relationship-Typen mit Rechtecken, die abgerundete Ecken haben, verwendet werden. Diese Form erlaubt auch eine einfache Umformung von Entity-Typen zu Relationship-Typen oder auch die Objektifizierung von Relationship-Typen. Begründung: Es wird oft argumentiert, daß die IDEF-Darstellung die natürlichere Form sei. Sie wird auch von fast allen Werkzeugen unterstützt. In der Forschungsliteratur hat sich jedoch die ursprüngliche Form durchgesetzt. Dem folgt auch die Lehrbuchliteratur. Ein survey der DAMA zeigt jedoch, daß diese Form in der Praxis weit verbreitet ist. Die Verbreitung hat sich nicht mit UML geändert, die auch sowohl die Raute als auch das abgerundete Rechteck erlaubt. Ein Objekt eines Relationship-Typs ist ein Tupel, das zu den jeweiligen Elementen auf die entsprechenden Objekte der Klasse der Elemente durch Angabe von identifizierenden Werten (Identifikator bzw. Primärschlüssel bzw. anderer Schlüssel) verweist und Werte für die Attribute des Relationship-Typs besitzt. Eine Relationship-Klasse besteht aus Objekten des Relationship-Typs, die den statischen Integritätsbedingungen genügen. z.B. sind Objekte der Typen Professor, InGruppe und DirektVoraussetz Profβ : ( 637861, Datenbank- und Informationssysteme ) Senator3β : ( 637861, Senat, (1995,1998), Dekan) Senator5β : ( 637861, Senat, (2000), Vorsitzender) VorausDBIVHaupt: (DBIV, DBI) . Cluster-Typ Eine disjunkte LVereinigung von bereits konstruierten Typen wird als Cluster-Typ bezeichnet. Ein ClusterTyp wird mit einem -Zeichen graphisch repräsentiert. Beispiele sind durch folgende Typen gegeben: · · JuristischePerson = Person ∪ Betrieb ∪ Vereinigung · · Gruppe = Senat ∪ Arbeitsgruppe ∪ Vereinigung, die den Typ JuristischePerson bzw. Gruppe als disjunkte Vereinigung von anderen Typen einführen. Cluster-Typen können weitere Attribute besitzen. In diesem Fall wird der Cluster-Typ durch eine Raute mit den Attributen repräsentiert. Objekte von Cluster-Typen sind analog zu den Objekten anderer Typen durch entsprechende Zuordnung zu den Element-Typen eingeführt. So können z.B. die Objekte β , LIM, CottbusNet e.V. juristische Personen sein. Alternativen in der Darstellung Cluster-Typen werden oft nicht zugelassen, so daß dann für alle Typen eine Mixvererbung geführt werden muß. Begründung: Die Generalisierung ist i.a. nicht die Umkehrung der Spezialisierung. Neben der Mixvererbung sind auch die virtuelle und partielle Vererbung von Interesse und deshalb nicht von vornherein auszuschließen. ¨ Uber die Nutzung der disjunkten Vereinigung hinaus kann auch der Cluster-Konstrukt für alle algebraischen Operationen genutzt werden. Ein Beispiel aus dem Titelbild der 7. Auflage des Buches von A. Kemper/ A. Eickler dazu: The following three schemata are equivalent to each other and are tightly associated with each other by transformation mappings. A typical example of these two schemata is given in Figure 4. Students enrolled in a course may be examined by docents that give the course. The optimised conceptual schema can be easily mapped to a structure that supports smooth operating of the database. The sophisticated HERM schema uses the Θ-join for the correct building of the relationship type that records downloads. The optimised conceptual schema is equivalent to this schema due to the equivalence of the join decomposition and the inclusion Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Θ := Enrolls.Course 1P rovides.Course Examines.Enrolls.Course = Examines.GivenBy.Course Course ¾ Enrolls - GivenBy 6 Docent 6 ¾ 168 Course ¾ GivenBy 6 Examines Enrolls ? ? Student Student The simple HERM schema - Docent 6 ¾ Θ Examines The sophisticated HERM schema The representational conceptual schema - Enrolls ⊇ Course ¾ 6 GivenBy ⊆ Student = ({ StudId, ... }, ...), Course = ({ CourseID,... }, ...), Docent = ({ DocentID,... }, ...), Enrolls = ({ StudId, CourseID,... }, ...), Provides = ({ CourseID, DocentID,... }, ...), Examines = ({ StudId, DocentID, CourseID,... }, ...) Examines[StudId, CourseID] ⊆ Enrolls[StudId, CourseID] - Docent Student ¾ Examines Examines[CourseID, DocentID] ⊆ Provides[CourseID, DocentID] The “optimized” conceptual schema The logical relational schema The association between the “optimised” schema and the relational schema ? ? Abbildung 4: The ‘Janus’ schema cluster for conceptual modelling constraints [Tha00]. Unterschied zur Vorlesung Informationssysteme (4. Semester) Relationship-Typen werden im Stile der funktionalen Programmierung als Funktion des Namen auf die Rollen der Komponenten eingeführt. Ggf. sind auch Attribute erlaubt. Begründung: Es ist damit eine Defintion der Rollen unbedingt erforderlich. Rollen sind jedoch eine spezifische Form der Spezialisie- rung für die Komponenten und sollten nur dort verwendet werden, wo dies erforderlich ist. Relationship-Typ höherer Ordnung: Ein Relationship-Typ i-ter Ordnung besteht aus einer nicht-leeren Folge von Entity- und Relationship-Typen einer Ordnung von maximal (i-1), wobei ein Typ (i-1)-ter Ordnung sein muß, einer Menge von Attributen und einer Menge von statischen Integritätsbedingungen. Eine Menge von der Struktur des Relationship-Typen ist eine gültige Menge, wenn sie den statischen Integritätsbedingungen genügt. Eine Identifikation kann sowohl aus den Elementen bestehen als auch aus den Attributen. Unterschied zur Vorlesung Informationssysteme (4. Semester) Es wird oft für Relationship-Typen höherer Ordnung der Zugang der Objektifizierung genutzt. Dieser Zugang ist äquivalent zu dem hier genutzten. Er führt jedoch ein weiteres Element im Diagramm ein. Es wird um die Raute ein Rechteck gezogen, so daß ein weiteres Element entsteht. Begründung: Man sollte im Diagramm Konstrukte so sparsam wie möglich verwenden. Alles andere verwirrt nur. Hinzu kommt als Fehler- und Verwirrungsproblem das genaue Anbringen der Attribute an den Typen. Attribute gehören dann wohl eher zum ursprünglichen Typ und nicht zum objektifiziertem Typ. Dieser Zugang erlaubt keine Einführung von Clustern. Alternativen in der Darstellung Besonders unübersichtlich wird die Objektifizierung über Teilschemata z.B. für einen Relationship-Typen mit seinen Komponenten. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 169 Begründung: Man verliert sich sehr schnell in solchen Diagrammen. Mit der expliziten Einführung von Typen höherer Ordnung werden objektifizierte Typen überflüssig! Es ist mitunter vorteilhaft, über Relationship-Typen höherer Ordnung zu verfügen, wie Bild 5 zeigt. Im oberen Student’ 1 * 6 eingeschr. in ®9 Vorlesung + q ? Raum Semester Professor’ ¾ Kurs ¾ Student’ Professor’ * 6 eingeschr. in 9 Semester DirektVoraussetz - Vorlesung + ? Raum ¾ Kurs ¾ DirektVoraussetz Abbildung 5: HERM Diagramme mit und ohne Relationship-Typen höherer Ordnung Diagramm muß eine zusätzliche Integritätsbedingung zwischen den Typen eingeschriebenIn und Vorlesung gelten, weil man sich nur dann einschreiben kann, wenn diese Vorlesung existiert. Ein etwas komplexeres Beispiel ist das Beispiel in Bild 6. Eine Lehrveranstaltung, z.B. eine Vorlesung, wird durch einen Lehrstuhl angeboten. Dieses Angebot kann angenommen werden. Dann wird die Lehrveranstaltung geplant. Wird sie auch gehalten, dann werden die aktuellen Daten in der Klasse zum Typ GehalteneLehrveranst gespeichert. Der Typus und die Raumzuordnung können sich vom Vorschlag zum Plan und für den Raum vom Plan zu den gehaltenen Lehrveranstaltungen ändern. Ein Vorschlag für eine Lehrveranstaltung wird durch Berechtigte eingetragen. Eine Person ist für die Lehrveranstaltung verantwortlich. Eine Lehrveranstaltung kann für mehrere Studiengänge angeboten werden. Wir wollen hier nicht die vollständige Entfaltung von Objekten zu Typen höherer Ordnung fordern. Deshalb erbt ein Relationship-Typ höherer Ordnung nur die Identifikation seiner Elemente oder - wenn wir an einer vollständigen Wertedarstellung interessiert sind - nur die identifizierenden Werte der Objekte seiner Komponenten. So können z.B. Objekte vom Typ geplanteLehrveranstaltung in Bild 6 auch nur auf Objekte verweisen, die Kurs, Semester, Professor bezeichnen, wenn wir voraussetzen, daß ein Schlüssel des Typs angeboteneVorlesung aus Kurs, Semester, Professor besteht. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS Kurs ab SS 2012 Semester k Studiengang {} Person 1 eingetragen Verantwortlicher4LV µ Dozent Wunsch angebotene Vorlesung Vorschlag * Professor 6 ¾ 170 Zeit(Vorschlag, 6 Nebenbeding) - Raum *6 + Typus ¾ geplante Lehrveranst ¾ gehaltene Lehrveranst Zeitrahmen Abbildung 6: HERM Diagramm zu unserem Hauptbeispiel Ein Objekt vom Typ angeboteneVorlesung = (Kurs, Semester, Studiengänge, Professor, eingetragen, Verantwortlicher4LV, Raumwunsch, Typus, { Zeit }, ∅) ist z.B. VorlesungDBIVSS02: (DBIV, SS2002, { Informatik, IMT }, 637861, KK, 637861, SR1, Vorlesung/Übung/Praktikum 2+2+2, Mo. 1.DS) . Generalisierung versus Spezialisierung: Ein Cluster-Typ erlaubt die explizite Darstellung einer Generalisierung. Ein unärer Relationship-Typ stellt dagegen eine Spezialisierung dar, wenn der Relationship-Typ bzw. EntityTyp als sein Element diesen identifiziert. Rollen werden oft durch einen generischen Typ mit der Bezeichnung IsA dargestellt. Da die relationalen Schemata auch ohne diesen Typ auskommen, bevorzugen wir die Darstellung als Rolle mit unären Relationship-Typen oder ggf. auch mehrstelligen Relationship-Typen, falls die Rolle durch eine Beziehung zu anderen Typen ausgezeichnet ist. Damit sind wir in der Lage, zwischen Generalisierung und Spezialisierung zu unterscheiden. Rollen, die exklusiv bzw. hierarchisch sind, lassen sich auch anstelle einer HERM-Rautenstruktur durch hierarchische Strukturen abbilden, wie in Bild 7 dargestellt. Welche Darstellungsform gewählt wird, hängt vom erforderlichen Detaillierungsgrad ab. Sollen Attribute mit dargestellt werden, wird das hierarchische ER-Modell sehr schnell zu unübersichtlich. In den ersten Abstraktionsschichten stellt es aber eine gute Alternative zum HERM-Diagramm zum. Person Student Diplomand Diplomand - Student Universitätsmitarbeiter - Person 6 Professor Projektmitarbeiter Projektmitarbeiter - Universitäts- ¾ mitarbeiter Abbildung 7: Hierarchisches ER-Diagramm versus HERM Diagramm Mod IS IS ADD Web IS Professor CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 171 Aggregation: Wir können die Konstruktion von Relationship-Typen zu einer allgemeinen Aggregationskonstruktion erweitern, indem wir weitere Konstruktoren zulassen: • Vereinigung, • Mengenbildung, • Aggregation durch Beziehungsklasse und • Abstraktion durch Komponentenbildung. Klassen werden mit der hochgestellten Annotation ‘C’ und dem Typnamen bezeichnet. Z.B. sind PersonC und InGruppeC Klassen entsprechenden Typs. IsA-Beziehungen können auf sehr unterschiedliche Art repräsentiert werden, ebenso wie unterschiedliche Schemata letztendlich das gleiche darstellen können. Three different styles are depicted in Figure 8. We prefer the compact style in the left diagram. Person Person 6 Professor 6 Professor Person 6 IsA Professor Abbildung 8: Variants for Representation of Unary Relationship Types IsA-Typen: hier wurde partielle, nicht disjunkte Darstellung über Teiltypen bevorzugt, denkbar sind jedoch verschiedene Typen: 1. partiell, nicht disjunkt; dieser Fall wird als der typische Fall angenommen (keine weiteren semantischen Informationen) Im HERM darstellbar über unäre Teiltypen. Person ⊇ Professor ∪ Mitarbeiter ∪ Student E ⊇ E1 ∪ ... ∪ En 2. partiell, disjunkt die Teiltypen erfüllen eine Exklusionsbeschränkung Person ⊇ Professor ∪ Student E = E1 ∪ ... ∪ En 3. total, nicht disjunkt E = E1 ∪ ... ∪ En Projektmitarbeiter = Professor ∪ Mitarbeiter ∪ Student 4. total, disjunkt E = E1 ∪ ... ∪ En Studenten = StudImVordiplom ∪ StudImHauptstudium ∪ Diplomand Weiterhin kann auch für die Spezialisierung mit Partitionsbedingung eine analoge Strukturierung betrachtet werden (wird auch in den meisten Büchern ‘vergessen’): 1. partiell, nicht disjunkt E ⊆ E1 ∪ ... ∪ En Teilnehmer ⊆ Vortragender ∪ Organisator ∪ NormalerTeilnehmer 2. partiell, disjunkt E ⊆ E1 ∪ ... ∪ En Literatur ⊆ Buch ∪ Preprint ∪ Zeitschrift 3. total E = Mod IS siehe oben Generalisierung 6= (Spezialisierung)−1 E1 ∪ ... ∪ En IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 172 Gewöhnlich wird in der Literatur nur versimplifizierend die IsA-Beziehung als strukturelle Beziehung betrachtet. Richtig ist aber die IsABeziehung im vollen Typeninhalt zu betrachten: Typ = Struktur + Operationen + Semantik In diesem Fall wird die Richtung der Vererbung bekanntgegeben. Damit dann besser modellierbar: • Vererbung von Eigenschaften von Teiltyp nach Supertyp • Vererbung von Eigenschaften von Supertyp nach Teiltyp (als Weiterbenutzung, Wiederverwendung) • Operationen des Teiltyps sind operationale Spezialisierung der Operationen des Supertyps (wenn im supertyp definiert) • Semantik des Teiltyps (eingeschränkt auf im Supertyp darstellbares) folgt aus Semantik des Supertyps Unterschied zur Vorlesung Informationssysteme (4. Semester) Oft wird mit dem IsA-Typen eine Mixvererbung verbunden. Das Liskov-Substitutions-Prinzip (Methoden, die Zeiger oder Referenzen auf Basisklassen benutzen, müssen in der Lage sein, Objekte von abgeleiteten Klassen zu benutzen, ohne es zu bemerken! Es ist eine andere Formulierung von totalem Polymorphismus. Wenn es für jedes Objekt O1 vom Typ S ein Objekt O2 vom Typ T gibt, so daß sich für alle Programme definiert in T das Verhalten nicht ändert, wenn O2 durch O1 ersetzt wird: Dann ist S eine Subtyp von T .) bei der Vererbung ist nur dann erforderlich, wenn die Objekte wie in Java oder UML zugleich um alle Attribute des Supertypen im Subtypen angereichert werden. Begründung: Die Vererbung von Beziehungen des Supertypen erfolgt im Schema ohnehin aufgrund der Integritätsbedingungen. Die automa- tische Anreicherung um alle Attribute des Supertypen bringt eine erhöhte Redundanz an Werten, die zudem noch gepflegt werden müssen. Alternativen in der Darstellung Abstraktionskonzepte, die in der Informatik entwickelt worden sind: • Spezialisierung und Generalisierung: Objekte sind (entgegen der üblichen Salami-Slice-Modellierung) selbst strukturiert und können in spezielle Rollen oder auch in Zusammenfassungen wirksam gemacht werden. • Dekomposition: Das ist das Prinzip der Trennung einer Abstraktion in ihre Komponenten. • Instantiierung: Dies wird im zusammenhang mit der Erstellung von Instanzen einer Klasse angewandt. • Individualisierung: Ähnliche Objekte werden für gemeinsamme Zwecke zusammengefaßt. Begründung: Abstraktion dient der Verkürzung und sollte nicht mit anderen Methoden verwechselt werden. Grundlagen aus der Theorie der Informationssysteme Vererbung, Polymorphie, abstrakte Klassen, Klassenhierarchien und dynamische Binding sind in der objektorientierten Programmierung in einer spezifischen Form verwendet worden. Sie sind i.a. viel breiter als in der spezifischen dort verwendeten Form. Begründung: Die Grundlagen von Vererbung, Polymorphie, Objektidentifikation, Prototypen, Generizität etc. sind noch nicht ausreichend verstanden und erforscht. So wird z.B. in einer Subtypenbeziehung eine (unselige) Diskussion zur Kovarianz und Kontravarianz geführt, wobei man eigentlich das Subtypenkonzept meint. Statische Integritätsbedingungen: Die Semantikspezifikationssprache umfaßt Schlüssel und Integritätsbedingungen, wie funktionale Abhängigkeiten, Exklusions- und Inklusionsabhängigkeiten, mehrwertige Abhängigkeiten, VieleEins-Bedingungen, Seinsbedingungen (Existenzbeziehung), Verweisbedingungen, Teiltypenbedingungen und Regeln, wie z.B. die Gesamtheitsregel, die Verneinungsregel und die Sichtregeln, sowie vor allem Komplexitätsbedingungen (Kardinalitätbedingungen) zur Spezifikation der Beziehung zwischen einem Relationship-Typen und seinen Komponenten. Unterscheidung (s.o.) von Generalisierung von Typen zur Zusammenfassung gleichartiger Beziehungen, gleichartigen Verhaltens Spezialisierung von Typen mit Einführung zusätzlicher Charakteristiken (Attribute) und zur Spezialisierung des Verhaltens u.a. auch Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 173 • Auszeichnung von Rollen • Darstellung von Zusatzeigenschaften, ggf. auch optionaler Eigenschaften • Darstellung von Teiltypen Unterschiede von Generalisierung ... Spezialisierung ... Beispiel: Verantwortlichkeit tbd Mehrdimensionale Modellierung Im Schema in Bild 9 beobachten wir mehrere Dimensionen, die relativ unabhängig voneinander betrachtet werden können: • Gegenstandsdimension, z.B. Partei, Person, Position und Organisation • Klassifikationen, hierarchische und andere Untergliederungen • Organisationsmodelle • Bedienungsmodelle und deren Komponenten, z.B. Verantwortlichkeit, Verantwortlichkeitsbereich Protocol I Product type Y Position k Business hierarchy Kind of ¾ business Person - Kind ¾ of hierarchy 6 ¾ Hierarchy based on -Organization¾ type is of type ? - Organi- ? Time slot zation son ¾ µ - Party type 66 server client ª server Party ¾ ¾ Responsibility -Responsibility type L client 66 Rule Party hierarchy Resource type ?? Responsibility Amount range I Quantity ? Product hierarchy Range type µ father Structure ? Responsibility¾ hierarchy -Responsibility contract Layered hierarchy 6 Hierarchical hierarchy Abbildung 9: A generic model of responsiblities Theorie und Technologie der mehrdimensionalen Schema-Architekturen: Siehe R. Noack, B. Thalheim, EJC 2013 !!! 2.2.3 Nullwerte sind keine Werte sondern Marken • state of the art: wide utilisation of misinterpretation of NULLs, wrong implementation support, confusing logics • null marker logics Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 174 C.J. Date (Logic and Databases - The roots of relational theory (2007), 117): “I apologize for the wording “contains a null”; as I’ve written elsewhere, to talk about anything “containing a null” actually makes no logical sense. Indeed one of the problems with nulls is precisely that you ca‘’t talk about them sensibly! ... the entire topic is a perfect illustration of The Principle of Incoherence ... ” (228): “... nulls are ipso facto nonsense ... E.F. Codd (The Relational Model for Data Management, Version 2 (1990), 172): The basic principle of the relational approach to missing information is that of recording the fact that a db-value is missing by means of a mark (originally called a null or null value). There is nothing imprecise about a mark: a db-value is either present or absent in a column of a relation in the database. (197) ... the way the relational model deals with missing values appears to be one of its least understood part. Chris J. Date’s Arguments • We need a proof that in particular situations NULL’s can’t never give wrong answers. CJD has already shown that in generally NULL’s can result in wrong answers. NULL’s can give wrong answers and at the same time correct answers. • Three-valued logics does not solve the NULL value problem. • NULL’s are mixing predicates and appear due to bad modelling techniques. • The introduction of NULL’s destroys strong typing in the relational database model. • Approaches that are better: default (or better special) values for representation of the situation (CJ Date), Hugh Darween (the third gen. manifesto), David Mc Govern (Relational DB writing) Siehe Vorlesung Datenbankprogrammierung: Der Albtraum der Nullwerte-Programmierung. Siehe Habilitationsschrift von H.-J. Klein mit fünfwertiger Logik. Lösung: Siehe K.-D. Schewe, B. Thalheim, EJC 2010!!! Modelling Advices • NOT NULL - wherever applicable • NULLs need additional implementation effort, e.g. an extra bit • NULLs require specific storage formats, indexes, search support y in any case better: DEFAULT • Usage of conventions, e.g. ISO for gender 0 - unknown; 1 - male; 2 - female; 9 - not applicable • Special support for arithmetic functions: explicit assignment (unknown, not applicable (-1, ..., nonsense ... 0) • NULLs are also used if domain types do not support special values y extend the domain type A Simplified But Almost Real Application CREATE TABLE Student ( MatriculationNo StudNo MainProgram CHAR(6) CHAR(6) VARCHAR(20) could be NULL our internalisation could be NULL, could be more than one far too simple might be more than one Name VARCHAR(50) SecondaryProgram VARCHAR(20) PRIMARY KEY (StudNo) FOREIGN KEY (MainProgram) REFERENCES ProgramAtCAU (ProgName) ON DELETE RESTRICT ... ); CREATE TABLE Enroll ( our internalisation StudNo CHAR(6) Course CHAR(8) Term VarCHAR(7) full of beans EnrollmentCondition VARCHAR(10) Grade VARCHAR(3) that is a devils invention PRIMARY KEY (StudNo, Course, Term) ... ); Mod IS IS ADD Web IS unknown unknown known under change known under change Stud ent 175 Gues t Bach not yet decided not exists not exists Grad never exists never exists not yet decided & Ma ster ed C erti f Dipl ific Cert Special condition ate ent stud oma After course Dipl During course ab SS 2012 elor icat e Di plom a 2. Strukturierung von IS oma CAU zu Kiel, IfI, ISE, β not applicable not applicable potentially known 14 (or 20) Kinds of NULL ‘Values’ in Databases 1. The property is not applicable for this object but belongs to this class of objects. 1.1. Independently from the point of time t. “not applicable” 1.2. At the current point of time t. “currently not applicable” 2. The property does not belong to the object. 2.1. The property is not representable in the schema. 2.1.1. Due to changes of value type (temporarily, fuzzy, ...). “many-typed” 2.2. The property is representable in the schema. 2.2.1. But there is no value for the object. “unknown” 2.2.1.1. Because it has not been transferred from another database. 2.2.1.2. Because is has not yet inserted into the database. “existential null” 2.2.2. The value for the property exists but is “under change”. 2.2.2.1. However the value is trackable. 2.2.2.1.1. But is at the moment forbidden. 2.2.2.1.2. At the moment permitted. 2.2.2.1.2.1. But not defined for the database. 2.2.2.1.2.1.1. Because it is currently under change. 2.2.2.1.2.2. The value is defined for the system. 2.2.2.1.2.2.1. But is currently incorrect. 2.2.2.1.2.2. But is currently doubtful. 2. The property does not belong to the object. 2.2. The property is representable in the schema. 2.2.2. The value for the property exists but is “under change”. 2.2.2.2. The value is not trackable. 2.2.2.2.1. Because of changes. 2.2.2.2.2. Because of reachability. “place-holder null” 2.2.3. There are several values for the property of this object. “partial null” (2.2.3.1., 2.2.3.2.1, 2.2.3.2.2. similarly to 2.2.2.) “nondeterministic” 2.2.4. There is no value for the property of this object. “not exists” 2.2.5. There is never a value for the property of this object. “never exists” 3. The property is may-be applicable for this object but it unknown whether it is true for the object in this case. “may-be null” 3.1. It is not known whether the property is applicable to the given object. If it is applicable then its value for this property is taken from certain domain. “partial may-be null” Who can reason with this variety? Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 176 2.3 Statische Integritätsbedingungen At present we know at least five application fields of database constraints theory: (1) normalization for a more efficient storage, search and modification; (2) reduction of relations to subsets with the same information together with the semantic constraints; (3) utilization of dependencies for deriving new relations from basic relations in the view concept or in so-called deductive databases; (4) verification of dependencies for a more powerful and user-friendly, nearly natural language design of databases; (5) transformation of queries into more efficient search strategies. A large number of structural and dynamical database constraints have been introduced in the past. We must however acknowledge that a fully fledged theory of database constraints is not yet existing. Separation of Integrity Constraints by Their Use and Usage. There are several classifications for integrity constraints: • either utilization characteristics are used for classification into domain constraints, key and functional dependencies, referential integrity constraints, join dependencies etc. • or their specific format of the formulas is used for classification into tuple-generating dependencies, equality-generating dependencies, existence constraints, single-table constraints, singleton-tuple constraints, etc. These characterizations are useful whenever constraints are formally defined. Their practical utility is, however, more restricted. Another characterization approach has been used in [Tha00] by relating constraints to the phase of database modelling into design, structural, semantic and representational constraints. We may combine the three approaches by clustering constraints according to their structural properties into • constraints expressing identification or partial identification of values by other values, • constraints stating relative independence of values in a class or within an object, • constraints stating existence (or non-existence) of values in an object, or values in groups of objects, or objects in a class, and • constraints expressing redundancy of values or objects. At the same time we may distinguish constraints according to their utilization in the design process. They might be meaningful at the level of the user, or at the level of the conceptual schema or at the level of the implementation. The following table shows this characterization. Partial identifi- Relative independence Existence dependency Redundancy dependencation cy Business identification structure no null elementary facts user level Conceptual functional, multivalued, hierarchical, join null-value-free, union inclusion constraint, exlevel equality genera- dependencies, exclusion depen- constraints, numerical, clusion constraint ting dency, tuple generating, hori- cardinality constraint zontal decomposition Implemenkey, uniqueness, decomposition, stored procedu- no null, stored procedu- referential integrity, surtation level trigger, check res, trigger res, trigger rogate, container Quality Criteria for Constraint Sets. Database systems aim in automatic support of quality. There are a number of quality criteria that have classically been considered in many textbooks and papers. Structural quality criteria are structural completeness, satisfiability of the schema, liveness of the database, applicability of automatic control features, explicit exception handling, applicability of operations, executability of operations and framing consistency procedures. The first three conditions are well discussed in the database literature. Automatically generated tests and control conditions are still an open research field. Operations are currently mainly applied based on the transaction approach, i.e., forcing a rollback after problems have been detected. Exception handling and execution control use the same approach. The framing or ramification problem is not yet solved. It requires a separation within a database into data that are not affected by a change and into data that are under potential change. A typical example of non-framed executions are trigger avalanches. Quality control must also consider the abstraction level of the stakeholder involved. Integrity constraints may be ambiguous or may be based on context or ellipses. We therefore need an explicit statement of the abstraction level. For instance, join dependencies are a specific vehicle for structuring the database. They are not used by the requirements engineer. There are however specification constraints at the requirements level that must be mapped to the internal levels. Optimisation of Behaviour Through Normalisation of Database Structuring. Normalisation has been developed as a vehicle for performance improvement of database systems. It addresses at least seven different targets: (A) Redundancy becomes problematic whenever additional actions are required for consistency management of data that are stored within different objects. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 177 (B) Blocking of management due to the information capacity of the schema. For instance, the insertion anomaly occurs since units of storage such as schema types do not support insertion of partial information. (C) Information loss after database modification occurs whenever data are eagerly deleted despite the importance of parts of it. The deletion anomaly is observed whenever facts are deleted together with the objects where they are contained despite its importance for the application. (D) Evolution sensitivity and instability of the database whenever changes are applied to the database. (E) Different abstractions are used for the database schema at the same time. For instance, views, derived attributes, logs are stored together with the basic data that are used to derive these values. (F) Performance problems can also be solved through restructuring. Typical performance problems considered are caused by integrity constraint maintenance. Update anomalies have been considered as a prominent example of a performance problem since singleton fact operations resulted in complex bulk operations. Performance problems are however also caused by architectures chosen for the application, by specific behaviour of the application, by retrieval requirements, by generation and maintenance of supporting structures such as indexes, etc. The last set of performance problems is often resolved by denormalisation, i.e., by intentional acceptance of another normalisation. Denormalisation may decrease complexity of retrieval and maintenance operations, may avoid additional join operations and may prepare special derived data for support of repeating computations. It allows us to consider semantically meaningful units instead of normalised structures. Index management is optimised. Denormalisation increases however complexity of some database operations, leads to redundancy problems, may result in inflexibility against evolutionary changes. (G) Expensive maintenance, operating and modification of databases often occurs due to consistency maintenance. Parallel execution of transactions may result in deadlocks. As far as we know there is not yet any theory that integrates the six targets of normalisation. Moreover, (A), (C) and (G) are considered to be the primary issues. 2.3.1 Statische Integritätsbedingungen von HERM Statische Integritätsbedingungen werden als Formeln der hierarchischen Prädikatenlogik allgemein dargestellt. Wir verwenden jedoch die üblichen Kurzdarstellungen. Wir gehen davon aus, daß statische Integritätsbedingungen einer Interpretation mit einer “Normallogik” unterliegen. Mitunter wird auch im Entwurf eine Integritätsbedingung mit einer schwachen, deontischen Interpretation benutzt, bei der ihre Gültigkeit für die meisten Objekte einer Datenbank oder einer Klasse gefordert wird. Mitunter wird auch eine strikte Form der Interpretation genutzt, bei der z.B. obere bzw. untere Schranken für Kardinalitätsbeschränkungen auch durch entsprechende Objektmengen genau erfüllt sein müssen. Wir verwenden im weiteren folgende Klassen von Integritätsbedingungen: Schlüssel dienen der Darstellung der Identifizierbarkeit von Objektmengen, insbesondere in Entity-Klassen). Wir nehmen an, daß Entity-Klassen stets eigen-identifiziert sind, d.h. Mengen sind. Eine Teilmenge der Strukturelemente kann auch als Schlüssel dienen. Gewöhnlich hat jeder Typ mehr als einen Schlüssel. Deshalb verwenden wir von vornherein Schlüsselmengen. Der Primärschlüssel eines Entity-Typs wird direkt angegeben und kann in der Schlüsselmenge weggelassen werden. Wir nehmen z.B. für das Diagramm in Bild 6 folgende Schlüssel an: Key(Person) = { { PersNr }, { Name, Geburtsdatum } } Relationship-Typen haben ggf. auch eigene Attribute, die auch Bestandteile eines Schlüssels sind. Zum Beispiel nehmen wir für das obige Beispiel an, daß die Zeit essentiell für InGruppe ist, d.h. oder Key(InGruppe) = {{ Person, Gruppe, Zeit }} Key’(InGruppe) = {{ Person, Gruppe, Zeit, Funktion }} Weiterhin kann z.B. gelten Key(Vorlesung) = { {Kurs, Semester}, {Semester, Raum, Zeit}, {Semester, Dozent, Zeit} } Schlüssel folgen der Komponentenkonstruktion und können auch für einen Teil gelten, z.B. Name(Vornamen<(Vorname,use)>, FamName). Mindestens ein Schlüssel wird über die Komponente an den Relationship-Typen ‘vererbt’. Schlüsselvererbung aus den Komponenten heraus z.B. in Bild 28: • Projekt, Institution, Mitarbeiter, Labor besitzen ihre Schlüssel; jeweils einer davon kann ausgezeichnet sein Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 178 • fördert leitet, arbeitet in, zugeordnet erben die Schlüssel der jeweiligen Elemente zur Identifikatioon der Relationships in den jeweiligen Relationship-Klassen • analog kann auch ein Relationship-Typ höherer Ordnung seine Identifikation durch die Identifikation der Komponenten beziehen • ggf. kann auch für einen Relationship-Typen gelten, daß einige seiner Attribute für die Identifikation mit herangezogen werden Unterschied zur Vorlesung Informationssysteme (4. Semester) Es wird oft Schlüssel anstatt minimaler Schlüssel und Superschlüssel anstatt Schlüssel verwendet. Begründung: Dies entspricht der ursprünglichen Herangehensweise von E.F. Codd und seinen Nachfolgern. Sie ist jedoch veraltet. Grundlagen aus der Theorie der Informationssysteme µ Leider existieren maximal (wobei diese Grenze exakt ist) n ¶ b n2 c minimale Schlüssel für Typen mit n Komponenten. Diese Schätzung wird auch nicht besser im Falle von begrenzten Wertetypen, z.B. 4 | dom(Bi ) |≤ k (1 ≤ i ≤ n) für k < 2n µ ¶ n b n2 c +1 n −b c 2 Es besteht jedoch ein besseres Verhalten im mittleren Fall. Siehe Seleznev/Thalheim. Begründung: Siehe B. Thalheim: Dependencies in Relational Databases. Teubner, Leipzig, 1991. Funktionale Abhängigkeiten sind eine wichtige Gruppe von Abhängigkeiten. Eine funktionale Abhängigkeit R : X → Y ist für einen Typ R und Teilmengen X, Y seiner Elemente definiert. Sie gilt in einer Klasse RC , falls die Gleichheit von Objekten o, o0 aus RC über X die Gleichheit über Y für o, o0 impliziert. Funktionale Beziehungen von Attributgruppen in unserem Beispiel sind geplanteLV : {Semester, Zeitrahmen, Raum} → {{Studiengang}, Professor, Kurs} geplanteLV : {Professor, Semester, Zeitrahmen} → {Kurs, Raum} angeboteneLV: {Semester, Kurs} → {Professor} . Grundlagen aus der Theorie der Informationssysteme maximum number N (n) of basic functional functional dependencies for types on n components ! à 3 µ ¶ 4 log2 log2 n log22 n n n √ 2 1− (1 + o(1)) ≤ N (n) ≤ 2 1− log2 e log2 n 150 n minimal generating sets of fd’s (n odd; n even (replace n12 by µ n ¶ b n2 c 1 + 2 n closed families of fd’s (b nn2 c) 2 (J. Demetrovics, G.O.H. Katona, D. Miklos, µ n (n+3) 2 1 5 )) n2 2n 8 à ¶ n ≤ M (n) ≤ 2 ≤ Cl(F, n) ≤ 2 3 log22 n √ 1− 150 n ! (b nn2 c)(1+o(1)) β (1982-2006)) Begründung: Damit ist eine vollständige Spezifikation von allen notwendigen geltenden funktionalen Abhängigkeiten nicht möglich! Grundlagen aus der Theorie der Informationssysteme Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 179 rather than describing the entire set of basic functional dependencies use a Armstrong relations RC which allows to reason on the set of constraints µ ¶ µ ¶ 1 n n ≤ L (n) ≤ +1 {key} n2 b n2 c b n2 c size however k−1 k−1 c1 n 2 ≤ L{key(k)} (n) ≤ c2 n 2 µ ¶ µ ¶ 1 n n c3 ≤ LF (n) ≤ (1 + √ ) n2 b n2 c b n2 c n (J. Demetrovics, G.O.H. Katona & other Hungarians, β (1982-2005)) Begründung: Armstrong-Relationen stellen also auch keinen Ausweg dar! Alternativen in der Darstellung Anstatt mit logischen Formeln zu rechnen, kann man auf die Boolesche Repräsentation von funktionalen Abhängigkeiten zurückgreifen. Diese kann auch für funktionale und mehrwertige Abhängigkeiten (sogar hierarchische Abhängigkeiten!!!) verwendet werden und ist um einiges einfacher als die klassische Kalkül-Ableitung. Auch Chase ist nicht einfacher. Begründung: Representable by Boolean functions: Represent A by pA X = {C1 , ..., Ck } by τ (X) = pC1 ∧ ... ∧ pCk τ (X → Y ) = τ (X) → τ (Y ) τ (X →→ Y1 | Y2 | ... | Ym ) = τ (X) →→ (τ (Y1 ) ∨ τ (Y2 ) ∨ ... ∨ τ (Ym )). {α1 , ..., αk , β} functional and hierarchical dependencies {α1 , ..., αk } |= β iff (τ (α1 ) ∧ ... ∧ τ (αk )) → τ (β) = 1 Kardinalitätsbeschränkungen werden als kombinatorische Beschränkungen in der (min,max)-Notation und der PartizipationsSemantik als Paar von Kardinalitäten verwendet. Damit unterscheidet sich unsere Notation von der Lookup-Semantik, die z.B. UML verwendet. Die letztere kann jedoch in einer n..m-Notation ebenso mitgeführt werden. Wir betrachten hierzu ein vereinfachtes Diagramm in Bild 10. 0..2 (0,n) Resultat (gehaltene) Vorlesung setztVoraus 6 (0,2) 3..4 ¾ (1,n) vorausgesetzt 6 (3,4) 0..2 legtab Ablageform (0,n) Voraussetzung ? Student Abbildung 10: Kardinalitätsbeschränkungen im Vorlesungsbeispiel Eine Kardinalitätsbeschränkung card(R, Ri ) = (n, m) RC mindestens n-mal und höchstens m-mal vorkommt. gilt in einer Klasse RC , falls jedes Objekt oi von RiC in Eine Kardinalitätsbeschränkung card(R, Ri ) = (n, 1) für R = (R1 , ...., Rn , attr(R)) ist äquivalent zur funktionalen Abhängigkeit R : Ri −→ R1 , ...., Ri−1 , Ri+1 , ..., Rn . Eine Kardinalitätsbeschränkung card(R, Ri ) = (1, m) für R = (R1 , ...., Rn , attr(R)) ist äquivalent zur Inklusionsabhängigkeit R : Ri ⊆ πRi (R). Eine Kardinalitätsbeschränkung in der Lookup-Notation look(R, Ri ) = (n, m) gilt in einer Klasse RC mit k Elementen, falls zu jeder Kombination von Objekten oj von RjC (j 6= i, 1 ≤ j ≤ k) mindestens n und höchstens m entsprechende Objekte oi aus RiC in der Klasse RC vorkommen. Im Fall binärer Relationship-Typen ohne Attribute, die zur Identifikation von Relationships herangezogen werden müssen, kann man damit einem Objekt o von Ri mindestens n und höchstens m Objekte aus RjC zuordnen, d.h. das Objekt sieht vermittels RC höchstens m und mindestens n Objekte aus der anderen Klasse. Wir erhalten damit das folgende Bild: Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 180 C A (a,b) ¾ c...d A with B (c,d) a ...b A Abbildung 11: Kardinalitätsbeschränkungen im Vorlesungsbeispiel Diese Beziehung zwischen lookup und participation-Bedingungen gilt allerdings nicht, wenn die Attribute C bei der Identifikation des Relationship-Typen herangezogen werden!!! Eine Kardinalitätsbeschränkung look(R, Ri ) = (n, 1) für tionalen Abhängigkeit R : R1 , ...., Ri−1 , Ri+1 , ..., Rn −→ Ri R = (R1 , ...., Rn , attr(R)) ist äquivalent zur funk. Eine Kardinalitätsbeschränkung look(R, Ri ) = (1, m) für R = (R1 , ...., Rn , attr(R)) ist äquivalent zur verallgemeinerten Inklusionsabhängigkeit R : ∀oi ∈ RiC ∃(o1 , ..., oi−1 , oi+1 , ..., on ) ∈ πR1 ,....,Ri−1 ,Ri+1 ,...,Rn (RC ) : (o1 , ..., oi−1 , oi , oi+1 , ..., on ) ∈ πR1 ,....,Ri−1 ,Ri ,Ri+1 ,...,Rn (RC ) . Sie kann auch durch RiC ⊆ πRi ( RiC × πR1 ,....,Ri−1 ,Ri ,Ri+1 ,...,Rn (RC ) ) dargestellt werden. C C , Ri+1 , ..., RnC anstelle der Projektion verstanden. Diese Manchmal wird sogar das Kartesische Produkt von R1C , ...., Ri−1 Interpretation wurde z.B. UML unterlegt. Trotzdem sind Lookup-Abhängigkeiten auch von Nutzen. Man betrachte z.B. Bild 12. Die Lookup-Bedingung 0..1 impliziert direkt ein Pivoting im Schema auf der rechten Seite, das relativ natürlich scheint. Kurs ¾ (a,b) Angebot 0..1- verantwortl. Person look(Angebot, ver Person Semester 6 6 ? Kurs Semester ¾ Angebot ¾ Verantwortlicher 0..1 Abbildung 12: Kardinalitätsbeschränkungen im Vorlesungsbeispiel 0..1 Wird dagegen auch noch komposition in Bild 13. Semester ¾ card(Angebot, Kurs) = (0, 1) Angebot (0,1) Kurs gesetzt, dann ergibt sich natürlich eine viel stärkere De- ¾ Verantwortl. (0,1) - Person Abbildung 13: Kardinalitätsbeschränkungen im Vorlesungsbeispiel Die Lookup-Notation ist für binäre Relationship-Typen ohne eigene Attribute äquivalent zur Partizipation-Notation. Sie wird jedoch am anderen Element angetragen. Im Beispiel nehmen an, daß card(Voraussetzung, setztVoraus) = (0,2) look(Voraussetzung, setztVoraus) = 3..4 card(Voraussetzung, vorausgesetzt) = (3,4) look(Voraussetzung, vorausgesetzt) = 0..2 gilt. Damit haben wir äquivalente Formen. Für n-äre Relationship-Typen ohne eigene Attribute ist die Lookup-Notation look(R, Ri ) = n..m äquivalent zur verallgemeinerten Kardinalitätsabhängigkeit card(R, R \ Ri ) = (n, m) . In unserem Beispiel gilt z.B. die Einschränkung, daß erst dann ein Eintrag in die Klasse legtab geführt wird, wenn der Student eine Vorlesung erfolgreich abgelegt hat. Die Lookup-Bedingung look(legtab, Ablageform) = 0..2 stellt dar, daß nur Prüfung und Schein bzw. Schein und Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 181 Praktikum bzw. Prüfung und Praktikum absolviert werden müssen. Diese Bedingung ist äquivalent zu card(legtab, Student Vorlesung) = (0,2). Eine Kardinalitätsbeschränkung card(R, Ri ) = (0, 1) ist äquivalent zur funktionalen Abhängigkeit R : {Ri } → R . Eine Lookup-Kardinalitätsbeschränkung look(R, Ri ) = 0..1 ist äquivalent zur funktionalen Abhängigkeit R : R \ {Ri } → R . Spannend ist das Zusammenwirken von card und look. Wir betrachten z.B. einmal einen Relationshiptypen in Bild Weiterhin können wir z.B. fordern, daß nur solche Vorlesungen als gehalten gelten, die auch zu studentischer Beteiligung geführt haben. Dies wird durch card(legtab, Vorlesung) = (1,n) dargestellt. Eine strengere Bedingung ist, daß dies auch für das Semester gelten muß. Dann können wir spezifizieren look(legtab, Student) = 1..n bzw. card(legtab, Vorlesung Semester) = (1,n). Für Relationship-Typen mit eigenen Attributen ist die Lookup-Notation in verschiedenen Formen definiert. (DBIV,SS2002,β) ◦ ◦ ◦ ◦ ◦◦ Schein ◦ (DBI,WS2002,β) (Compiler,SS2002,PB) ◦◦ (Informatik III,WS2002,BvB) ◦ ◦ ◦ ◦ Prüfung ◦ Praktikum ◦ (Informatik III,WS2003,β) Antje Bärbel Cornell Doris Emil Fjodor Abbildung 14: Beziehungen der Objekte im Vorlesungsbeispiel Wir betrachten in diesem Beispiel in Bild 14 eine kleine Klasse mit 14 Objekten. Z.B. hat Bärbel sowohl die (Informatik III,WS2002,BvB) als auch (DBIV,SS2002,β ) mit Prüfung und Schein abgelegt, Emil dagegen nur Scheine in (Informatik III,WS2002,BvB) und (DBI,WS2002,β ). Kardinalitätsbeschränkungen sind mitunter nicht erfüllbar in nicht-leeren, endlichen Klassen. Ein Beispiel einer solchen nicht-erfüllbaren Menge von Integritätsbedingungen ist das Paar card(Voraussetzung, setztVoraus) = (0,2) card(Voraussetzung, vorausgesetzt) = (3,4) . Wir können dies einfach nachvollziehen, indem wir eine endliche Menge von Vorlesungen z.B. {a, b, c, d, e} betrachten. Mit der Kardinalitätbeschränkung card(Voraussetzung, vorausgesetzt) = (3,4) kann man z.B. folgende Besetzung für Voraussetzung betrachten: {(a, b), (a, c), (a, d)} wird dann weiter fortgeführt zu {(a, b), (a, c), (a, d), (b, a), (b, c), (b, d)}. Damit kommen c, d in keiner Beziehung auf der rechten Seite mehr vor aufgrund von card(Voraussetzung, setztVoraus) = (0,2). Wir setzen also fort mit {(c, a), (c, b), (c, e)}. Nun sind auch a, b “verbraucht”. Dann haben wir bereits für d als linke Seite nicht genug Elemente auf der rechten Seite. Wir benötigen also noch f, g. Wir können nun weiter fortsetzen und erkennen, daß nur die leere und eine unendliche Menge von Vorlesungen diese Kardinalitätsbeschränkungen erfüllen. Dagegen ist card(Voraussetzung, setztVoraus) = (0,3) card(Voraussetzung, vorausgesetzt) = (3,4) erfüllbar und impliziert card(Voraussetzung, setztVoraus) = (3,3) card(Voraussetzung, vorausgesetzt) = (3,3) . Grundlagen aus der Theorie der Informationssysteme Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 182 The diagrams can also be labeled by cardinality constraints. It should be noted that there is little agreement [BDK92] between which edge labels to use and what they mean in ER diagrams. The classical notation (see the first five subfigures in Figure 15) is as follows for binary relationship R = (E, F, attr(R)) (see for instance [EN89, Vos87]): R −→ E is labeled by comp(R, F ) = (n, m) or by 1 if comp(R, F ) ∈ {(0, 1), (1, 1)} or by n if comp(R, F ) ∈ {(l, k)|l ∈ {0, 1}, l < k, k > 1}. The edge R −→ F is labeled by comp(R, E) = (n, m) or by 1 if comp(R, E) ∈ {(0, 1), (1, 1)} or by n if comp(R, E) ∈ {(l, k)|l ∈ {0, 1}, l < k, k > 1}. Begründung: Siehe HERM Buch! types The edge ER-designer E (0,1) R (1,m) F = Classical proposal E ◦ R M (1,m) F Teorey R E comp(R,E) comp(R,F) ◦ F = (0,1) Everest E ◦ F Binary ER models E ¾◦ - F Participation for relationship type E ¾ (1,m) R (0,1) F Abbildung 15: Lookup and Participation Representation Grundlagen aus der Theorie der Informationssysteme Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 183 Using the participation approach another labeling concept can be introduced. Assume a relationship type R = (R1 , ..., Rk , {A1 , ..., Al }). 1 ≤ j ≤ k , the edge R −→ Rj can be labeled by comp(R, Rj ) = (n, m) or by 1 if comp(R, Rj ) ∈ {(0, 1), (1, 1)} or by n if comp(R, Rj ) ∈ {(l, k)|l ∈ {0, 1}, l < k, k > 1}. For 1 ≤ j ≤ l, the edge R −→ Aj can be labeled by dom(Aj ). For The difference between definitions and labeling in diagrams is illustrated in Figure 17. In [SS83] a similar notion is used for binary relationship types. Since the first notation cannot be extended to ternary relationships, in [Teo89] cardinality constraints for ternary relationships are marked by E1 -corner comp(R, E2 E3 ) ≤ (1, 1). shaded areas in the relationship type triangle, provided that the relationship type is “many”. More concretely, for instance, the of the triangle which represents the relationship type This notation is complicated, and R = (E1 , E2 , E3 , attr(R)) is not shaded if comp(R, Ej )-cardinality constraints are not represented. This proposal could be extended to quadrary relationship types, but then we lose information about the other cardinality constraints. Figure 16 shows that this generalization represents different semantics. The representation by Teorey can be used to represent the constraints P aper, Conf erence → F irstAuthor P aper, F irstAuthor → Conf erence which are implied by the constraint P aper → F irstAuthor, Conf erence . Other books either avoid the question or present examples for binary relationship types. [TL82] states that “the semantics of ternary and higher-order relationship sets can become quite complex to comprehend.” Begründung: Siehe HERM Buch! Paper → FirstAuthor, Conference comp(Submitted,Paper) = (0,1) Paper (0,1) ¾ Submitted - First Author ? Conference Teorey’s proposal Paper,Conference → FirstAuthor Paper, FirstAuthor → Conference First Author Paper I µ Submitted ? Conference Abbildung 16: Different Semantics Represented by Teorey’s Approach Mehrwertige Abhängigkeiten stellen im Entwurf i.a. die Separation von Gesichtpunkten bzw. Aspekten dar. Sie werden oft weggelassen, da ihre mathematische Notation schwierig nachzuvollziehen ist. Eine mehrwertige Abhängigkeit X → → Y |Z wird für einen Typ R = (UR , ΣR ), mit Teilmengen X, Y ⊆ UR und Z = UR \ (Y ∪ X) definiert und gilt in einer Klasse Relation RC über R (dargestellt durch RC |= X →→ Y |Z ), Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS (1,1) Review ¾ ab SS 2012 184 (0,m) (0,1) (1,m) - Paper ¾ Published - Journal For 6 (1,m) Wrote (1,m) ? (1,m) (0,m) - Institute Author ¾ Works Teorey ◦ (0,m) ◦ ER-designer (1,1) (1,m) (0,1) (1,m) (1,m) (0,m) ◦ (1,m) Binary Everest ◦ ¾ ¾◦ ◦ - ¾ ¾ 6 6 ? ? ¾ ¾◦ ◦ ◦- - Abbildung 17: Different Notions for a Paper Reviewing Database falls für alle o, o0 ∈ RC , die den gleichen Wert für die X-Elemente von R haben, ein Objekt o00 in RC existiert, das aus der Faltung von o und o0 hervorgehen kann, d.h. formal für alle o, o0 ∈ RC mit o =X o0 existiert ein Objekt o00 ∈ RC mit o00 =X∪Y o und o00 =X∪Z o0 . Eine nützliche, allgemein bekannte Eigenschaft von mehrwertigen Abhängigkeiten ist die Dekompositionseigenschaft. Es gilt RC |= X →→ Y |Z genau dann, wenn sich RC nach X ∪ Y und X ∪ Z vertikal dekomponieren läßt, d.h. formal RC = RC [X ∪ Y ] 1 RC [X ∪ Z] . Weniger bekannt ist dagegen, daß die Gültigkeit der mehrwertigen Abhängigkeit zu einem neuen äquivalenten Schema führt, bei dem der Typ R durch die dekomponierten Typen wie in Bild 18 ersetzt wird. Y ¾ XY - X ¾ XZ - Z Abbildung 18: Die Zerlegung von R in zwei Relationship-Typen Weitere relationale Integritätsbedingungen, z.B. Wertebereichsabhängigkeiten, können im erweiterten ER-Modell verwendet werden. So gilt in unserem Beispiel Semester.Bezeichnung ∈ {W S, SS} × {x/x+1|x ∈ 80..99, 00, 01, 02, ..., 17} . Andere wichtige Klassen von Abhängigkeiten sind Exklusions- und Inklusionsabhängigkeiten. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 185 2.3.2 Revisiting Database Dependency Theory The Power of Simplicity. Functional and multivalued dependencies are a very powerful and simple class of integrity constraints. It is well-known that their reasoning and deduction can be based on propositional formulas [Tha91a]. At the same time, a simple and powerful axiomatisation can be given for simple dependencies and their negations. As an example we give an axiomatisation for functional and negated functional dependencies: Axioms XY → Y Rules (1) (4) X −→ Y , Y −→ Z X −→ Y , X −→ / Z X −→ Y (2) (3) XV W −→ Y V X −→ Z Y −→ / Z X −→ / Y XZ −→ / YZ X −→ Z , X −→ / YZ Y −→ Z , X −→ / Z (5) (6) (7) X −→ / YZ XZ −→ / Y X −→ / Y X −→ / Y Funktionale Abhängigkeiten umfassen zu viele Aspekte auf einmal. Explicit declaration of partial identification: Functional dependencies are typically explicitly declaring a functional associaIdent tion among components of types. The left hand attribute uniquely identify right side attributes, i.e. X −→ Y . Identification can either be based on surrogate or on natural attributes. Tight functional coupling: Functional dependencies may also be numerical constraints. We denote such constraints by i.e. N um X −→ Y . Another denotation is based on cardinality constraints. Semantic constraint specific for the given application: Constraints may be stronger than observed in usual life since the application has a limited scope and allows to strengthen the constraint. In this case, constraints restrict the application only to those cases in which the left side has only one associated right side value despite that this restriction may not be Sem valid for any application. We denote this case by X −→ Y Semantical unit with functional coupling: Semantical units are those reducts of a type that are essential in the given application. Their components cannot be separated without loosing their meaning. Semantical units may have their inner structure. This structure tightly couples dependent object parts to those that are determining them. We denote this coupU nit ling by X −→ Y . Structural association among units: Semantical units may allow a separation of concern for certain elements. Their separation supports a more flexible treatment while requiring that the dependent part cannot exist without the determining part. Struct If this dependence is functional we may represent such by the constraint X −→ Y . Funktionale Abhängigkeiten als Funktion1 kann direkt ausgelagert werden bereits vor Normalisierung ISBN kodiert bereits den Verlag ISBN/ISSN muß aber nicht für Buch existieren (alte Bücher), kann ggf. auch mehrere Ausgaben mit umfassen oder auch nur genau die Ausgabe mit bezeichnen ist dann tacit knowledge, auf das die anderen Daten aufbauen, das ggf. nicht einen update erfährt Example 1 Let us consider an abstract example with the functional dependencies {A} −→ {B, C} and {B} −→ {D}. TA A (1,1) ¾ TA .to.TB B C TB D The functional dependency {A} −→ {C} declares an explicit and direct dependency among the attributes. The functional dependency {A} −→ {B} is an inter-type constraint and leaves the scope of type TA . These two dependencies are completely different and need different support mechanisms. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 186 The first five cases may be observed for the following instantiations of this example: instantiation Explicit declaration TB = StudyProgram , B = ProgramCode, D = ProgramName Tight coupling TA = Student, TA .to.TB = MajorProgram, TB = StudyProgram Semantic constraint TB = StudyProgram , B = ProgramCode, D = ResponsibleProfessor Semantical unit TB = StudyProgram , B = ProgramCode, D = ProgramDegree Structural association TA = Student, TB = RegisteredStudent, A = PersonID, B = StudentNr Let us consider, for instance, that the type TB represents a study program, and the attributes B represent a program code, D the program name. The functional dependency {B} −→ {D} is an explicit key dependency. If the attribute D represents the professors that are responsible program then we might assume or not assume {B} −→ {D}. This depends on the given application. Therefore the dependency is a semantical constraint. From the other side, if the attribute D represents the program degree then this degree cannot be separated from the values for the program code. In this case the attributes form a semantical unit. Furthermore, in most universities a student is registered for one and only one major degree. The student must have a major program. In this case, the two types Student and StudyProgram are thus tightly coupled. Finally, we can separate the student personal data from the student university data. The person identification number is structurally associated to the student number. This separation results also in a different meaning of derivation rules. For instance, the augmentation rule has a different meaning depending on the kind of functional dependency: Trivilisation of identification Ident R : X −→ Y tR Y 0 Ident R : X tR X 0 −→ Y Adaptation of semantics scope Sem R : X −→ Y tR Y 0 Sem R : X tR X 0 −→ Y We may also use the Armstrong axiomatisation for derivation of functional dependencies of a given kind. The following two rules are examples of refined rules: Ident Sem R : X −→ Y, R : Y −→ Z Ident R : X −→ Z Sem Ident R : X −→ Y, R : Y −→ Z Sem R : X −→ Z Kinds of Key Dependencies.. A key dependency or simply key X is a functional dependency R : X −→ R . A key is called minimal if none of its proper substructures forms a key. The set of all minimal keys of R is denoted ¡ ¢ by Keys(R). We notice that this nset may be very large. For instance, an entity type E with n atomic attributes may have b nn c minimal keys which is roughly c2√n . 2 The key concept reflects a variety of descriptive meanings depending of the level of consideration. Let us distinguish between external, conceptual and internal levels. The meaning of the key concept can be based on the uniqueness property (each object is unique with this key in the database), the identification property (each object can be identified by its key values), the existence property (for each object there exist key values), the integrity property (the database satisfies a key constraint), and the accessibility property (the properties of an object can be accessed through the key values of the object). These meaning are not equally important at all levels: • At the language definition level, the uniqueness concept is used to express the key property. The identifier, existence, integrity and accessibility functionalities are not considered. • The uniqueness concept is inherited by the external level and expressed mainly via the identification property. The existence property plays a secondary role. The integrity and accessibility concepts are not mainly under consideration. • At the conceptual level, the uniqueness concept of the language definition level is inherited by the identification and the integrity property. In order to express the identification concept, the surrogate concept is introduced. The key dependency is the integrity constraint usually used to express the key property. • At the internal level, the uniqueness concept is completely covered by the identification concept. From the external level the existence and uniqueness concepts are inherited and used in implementation restrictions like the requirement of invariant values in keys. The internal levels also inherit the integrity concept of the conceptual level and uses this concept for the accessibility property of the key. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 187 language definition level uniqueness conceptual level internal level ~ identification (surrogate) external level ª U integrity constraint identification (key dependency) j identification z accessibility - invariance existence Abbildung 19: Descriptive meanings of the key concept depending on the levels These descriptive meanings of the key concept are pictured in Figure 19. Beside the descriptive meanings we may also use implementation concepts such as pointers and pragmatic meanings such as naming. Typen mit genau einem minimalen Schlüssel. Menge der Extremalattribute für gegebene Menge Σ von funktionalen Abhängigkeiten und Komponenten R eines Typs T : extr(R, Σ) := {B ∈ R | Σ 6|= R \ {B} −→ {B}} Corollary 1 Folgende Aussagen sind äquivalent: • T besitzt genau einen Schlüssel. • extr(R, Σ) ist ein Schlüssel von T . • Σ |= extr(R, Σ) −→ R. The Power of Graphical Reasoning. FD Graphs.. Functional dependencies are typically treated in a linear fashion. Graphical representation can however be used for reasoning on constraints as well. It is a folklore approach that deserves more attention. Example 2 Given the set UR = {A, B, C, D, E} of attributes and the set σR = {A −→ E, B −→ E, CE −→ D} of functional dependencies. This set can be represented by the following graph: This graph is easier to survey, simpler for reasoning - E - D A CE * B C and contains the full information on σR . Let us consider for instance, the dependency {A, C} −→ E. The derivation can directly be derived from the following ∪Z−→V . schema due to the validity of the left-side extension rule X−→Y,Y X∪Z−→V A AC - D C FD graphs can be axiomatised. This axiomatisation mainly follows the rule system of the Armstrong axiomatisation except that right hand side attributes are limited to singleton attribute sets. This axiomatisation [DMT04] provides the first axiomatisation for FD graphs (Y denotes a set; A, B, C denote attributes): (S) Y →B YC →B (T ) Y → A, Y A → B Y →B IS ADD (P ) Y C Y→ B Y Y→ B CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 188 Y → A, Y Y→ B Y A → B, Y Y→ B (R) ()¬(Y → B, Y Y→ B) Y A Y→ B Y Y→ A () is a formalization of ’Y→’ being the negation of ’→’, i.e., ¬() can be deduced starting with contradictory sets of constraints. (Q) Theorem 1 [DMT07] The ST implication system over graphs of functional dependencies with rules (S) and (T) and no axioms is sound and complete for functional dependencies. The PQRST implication system over graphs of functional and negated functional dependencies with all the presented rules and the symbolic axiom (), which is used for indicating contradiction, is sound and complete for functional dependencies and their negations if they are not conflicting. At the same time reasoning on graphs is more appropriate also for normalisation. Yang [Yan86] has discussed a reduction algorithm that allows a simple generation of canonical covers and of minimal covers for a set of integrity constraints. We can also use graphs of functional dependencies for detection of normal forms that are better than those generated by classical synthesis algorithms. Synthesis algorithms blindly collect all dependencies with the same left side at the final step. Using graphical reasoning we may collect only those dependencies that are not covered by any other group. Example 3 Given: the set UR = {A, B, D, F, G, I} of attributes and the set σR = {A −→ IG, D −→ F G, IAB −→ D, IF −→ AG} of functional dependencies. This set can be represented by the graph in the left picture. The graph in the right * G * G 6 6 ¾ ¾ I I * A * A - D - D IF ABI IF AB F ¼ F ¼ picture displays its reduction to a minimal cover. These graph also support reasoning on redundancy of constraints. Consider, for instance, whether AB −→ D can be redundant. The answer is “no” since D has only one entry point. The same observation is true for A −→ I, D −→ F . By a similar reasoning we can derive non-redundancy of D −→ G. Additionally we can directly see that {A −→ I, F I −→ A} creates a structure that cannot be represented by a BCNF. Classical synthesis algorithms generate the following relation schemata: R1 = ({A, G, I}, {A −→ GI}) R2 = ({A, F, I}, {A −→ I, F I −→ A}) R3 = ({A, B, D}, {AB −→ D}) R4 = ({D, F, G}, {D −→ F G}) This normalisation is however not minimal. Instead of R1 we can use R10 = ({A, G}, {A −→ G}). The relation schema R1 is obtained through the relation schema R2 in combination with R10 . R2 is not in BCNF. It cannot be split into two relation schemata. The graph in the picture directly allows us to detect this better normalisation since the dependency A −→ I is covered by R2 . This example illustrates the power of graphical reasoning. Normalisation is typically driven by goals such as being dependency preserving, providing the basis for key-based integrity maintenance (BCNF) or being redundancy-free (3NF) at least at the attribute level or avoiding maintenance problems (e.g., insert anomaly) or avoiding data losses (e.g., delete anomaly) or occurrence of performance traps (e.g., update anomaly). It might be extended to such criteria as being redundancy-free at the value level. Textbooks typically dont’t mention that normalisation also introduces additional constraints. Example 4 The last example results in pairwise inclusion constraints such as the multiple value occurrence bindings R10 [A] ⊆⊇ R2 [A] ⊆⊇ R3 [A]. This inclusion dependency set adds an overhead to integrity maintenance. The functional dependencies are directly represented through key dependencies. At the same time, any change to A-values in one of the relations must be harmonised with changes to A-values in the other relations. Example 5 An example from Date (Theory book) IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS A· · -· B · · 6·· ab SS 2012 - B A · ·· 6 - C : - E D D FD sets equivalent?? · ·· j C AB - E ABD · · · · · · 189 - E H µ - G AB - I CJ · · · · · · · · · · · · ··· ··· ··· ··· · -F - J C B What is a minimal key? Example 6 An example from Date (Theory book) Darwen FD rule expressed in a simple graphical form and directly understandable!!! X → Y0 Y1 , Y1 Y2 → W XY2 → Y0 Y1 W X·· - Y s Y 0············· · ·· ·· ········· ·· ·········· ·· 1 · ··· ··· 2 ·· ·· · · ·· 1 2 ·· · · ·· · ··· ·· · ······ ·· XY Y Y Y0 Y· 1 W ··· ·· ·· ·· · - W XY2 Y2 Abbildung 20: Darwen’s FD rule Example 7 An example from Date (Theory book) An amasingly simple example if graphical reasoning is used Easy graphical exploration Is D in any minimal key? What are the minimal keys? AB, BC, BE, CF? Is Date correct? NO!!!! Difficult but possible What are alternative reductions? Which dependencies are central? Mitunter ist auch die Betrachtung von äquivalenten Mengen von Attributen im Vorfeld sinnvoll. Example 8 Gegeben seien die Abhängigkeiten: IS ADD : Y0 - Y1 zW CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS IS ADD ab SS 2012 190 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 191 {Kurs} → {Dozent} {Anf angszeit, Raum} → {Kurs} {Kurs, Anf angszeit} → {Dauer, Raum} {Dozent, Anf angszeit} → {Raum} {Kurs, Student} → {Abschluß} {Student, Anf angszeit} → {Raum} Dann erhalten wird den folgenden Graph: - Dozent Dauer Kurs Abschluß · ·· ·· · · · · · · · * ········ ···· 6 ··· 6 · · · · · · ·· ·· · ··· · ·· ·· · · · · · ········ ··· ··· ········ ··· ··· ········ ··· ··· ········ ····· ·· ·· Raum, Anfangszeit Kurs, Anfangszeit Dozent, Anfangszeit Kurs, Student ··· · ·· · · · ··· ·· · ··· · ··· · · · ··· · · · ··· ··· · · ··· ··· · · · · ·· · ·· ¼ 9 · Anfangszeit · · · · · · · · · · · · · Student, Anfangszeit Raum Y Abbildung 21: Ein etwas trickreicheres Beispiel Es ergibt sich in diesem Beispiel eine Äquivalenzbeziehung: [{Dozent, Anf angszeit}] = [{Kurs, Anf angszeit}] = [{Raum, Anf angszeit}] . Daraus resultiert ein Relationship-Typ oder Angebot = ( Kurs, Raum, Dozent, { Anfangszeit, Dauer }) IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 192 Angebot’ = ( Kurs, Raum, Dozent, Anfangszeit, { Dauer }) mit drei minimalen Schlüsseln. Mit dem ER-Modell ergibt sich dann das folgende Diagramm: Schlüssel von Lehrveranstaltung: { Kurs, Anfangszeit }, { Raum, Anfangszeit } Abhängigkeit {Dozent, Anf angszeit} → {Raum} nur mittelbar Abhängigkeit {Student, Anf angszeit} → {Raum} wird mittelbar gepflegt!! Dozent ¾ (0,1) - given by ¾ Kurs belegt Abschluß 6 ? ¾ Raum Lehrveranstaltung Anfangszeit Student Dauer Abbildung 22: ER-Diagramm für das Lerhveranstaltungsbeispiel FD Set Graphs.. Demetrovics, et al., [DMT07] introduce graphical reasoning for sets of constraints. We may represent validity and invalidity of functional dependencies by a graph. Let us illustrate this approach for relational schemata with three attributes. Visualisations may be based on more complex figures, e.g. a hexagon for six attributes. To do so we distinguish two kinds of functional dependencies and display them as follows in Figure 23: Functional dependencies of the form {A} → {B, C} can be decomposed to canonical functional dependencies {A} → {B} and {A} → {C}. They are represented by endpoints of binary edges in the triangle representation. Functional dependencies with two-element left-hand sides {A, B} → {C} cannot be decomposed. They are represented in the triangle on the node relating their right side to the corner. This notation has the advantage that we are supported for reasoning on potential validity of constraints as well. We may represent also candidates for excluded functional dependencies by crossed circles for the case that we know that the corresponding functional dependency is not valid in applications or by small circles for the case that we do not know whether the functional dependency holds or does not hold. Since the ST implication system is sound and complete for non-trivial canonical functional dependencies, rules (S) and (T) can be used for deriving all implied functional dependencies given an initial set. Moreover, the PQRST implication system forms a sound and complete system for both positive and negative (excluded) non-trivial singleton functional constraints, rules (P), (Q) and (R) can be applied as complements of rules (S) and (T) when excluded functional constraints are taken into account. These rules can be interpreted in terms of the graphical representation as well. A deduction step using one of them deals with a node of a higher-dimension object (e.g., a triangle as a two-dimensional object with one of its three vertices) and one or two of its borders (with one dimension lower, e.g., edges of the same triangle as one-dimensional objects). (1) C A (2) B A C (3) B C A × × × B Abbildung 23: Examples of the triangle representation. From left to right: (1) The functional dependency {A} → {B} (filled circle at B side (right side of the FD) of the AB edge) and the implied functional dependency {A, C} → {B} (circle around node B in the ABC triangle). (2) The functional dependencies {A} → {B}, {B} → {C} and their implied functional dependencies {A} → {C}, {A, B} → {C}, {A, C} → {B}. (3) The negated functional dependency {A, C} Y→ {B} (crossed filled circle around node B in the ABC triangle) and the implied negated functional dependencies {A} Y→ {B} (crossed circle at B side of the AB edge) and {C} Y→ {B}. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 193 Abbildung 24: Graphical versions of rules (P), (Q), (R), (S) and (T) in terms of the triangle representation. The small black arrows indicate support (necessary context) while the large grey arrows show the implication effects. Graphical versions of rules are shown on Figure 24 for the triangle representation (case Y = {C}). The large grey arrows indicate the implication effect of each rule. Rule (S) is a simple extension rule and rule (T) can be called the “rotation rule” or “reduction rule”. We may call the left-hand side of a functional dependency the determinant of it and the right-hand side the determinate. Rule (S) can be used to extend the determinant of a dependency resulting in another dependency with one dimension higher, while rule (T) is used for rotation, that is, to replace the determinate of a functional dependency by the support of another functional dependency with one dimension higher (the small black arrow at B indicates support of AC → B). Another possible way to interpret rule (T) is for reduction of the determinant of a higher-dimensional dependency by omitting an attribute if a dependency holds among the attributes of the determinant. For excluded functional constraints, rule (Q) acts as the extension rule (i.e., it needs the support of a positive constraint, i.e., functional dependency) and (R) as the rotation rule (which needs a positive support too). These two rules can also be viewed as negations of rule (T). Rule (P) is the reduction rule for excluded functional constraints, with the opposite effect of rule (Q) (but without the need of support). Rule (Q) is also viewed as the negation of rule (S). Mehrwertige Abhängigkeiten im falschen Modell. Cadiou-Definition als die zweitbeste Form und ER-Definition als die bei weitem beste Form!!! It is often claimed that multivalued dependencies are difficult to model, to teach, to learn and to handle. They are introduced in almost any database book. The classical introduction is based on the tuple-generating definition of the multivalued dependency X → → Y |Z . It requires that whenever two tuples have the same value on the left-hand side then there also exists a tuple in the relation class which matches to the first tuple by the left-hand side and the first element of the right-hand side and which matches to the second tuple by the left-hand side and the second element of the right-hand side. This definition has the clarity of a mathematical definition and the problematic treatment often observed for other mathematical constructs. There are however five other definitions for multivalued dependencies that are easier to understand, to handle, and to represent. We may group these definitions as follows: Derivation constraint: The classical definition is based on the above mentioned tuple generating property. Another definition uses the construction approach for hinged Cartesian products and binds the validity of the multivalued dependency to the equality on query expressions (σX=x (RC ))[Y ∪ Z] = (σX=x (RC ))[Y ] × (σX=x (RC ))[Z] is valid for Y, Z with Y ∩ Z = ∅ for all x ∈ RC [X]. Structure constraint: The structure-oriented definition can be given through • the decomposition of the original class into two classes, i.e., the original class can be reconstructed by applying the natural join to the projection of RC to X ∪ Y and X ∪ Z respectively or • the potential structuring by a nested relation class IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS νY (νZ (RC )) A1 ... X ... ... Ak ... Ak+1 ... ab SS 2012 {Y } ... Am ... ... Am+1 ... 194 {Z} ... ... An ... or • the potential restructuring in an ER model in the following form Y ¾ XY (1,n) ¾ XZ (1,n) X - Z Independence concept: The original definition [Cad76] uses relative independence of Y -components from Z-components in a relation class, i.e., the values of the X-components determine the values of Y-components of objects in RC independently from the values of Z-components, ( (σX=x (RC ))[Y ] = (σ(X=x)∧(Z=z) (RC ))[Y ] for all x-values x ∈ RC [X] and all z-values z ∈ RC [Z]). The generation definition is certainly the most mathematical and the least useful among the definitions. The construction definition provides a facility for checking validity. Both definitions also demonstrate that the relational model language is not appropriate for reasoning on these constraints. The independence notion is the simplest for modelling and for considering. The structure definitions are certainly the best way for the understanding of these constraints. The ER approach is the best suited model language for multivalued dependencies. Example 9 Let us consider a relationship type EmployeeAssociation defined on the entity types: StaffMember, DependentPerson, Project, Supplier, Product with the following multivalued dependencies: { StaffMember } → → { Department, DependentPerson }|{ Project, Product, Supplier } { StaffMember } → → { DependentPerson }|{ Department, Project, Product, Supplier } { Project } → → { StaffMember, Department, DependentPerson }|{ Product, Supplier } { Product } → → { Department, StaffMember, DependentPerson, Project }|{ Supplier } . The ER model allows us to derive a new structuring by the decomposition of the relationship type. We obtain the schema in Figure 25 for which a new type ‘Working’ reflects the separation of concern to PP roduct, Department Staf f M ember and the independence of suppliers and projects according to the multivalued dependencies. Department ¾ - StaffMember ¾ Working Dependent 0..1 0..1 ? Project of Product - Product ¾ Supplier of Product Abbildung 25: The decomposition of the relationship type based on multivalued dependencies Inklusions- und Exklusionsabhängigkeiten. in 2 verschiedenen Facetten • Klassenabhängigkeiten zur Existenz von Klassen daraus resultierend verschiedene Art von Schemata R[X] ⊆ S[Y ] • partielle Objektredundanz spezielle Form: referentielle Abhängigkeit mit Fremdschlüssel-Imputation in die existierende Klasse und entsprechender imputierter zusätzlicher Identifikation 2.3.3 Umgebungsdefinition für Integritätsbedingungen Allgemeines Herangehen: Umgebung IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Gültigkeit Ausnahmebehandlung Erzwingungsstrategie mit Erzwingungsregel und Erzwingungszzeitpunkt, sowie Priorisierung Nachsorgestrategie genauere Ausführung nach den HERM-IC IS ADD 195 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 196 Probleme mit Integritätsbedingungen Zerstörung der Lokalität durch globale Auswirkungen innerhalb von Zyklen ¾ Reise { 3,4,7 } richtig: { 3 } 6 besucht { 1,2,3,6 } {1} richtig: { 6 } ? startet - Stadt { 2,3,5,6 } richtig: { 2 } Abbildung 26: Lokale Integritätsbedingungen mit globalen Auswirkungen Pivotisierung durch Identifikation von faktorisierbaren Konstrukten z.B. Integritätsbedingungen, die auf Fakten hinweisen Übungsleiter Übungsleiter¾ Kurs Y Kurs betreut 6 0..1 Professor ¾ 6 Vorlesung ? Plan<(Zeit,Raum)> Professor ¾ Vorlesung - Angebot (3,5) Plan<(Zeit,Raum)> ¼ ? Stud-Gang ¼ ? Stud-Gang Semester Semester card(Vorlesung, Kurs Semester) = (3,5) look(Vorlesung,Übungsleiter) = 0..1 Abbildung 27: Pivotisierungsauswirkungen lokaler Integritätsbedingungen in zwei Facetten Globalisierende Integrititätsbedingungen hervorgerufen durch Zyklen weitere Beispiel in Hartmann-Habil Institution (0,.) leitet 6 - Mitarbeiter ¾ (0,2) (1,1) (1,1) (1,3) 6 arbeitet in (30,50) ? fördert - (1,.) Projekt ? ¾ (0,5) Labor (0,10) richtig: (0,30); besser (0,.) zugeordnet Abbildung 28: Globale Verwicklungen lokaler Integritätsbedingungen Löcherfraß in den Integritätsbedingungen durch Nichterfüllbarkeit für Konfigurationen siehe Hartmann-Mitteilung Warum dann HERM anstatt von UML. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 197 Übung: • EER-Modelle • Struktur • Komponenten • stat. Integritätsbed. Global versus Local Normalisation. Normalisation is typically carried out on the basis of one database type. This type is normalised (e.g. decomposed, split or reduced) according to a set of integrity constraints. The association and the influence of this normalisation to other types is typically neglected. Therefore, normalisation is typically local. Local normalisation of a singleton database type is well reflected in most database books (e.g., [AHV95, Bis95, Leo92, Yan86]) and publications, most database courses, and in actual database practice. It is considered as one of the pearls of database research and known to almost everybody who knows database technology. The provenance and acknowledgement is based on the facility it provides: keeping as much as possible locally and globally supporting only those processes that are inherently global. Both independence concepts of databases (conceptual independence and implementation independence) are based on localisation. Local normalisation of database structures aims in derivation of such structures of databases that can easily be supported by the DBMS. In the past DBMS have been supporting keys, domain constraints and key-based inclusion constraints. Therefore, it is a goal to derive another equivalent schema to the given one which has an equivalent but supportable set of integrity constraints. This approach can be understood as a procedural approach to optimisation of database structuring depending on the platform for implementation. Normalisation is typically considered to be vertical normalisation. Deductive normalisation and horizontal normalisation are alternatives to vertical normalisation. Horizontal normalisation [PBGG89] is based on selection and union. Horizontal normalisation uses selections based on predicates V α1 , ..., αn which may be pairwise exclusive (αi → ¬αj , i 6= j) and cover the truth value 1 (( n i=1 αi ) → 1). Horizontal normalisation also allows us to separate the part of a set for which a dependency is valid from the part that invalidates a dependency. For instance2 , αX−→Y = (o ∈ RC → ¬∃o0 ∈ RC (o[X] = o0 [X] ∧ o[Y ] 6= o0 [Y ])) separates those objects in RC for which the functional dependency is valid from those which invalidate the functional dependency. Deductive normalisation [Tha91a] is based on reduction and extended selection. Deductive normalization reduces relations to those elements that cannot be generated from the other elements by generation rules. It is the most storage effective and the best computational method for normalisation as long as the tuple-generating dependency used for decomposition is acyclic. Horizontal and deductive normalisation methods have not yet received a support from the database systems vendors. Local normalisation must however take into account these three kinds of normalisation. Global normalisation aims in normalisation of the schema as a whole. It must take into account the three kinds of local normalisation. Global normalisation has not got an appropriate attention in research despite the interest in implementations. Therefore, a systematic treatment of this normalisation has not yet been given in the literature. 2.3.4 Rahmen zur Spezifikation von Integritätsbedingungen Integritätsbedingungen werden in der Literatur noch immer leichtfertig nur in einfacher Form bzw. Rohform spezifiziert. Eine Spezifikation der Integritätsbedingungen muß umfassen: Integritätsbedingung in Rohform: Angabe der Integritätsbedingung als logische Formel Lokalisierung der Integritätsbedingung im Kontext des Systemens, d.h. durch Angabe der Schema-Umgebung einer Integritätsbedingung (Schema-Frame-Problem) und durch Angabe der betroffenen Datenbankobjekte, die neben den betroffenen Objekten kontrolliert werden müssen (DB-Frame-Problem) Gültigkeit der Integritätsbedingungen je nach Phase der Anwendung, mindestens für die folgenden Phasen Einfahrphase des Systemes Normallauf des Systemes Archivierung der Datenbestände Ausführungsmodi zur Kontrolle der Integritätsbedingungen je nach Operation 2 We use the symbol R for type or class specification and denote the class of elements of the type by RC . Tuples (in the case of objectrelational models) or elements of RC are denoted by o. X −→ Y is a functional dependency. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 198 Ausführungszeit der Kontrolle z.B. verzögert, sofort ggf. auch mit Aussetzen unter bestimmten Bedingungen Anwendungsmonitoring der Kontrolle der Integritätsbedingungen z.B. auf Objektniveau oder auf Anweisungsniveau Umformung (term rewriting) der Operationen Behandlung für den Fall des Nichtgeltens der Integritätsbedingung je nach Datenbankereignis: Zurückweisen der verursachenden Anweisung Propagierung der Integritätsbedingung Nutzung von (temporären) Zusatzwerten zur Kennzeichnung der Situation Rangordnung der Integritätsbedingung unter den Klassen von Integritätsbedingungen zur Ableitung der Kontrollreihenfolge Daneben können wir Default-Rahmen angeben: 1. harte Integritätsbedingung ohne das Zulassen von Ausnahmen 2. volle Schema- und DB-Umgebung 3. keine Unterscheidung von Phasen 4. sofortige Kontrolle bei Datenbankereignissen ohne Ergänzung der Operationen 5. gleichwertige Klassen von Integritätsbedingungen Insbesondere nutzen wir die folgenden Rahmen und Erzwingungsmodi: 1. Spezifikation von Existenzabhängigkeiten Durch die Komplexitäten sind bereits Abhängigkeiten dargestellt worden, die von den generischen Operationen insert, delete, update eingehalten werden müssen. Ist für eine Komplexität comp(R, R0 ) = (a, b) a ≥ 1, dann ist jedes insert in R0 durch ein insert in R zu unterstützen. Jedes delete in R0 kann ein delete in R nach sich ziehen. Alle derartigen Komplexitäten werden zusammengestellt und in den folgenden Schritten angewandt. Man kann für jeden Typen eine insert-, delete- und eine update-Umgebung mit folgendem Algorithmus konstruieren. (a) EnvI (R) := EnvD (R) := EnvU (R) := {R} für jeden Entity- und Relationshiptypen. (b) Man generiere die Umgebungend erster Ordnung wie folgt. i. Gilt comp(R, R0 ) = (a, b) für a ≥ 1 dann sei EnvI (R) := EnvI (R0 )∪EnvI (R), EnvU (R) := EnvU (R0 )∪ EnvU (R) und EnvD (R0 ) := EnvD (R) ∪ EnvD (R). ii. Für jeden Relationshiptypen R0 , in dem R eine Komponente bildet: EnvI (R0 ) := EnvI (R) ∪ EnvI (R0 ), EnvU (R0 ) := EnvU (R) ∪ EnvU (R0 ) und EnvD (R) := EnvD (R) ∪ EnvD (R0 ). iii. Für jede Exklusionsabhängigkeit R k R0 gilt EnvI (R0 ) := EnvD (R) ∪ EnvI (R) und EnvU (R0 ) := EnvU (R) ∪ EnvU (R). iv. Weitere Abhängigkeiten werden analog behandelt. (c) Man wiederhole diesen Schritt bis keine der Mengen verändert wird: i. Gilt comp(R00 , R0 ) = (a, b) für a ≥ 1 und R00 ∈ EnvI (R0 ) dann sei EnvI (R) := EnvI (R0 ) ∪ EnvI (R). Gilt comp(R00 , R0 ) = (a, b) für a ≥ 1 und R00 ∈ EnvU (R0 ) dann sei EnvU (R) := EnvU (R0 ) ∪ EnvU (R). Gilt comp(R00 , R0 ) = (a, b) für a ≥ 1 und R00 ∈ EnvD (R0 ) dann sei EnvD (R0 ) := EnvD (R) ∪ EnvD (R). ii. Für jeden Relationshiptypen R00 mit R00 ∈ EnvI (R0 ), in dem R eine Komponente bildet, sei EnvI (R0 ) := EnvI (R) ∪ EnvI (R0 ). Für jeden Relationshiptypen R00 mit R00 ∈ EnvU (R0 ), in dem R eine Komponente bildet, sei EnvU (R0 ) := EnvU (R) ∪ EnvU (R0 ). Für jeden Relationshiptypen R00 mit R00 ∈ EnvD (R0 ), in dem R eine Komponente bildet, sei EnvD (R) := EnvD (R) ∪ EnvD (R0 ). iii. Für jede Exklusionsabhängigkeit R k R00 mit R00 ∈ EnvI (R0 ) gilt EnvI (R0 ) := EnvD (R) ∪ EnvI (R). Für jede Exklusionsabhängigkeit R k R00 mit R00 ∈ EnvU (R0 ) gilt EnvU (R0 ) := EnvU (R) ∪ EnvU (R). iv. Weitere Abhängigkeiten werden analog behandelt. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 199 Diese Umgebungen sind maximale Umgebungen. Sie werden durch Eigenschaften der Anwendung eingeschränkt. Durch die Hierarchien sind entsprechende Existenzabhängigkeiten gegeben. Die Generalisierung (z.B. eine Person-dejure ist eine Firma oder eine Person) führt zu einer Existenzabhängigkeit des Supertypen von Subtypen, die unbedingt gepflegt werden muß (d.h. werden die Daten einer Firma entfernt, dann werden diese auch für die Persona-de-jure entfernt). Die Spezialisierung führt zu einer Existenzabhängigkeit des Subtypen (in unserem Falle Teiltypen (Relationshiptypen definiert über dem Supertypen)) vom Supertypen. 2. Erzwingungsregeln für insert- Operationen Man kann für insert-Operationen verschiedene Optionen bestrachten: • Abhängigkeit: Eine Einfügung ist nur erlaubt, wenn alle korrespondierenden Objekte bereits existieren. • Automatismus: Eine Einfügung ist stets erlaubt. Wenn entsprechende Objekte nicht existieren, dann werden sie ebenfalls eingefügt. • Nullwertebehandlung: Eine Einfügung ist stets erlaubt. Existieren die entsprechenden Objekte nicht, dann werden für das neue Objekt Nullwerte benutzt. • default-Werte: Eine Einfügung ist stets erlaubt. Existieren die entsprechenden Objekte nicht, dann werden für das neue Objekt default-Werte benutzt. • Zusätzliche Einfügebedingungen: Ein Einfügen ist nur dann erlaubt, wenn eine zusätzliche Bedingung gilt. • Keine Einschränkung: Das Einfügen unterliegt keiner Beschränkung. Die letzten beiden Möglichkeiten betreffen alle Typen außerhalb von EnvI (R). Die ersten vier Möglichkeiten sind für EnvI (R) bei der Spezifikation der Anwendung zu nutzen. 3. Erzwingungsregeln für delete-Operationen Man kann für delete-Operationen verschiedene Optionen bestrachten: • Beschränkung: Ein Streichen ist nur erlaubt, wenn kein anderes Objekt davon betroffen ist. • Kaskadierung: Ein Streichen zieht das Streichen anderer Objekte nach sich. • Bedingte Kaskadierung: Ein Streichen zieht das Streichen anderer Objekte nach sich, die nur aufgrund des zu streichenden Objektes noch existieren. • Nullwertebehandlung: Beim Streichen werden Objekte, in die das Objekt eingeht auf einen Nullwert gesetzt. • default-Werte: Beim Streichen werden Objekte, in die das Objekt eingeht auf einen Nullwert gesetzt. • Zusätzliche Streichungsbedingungen: Das Streichen ist nur unter bestimmten Bedingungen erlaubt. • Keine Einschränkung: Das Streichen unterliegt keiner Beschränkung. Die letzten beiden Möglichkeiten betreffen alle Typen außerhalb von EnvD (R). Die ersten vier Möglichkeiten sind für EnvD (R) bei der Spezifikation der Anwendung zu nutzen. SQL2 läßt in der Vollversion Kaskadierung, Nullwertebehandlung, Default-Werte und Beschränkung (ist default) (als ‘no action’) zu. 4. Erzwingungsregeln für update-Operationen • Beschränkung: Ein update ist nur erlaubt, wenn kein anderes Objekt davon betroffen ist (z.B. auch über Sekundärschlüsseln, die nicht in Beziehungen verwandt werden). • Automatismus: Ein update ist stets erlaubt, solange Integritätsbedingungen des Typs nicht verletzt werden. • Kaskadierung: Ein update löst weitere Operationen aus. • Nullwertebehandlung: Konflikte werden durch Nullwerte gelöst. • default-Werte: Zur Konfliktbereinigung werden default-Werte benutzt. • Zusätzliche update-Bedingungen: Ein update ist nur unter zusätzlichen Bedingungen möglich. • Keine Einschränkung. Eine update-Operation ist nicht das Gleiche wie eine delete;insert-Folge. SQL2 läßt in der Vollversion Kaskadierung, Nullwertebehandlung, Default-Werte und Beschränkung (ist default) zu. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 200 Erzwingungsregeln ¼ ? Unbedingte Erzwingung Keine Erzwingung j Bedingte Erzwingung j mit zusätzlichen Kaskadierung EinfügeNullwertedefaultbehandlung Werte Abhängigkeit bedingungen ; Prädikat Abbildung 29: Mögliche Erzwingungsregeln für generische Operationen ¼ ? j ? an Existenz gebunden; Rollback Die Erzwingung kann auch aufgrund von Regel-Trigger-Systemen spezifiziert werden. Dann ist jedoch das Resultat bei automatischer Erzwingung falsch. Der GCS-Zugang von Schewe/Thalheim ist ein sicherer automatischer Zugang. Er ist allerdings für die Betrachtungen hier zu komplex. Die Integritätsbedingungen sind in SQL-92 in unterschiedlichen Modi und Matching unterstützt, wobei deren Zusammenwirken nicht erklärt ist. Integrity Constraint Specification. Integrity Constraint ϕ [Localization: < unit name> ] [Partiality: < validity condition >] [Exception: < exception condition >] [In-Context: < enforcement rule, time, granularity >] [Out-Context: < conditional operation, accept on >] . Enforcement through Direct enforcement through declarative constraints with RESTRICT, NO ACTION, CASCADE, SET VALUE (null, default), [INITIALLY] DEFERR [INITIALLY] IMMEDIATE [DEFERABLE] Transactions with three mechanisms on failure: (1) rollback on inconsistency currently exclusive treatment (2) erasing effects of TA: transaction COMPENSATED_ON_FAILURE_BY transaction (3) raising an exception: transaction CONTINGENTED_ON_EXCEPTION_BY exception Triggers with the after-before activation time, row-statement granularity, 1-n (SQL:1999, DB2, Informix, SQL Server) , n-1 (Sybase) or n-n (Ingres,Oracle) event-trigger pairs IC enforcement policy - checking mode (immediate, deferred), triggering, scope, checking time (before, after), row/statement level Problems to be Solved for Maintenance. A: Integrity preservation with consideration of enforcement policies User-defined types SQL’99 constraints in a large variety: Checking mode Choice of statement or row level Constraints may be pre- or post-conditions Scope conditions Matching conditions Reference types Triggers in variations: Number of triggers per events and events per triggers Activation time Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 201 Conflict resolution of execution order Order of constraint check differs for DB2 Sybase, Oracle, Informix, Ingres, and MS SQL SQL’92 declarative constraints B: Effect preservation of the intended update operation Insert effect preservation Delete effect preservation Update effect preservation Resultierende Betrachtungen für die Pflege der Integritätsbedingungen. • Problems of Integrity Maintenance Incompleteness of maintenance Infeasibility of maintenance Infeasibility of programming • Integrity maintenance is based on: Integrity constraint checking Integrity constraint detection • Integrity maintenance suffers from: Non-existence of integrity constraint axiomatisation Complexity of constraint check Complexity of database maintenance SQL’99 Proposals for Transactions and Consistency Specification. Level of enforcement: On row-level or on statement level Modus of enforcement: Immediate or deferred Equality functions: full, partial, normal differences in treatment of null values Check time for constraints: Before execution, after execution Hinzu kommt dann noch die Herstellung einer globalen Konsistenz der Erzwingungsmechanismen. Man betrachte z.B. die Erzwingung in Bild 30. R1 restrict nullify 9 R2 cascade ? R6 restrict ¼ R3 cascade cascade j R4 nullify cascade ? R6 NULL ? R6 NIL ??? z R5 default ? R6 DEFAULT Abbildung 30: Das ‘diamond’-Problem bei der Erzwingung von foreign key constraints Es werden zwei Wertezuweisungen für den Wert des gleichen Objekts in R1 vorgenommen ausgehend von gleichen Objekt in R6 . Die zugehörigen foreign key constraints sind R2 ⊆ R6 , R3 ⊆ R6 , R4 ⊆ R6 , R5 ⊆ R6 , R1 ⊆ R2 , R1 ⊆ R3 , R1 ⊆ R4 , R1 ⊆ R5 , . Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 202 2.4 Ein Datenbank-Schema ER besteht aus einer Menge von Typen {Ti = (UTi , ΣTi )} und globalen statischen Integritätsbedingungen ΣER . Datenbankmodellierung und das Abstraktionsschichtenmodell Unsere Strukturierungssprache unterstützt das Abstraktionsschichtenmodell. Es kann die Strukturierung der Daten in jeder Schicht durch das Entity-Relationship-Modell repräsentiert werden. Wir verwenden dazu Schemata unterschiedlicher Abstraktheit und Granularität. Datenstrukturierung des Lastenhefts: Es wird ein allgemeines HERM-Diagramm mit den Haupttypen entwickelt. Datenstrukturierung des Pflichtenhefts: Es wird ein grobes HERM-Diagramm mit entsprechenden Integritätsbedingungen angegeben, das die Typen des Lastenhefts verfeinert. Die Verfeinerung findet durch Spezialisierung der Typen, Dekomposition, strukturelle Erweiterung, semantische Einschränkung, Separation von Aspekten und durch Instantiierung statt. Zusätzlich werden weitere Typen eingeführt. Anwendungsschema: Das Anwendungsschema repräsentiert alle Typen, die für den Anwender eine Bedeutung haben. Die Typen stellen eine Verfeinerung der Typen des Pflichtenhefts dar oder sind neu eingeführt. Konzeptionelles ER-Schema: Auf der konzeptionellen Schicht wird ein detailliertes HERM-Diagramm erstellt, das u.a. auch für alle Typen des Anwendungsschemas entsprechende Verfeinerungen enthält. Diese Beziehungen finden auch Eingang in die Sichten-Suite. Logisches Schema: Das HERM-Schema wird in ein entsprechendes Schema des logischen Datenbank-Modelles transformiert. Es kann üblicherweise ein objekt-relationales oder relationales Schema, aber auch eine Beschreibung als XMLSchema oder DTD-Datei (document type definition) sein. Diese Schemata sind aufeinander abbildbar. Demzufolge kann jede Entwurfseinheit einer höheren Schicht - so wie in Bild ?? auf Seite ?? dargestellt - einer Menge von Entwurfseinheiten der folgenden Schicht direkt zugeordnet werden. Wir merken an, daß wir über zwei unterschiedliche Methoden zur Darstellung, Repräsentation, Verarbeitung und Speicherung von Objekten verfügen: Klassen-Separation: Die Menge aller Objekte wird durch ein ER-Schema dargestellt. Jedes Objekt wird genau einer Klasse zugeordnet und in beliebig vielen anderen Klassen auf der Grundlage des ER-Schemas verwendet. Die Verwendung kann über einen Surrogat-Schlüssel, eine Markierung oder Werte zum ausgewählten Schlüssel des Objektes erfolgen. Wir nennen diese Form der Behandlung von Objektmengen klassen-separierte Darstellung. Ein Objekt ist dann mit dem erweiterten ER-Modell als Schneeflocke mit einer Wurzel darstellbar. Objekt-Entfaltung: Die Menge aller Objekte bildet unter Einbeziehung der Beziehungen der Objekte untereinander einen Objektmengen-Graphen. Wir können über diesem Graphen beliebige Überdeckungen U bilden, d.h. Mengen von Teilgraphen, die zusammen den Objektmengen-Graphen ergeben. Ein Teilgraph besitzt evt. ein Wurzel-Objekt, d.h. es gibt ein Objekt, das rekursiv auf alle anderen Objekte des Teilgraphen verweist. Besitzt jeder dieser Teilgraphen ein Wurzelobjekt, dann heißt U Objekt-Gesellschaft. Damit ist in Objekt-Gesellschaften jedes Objekt ein volles Objekt mit allen Eigenschaften. Ein Beispiel für eine Objekt-Entfaltung zum Schema in Bild 6 ist folgendes XML-Dokument: <Lehrveranstaltung ID="120201" Titel = "DB-Programmierung" Typus = "TypusID1" Erfuellung = "gehalten"> <geplant durch="Fak.-Ref. Schenk"><Dozent Name = "beta"/><Raum = "SR1"/> <Zeit = "AB, Mittwoch, 7.30 - 9.00"/> <Aenderung Datum = "1.1.2000"><Vorschlag><Zeit><von>Montag</von> <in>Mittwoch</in></Vorschlag> </Aenderung></geplant> <Studiengang Name ="Informatik" Phase = "Hauptstudium"/> <Typus ID = "TypusID1"> <Art>Normalvorlesung</Art> <Umfang> 2+2+2 </Umfang> </Typus> <Kurs Name = "Datenbanken III"><Inhalt ID ="4711"> .... </Inhalt> ... </Kurs> <Semester>Sommersemester 2000, 10.4. 2000 - 15.7.2000</Semester> <Verantwortlicher><Lehrveranstaltung><Dozent Name = "beta"/> <Uebung Name = "Feyer"/> <Praktikum Name ="Vestenicky"/></Lehrveranstaltung> <Planung><geplant durch>Fak.-Ref. Schenk</geplant durch> Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 203 Konzeptlandkarte Anwendungsschicht Vorstudie Skizzierung Konzept Lastenheft: Daten Skizze Geschäftsprozeßschicht Feinstudie Darstellung Grober Typ Pflichtenheft: Daten Skelett Aktionsschicht Entwurf Entwurf Anwendungstyp Anwendungsschema konzeptionelle Schicht Schema Implementation Transformation Typ ER-Schema Implementationsschicht Schema logischer Typ logisches Schema Abbildung 31: Die Arbeitsprodukte im Abstraktionsschichtenmodell für die Strukturierung Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 204 <Datum>1.4.1999, .... </Datum></Planung> <Vorschlag ID ="08015" Von = "KK"> <Sonderwunsch><Zeit>AB, Montag, 7.30-11.00</Zeit> <Raum><Ausstattung>Beamer, Netzanschlu&szlig;</Ausstattung><Raum> <Nicht-Parallel>Datenbanken I</Nicht-Parallel></Sonderwunsch></Vorschlag> </Lehrveranstaltung> Die erste Methode wird meist für die Speicherung und Verarbeitung in relationalen und objekt-relationalen DBMS angewandt. Die Repräsentation erfolgt auf der Grundlage von Sichten, die im Kapitel ?? ausführlich dargestellt werden. OLAP-Zugänge verwenden oft den zweiten Zugang. Die zweite Methode wird auch bei XML-DBMS angewandt. Die Redundanz-Beherrschung ist nach wie vor für beliebige Objektmengen wichtig. Deshalb ist der erste Zugang vorzuziehen. Wir unterstützen diesen Zugang durch Einführung einer Sichten-Suite. 2.5 Normalisierung versus Denormalisieurng Normalization aims at solving the following five problems: Anomalies in operations behavior: If data represent different semantic facts at the same time then operations such as Insert, Delete and Update behave differently. Deletion may lead to the deletion of facts which should not be removed from the database. Updating needs a complete table scan instead of a one fact correction. Insertion of a fact cannot be made since other facts are missing. In this case, the tables need to be replaced by tables which represent semantic units of facts. Normalization includes such kinds of decomposition. Existence of inconsistent data: Data are interrelated. Any modification applied to objects in the database should also be accompanied by modifications on related objects. Databases and views are often based on macro-data, i.e., derived data. If the meaning of the derivation is not understandable to the user then wrong conclusions are made on the data provided by the database. Derived data are shipped to other users who include such data into their databases and computations. If the basic data are changed afterwards then the derived data have to also be changed in order to avoid inconsistencies. Redundancy of data in the database: Data may be stored in the database in different associations. If this is not to be done intentionally and with care then modifications of data on one place are not enforced to modifications of data on the other place. Data can be encoded with additional information. For instance, the student’s number often includes the year of admittance. In this case changes to the admittance should be reflected in the number. However, the number is assumed to be a stable key which does not have modifications. Instability of schemata after changes: Database applications are not stable over a long period of time. New requirements, new structures which have to be included into the existing application and changing environments cause restructuring of schemata. Thus, the schema resembles a ‘mannerisms cathedral’, that is, it is hard to maintain. A complete documentation is missing. Schema restructuring is also caused by performance problems. In this case, the physical and logical schemata do not match and are not an image of the conceptual schema. A wide range of legacy problems leads to problematic database behavior. Careful design with consideration of possible changes can partially solve this problem. Conceptual design with integrated normalization over the entire life span of the database is the best solution. Database schemata can be extended by propagation patterns [HLM93]. They encourage the reuse of specifications as opposed to the structural modification of schemata. Different abstraction level in applications: User groups have different requirements regarding data abstraction, granularity and representation of data. Data have different meanings to users and users apply a different interpretation to their data. There are differences in the meaning of the functions. Users operate their data in different fashions and have different rights and roles. The three level architecture can be used for the solution of heterogeneity problems. The integrated schema should lead to good behavior. Optimization is an important design step. Since normalization is mainly structural optimization, normalization approaches are applied. Normalization and ER techniques are often understood as being two opposite techniques. ER techniques are seen as attempts to provide a taxonomy of objects to allow a user to intuitively recognize different types of objects, and to classify the objects and their relationships. The normalization approach seems to be entirely different: all data are listed and then all interrelatedness rules such as dependencies are identified. In the next step classes are decomposed according to the semantic structure of their objects. In fact, normalization and ER techniques reinforce one another in providing needed intuition on behavior and structure of objects stored in the database. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 205 2.5.1 The Normalization Problem Generally speaking, the normalization problem is defined based on a set of scheme transformation operators O and a property P. For a given scheme ERS, the normalization problem is to determine whether a translation Φ exists in O which can be applied to ERS such that 1. Φ(ERS) is equivalent to ERS and 2. Φ(ERS) satisfies the property P . The translation Φ is called decomposition mapping or transformation mapping if simple operations are used. We usually assume the existence of a reconstruction mapping Ψ such that for each database on ERS C the equality ERS C = Ψ(Φ(ERS C )) is valid. A translation Φ is a mapping from a schema ERS to another schema ERS 0 . Integrity constraints are defined for the schemata: ΣERS , ΣERS 0 . The set of all databases on ERS is denoted by R(ERS). Let SAT (ERS) (SAT (ERS 0 )) be the set of all databases defined on ERS that satisfy ΣERS (respectively ΣERS 0 ). The translation Φ is a mapping from R(ERS) to R(ERS 0 ). Some examples of properties are the third normal form, the fourth normal form or the BCNF. In this case the operations used are projections on the type and constraint levels. The equivalence of the two schemes is maintained by join operations. This normalization is known as vertical decomposition of schemes. Another kind of decomposition is horizontal decomposition. Operations used are selection or general selectors [Sch77]. Reconstruction mappings are the union or exclusive union. Deductive normalization is a third example of a normalization. Formulas are used for reconstruction mapping. Reduction is the normalization mapping. The schemes do not change during deductive normalization. Deductive normalization can be used for archiving large amounts of data. Retrieval of these data can be effectively supported by indexes which are specified in accordance with formulas. In [YT89, VS93b, Vin94], a normalization theory was developed. The main criteria for normalization are maintenance simplicity, which consists of two parts: storage and access simplicity, and operational simplicity. Since the two parts of maintenance simplicity conflict with the specification of the user, the user should specify his/her preferences. On the basis of integrity constraints, several normal forms could be chosen. For instance, if only functional dependencies are specified then the goal of normalization is the elementary key normal form (for nested relations). Relationship types inherit the keys of underlying component types. The decomposition of keys of these types leads to an increase in the arity of the relationship type. Therefore, a decomposition can be rejected for performance reasons. Integrity constraints can be used to decide whether a decomposition is rejected or not. Relational normalization procedures incorporate few semantic aspects of aggregation. For instance, the entity type Student = ({StN umber, Course, Address}, {StN umber, Course, Address}) represents the relationship of students with a course and their addresses. This type is in third normal form but not in fourth normal form. We cannot possibly define the intentional meaning of this relation. If the maintenance simplicity is considered to be one of the most important design criteria, there are at least three requirements which should be satisfied: 1. The schemes should be normalized in the classical sense. 2. The schemes should be minimal. The information represented in one class should be not repeated in another class. 3. The set of integrity constraints used should be simple to maintain. The last criteria is the most difficult one. The first requirement can be easily represented, even in ER schemes [CCN80]. The first and the second requirement can be represented in HERM schemes but can also be represented in ER schemes. In [CCN80] normal forms in ER models are discussed on the basis of the relational database theory. However this approach is not completely appropriate, as we have seen in Figures ?? and ??. 2.5.2 Local (Vertical) Normalization Local vertical normalization is based on the operator Φd = (πX1 , ...πXn ) for a join dependency d = (X1 , ...Xn ) and the reconstruction operator Ψ =1. Local vertical normalization on the type level is often considered to be the ultimate goal of the database design process. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 206 The argument that normalization beyond third normal form is not useful, offers only little benefit and incurs serious performance costs is based on the observation that most, and usually all, of the problems associated with unnormalized data are solved on the basis of 3NF or BCNF. Structures that are in 3NF or BCNF still exhibit serious problems, of very much the same sort addressed in the earlier stages of normalization: redundancy; insertion, deletion, and update complexity; difficulty in storing facts independently. The main reason for denormalization is performance. The performance argument is valid for all normal forms in the same strength. Since the behavior has to optimized, we may ultimately need to make compromises to achieve adequate performance. The normal forms developed so far have different aims: Store only basic facts in the database: Facts are represented by entities and relationships. Basic facts [Hal95] are assertions about the database application such as ‘The student “Maier” takes the “database” course’ or ‘The person named “Maier” is a student’. The adjective ‘basic’ indicates that the fact cannot be split into smaller units of information which collectively provide the same information as the original. The existence of a functional dependency indicates that components represent a fact or a basic fact. Do not represent the same fact twice: A fact should be represented only once in the database. There is no redundancy. If a relation is defined on a schema with several functional dependencies and the left hand sides of such dependencies are not equivalent, then we might store the same fact several times. The address is stored several times in the Student class since students are taking several courses. Thus we search for a decomposition such that each new schema represents facts only once. BCNF is the solution to this requirement if functional dependencies are considered. Do not store unrelated facts in the same type: Facts can be related or unrelated or related via other facts. For instance, in the Student class above, the courses are related to addresses only through the student’s number. They do not together represent a unit of information. Thus, the class can be decomposed into a class containing objects representing information on students and their addresses and another class representing information on students and the courses they take. The class for Student is in BCNF. Nevertheless a multivalued dependency is valid. The update anomaly disappears after decomposition. Keep maintenance simple: Maintenance simplicity is one of the main goals of database design. Whether maintenance procedures are simple depends on the language provided by the system. If the system allows the expression of simple integrity constraints in a declarative form and has other facilities for expressing more complex constraints then design is oriented to simple integrity constraints. For instance, the domain/key normal form is based on domain, key and referential integrity constraints. They can be expressed in a simple declarative form. Vertical normalization is achieved through decomposition of types into smaller types. The correctness of the transformation mapping is based on several properties: No loss of information: The schema and the decomposed schema have the same capacity to store information. We do not lose information when the class of type R is replaced by its projections. The decomposition of a type R via a join dependency d = (X1 , ..., Xn ) is called lossless if for each class RC the equality RC = πX1 (RC ) 1 ... 1 πXn (RC ) is valid. If the join dependency d is implied by the functional dependencies Σ of the type then the decomposition is lossless. Invariance of integrity constraints: The integrity constraints expressible in the decomposed schema and derived from the integrity constraints of the original schema imply together with the join dependency the integrity constraints of the original schema: Given the type R = (compon(R), Σ) where Σ contains only functional dependencies, given the join dependency d = (X1 , ..., Xn ), let Σi = {X → Y |X, Y ⊂ Xi , Σ |= X → Y }. The decomposition via d is constraint preserving if Sn i=1 Σi |= Σ. If a decomposition is constraint preserving then functional dependencies can be enforced on the level of the decomposed types. Unfortunately there are types that do not have a constraint preserving lossless decomposition into BCNF. In this case we might have to sacrifice some dependencies. However, there are two compromises if we do not want to make this sacrifice: the third normal form or splitting of attributes. The first approach can be applied if there is a strong requirement to constraint preservation. The latter approach is considered at the end of this subchapter. The following characterizations can be given for schemata which are in 3NF and not in BCNF: • Given a type R and a set Σ of functional dependencies. If the type R is in 3NF but not in BCNF then two different minimal K, K 0 exist in R with K ∩ K 0 6= ∅ [VS93a]. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 207 • Given a type R which is in 3NF according to a set Σ of functional dependencies. If all different minimal K, K 0 in R are disjoint, i.e., K ∩ K 0 = ∅ then R is in BCNF according to Σ [Mok97]. • Given a type R and a set of functional dependencies. If R is in 3NF and all minimal keys consists of only one attribute then R is in BCNF. The second and the first statement are equivalent. The third sufficient condition is a corollary of the first. Adequacy of decomposed schemata: A schema S is an adequate representation of R if there is a transformation mapping Φ from R to S such that Φ is a reduction of SAT (R) to Φ(SAT (R)) ∩ SAT (S)[AT93]. Adequacy depends on the constraints ΣS specified in S. Let us consider the case of vertical decomposition Fd via a join dependency d = (X1 , ..., Xn ) Sn with ΣS ⊆ i=1 Σi . Φd maps relations from R(R) \ SAT (R) to SAT (S). The schema S is called fully adequate if Φd (R(R) \ SAT (R)) ⊆ R(S) \ SAT (S) and if Φ(SAT (R)) = SAT (S). Adequacy cannot be based on functional dependencies only. We also need inclusion dependencies and other constraints: For all i, j, 1 ≤ i, j ≤ n and S = (S1 , ..., Sn , ΣS ) the inclusion constraints SiC [Xi ∩ Xj ] ⊆ SjC [Xi ∩ Xj ] are implied Sn from ΣS . Furthermore, ΣS ⊇ i=1 Σi . Let us now consider the pair (Φd , Ψ) for a set of functional dependencies ΣR and a decomposition dependency d defined for R. Thus, Φ∗ decomposes R into a set of projections. Ψ is a S − R-translation. Based on Proposition ?? we observe[MR98]: Corollary 2 (i) Let Σ be a set of functional dependencies. Then Φ# d (Σ) is equivalent to a set of functional dependencies. (ii) Ψ# (ΣR ) is not necessarily equivalent to a set of functional dependencies. It is equivalent to a set of weak functional dependencies. Thus, it is equivalent to a generalized functional dependency. Therefore, functional dependencies cannot be used to characterize all databases which have been obtained by vertical decomposition. Dependencies of the same class might be not powerful enough for the characterization. The following table shows to which constraints functional dependencies (FD), general embedded implicational dependencies (EID), equality generating dependencies (EGD), tuple-generating dependencies (TGD), inclusion dependencies (ID) and embedded tuple-generating dependencies are mapped by translations based on projections (PROJ), based on joins (JOIN) and by translations of the smallest set (BASIC) of translations which contain projection and join and which are closed under composition. dependency class FD EID EGD TGD ID ETGD PROJ FD EID EGD ETGD ID ETGD JOIN EGD EID EGD ETGD ETGD ETGD BASIC EGD EID EGD ETGD ETGD ETGD Basically closed classes DEP of dependencies are such classes for which for each Φ ∈BASIC and every Σ ⊆DEP the property Φ# (Σ) ⊆DEP. In [MR98] the following observation is stated. Corollary 3 Embedded implicational dependencies are the smallest basically closed class of dependencies which contain both the functional and inclusion dependencies. Embedded implicational dependencies are the smallest basically closed class of dependencies which contain (0, 1), (0, m), (1, m), (1, 1) cardinality constraints. The proof is based on Proposition ??. Currently, two approaches to normalization on the basis of functional dependencies are known: Synthesis approach: The synthesis approach is based on a precomputation of an appropriate set of functional dependencies. This set can be computed on the basis of the axiomatization of functional dependencies. A type R = (compon(R), Σ) has a minimal set of constraints if Σ obeys the following properties: • Each dependency in Σ has the form X → {A} for a component A of R. • No proper subset of Σ implies Σ. • Each dependency in Σ is left-reduced, i.e., there is no proper subset Y of X for a functional dependency X → Z in Σ with Σ |= Y → Z. We assume that each component appears in at least one functional dependency of Σ. We compute the decomposed schema based on the following choice: • If for a dependency X → {A} ∈ Σ X ∪ {A} = compon(R) then R cannot be decomposed. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 208 • For any dependency X → {A} ∈ Σ define a new type with the components X ∪ {A} and the key X. We choose a key K of R and create a new type with K as its components. If components do not participate in any functional dependency then we add a new component ω and a functional dependency whose right side is the new component and whose left side contains those components together with the ‘dangling’ components which should not be separated from the latter. Then we compute the decomposition and remove the new component at the end. The same approach can be applied if there are components which should not be separated. Let us consider a movie display database type [AHV95] containing attributes for the movie (A(ctor), D(irector), M(ovie title)), the theatre (Th(eatre name), A(ddress), P(hone)) and some display data (Ti(me), Pr(ice)). Further we are given the dependencies: { Th } → { Ad, P }, { Th, Ti, M } → { Pr } and { M } → { D }. In addition, we assume that the attributes A and T cannot be separated. We obtain the types with the following components and the corresponding projected constraints: { Th, Ad, P }, { M, D }, { Th, Ti, M, Pr }, { Th, M, Ti, A }. If we assume furthermore that M →→ A then the last type can be decomposed according to the decomposition approach into { Th, M, Ti } and { M, A }. Since the first new schema is subsumed by the third type it can be removed. Thus we obtain: { Th, Ad , P }, { M, D }, { Th, Ti, M, Pr }, { M, A }. The synthesis approach will generate a lossless, constraint preserving decomposition to third normal form. BCNF can only be computed for some sets of functional dependencies. If the inclusion constraints are added then this approach leads to a decomposition which is fully adequate. Decomposition approach: Given a type R = (compon(R), Σ), we compute stepwise a new schema based on functional dependencies until all new component schemata are in BCNF by the decomposition step: Choose a type R0 = (compon(R0 ), ΣR0 ) which is not in BCNF. Choose a partition of compon(R0 ) into X, Y, Z such that ΣR0 |= X → Y and ΣR0 6|= X → {A} for each A ∈ Z. 0 0 Replace R0 = (compon(R0 ), ΣR0 ) by R10 = (compon(R0 ) ∩ XY, ΣRXY ) and R20 = (compon(R0 ) ∩ XZ, ΣRXZ ). If there are S = (compon(S), ΣS ) and T = (compon(T ), ΣT ) in the decomposed schema with compon(S) ⊆ compon(T ) then remove S from the decomposed schema. Let us consider the same movie display database type. We apply the first dependency and obtain the schema ({ Th, Ad, P }, {{ Th } → { Ad, P }}) ({ A, D, M, Th, Ti, Pr }, {{ Th, Ti, M } → { Pr }, { M } → { D }} ). Now we can apply the third dependency and obtain ({ Th, Ad, P }, {{ Th } → { Ad, P }} ), ({ A, M, Th, Ti, Pr }, {{ Th, Ti, M } → { Pr }} ), ({ D, M }, {{ M } → { D }} ). Furthermore the second type can be decomposed. Thus we obtain: ({ Th, Ad, P }, {{ Th } → { Ad, P }} , ({ M, Th, Ti, Pr }, {{ Th, Ti, M } → { Pr }} , ( { A, M, Th, Ti }, { key = { Th, Ti, M, A }} , ({ D, M }, {{ M } → { D }} . The third type can be decomposed as well if we consider also the multivalued dependency discussed above. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 209 The decomposition approach leads to a BCNF schemata and a lossless decomposition. Adequacy requires adding the corresponding inclusion constraints and path functional constraints. The decomposition approach can also be applied if multivalued dependencies are present. In this case we can generate normal forms higher than the BCNF such as the fourth normal form or the project/join normal form. The fourth normal form requires that each valid multivalued dependency in the type is a key dependency. Project/join normal form requires that each join dependency valid for the type is implied by the key dependencies valid for this type. The decomposition approach is well-based for sets of functional dependencies which are hierarchical. In this case, the leaf dependencies are used for decomposition. The schema obtained in this case is lossless and constraint preserving. If the set of functional dependencies cannot be represented in a tree then the decomposition approach produces a schema in BCNF which is not constraint preserving. For illustration let us extend the type Lecture in the university example. We also consider text books assigned to courses. Each course is offered in any number of sections. Each section has a lecturer and a number of teaching assistants (graders). Courses use for their section different labs. Slides and additional material are available for courses and sections. The type Lecture∗ = ( Course, Text, Semester, Room, Lab, Material, Lecturer : Professor, Grader : Person { Time(Day,Hour), Section } ) with the set of multivalued dependencies { Course } →→ { Text }, { Course, Section, Semester } →→ { Time }, { Course, Section, Semester } →→ { Room }, { Course, Section, Semester } −→ { Lecturer }, { Course, Section, Semester } →→ { Grader }, { Course, Section, Semester, Lecturer } →→ { Material }, { Course, Section, Semester, Lecturer } →→ { Lab } represents the information on lectures. Course ) q Section, Semester Text 9 ) ª R Lecturer Time Room Grader ª R Lab Material Abbildung 32: Tree Dependency in the Extended Relationship Type Lecture∗ The constraints can be represented by a tree dependency, displayed in Figure 32. The dependency structure allows decomposition of the type Lecture∗ into the types CourseText = ( Course , Text , ∅ ), Lecture0 = (Course, Semester, { Section }), Lecture1 = (Lecture0 , { Time }), Lecture2 = (Lecture0 , Room, ∅ ), Lecture3 = (Lecture0 , Grader, ∅ ), Lecture4 = (Lecture0 , Lecturer, ∅ ), Lecture41 = (Lecture4 , Lab, ∅ ), Lecture42 = (Lecture4 , Material, ∅ ). We can prefer the following decomposition which is more appropriate in the application context: CourseText = ( Course , Text , ∅ ), LectureActual = (Course, Semester, Lecturer, Room, { Section, Time } ), LectureMaterial = (LectureActual, Material, ∅ ), LectureLab = (LectureActual, Lab, ∅ ), LectureGrading = (LectureActual, Grader, ∅ ) . In this case the grading results for each student are assigned to LectureGrading. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 210 The decomposition approach does not lead to a lossless, constraint preserving and adequate schema if the dependency { Course, Section, Semester, Lecturer } →→ { Material } is changed to the dependency { Course, Semester, Lecturer } →→ { Material }. The latter constraint causes a split virtual key problem. This problem can be solved if additional redundant types are introduced with a corresponding explicit treatment of redundancy: LectureTerm = (Course, Semester, ∅ ), LecturerAssignment = (LectureTerm, Lecturer, { Section } ), LectureActual = (LecturerAssignment, Room, { Time } ), LectureMaterial = (LectureTerm, Lecturer, Material, ∅ ). The types LecturerAssigment and LectureMaterial are correlated by inclusion constraints and their components LectureTerm and Lecturer. We note that the decomposition steps can be applied to relationship types as well. In this case the components of other relationship types have to be changed as well. We shall consider this case below. 2.5.3 Flaws of the Classical Synthesis Algorithm Erfassung der äquivalenten linken Seiten . Einige Synthesealgorithmen verzichten auf die Bildung von Äquivalenzklassen. Damit kann ggf. ein Schema entstehen, das zwar normalisiert, aber nicht sinnvoll ist. Es ist jedoch sinnvoll, die folgende Ergänzung vorzunehmen. Problem Problem dieser Vereinfachung: Es können unnötig viele Relationstypen erzeugt werden. Als Beispiel betrachte man das Schema ({A, B, C}, {{A} → {B}, {B} → {C}, {C} → {A}}) das man ggf. nach der Reduktion erhalten hat. Dann entstehen drei neue Teilschemata. Behebung Es werden im ersten Schritt (1 (d)) der Normalisierung Äquivalenzklassen von Teilmengen von Attributmengen eingeführt. Dann wird eine Zusammenfassung der FD’s mit äquivalenten linken Seiten vorgenommen (statt gleiche linke Seiten). Die Sammlung erfolgt dann für eine Äquivalenzklasse. Im Beispiel gilt dann [{A}] = [{B}] = [{C}] und somit wird nicht dekomponiert. Pragmatische Separation von Schemata . Der klassische Normalisierungalgorithmus empfiehlt im vorletzten Schritt die Zusammenführung aller funktionalen Abhängigkeiten mit der gleichen rechten Seite. Man betrachte dazu folgende Relation: AG AGNummer Bezeichn Institut ... ... ... AG AGNummer ... Lieferadr ... ... ... WebAdr Fax Sachgebiet Sekr.Ort Sekr.Tel EmailKontakt ... ... ... ... ... ... Besuchsadr Postadr Kostenstelle Leiter Anreisekarte ... ... ... ... ... ... ... ... In dieser Relation ist das Attribut AGNummer ein Schlüssel, wobie durchaus andere sinnvolle Schlüssel existieren, z.B. das Attribut Kostenstelle. Beobachtung: Diese Relation vereinigt zuviele unterschiedliche Aspekte, die eigentlich getrennt werden sollten. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 211 Eine günstige Darstellung findet man im folgenden Schema im erweiterten ER-Modell 3 . Sie zeigt auf, daß man die Arbeitsgruppeneigenschaften separieren kann in ArbeitsgruppeDirekt und ArbeitsgruppeFinanzen sowie als Option ArbeitsgruppeSekretariat. Es ist durchaus eine Separation von ArbeitsgruppeKontakt sinnvoll (aufgrund der Besonderheiten von Daten wie Karten). Fonds 6 Kostenstelle - Sachgebiets- Sachgebiet AGNummer Bezeichnung WebAdr ... Fax Tel Ort ¼ Arbeitsgruppe ¾ Klassifikation ? 6 K Hauptzuordnung - Institut I Postadresse Lieferadresse Kontakt Besuchsadresse Anreisekarte EmailKontakt Sekretariat 6 Sekretär(in) Leiter ? Person ª Abbildung 33: Ein HERM-Diagramm mit einer Separation von Gesichtspunkten 2.5.4 Normalisation and its Impact Classical database books don’t tell the full truth about normalisation. Any (vertical) decomposition of a type T into types T1 , ..., Tn results in additional integrity constraints. Pairwise inclusion constraints: In the case of vertical decomposition we introduce pairwise inclusion constraints on components compon(Ti ) of the types Ti . Ti [compon(Ti ) u compon(Tj )] ⊆⊇ Tj [compon(Ti ) u compon(Tj )] ∀i, j(1 ≤ i < j ≤ n) We denote by u the componentwise intersection of the elements. Beobachtung 1. These pairing inclusion constraints have an impact on integrity maintenance and thus limit the impact of normalisation. 2.5.5 Denormalisation Ruins Normalisation Strict local normalisation may be inadequate. Therefore a large number of publications, e.g., [Cel95, Dat05, SW05] advocate denormalisation whenever problems are observed within database structures. A theory of denormalisation has not yet been 3 Unäre Relationship-Typen stellen u.a. auch Spezialisierungen dar, so daß der Typ Sekretariat z.B. auch die Identifikation vom Typ Arbeitsgruppe erbt. Die Darstellung der funktionalen Abhängigkeiten als (0,1)-Kardinalitäten sind dabei ausgelassen. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 212 proposed as far as we know. Instead, a number of heuristic rules for denormalisation are provided. These rules are based on observations for performance traps for some of the platforms and often use the 80/20% rule. It is well known that denormalisation is bad for updates since they are harder to formulate and can jeopardise database integrity. Denormalisation may also lead to complications for query formulation. It becomes easier to formulate incorrectly a query to a request meaning that the query does not correspond to the request. Typically, tricky view creation is used for denormalised tables. Therefore, it seems that normalisation is the best way for optimisation of database behaviour. Despite these advantages of normalisation the denormalisation is considered a method for performance improvement method. It is based on precomputing derived data, on minimising the need of joins, on reducing the number of foreign keys in relations, on reducing the number of indexes and on reducing the number of relations. OLAP and data warehouse techniques rely on denormalisation. We shall however detect in the next sections that denormalisation can be minimised if global normalisation is applied. [LTN07] lists some key effects of thoughtful denormalisation: definite improvement in query time, a potential increase in update time or in storage space, a potential loss of data integrity due to certain deletions, the necessity for program transformations for all relevant queries and the overhead needed to reorganise some tables. Physical database design should follow logical database design. Logical database design should follow conceptual database design. We thus need the ‘Janus’ schema cluster for translating conceptual queries and programs to logical programs. Denormalisation is an approach to improve efficiency and performance of the database. Since we advocate co-design of structuring and functionality we develop a broader view to optimisation. Typical denormalisation techniques are • the introduction of controlled redundancy for avoiding joins, e.g. by copying attributes to other tables, • the introduction of nested types such as repetition groups, • the composition or join of tables which are separated by functional or multivalued dependencies and which would not be separated if exceptions for these dependencies would be separately stored, and • the maintenance of lookup tables that keep referenced values of other tables without having additional attributes. The first technique is supported by restrictions to modifications of redundant components and by flooding their values from the base table. The second technique is supported by modern object-relational systems. If nested types are used in minimal keys then surrogate key can be introduced. The third technique uses horizontal decomposition into the (rare) exceptional cases together with vertical decomposition of the exception table. The fourth technique uses enumeration domains and thus supports domain constraints. Mod IS IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 213 2.5.6 Horizontal Decomposition Horizontal decomposition is as simple as vertical decomposition. Given a type R = (compon(R), Σ) and a dependency α on R which does not follow logically from Σ. We can decompose the class RC into those objects which satisfy α and those which do not. This defines a R − (R1 , R2 ) translation Φα . The inverse translation Ψα is given by the union operation. In [MR98] the following proposition has been proven: Proposition 1 Let α1 , α2 be obtained from α by substituting R1 , respectively R2 for R. Let RC ∈ SAT (R). Then (i) α1 is valid in Φ∗ (RC ). # (ii) Φ# α (α1 ) and Φα (¬α2 ) are tautologies. (iii) Φα is information preserving. # (iv) Φ# α (Ψα (Σ) ∪ {α1 , ¬α2 }) is equivalent to Σ. ∗ (v) Ψ is a reduction from SAT ((R1 , R2 , Σ) ∪ {α1 , ¬α2 }) to SAT (R). (vi) Φ∗ is a reduction from SAT (R) to SAT ((R1 , R2 , Σ) ∪ {α1 , ¬α2 }) and a left inverse of Ψ∗ . It is obvious that this approach can be extended to arbitrary selection conditions defined on the type R. Now let us consider another normalization problem using a list of parts example. Particularly in the case of recursive relationship types and (0,m)-cardinality constraints the possibility of overloading relationship type causes strange behavior of the database. In Figure 34 a part-subpart relationship type is used for the illustration of problems which can be solved by hierarchical decomposition. The Part type can be decomposed horizontally into the types Assembly and Component. In this case, the cardinality constraints do not change. This decomposition uses the subtype relationship according to the labels of the relationship type. This example shows that recursive relationship types can be replaced by a certain hierarchical scheme. Part 6 Assembly 6 Component (0,m) (0,m) MadeOf Horizontal Decomposition Hierarchical Set MadeOf Part µ Assembly ¾ I MadeOf -Component Abbildung 34: The Decomposition of Recursive Relationship Types. Let us now extend the list of parts example. The list of parts of a certain product is the description of all items of which it consists. The list of items tries to decompose the description of all items down to the lowest level of data. No further decomposition can be applied. A component can appear several times on the list and on different levels. Companies use lists of materials a great deal, since they need to store information on their products for matters concerning billing, organization, planning and control. The list of parts example has been discussed over a long period of time, as it illustrates disadvantages of the relational approach. In particular, lists of parts of higher depth can be used to demonstrate one disadvantage of the classical ER model. Let us use a modified example, presented in [CGT90]. An engine contains spark plugs, cylinders, valves and crank shafts. Cylinders are composed of pistons and connecting rods. Valves contain gaskets and hangers. Crank shafts contain joints. Bolts and screws are components of connecting rods, hangers and joints. Gaskets are components of pistons and valves. We want to represent the number of elements for the composition. This example can be represented by a general part-subpart entity type, with various entity types representing the information for different categories of parts (screws, bolts, etc.). It is possible to represent this information by the following general part-subpart types and elementary part entity types: CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 214 Gasket = ({ Type, Diameter, Gauge }, { Type} ), Bolt = ( { Type, Length, Diameter, Gauge }, {Type} ), Screw = ( { Type, Length, HeadType, Diameter }, {Type} ), SparkPlug = ( {Type, MaxTemparature, Diameter }, {Type} ), Part = ( { Type }, { Type } ), GasketIsAPart = ( Gasket, Part, ∅ ), BoltIsAPart = ( Bolt, Part, ∅ ), ScrewIsAPart = ( Screw, Part, ∅ ), SparkPlugIsAPart = ( SparkPlug, Part, ∅ ), Part-Subpart = ( Part, Subpart:Part, { NoOfSubparts }). The Is-A relationship types are simply inclusion dependencies. However, in this scheme a closure dependency [GSS89] is valid which requires that only subparts defined as parts or bolts, screws or gaskets are used. This dependency requires computation of a transitive closure for maintenance and cannot be computed on the basis of relational algebra. For this reason, the following scheme representing the hierarchical structure would be more appropriate. This schema is represented in Figure 35. Gasket = ({ Type, Diameter, Gauge }, { Type} ), Bolt = ( {Type, Length, Diameter, Gauge }, {Type} ), Screw = ( {Type, Length, HeadType, Diameter }, {Type} ), SparkPlug = ( {Type, MaxTemparature, Diameter }, {Type} ), Piston = ( Gasket, {Type, NoOfGaskets }), ConnectingRod = ( Bolt, Screw, {Type, NoOfScrew, NoOfBolt }), Hanger = ( Bolt, Screw, {Type, NoOfScrew, NoOfBolt }), Joint = ( Bolt, Screw, {Type, NoOfScrew, NoOfBolt }), Cylinder = ( Piston, ConnectingRod, {Type, NoOfPiston, NoOfConnectingRod }), Valve = ( Gasket, Hanger, {Type, NoOfGasket, NoOfHanger }), Crankshaft = ( Joint, {Type, NoOfJoint }), Engine = ( Cylinder, Valve, Crankshaft, SparkPlug, {Type, NoOfCylinder, NoOfValve, NoOfCrankshaft, NoOfSparkPlug }), where entities and relationships can be identified by their corresponding Type value and components of relationship types determine the number of items necessary for this part from the component parts, i.e., R : R0 −→ {N oOf R0 }. The closure dependency mentioned above is replaced by the implicit inclusion dependencies in the type definition. Therefore, the last schema is easier to maintain and clearly arranged. The functional dependency shows that all relationship types can be normalized. This is necessary if there are more complex attribute sets characterized by components. Generally speaking, given the relationship type R = (R1 , ..., Rn , {A1,1 , ..., A1,m(1) , A2,1 , ..., An,m(n) , B1 , ..., Bm }) and for all i , 1 ≤ i ≤ n the functional dependencies R : Ri −→ {Ai,1 , ..., Ai,m(i) }, then we can decompose the type R and use new types Ri0 for i, 1 ≤ i ≤ n: Ri0 = (Ri , {Ai,1 , ..., Ai,m(i) }) and, R = (R10 , ..., Rn0 , {B1 , ..., Bm }). The reason for the existence of this equivalent representation is the existence of horizontal decomposition dependencies [PBGG89, ?] (or inherence axioms [SI91]). Let us analyze this example in more detail. We find that all items can be divided into the categories Sparkplug, Gasket, Bolt, Screw, ConnectingRod, Hanger, Joint, Crankshaft, Valve, Cylinder and Engine. The latter seven categories are not directly represented but they can be included easily by adding entity types and the corresponding relationship type Is-A to the first representation. In this case Part can be directly represented as a cluster of Sparkplug, Gasket, Bolt, Screw, ConnectingRod, Hanger, Joint, Crankshaft, Valve, Cylinder and Engine. In this case, the first representation is equivalent to the representation shown in Figure 36. In this case, the Part-Subpart relationship type satisfies horizontal decomposition constraints specified by path inclusion dependencies such as P iston0 ← P art ← P art − Subpart [P iston0 .T ype] ⊆ P iston0 ← P art ← P art − Subpart → P art → Gasket [P iston0 .T ype]. This dependency states that pistons consists only of gaskets. Similarly, we can specify that engines consist only of sparkplugs, cylinders, valves and crankshafts using the union of paths on the right side of the path inclusion dependency. CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 215 Engine ª ¼ Spark plug R Cylinder ª Valve ? R Crankshaft ? Connecting Rod Piston j ? Hanger ² R ?ª Gasket Bolt Joint R ? s Screw Abbildung 35: Depth-Restricted Horizontal Decomposition of Part-Subpart Sparkplug } Gasket Screw Bolt ] O º > Á 3Connecting Rod’ Valve’ k Crankshaft’ y Cylinder’ ¾ Hanger’ Piston’ : L Engine’ - Joint’ Part 6 6 Part Subpart Abbildung 36: The Cluster Representation of Part-Subpart CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 216 This horizontal decomposition allows the closure dependency to be broken, since in this case the recursion in the PartSubpart type is of bounded length. Therefore, the schema in Figure 35 is equivalent to the first representation. However, with regard to the schema in Figure 35 the part-subpart relationship is of finite depth. In this case, the relationship type MadeOf is decomposed together with the horizontal decomposition of the Part entity type. This leads to a schema with more information and with cardinality constraints of finer granularity. The valences concept is useful when evaluating horizontal decompositions. According to [ZB92] cardinality constraints can be directly used for definition of relationship types. This concept can be extended directly for relationship types. Let us assume that the type constructors ×, ∪, + (see also Chapter ??) are defined for construction of tuple types, union and exclusive union (discrepancy). On the basis of the set of entity types E = {E1 , ..., Em } and a set of attributes U , the set of all terms on E ∪ U can be defined as follows: 1. IE is a term for an element E from E and an interval I ⊆ N . 2. If t1 is a term and t2 is a term or an attribute from U and I, I 0 ⊆ N are intervals, then (I1 t1 × I2 t2 ), (I1 t1 ∪ I2 t2 ), (I1 t1 + I2 t2 ), are terms. The semantics of valences can be defined in the corresponding manner using the construction of terms. A relationship type can then be defined by a term. It should be noted that the valence concept cannot be used to replace the concept of cardinality constraints. It can be used in the same way as the concept of nested hierarchical relations. This concept can be modified by also taking into account role names [PS89]. For instance [ZB92], an ensemble could be defined by ((((({1}Dress + ({1}Blouse × {1}({1}Skirt + {1}T rousers))) ×{0, 1}Jacket) × {0, 1, 2, 3}N ecklace) × N ({2}Stocking) ×{1}({1}Right : Shoe × {1}Lef t : Shoe). The valences concept can be used for representing horizontal decompositions. CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 217 2.5.7 Deductive Normalization The idea of using first-order logic in clausal form as a programming language has been applied in many different fields, such as algebraic manipulation, robotics, compilers, and natural language processing. General laws are also useful in order to avoid redundancy and in connection with updating (trigger concepts). Normalization of relations is one of the most important approaches to database design. The concept of dependencies has proved to be useful in design and analysis of databases, for instance for normalization. However special kinds of constraints can also be useful when reducing databases to a deductive basis. For instance, databases which are huge, seldom modified and only sometimes queried require another approach for storage cost minimization. Archive databases are a special kind of such databases. By using special tuple-generating dependencies, for instance, we obtain the initial database from its subset, e.g. its deductive basis. During the query phase, rules are used to generate all possible derivations of facts and thereby make them explicit in the database again. However, before using this approach the termination problem should be resolved since rules may lead to potentially infinite derivation paths. We will now consider the concept of deductive normalization on the type level. This concept can also be developed on the scheme level. However, in this case it is more complex. For instance, inclusion constraints affect the way the deductive basis is generated. The restriction to types allows the utilization of relational arguments since our ER model uses a set semantics for all its types. We are given a relation scheme R = (U, Ψ) where U = {A1 , ..., An } and a template dependency α = .(PR (x̂1 ) ∧ ... ∧ PR (x̂k ) → PR (x̂0 )) from LR . Let RC be a relation on R. Define the application α(RC ) of α to RC as RC ∪ { t | a substitution S on RC exists such that S(x̂i ) ∈ RC and S(x̂0 ) = t }. For the set of template dependencies Σ = {α1 , ..., αs } ⊆ LR the application Σ(RC ) of Σ to RC is defined by Σ(RC ) = α1 (α2 (...(αs (RC )...)). Now αk (RC ) denotes the result of k applications of α to RC , Σk (RC ) - the result of k applications of Σ to RC , ∗ α (RC ) - the result of many arbitrary applications of α to RC and Σ∗ (RC ) - the result of many arbitrary applications of Σ to RC . These definitions can be easily extended to sequences of types ERS and to general implicational dependencies .(P1 (x̂1 ) ∧ ... ∧ Pm (x̂m ) → Q1 (ẑ1 ) ∧ ... ∧ Ql (ẑl )) and ERS-databases. Generally speaking, we can use the chase procedure introduced in Section ??. For a relation RC we define the set PRC = V C {PR (ĉ) | (ĉ) ∈ R } and the formula αRC = (( β∈P C β) → γ) for γ ∈ PRC . R Given now a set Σ of constraints, the closure by chase procedure is defined by Chase(RC , Σ) = {(ĉ) | PRC (c) ∈ Cl(Σ, αRC )} . The first question which needs to be answered is whether this procedure terminates in finite time frames. Corollary 4 For schemes R = (U, Ψ), a set of template dependencies Σ and a relation RC on R, a number k, k ≤| RC ||U | exists such that Σ∗ (RC ) = Σk (RC ). Corollary 5 For a relation scheme R = (U, Ψ), a set of template dependencies Σ from LR and a relation RC , the following are equivalent: (1) |=C Σ ; (2) (3) R Σ∗ (RC ) = RC ; Ψ |= Σ . Take a scheme R = (U, Ψ), a set Σ of template dependencies and a relation RC with |=C Σ . A subset RC of RC is called R an Σ-deductive subset if Σ(RC+ ) = RC . In relation to Σ the deductive subset contains relative to Σ the same information as the original set. Therefore, we can use the deductive subset together with a set of formulas instead of the original set. Minimal deductive subsets are of particular interest. A Σ-deductive subset RC which is minimal, i.e., there is no proper subset RC++ of RC+ such that Σ(RC++ ) = RC , is called a Σ-deductive basis of RC . For R = (U, Ψ) and the set Σ = {α | Ψ |= α, α - template dependency} any Σ-deductive basis is called deductive basis of RC . CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 218 Corollary 4 restricts the set of iterations to a boundary which is dependent on the relation. Since the size can be very large, we are interested in those schemes in which the computation of closure is less complex. A template dependency α ∈ LR (or a set of template dependencies Σ ⊆ LR is bounded if a number k exists such that for any relation RC on R α∗ (RC ) = αk (RC ) (or Σ∗ (RC ) = Σk (RC )). The smallest k for this property is called the limit of α (resp. Σ). Let us consider the following relational schema R = ({A1 , A2 , A3 }, ∅) , α = .(P (x1 , x2 , x03 ) ∧ P (x1 x02 , x3 ) → P (x1 , x2 , x3 )), and the relation RC = {(0, 0, 0), (0, 1, 1), (0, 1, 0), (0, 0, 1), (1, 0, 0)}. The subsets RC+ = {(0, 0, 0), (0, 1, 1), (1, 0, 0)} and RC++ = {(0, 0, 1), (0, 1, 0), (1, 0, 0)} are α-deductive bases of RC . It can be shown that the limit of α is 1. The deductive bases of a relation can also be considered as a deductive normal form. These normal forms can be more effective, according to the storage requirements, than the known classical normal forms. Let RC be a relation on R = (U, Ψ). For a multivalued dependency α |=C α. Let d = (X, Y ) be the binary join dependency R corresponding to α. Thus RC = RC [X]∗ RC [Y ]. We can now introduce a simple complexity measure: k RC k=| r | · | U | , i.e., length of tuples multiplied by number of tuples. Let RC+ be the α-deductive basis of RC . Thus we get k RC+ k≤ k RC k . Examples exist for which decomposition using the join dependency α is more effective than the deductive normal form. However, these examples assume the case that k RC [X] k¿k RC [Y ] k . On the other hand, for the set of relations with balanced decompositions (i.e., k RC [X] k≈k RC [Y ] k ), deductive normal forms are more effective than vertically decomposed normal forms. There are two main problems: 1. Take a Σ-deductive basis RC of a relation Σ∗ (RC ). How many steps are required to evaluate Σ∗ (RC ) ? What is the limit of Σ estimated to be ? 2. Take RC and Σ . How can a Σ-deductive basis of RC be constructed ? With regard to the second problem there are recognized algorithms [CGT90, Das92, Tha90]. The first problem is more complicated. If the set Σ is unlimited, then the use of Σ-deductive bases is pointless. Corollary 6 Sets of multivalued dependencies are unlimited in general (respectively also: sets of (binary) join dependencies). Template dependencies are also unlimited in general. We can use the following example in order to prove the corollary . Given, for example, R = (U = {A1 , A2 , A3 , A4 }, Ψ) and α1 = .(P (x, y, z, u0 ) ∧ P (x, y, z 0 , u) → P (x, y, z, u)), , α2 = .(P (x0 , y, z, u) ∧ P (x, y 0 , z, u) → P (x, y, z, u)) , Σ = {α1 , α2 } t1 = (0, 0, 0, 0) and for i, 1 ≤ i , t2i [{A1 , A2 , A3 }] = t2i−1 [{A1 , A2 , A3 }] , t2i (A4 ) = t2i−1 (A4 ) + 1 , t02i [{A1 , A2 , A4 }] = t02i−1 [{A1 , A2 , A4 }] , t2i (A3 ) = t2i−1 (A3 ) + 1 , t2i+1 [{A1 , A3 , A4 }] = t2i [{A1 , A3 , A4 }] , t2i+1 (A2 ) = t2i (A2 ) + 1 , t02i+1 [{A2 , A3 , A4 }] = t2i [{A2 , A3 , A4 }] , t02i+1 (A1 ) = t2i (A1 ) + 1 . C \ {ti−1 } ∪ {ti , t0i }, i.e., for example If R1C = {t1 } and i ≥ 2, then RiC = Ri−1 R1C 0000 R2C 0100 1000 R3C 0101 0110 1000 R4C 0201 2101 0110 1000 R5C 0202 0221 2101 0110 1000 R6C 0302 3202 0221 2101 0110 1000 R7C 0303 0332 3202 0221 2101 0110 1000 C C C C then it is true that (0, 0, 0, 0) ∈ Σi (Ri+1 ) and (0, 0, 0, 0) 6∈ Σi−1 (Ri+1 ) for i ≥ 1, i.e., Σi (Ri+1 ) 6= Σi−1 (Ri+1 ) . Therefore Σ is unlimited. For α = .(P (x, y 0 , z, u0 ) ∧ P (x0 , y, z, u0 ) ∧ P (x, y 0 , z 0 , u) ∧ P (x0 , y, z 0 , u) → P (x, y, z, u)) the second statement of the corollary is valid since it implies Σ. CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 219 Since the set of multivalued or join dependencies is already too powerful we should restrict deductive normal forms either to singleton constraint sets, simple constraint sets or to less powerful constraint classes. Since the latter is not practical we now need conditions on constraint sets. A set of decomposition dependencies Σ (or join dependencies) is called a Sheffer-set if there is a decomposition dependency αΣ where Σ |= αΣ and {αΣ } |= Σ . Decomposition dependencies are first-order predicate logic representations of join dependencies. It is important to bear in mind that any finite set of template dependencies has this property. Therefore, the extension of Sheffersets to template dependencies is pointless. Corollary 7 If Σ is a Sheffer-set whereby Σ |= αΣ and {αΣ } |= Σ for a decomposition dependency αΣ , then for any relation ∗ (RC ) = Σ∗ (RC ). RC on R it is true that αΣ Theorem 2 [Tha85] Any Sheffer-set Σ of decomposition dependencies is limited. For any relation RC on R it is true that αΣ (RC ) = Σ∗ (RC ) . This theorem shows that ER schemes which have a Sheffer-set of join dependencies can be deductively normalized. Furthermore, a join dependency which is equivalent to a Sheffer-set can evaluate the normal form in one step. In order to prove this we use the approach of [MN83] for recursive axioms. Take a template dependency α with the set Var(α) y1 y2 yk k of variables and a subset V of Var(α) . A substitution σxy11 ...y ...xk = σx1 (σx2 (...(σxk )...)) of old variables xi and corresponding new variables yi is said to be safe (with regard to α and V ) if {y1 , ..., yk } ∩ Var(α) = ∅ and {x1 , ..., xk } ∩ V = ∅. Take two sets of formulas Σ1 = {β1 , ..., βp } and Σ2 = {π1 , ..., πq } with the set V of variables in Σ1 and Σ2 and the set V2 of variables used in Σ2 . The set Σ2 subsumes Σ1 with regard to V if there is a safe substitution σ with regard to (π1 ∧ ... ∧ πq , V2 ) such that C1 ⊆ {σ(π1 ), ..., σ(πq )} . We will now define a particular sequence ωi (Σ, P (x̂)) for a set Σ of template dependencies and a formula P (x̂): ω0 (Σ, P (x̂)) = {P (x̂)} ; ωi+1 (Σ, P (x̂)) = ωi (Σ, P (x̂)) \ {P (ŷ)} ∪ {P (ŷ1 ), ..., P (ŷs )} for P (ŷ) ∈ ωi (Σ, P (x̂)) and .(P (ẑ1 ) ∧ ... ∧ P (ẑs ) → P (ẑ)) ∈ Σ if there is a safe substitution σ with σ(P (ẑ)) = P (ŷ) , and σ(P (ẑi )) = P (ŷi ) . Any such sequence ω0 (Σ, P (x̂)), ω1 (Σ, P (x̂)), ..., ωi (Σ, P (x̂)) corresponds to the generation of a new element in Σi (RC ) and vice versa. Obviously the following is applicable [CL73]: Lemma 2.1 Take a sequence ω0 (Σ, P (x̂)), ω1 (Σ, P (x̂)), ..., ωi (Σ, P (x̂)), ... If for j ωj (Σ, P (x̂)) subsumes ωj−1 (Σ, P (x̂)) then the sequence is equivalent to ω0 (Σ, P (x̂)), ω1 (Σ, P (x̂)), ..., ωj−1 (Σ, P (x̂)) . Proof of Theorem 2: Take a decomposition dependency α. Any sequence ω0 (Σ, P (x̂)), ω1 (Σ, P (x̂)), ..., ωi (Σ, P (x̂)), ... is equivalent to ω0 (Σ, P (x̂)), ω1 (Σ, P (x̂)) since for α = .(P (x̂1 ) ∧ ... ∧ P (x̂k ) → P (x̂0 )) , ω1 (Σ, P (x̂)) = {P (ŷ1 ), ..., P (ŷk )} and ω2 (Σ, P (x̂)) = {P (ŷ1 ), ..., P (ŷi−1 ), P (ŷi+1 ), ..., P (ŷk ), P (ẑ1 ), ..., P (ẑk )}, a safe substitution σ exists for P (ẑ1 ), ..., P (ẑk ) such that ω2 (Σ, P (x̂)) subsumes ω1 (Σ, P (x̂)). Lemma 2.1 gives us the assertion of Theorem 2. The next problem is to characterize Sheffer-sets of decomposition dependencies or of the corresponding join dependencies. A characterization of Sheffer-sets of binary join dependencies can be given for full hierarchical dependencies using results on hierarchical dependencies [?]. Theorem 3 [Tha85] Let K be a set of full hierarchical dependencies, i.e., a set of join dependencies with the property Xi ∩Xj = Xi ∩ Xk , 1 ≤ i ≤ m, 1 ≤ j ≤ k ≤ m, i 6= j, i 6= k for (X1 , ..., Xm ) ∈ K. K is a Sheffer-set iff for any (X1 , ..., Xk ) ∈ K the property K |= (X1 , ..., Xi−1 , Y, Xi+1 , ..., Xk ) implies that K |= (X1 , ..., Xi−1 , Xi ∩ Y, Xi+1 , ..., Xk ). CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 220 2.6 HERM Normal Form of Relational Database Schemata Relational schemata can be directly retranslated to HERM schemata under certain conditions. In order to express this we introduce the HERM normal form of relational schemata, which generalizes and modifies the ER normal form discussed in [MR92]. Let DB = (R1 , ..., Rm , Σ) be a schema of a relational database. The integrity constraints in Σ contain inclusion constraints. In inclusion constraint S[X] ⊆ T [Y ] ‘enters’ T and ‘leaves’ S. Let S[X1 ] ⊆ T1 [Y1 ], S[X2 ] ⊆ T2 [Y2 ], ..., S[Xm ] ⊆ Tm [Ym ] be the set of inclusion constraints leaving S which are implied by Σ. Furthermore, let S1 [X1 ] ⊆ T [Z1 ], S2 [X2 ] ⊆ T [Z2 ], ..., Sm [Xk ] ⊆ T [Zk ] be the set of inclusion constraints entering T which are implied by Σ. Then we define Sk enterC (T ) = S i=1 Zi , enterT (T ) = {S1 , ..., Sk }, m leaveC (S) = i=1 Xi , leaveT (S) = {T1 , ..., Tk }. Inclusion constraints can be pairing constraints, i.e., S[X] ⊆ T [Y ] and S[X] ⊇ T [Y ] are both valid. We can now layer the relation schemata: • A relation schema R is of depth 0 if it satisfies the following conditions: • R has no entering inclusion constraints which are not paired. • R has at least one leaving inclusion constraint. The left hand sides of leaving inclusion dependencies are pair-wise disjoint. • The components used for leaving inclusion constraints leaveC (R) form a key of R. • A relation schema R is of depth i if it satisfies the following conditions: • R has no entering unpaired inclusion constraints from schemata which are of depth less than i. • R has a leaving inclusion constraint to a type of depth i − 1. R has no entering or leaving inclusion constraints to or from schemata of depth i. • The left hand sides of leaving inclusion dependencies are pairwise disjoint and the components used for leaving inclusion constraints leaveC (R) form a key of R. The relational database schema DB is in HERM normal form if it can be layered, all relation schemata are in BCNF with respect to the functional and inclusion dependencies implied by Σ, the inclusion constraints are key-based and the set of inclusion constraints is acyclic according to the layers. The key condition can be weakened. In this case we obtain extended HERM schemata whose relationship types have keys consisting of their components and attributes. Proposition 4 Let DB be a relational database schema. There exists a HERM schema R such that DB is a maximal schema included into R if and only if DB is in HERM normal form. If none of the relational schemata has pairing inclusion constraints with a schema of the same depth then DB is equivalent to R. The proof is completely similar to the proof given in [MR92]. It is somewhat involved but the construction behind the proof is rather straightforward. If only one maximal relational database schema DB exists for a HERM schema R then the schema DB is equivalent to the schema R. The existence of several maximal database schemata for a HERM schema is caused by the loss of semantics during translation. Pairing inclusion constraints cannot be resolved after translation. Subtyping is not expressible in relational database languages. For instance, in SQL we use referential integrity in order to express key-based inclusion dependencies. We use the layering in order to derive a HERM pre-schema. The types S, T which are on the same layer with S ∈ enterT (T ) and S ∈ leave(T ) can be in any order. They are of the same depth but of different order. The solution should take into account the application. Let us consider the following example: Person = ({ PID, Name }, {{ PID → Name }}), MarriedPerson = ({ PID }, { key = { PID }}), Spouse = ({ PID, WithPID, Since }, { key = { PID, WithPID }), Σ = { MarriedPerson[PID] ⊆ Spouse[PID] , MarriedPerson[WithPID] ⊆ Spouse[PID], MarriedPerson[PID] ⊇ Spouse[PID] , MarriedPerson[WithPID] ⊇ Spouse[PID], MarriedPerson[PID] ⊇ Person[PID] }. CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 221 The schema (Person, MarriedPerson, Spouse, Σ) can be layered as follows: Person is of depth 0. MarriedPerson is of depth 1. Spouse is of depth 2. The corresponding HERM schema consists of the types: Spouse = (MarriedPerson, With : MarriedPerson, { Since }), MarriedPerson = (Person, ∅), Person = ({ PID, Name }, {{ PID → Name }}). The resolution is unique for depth. However there might be cases for which this resolution does not exist. Thus we must decide which resolution is the correct one. Let us consider the relational database schema Person = ({ PID, Name }, {{ PID → Name }}), Player = ({ PID }, { key = { PID }}), Inhabitant = ({ PID }, { key = { PID }}), Rents = ({ PID, FID }, { key = { PID }}), Flat = ({ FID, Address }, { key = { PID }}), Σ = { Person[PID] ⊆ Player[PID] , Player[PID] ⊆ Person[PID], Person[PID] ⊆ Inhabitant[PID] , Inhabitant[PID] ⊆ Person[PID], Rents[FID] ⊇ Flat[FID] , Flat[FID] ⊇ Rents[FID], Rents[PID] ⊇ Inhabitant[FID] }. Then we derive that Rents is of depth 0, Flat of depth 1, Inhabitant, Player and Person are of depth 1. Which schema should be represented by which HERM type depends on the resolution. The following HERM schema seems to be the natural one: Person = ({ PID, Name }, {{ PID → Name }}), Player = (Person, ∅), Inhabitant = (Person, ∅), Rents = (Inhabitant, Flat, ∅), Flat = ({ FID, Address }, { key = { PID }}). If the schema Person is absent then the following two HERM schemata are candidates: Solution A: Player = ({ PID }, { key = { PID }}), Inhabitant = (Player, ∅), Rents = (Inhabitant, Flat, ∅), Flat = ({ FID, Address }, { key = { PID }}). Solution B: Inhabitant = ({ PID }, { key = { PID }}), Player = (Inhabitant, ∅), Rents = (Inhabitant, Flat, ∅), Flat = ({ FID, Address }, { key = { PID }}). The same problem arises regarding cluster inclusion constraints. In the relational database model generalization and specialization cannot be distinguished. This applies to HERM but not to ER model. If the relational schema contains the class constraints Person ⊆ Student + Professor, Student ⊆ Person, Professor ⊆ Person then the corresponding HERM schema has either the type Person as a generalization of Professor and Student or the types Professor and Student are a specialization (e.g. roles) of Person. Schema A displayed in Figure ?? has path constraints on components of the type flies flies : { Flight.#, GateSchedule.Time.Day } −→ { Pilot.# } and flies : { Flight.#, GateSchedule.Time.Day } −→ { GateSchedule.Gate.# } . The schema is translated into a relational database schema. The two relationship types are merged into one type flies. We omit the relational schemata which have only one attribute and use attribute name, truncating in the case of uniqueness. Further, the equality constraint on Hour is used for attribute truncation. Flight = ({ Flight.#, Destination, Hour }, and { { Flight.# } −→ { Destination, Hour }}) CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 222 flies = ({ Flight.#, Pilot.#, Day, Hour, Gate.# }, { { Day, Hour, Gate.# } −→ { Flight.#, Pilot.# }, { Flight.#, Day } −→ { Pilot.# }, { Flight.#, Day } −→ { Gate.# } } ). Furthermore, the following inclusion constraints are generated: { flies[Flight.#, Hour] ⊆⊇ Flight[Flight.#, Hour] }. The relational database schema is not in BCNF but in third normal form. It cannot be decomposed although transitive functional dependencies exist. A similar observation can be made for solution B in Figure ??. Solutions C and D, presented in Figure ??, did not lose any of the functional dependencies. However, they are translated into relational database schemata which have inclusion constraints that are key-based but not key-based with a minimal key. For instance, we obtain the inclusion constraints { GateSchedule[Flight.#, Day, Hour] ⊆⊇ PilotSchedule[Flight.#, Day, Hour] } for solution C. These inclusion constraints use the key { Flight.#, Day, Hour } which is not minimal due to the functional dependency { Flight.# } −→ { Hour }. Solution E, presented in Figure ??, does not have a translation into relational database schemata which are in BCNF. However, the direct translation generates a relational database schema which is in the domain/key normal form (DKNF) [Fag81]. A relational database schema is in DKNF if all constraints are a consequence of key dependencies and domain dependencies. The DKNF is considered to be the ultimate normal form and can be easily maintained. An algorithm that will always create the DKNF solution given a set of constraints is not yet known. Although the relational database schema is not in BCNF all functional dependencies are maintained at least in one of the relational schemata. There might exist functional dependencies in a schema which are not key-based. An example is the dependency Schedule : { Flight } −→ { Hour }. This dependency is maintained in the relational database schemata through the constraints: Schedule [Flight Hour] ⊆ FlightAt [Flight Hour], FlightAt : { Flight } −→ { Hour }. The pullback rule for systems of functional and inclusion dependencies allows the derivation of Schedule : { Flight } −→ { Hour } from the given two constraints. Based on Propositions 4 and ??, we can derive, however, the following corollary which shows that the DKNF can be generated directly on the basis of HERM schemata. We extend the DKNF notion slightly to the notion of the β-NF: A relational database schema is in β-NF if all constraints can be expressed on the basis of domain dependencies, key dependencies, key-based inclusion dependencies and key-based exclusion dependencies. A HERM schema is in β-NF if all constraints used for the definition of the schema are: • Cardinality constraints, which use cardinality restrictions (0, 1), (0, .), (1, 1), (1, .). • General cardinality constraints comp(R, e), which use cardinality restrictions (0, 1), (0, .), (1, 1), (1, .) and have expressions e which are projection expressions that are key-based, i.e., for any component e∗ of e and the projection expression e∗ = p.R0 [e0 ] components e00 of R0 which are disjoint from e0 , the general cardinality constraint comp(R, e00 ) = (0, 1) is implied by the constraints of the schema. • Class exclusion dependencies, i.e., exclusion constraints dependencies which are defined on key components of the types used for the definition. • Functional dependencies defined on local types. The local types are in BCNF according to their local functional dependencies. An example of a schema which is in β-NF is displayed in Figure ??. The constraints comp(Schedule, Pilot Day At[Hour] ) = (0,1) comp(Schedule, Gate Day At[Hour] ) = (0,1) are key-based because the type at consists of two components and obeys the cardinality constraint CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 223 comp(at, Flight) = (1,1). We observe that the corresponding translated relational database schema is in β-NF. A schema which is in β-NF is in strong β-NF if no exclusion constraints are used. Corollary 8 Any HERM schema in (strong) β-NF can be translated to an equivalent relational database schema in (strong) β-NF. Restructuring of HERM schemata in order to obtain a β-NF is still an open problem. A complete solution cannot exist due to the non-axiomatizability of the class of functional and inclusion dependencies. However, we can use graph grammar rules such as the rules discussed in the next chapter for the presentation of restructuring rules. An example is the restructuring rules used in [MR92] for the generation of HERM normal form schemata. Suppose we are given a functional dependency R : X → Y on a type R consisting of disjoint component sets X, Y, Z and inclusion dependencies P [V ] ⊆ R[W ] or R[W ] ⊆ S[V ] entering or leaving R. For the case of the first inclusion dependency three cases arise when R is to be decomposed into R1 and R2 according to the functional dependency: • If W ⊆ XY then the inclusion dependency is inherited by the first type R1 . If W ⊆ XZ then the inclusion dependency is inherited by the second type R2 . • If W ∩ Y 6= ∅ and W ∩ Z 6= ∅ and W 6= X ∪ Y ∪ Z then a new type T on W is created and the inclusion dependency is replaced by P [V ] ⊆ T [W ] , T [W u XY ] ⊆ R1 [W u XY ] and T [W u XZ] ⊆ R2 [W u XZ] where W u XY are those components which correspond to W ∩ XY and maintain the order. • If W ∩ Y 6= ∅ and W ∩ Z 6= ∅ and W = X ∪ Y ∪ Z then the inclusion dependency is replaced by P [V u XY ] ⊆ R1 [W u XY ] and P [V u XZ] ⊆ R2 [W u X] . For the case of the second inclusion dependency three cases arise similar to the case above: • If W ⊆ XY then the inclusion dependency is inherited by the first type R1 . If W ⊆ XZ then the inclusion dependency is inherited by the second type R2 . • If W ∩ Y 6= ∅ and W ∩ Z 6= ∅ and W 6= X ∪ Y ∪ Z then a new type T on W is created and the inclusion dependency is replaced by T [W ] ⊆ S[V ] , T [W u XY ] ⊇ R1 [W u XY ] and T [W u XZ] ⊇ R2 [W u XZ] . • If W u Y 6= ∅ and W u Z 6= ∅ and W = X ∪ Y ∪ Z then the inclusion dependency is replaced by S[V u XY ] ⊇ R1 [W u XY ] and S[V u XZ] ⊇ R2 [W u XZ] . CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 224 2.6.1 Vertical Normalization Revisited BCNF cannot be achieved in any case for a given type and a given set of functional dependencies. 3NF can be achieved in any case. However, the negative statement on BCNF normalization is not true if splitting of attributes is allowed. Let us consider the approach proposed by [MR98]. In the literature the following type is often discussed which does not allow a dependency preserving decomposition into a BCNF: Address = ({ City, Street, ZIP } , {{ City, Street} −→ { ZIP }, { ZIP} −→ { City }} ) . It is however reasonable to assume that the zip code can be decomposed into two parts: A segment representing the city code CityZIP and a segment for the neighborhood code NeighbZIP. Now the type Address allows a representation by the type Address’ = ({ City, Street, CityZIP, NeighbZIP } , {{ City, Street} −→ { NeighbZIP }, { City } −→ { CityZIP } { CityZIP } −→ { City }} ) . This type can be decomposed into two types: Address1 = ({ City, CityZIP } , {{ City } −→ { CityZIP } , { CityZIP } −→ { City }} ) and Address2 = ({ City, Street, NeighbZIP } , {{ City, Street} −→ { NeighbZIP }} ) . From the structural point of view the type Address is similar to the following example: Schedule = ({ Lecturer, Hour, Course } , { Lecturer, Hour } −→ { Course }, {{ Course } −→ { Lecturer }} ) . Practical considerations differ considerably. A splitting does not exist per se for Course. However, if courses are split into classes and a lecturer is responsible for one class then a similar decomposition exists. In this case we split the attribute Course to Course(Field,No). The following functional dependencies are derived for the schema after the split: { Lecturer, Hour } −→ { Course.No }, { Course.Field } ←→ { Lecturer } . The following set is equivalent to the new set: { Lecturer, Hour } −→ { Course.No }, { Course.Field } ←→ { Lecturer } . The new dependencies define meaningful units. Thus, the schema Lecturer = ({ Name, Course.Field } , {{ Course.Field } ←→ { Name }} ) , CourseSlot = ({ Hour, } , Key = {Hour } ) , Assignment = ( Lecturer, CourseSlot , { Course.No } ) comp(Assignment, Lecturer) = (1,n), comp(Assignment, CourseSlot) = (1,n) is a natural reification of the first schema. Splitting of attributes or components cannot always be done if a natural interpretation of the split is required. In this case, artificial splitting can be an appropriate strategy. The following example shows that splitting may increase the size and the complexity of the schema. R = ( { A, B, C, D, E, F, G, H, I }, {{ A, B } −→ { C, D } , { C, D } −→ { E, F } , { E } −→ { G } , { F } −→ { H } , { H, I } −→ { B } , { G, I } −→ { A }} ) . The type R is in 3NF and has 10 minimal keys: { A,B,I }, { A,H,I }, { G,B,I },{ G,H,I },{ C,D,I },{ G,D,I }, { C,H,I },{ E,F,I },{ G,F,I },{ E,H,I } . CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 225 All attributes are key attributes. For this reason, none of the conditions for 2NF or 3NF fails. However, the structure of the functional dependencies is highly circular. We can split the attributes G, H, I . Since I is used in two dependencies it is split to I1 , I2 , I3 , I4 (in dependence whether or not it interacts with G and H, i.e., I1 with both G and H, I2 with G only, I3 with H only and I4 with none of them). The attributes H and G are split to H1 , H2 , G1 , G2 . After the split we obtain the type R∗ = ( { A, B, C, D, E, F, G1 , G2 , H1 , H2 , I1 , I2 , I3 , I4 } , {{ A, B } −→ { C, D } , { C, D } −→ { E, F } , { E } −→ { G2 } , { F } −→ { H2 } , { H1 , I1 , I3 } ←→ { B } , { G1 , I1 , I2 } ←→ { A }} ) . The type R∗ can be decomposed according to the last two dependencies to the type R1 , R2 cutting out G1 , H1 , I1 , I2 , I3 using A and B. The remaining type is R∗0 = ( { A, B, C, D, E, F, G2 , H2 , I4 }, {{ A, B } −→ { C, D } , { C, D } −→ { E, F } , { E } −→ { G2 } , { F } −→ { H2 }} ) . Since the unique key of the type is { A, B, I4 } and transitive dependencies form a tree the type can be decomposed to types on the basis of the decomposition approach to the types: R∗1 = ( { A, B, C, D }, {{ A, B } −→ { C, D }} ), R∗2 = ( { C, D, E, F }, {{ C, D } −→ { E, F }} ) , R∗3 = ( { E, G2 }, {{ E } −→ { G2 }} ) , R∗4 = ( { F, H2 , }, {{ F } −→ { H2 }} ) . Furthermore, since none of the obtained types contains a key of R we add the type R∗∗ = ( { A, B, I1 , I2 , I3 , I4 } , Key = { A, B, I1 , I2 , I3 , I4 }) . The schema consisting of the types R1 , R2 , R∗1 , R∗2 , R∗3 , R∗4 , R∗∗ forms a snowflake. All types are in BCNF. The last example demonstrates that artificial splitting may increase the number of types. CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 226 2.7 Ausgewählte Muster von Referenzschemata 2.7.1 Werte, Beobachtungen und Messungen The assignment of values is often not as simple as stated. Quantities must be given together with their units of measure. The placement of quantity properties either as attribute type or as relationship type depends mainly on the usage of the property either as characterisation or as associating property. Additionally, reuse of the same kind of representation may lead to an introduction of a separate entity type. Beside the assignment of values we also need to consider the conversion of units. The schema in Figure 37 shows one possible generic representation that might be used a the general units conversion dimension. to ¾ from ¾ Unit Conversion factor - Number Abbildung 37: Conversion of units of measure If many units must be converted then the physical dimension comes into play. Also, international standards such as S.I. standards must then be considered. Often conversion factors are dynamic, e.g. exchange rates. Units of measure are often complex units, e.g. consumption. If we need a direct representation we might use the schema in Figure 38. Unit ¾ Atomar unit (0,1) ¾ ¾ Negative - Positive - Complex unit (0,n) Abbildung 38: Direct representation of complex units Measurement and observations are typically based on a separation into the knowledge level and the activity of observing or measuring. So we might record this activity directly as displayed in Figure 39. Type of phenomenon 6 Knowledge/strategic level Temporal/tactical level Person ¾ Measurement - Quantity Abbildung 39: Activity of measuring This picture might be more complex if we consider that measurements and most observations are subjective. We explicitly introduce Observations in Figure 40. Additionally, observations may be co-related (see, for instance, Figure 41). Also, we might have to distinguish between the type of phenomenon and the phenomenon itself. So Figure 40 becomes extended to Figure 42 The phenomenon might be bundled by a concept of perception. The information whether we perceive a category or not will also have to recorded for certain purposes. So, we need to capture that in Figure 43. At the same time, observations might be IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 227 Type of phenomenon 6 Person ¾ Observation Measurement µ L - Perception - Quantity - Category - Quantity - Category Abbildung 40: Activity of observing ¾Judgement Observation ¾ Co-relation Hint Abbildung 41: Recursive relationships to for observations ¾ Phenomenon Type of phenomenon 6 Person ¾ Observation Measurement µ L - Perception Abbildung 42: Activity of measuring, observing and perceiving IS ADD K CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 228 classified as wrong, erroneous or rejected. Also, we might want to distinguish which type of observation is made: hypothesis, projection, or active observation. Type of phenomenon ¾ 6 Person ¾ L Observation - Concept of perception 1 Perception ¾ k µ - Measurement Negative perception Positive perception 6 Active observation Hypothesis Phenomenon s - Type of observation ª ? Rejected observation Quantity 3 Projection Abbildung 43: Activity of measuring, observing and perceiving Finally, the association of observations might be based on constructors for associating observations. So, the picture becomes more complex and can be represented by a schema similar to the one in Figure 44. Arguments for selection ? Association function R - Concept of observation 6 Knowledge/strategic level 6 Temporal/tactical level Associated observation 6 - Observation µ Hints for selection Abbildung 44: Associations and constructors for observations Observation is still an overloaded concept. Additionally, we need to establish a recording or protocolling component with the schema. We therefore extend the schema in Figure 43 to the schema in Figure 45. This schema omits some of the types of the former schema Measurement is typically based on the Factory-Method pattern. Measurement and to a certain extent observations are based on data. So, the type Quantity is a complex type or a schema by themselves. We therefore should shuffle the state under consideration into the schema in Figure 45. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 229 Comparison-based measurement method Computed measurement protocol - Computing À ¾ method ? Protocol ¾ prototype 6 Causal measurement method Type of - phenomenon Is For TypeOPr ] Source measurement protocol ¾ 6 - ObservationL Protocol ? Person ª ? Object under observation Phenomenon - Concept of perception 1 Perception µ * - Measurement - R R Type of observation Quantity Method of measurement Planning Abbildung 45: Activity of measuring, observing and perceiving, protocolling and planning (without positive and negative observations and perceptions) Typically quantity is based on a a state. The explicit representation of state with different sub-states allows to apply the state pattern to measurement processes. The state pattern allow an object to alter its behaviour when its internal state changes. Figure 46 displays the first schema draft for state representation. The comparison operator is complex. Therefore, we shuffle the complex units schema displayed in Figure 38 into this schema. Another shuffle schema to be incorporated into this schema is the schema for the representation of dates and moments. 2.7.2 Zeitmodellierung Date is either based on the current calendar (for instance, finance year, study period) or on specific representation of time. Data may be temporal and depend directly on one or more aspects of time. We distinguish three orthogonal concepts of time: temporal data types such as instants, intervals or periods, kinds of time, and temporal statements such as current (now), sequenced (at each instant of time) and non-sequenced (ignoring time). Kinds of time are: existence time, lifespan time, transaction time, change time, user-defined time, validity time, and availability time. The first two kinds of time are not considered in databases since they are integrated into modelling decisions. Temporal data are supported by specific temporal functions. These functions generalize Allen’s time logic [All84]. 2.7.3 Geometrie-Modelle 2.7.4 Interval-Modellierung The representation of intervals is a typical task in most information systems applications. Figure 47 display a general injection schema for interval representation. This constructor is also applicable to the construction of complex observation types. 2.7.5 Geschichtete Modellierung Responsibilities are typically based on the kind/type-of constructor. The schema in Figure 48 displays responsibilities in dependence on their kind and the association to parties. Organisations have a structure that is valid in certain time periods. It is IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Comparison operator 230 Duration I Date 6 * µ L Observation ª 6 - Measurement - State ¾ - State type Real state ] Method of measurement - Planned state ? R R Planning Abbildung 46: Considering states for measurement Object life period Boolean ¾Lower bound included ¾Upper bound included ? Interval Lowerbound Upperbound Abbildung 47: Representation of intervals IS ADD Value type Planning of state CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 231 constructed depending on the structure type that has been chosen. This structure type is based on the regulations for construction. Temporal Fixed Responsibility type ¾ requested by Responsibility responsible ? Party ? Time frame Regulations Abbildung 48: The assignment of responsibilities to parties We notice again that such structures are typical for schemata that represent at the same time strategic information or knowledge and tactical information or data. We can extend this pattern by associating the kinds upon which the types are based. For instance, the schema may be fold for representation of actions or activities. At the same time, parties may be hierarchically structured. Regulations requested by Responsibility type responsible 6 ¾ Knowledge/strategic level Party type 6 Temporal/tactical level - for ? Action requested by Responsibility responsible - Party (0,n) (0,1) ? Time frame Abbildung 49: The assignment of responsibilities to parties The roles of responsibilities must be a specialisation of the roles of the corresponding responsibility type. A similar requirement may be enforced for the hierarchies. Responsibilities may also be hierarchically structured and can be classified according to the type of hierarchy. We distinguish between layer-based responsibilities where the party can only be responsible for the party that is in the next lower layer and hierarchical responsibilities that restrict the responsibility to the matching level of the parties. The layer-based responsibility can be general for a general responsibility of one party for an entire layer (represented by a unary relationship of responsibility for a party) or IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 232 directed for a (binary) relationship between the parties. Responsibilities may be shuffled with a logging facility that store the results of being responsible for the parties. Figure 50 displays one way of shuffling according to the constructor pattern of the previous subsection. Quantity schema Protocolling schema Service area Product kind y 6 L : 9 Service kind z Resource utilisation - Spatial schema 6 Responsibility ¾ Service Abbildung 50: Service record for responsibilities Responsibilities may already by pre-assigned to parties. In this case we introduce another type: Position. This type may either be generalised within the Party type or may be a unary relationship defined on Party. 2.8 Grenzen der Modellierung 2.8.1 Grenzen hierarchischer Modellierung The higher-order entity-relationship model (HERM) [Tha00] extends the classical entity-relationship model by complex attributes (type), relationship types of higher order and cluster types. Relationship types may have only one component and represent in this case a specialization of the its component. For instance, the relationship type Porsche in Figure 52 specializes the type car. The type Car is a specialization of the type Product. Relationship types may have key components beyond the keys of their components. For instance, the type Book has an additional key beyond the identification for products. It is required that any type has a key. For this reason, the HERM schema requires that each type has either its key or a key that consists of keys from its components and if necessary its additional key. Cluster types allow a representation of generalization hierarchies. For instance, the Product type can be understood as a generalization of the types Car and Product. This opportunity is not represented in our HERM schema. Modeling typically allows to apply a number of approaches. The classical ER approach to modeling is given in the specialization schema in Figure 51. We have been choosing a compact schema that avoids Is-A relationship types and directly uses specialization types. Extended ER modeling requires that any type has its identifying components. Identifiers may also be attributes of the relationship type. Typically identification is inherited from components. It may however also replace identification, e.g. ISBN is the identification for the book type. Specialization may either be subtype specialization or property specialization (e.g. Porsche911GT8 for Porsche911) or both (e.g. Book for Product with value assignment for taxRate and type specialization for the relationship type). Typically, (entity or relationship) classes are not singleton classes. The type myPorsche911CarreraS defines a singleton class for this application. Another representation of the same application is given in the overlay schema. This schema combines the car and book category in the example within a schema that allows to consider the similarity of the types within the same diagram without separating the categories into different diagrams. The model in Figure 52 uses optional attributes which may either be populated or not. The population is constrained by null-value constraints of the following kind: [author]0 binds the population of values for authors in the entity type Model to those models which category kind is B OOK. [millage]0 binds the population of values for millage in the relationship type Entity to those physical entities which category kind is C AR. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 233 maxSpeed=310km/h maxSpeed millage serialNr desc taxRate ¼ marketLaunch Y author Book listPrice Hierarchie layer: Product Catalog listPrice =91.838 serialNr=’C33333333’ myCopyOf HarryPotter4 HarryPotter4 ¾ taxRate=15 Hierarchie layer: Product Category myPorsche911 CarreraS Porsche911 ¾ CarreraS maxSpeed =293km/h marketLaunch=1964 author=J.K. Rowling ¾ porsche911club=true millage=100000 ª Porsche911 ¾ ¾ Car Product porsche911club taxRate=20 listPrice=108.083 Porsche911GT3 listPrice=11.50 Hierarchie layer: Product Brand serialNr=’A121212’ Hierarchie layer: Product Model Hierarchie layer: Product Physical Entity Abbildung 51: Product catalog modeled with HERM specialisation types [clubAccepted]0 binds the population of values for clubs in the relationship type Entity to those physical entities which category kind is C AR and which brand allows club membership. This binding is simple as long as paths have a uniqueness condition. For instance, models have at most one brand and one and only one category. The overlay model assumes that brands and categories are orthogonal dimensions and that models have at most one brand and have one and only one category. ID [marketLaunch]0 Brand desc ID Catalog ¾ ¾ ID [listPrice]0 Brand to Model (0,1) Model [club]0 [author]0 Catalog to Category - ¾ Entity 6 [maxSpeed]0 (1,1) Category of Model - [clubAccepted]0 [millage]0 serialNr Category taxRate kind ID Abbildung 52: Product catalog modeled with HERM in the overlay modeling style Another equivalent schema may make use of cluster types. The category type has two specialisations into Car and Book subtypes. The general model properties bind these two subtypes into general model characterisations and use special types for an association to specific model properties of each categories. This representation is based on horizontal decomposition of types. This representation is therefore very similar to the m-object representation. The schema in Figure 51 combines the object and the class model. The type myCopyOfHarryPotter represents a singleton class consisting of one singleton book. Furthermore, the type Porsche911GT3 uses in the class name a description of the objects in the corresponding class. If we use an overlay schema then this implicit description must be made explicit. The attribute kind is therefore added to the entity type Category in Figure 52. 2.8.2 Fallen anderer Modelle: Identification The representation of object and thing identities is one of the main source for errors in schemata. It is surprising that many textbooks still follow the direct representation approach through object identities that are assigned by the system. Object identity is rather a concept at the logical layer of database operating. This approach looks very convenient. The user does not have any chance to interfere with the object identity generation. The paper [BT99] (see also [ST98]) shows that object identification must either be given by (weak) value identification [ST93] or will cause many computational problems. Otherwise a rather complex complex logical theory must be developed. [Sch94] show that we need a higher-order intutionistic predicate logic. Since object-identity allows self reference the logic must also be epistemic. The results of [BT99] and its preliminary versions e.g. [BT92], [BT95] have led the concept of object identity constraints in [RK02]. The starting point for this theory have been the reports [Tha91b] and [AFT92]. Consider, for instance, the schemata in Figures 53 and 55. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 o1 234 s o4 - o5 K s0 ? s o2 ® s0 * 1 s s s s Y 0 s s o3 a ° N - o6 s s N - b (a) (b) Abbildung 53: Identification in Object-Oriented Databases The identification of the objects in Figure 54 can neither be based on structural properties nor on values. So, the user is lost whenever an object must be accessed. The question how many object exist in the database may give a result of either 3 or 4. Both are correct due to the limitations of represented knowledge about the objects. s2 : o2 y s3 6 s1 o1 s1 s1 s3 ? y s2 s3 y z o3 9 s2 s2 z z o4 ¾ s1 s3 Abbildung 54: Objects which cannot be distinguished One trick to represent object identification is to use a tree representation. The schema in Figure 55 displays a tree representation. o1 s ¼ o2 s o2 s0 ? ! o3 j 1 s ¼ o3 s s0 ? ! o1 oj o3 j 1 s ¼ o1 s s0 ? ! o2 j s ¼ s s0 ? j 1 oj+1 mod 3 !oj+2 mod 3 1 Abbildung 55: Trees of of depth 1 for o1 , o2 , o3 Extended entity-relationship models explicitly define two constructs which can be implicitly used in nested relational database models: • Relationship types express the association among types. This association can be used for identification as well. • The differentiation among types allows to distinguish concepts which are defined by a certain construction and concepts which are using a certain construct. Thus, relationship types are based on entity types. Their identification mechanism is based on the identification mechanism of component types. Weak entity types, i.e. types whose identification is defined through associations, use the first extension. An entity type is defined as nested relational type. Its semantics, however can be based on other types as well. Let as consider the example pictured in figure 56. We can use pathes for the identification. The dot is used for component declaration, i.e. moving downwards. The exclamation mark is used for moving upwards. For example, the attribute Number can be reached from Town using the path Town!SInT.Street!HInS.House and is denoted by Town!SInT.Street!HInS.House.Number. Thus we can use pathes for identification of objects and the extension of the notion of a key as well. In the example the key of the type House is the set { House!HInS.Street!SInT.Town.Name, House!HInS.Street!SInT.Town.Area, House!HInS.Street.Name, Number } . This identification mechanism can be displayed by trees or forests in the general case. IS ADD CAU zu Kiel, IfI, ISE, β House 2. Strukturierung von IS (1,1) ¾ - HInS ab SS 2012 Street 235 (1,1) ¾ - SInT Name Number Town Name Area Abbildung 56: Address defined by weak entity types (1,m) ¾ Multiset MNumber - HasMember Element OccurNr Value Abbildung 57: Complex Identification through Relationship Types There can be defined other identification mechanisms. The second new construct of entity-relationship databases extends the identification concept as well. Let us consider the example in figure 57. Multisets are identical if they have the same elements with the same occurrence number. This condition can be expressed by generalizing the notion of key dependencies. A key dependency is a functional dependency s −→ R for a substructure s of R. This dependency can be expressed also by a first-order predicate formula R0 R ∀v, v 0 (PR (v) ∧ PR (v 0 ) ∧ v = v 0 −→ v = v ) . In the relational model at the external level keys are used to represent identification and existence. This idea directs to another formula which is equivalent to the above key constraint: ∀v1 |R00 , v2 |R00 ( ∀v |R0 ( PR (v |R0 1 v1 |R00 ) ←→ PR (v |R0 1 v1 |R00 ) ) where R00 is the “difference” of R and R0 . −→ R00 v1 = v2 ) Based on this re-definition we express now the key constraints for multisets by the formula ∀m, m0 ( ( ∀e, o ( PHasM ember (m, e, o) ←→ PHasM ember (m0 , e, o) ) −→ m = m0 ) . Notice that this notion is the indiscernability relation introduced by Leibniz [Lei60]. Integrity constraints can be used for identifiability as well. They can impose distinguishability or indistinguishability of objects. one-author-book Samuel Clemens ¾ Mark Twain ¾ name name 6 o2 o1 - Huckleberry Finn j o3 brother 6 brother ? o4 Abbildung 58: Integrity constraints influence identifiability Let us consider the objects in Figure 58. It is known that the relation ‘brother’ is irreflexive. For this reason we find that o3 6= o4 although there is no possibility to identify one of the objects. Thus, distinguishability of objects is weaker than identifiability of objects. It can be possible to distinguish objects which cannot be identified. If objects are identifiable then the objects can be distinguished. From the other side, since the book Huckleberry Finn was written by one author the objects o1 and o2 can be identified. The identification concept is based in these cases on integrity constraints. We consider different classes of integrity constraints and the treatment of identification based on our concepts. We use the relational notation since this notation can be easily extended to other models. • Equality generating dependencies are constraints of the following form: IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 236 ∀(x1,1 , ..., xm,n ) (PR (x1,1 , ..., x1,n ) ∧ ... ∧ PR (xm,1 , ..., xm,n ) ∧ F (x1,1 , ..., xm,n ) → G(x1,1 , ..., xm,n )) where F (x1,1 , ..., xm,n ), G(x1,1 , ..., xm,n ) are conjunctions of equalities of the form xi,j = xi0 ,j 0 and P is the predicate symbol associated with R. Based on the transformation of the constraint to the equivalent formula ∀(x1,1 , ..., xm,n ) (PR (x1,1 , ..., x1,n ) ∧ ... ∧ PR (xm,1 , ..., xm,n ) ∧ ¬G(x1,1 , ..., xm,n ) → ¬F (x1,1 , ..., xm,n )) we can use the inequality set IE in order to extend the deductive system DVIE . Thus, we can express the identification properties on the basis of value-distinguishabability or equational logic in the case of equality generating dependencies. Identification extended by equality-generating dependencies can be expressed by V-identifiability. Notice, that functional dependencies and generalized functional dependencies are special equality generating dependencies. • An exclusion dependency is an expression of the form R[R.A1 , ...., R.An ] k S[S.B1 , ..., S.Bn ] . The property specified by the exclusion dependency can be directly translated to inequalities among objects. A generalized inclusion dependency is an expression of the form R1 [X1 ] ∩ ... ∩ Rn [Xn ] ⊆ S1 [Y1 ] ∪ ... ∪ Sm [Ym ] for compatible sequences Xi , Yj . Similarily to equality-generating dependencies, generalized inclusion dependencies can be transformed to negated formulas. These formulas are the basis for the extension of the deductive system DVIE . Identification extended by generalized inclusion dependencies and exclusion dependencies can be expressed by V-identifiability. • Disjunctive existence constraints X ⇒ Y1 , Y2 , ..., Yn specify that if a tuple is completely defined on X then it is completely defined on Yi for some i. There is an axiomatization for disjunctive existence constraints. They can be represented by monotone Boolean functions. Since the existence has been treated explicitly in the definition of value-identifiability we conclude directly: Identification extended by existence dependencies can be expressed by V-identifiability. V-identifiability and E-identifiability are equivalent for generalized inclusion, exclusion, existence and equality-generating dependencies. These results extend the results of [KR97] where functional dependencies, special cases of inclusion and exclusion constraints have been considered and which summarized the results in [Tha91b], [BT92] and [BT95]. Constraints can be easily used for value identification. We can use constraints also for extending the identification on the basis of queries. However this extension has to be changed whenever the inequality set is changed. Thus, integrity constraints cannot be incorporated into the computation of identifying queries. The same argument is valid for homomorphisms and automorphisms. Thus, the use of integrity constraints leads to another hierarchy in our identification mechanisms. It is possible to characterize an object without denoting it. For this purpose, queries or formulas can be used. Examples of such identifying formulas are: 1. the current queen of England, 2. the current king of France, 3. the mother (father) of x, 4. the x for which it is valid x + y = z , 5. the x for which it is valid x2 = y , 6. the largest prime number, 7. the x for which for all y it is valid that x + y = y . The first characterization identifies an entity. The second characterization is partial. The third characterization identify an object since we know that the relation is functional. The object x can be taken as a parameter. The fourth characterization uses two parameters. This characterization can be partial. The case 6 shows that the characterization depends on existence of objects. The last characterization identifies one object based on the properties of the function +. Characterization can be based on formulas α(x, y1 , ..., yn ) which depend on x and on n parameters y1 , ..., yn . The formula is a characterization formula if ∃ ! x α(x) or resp. ∀y1 ∀yn ∃ ! x α(x, y1 , ..., yn ) is valid where by ∃ ! x we denote the unique existence of x. The characterization formula α is called essential if n = 0 and non-essential otherwise. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 237 Whether such characterizations can be used depends on the provability of unique existence of such objects and on the properties of the used logical language. We notice that a special cases of unique existence are equality generating dependencies and functional dependencies. If we use integrity constraints then identification may depend also on axiomatizability of constraints defined for the database. Since there are classes of constraints which are not axiomatizable, identification may be not computable. For example, equalitygenerating dependencies and inclusion dependencies are not finitely axiomatizable. Names as identification. Many languages explicitly use names for identification of objects. Often names are confused with the thing they denote. The name “Stuttgart” may refer to very different objects such as the city of Stuttgart, the entry point traffic sign for Stuttgart. Names may denote references, e.g. the word “Karajan” may denote a piece of music as well as a person. L.J.J. Wittgenstein [Wit58] uses the ‘language games’ instead of the mapping from names to denotations. In general this notion is based on the mapping from names to denotations that is additionally dependent on the utilisation context, culture and the user. If we use a name 16GL for a car then we are denoting some of the properties of the car, i.e. the motor and the comfort. The mapping may be a referential one. This ‘label usage’ may cause a number of confusions. It is only useful if the meaning can be uniquely deducted. The meaning of a word is typically however context-dependent. It depends on the act of denoting. This act of denoting should be embedded into the complete situation (language life form). The meaning requires uniqueness or clarity of the interpretation. It typically requires preliminary knowledge and a well-assigned context. Naming is therefore related to the function units, especially the use in dependence of the function. Word denote things. Denotation is an activity. The meaning of a word is the set of denoted things under consideration. A name must have at least the three properties: • It must reliable assign the notion to the thing under consideration. • The reference must be stable. • The reference is invertible. The assignment of a name may be based on a name space. Sometime we use additionally an identification schema or a coding for the names. The identification schema may be implicit or explicit. Object ¾ appearance Identification schema appearance alias former usage 6 Object equivalence - ? Object - ¾ Name ++ - Name space Abbildung 59: The explicit representation of names Amalgamation of identification. Object have their own history. They may be copied, replaced, updated and deleted. If we are interested in maintaining the original object whenever the object obtains new properties then we need either an explicit representation of the history of objects or an explicit replacement mechanism. The simplest replacement mechanism is the introduction of aliasing schemata. The most rigid replacement schema is the liquidation of the older identification. We might also use the data type Alias or Former usage in Figure 59 that explicitly stores all name changes. The same problem appears if we can observe the same thing in various beings and appearances. Observations are typically made by people who might classify the same thing in a different way. Therefore we can additionally introduce the appearance into the schema. This appearance notion is based on the sponsor-selector pattern that separates the three fundamentally different responsibilities: recommending a resource, selecting among resources, and using a resource. Furthermore, objects observed may be equivalent to each other based on a notion of equivalence. This notion should be stored whenever complex evaluations are going to be made. The equivalence schema is important for almost all aggregations if we are interested in well-founded statistics. We can use the mediator pattern for an explicit annotation of the equivalence notion. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 238 2.8.3 The Classical ER Modelling Language is Incomplete Lakoff introduces six basic schemata of cognitive semantics without stating that this list of schemata is complete. • The container schema define the distinction between in and out. They have an interior, a boundary and an exterior. • The part-whole schema define an internal structuring and uses whole, part and configuration as construction units. • The link schema connects thing of interest. It uses various kinds of links for associating or un-associating things. • The center-periphery schema is based on some notion of a center. Peripherical elements are not as important than those in the center. • The source-path-goal schema uses source (or starting point), destination, path, and direction. It allows also to discuss main and side tracks. • Typical ordering schemata are the up-down, front-back and the linear ordering schema. They use spatial and temporal associations. We call a modelling language cognition-complete if these six schemata can be represented. The classical ER modelling language suffers from a number of restrictions. It uses the container and the link schemata. It allows to mimic the part-whole schema via special links (called IsA). This work-around is however badly misunderstood. In order to become cognition-complete integrity constraints must be used. Their cognitive complexity is however beyond surveyability of humans. A typical flaw of the classical ER model is the use of monster types that integrate stabile - almost not changing properties and transient - often changing - properties. Objects are then taken as a whole. Unary relationship types easily resolve this problem if higher-order types are permitted. Extended ER modelling languages are however also not cognitive complete. The center-periphery schema can only be emulated. The source-path-goal schema can be represented by higher-order relationship types. The part-whole schema is supported by the specialisation via unary relationship types and by generalisation via cluster types. Ordering schemata can be defined using the order types and bulk types. 2.9 Conceptual Modelling in the Large see ER 2010 tutorial IS ADD CAU zu Kiel, IfI, ISE, β Code 2. Strukturierung von IS ab SS 2012 239 Description Dimension Type 6 ID Dimension OfType - Dimension K Brand Name Other Characteristic Color 6 ¸ I Product Type Product Quality Product ¼ Characteristic y may be converted in Converted 6 Conversion Factor [Reason] Product Obsolesence R AReplacementNeededFor SuperceededBy FromDate Product ThruDate [Quantity] Substitute UsedAs By [Comment] j - ¾ Id Identification TypeCode Description PhysicalInventoryDate Item Variant Reason Item Shrinkage Overages R Id Party Address ? Product [ThruDate] 6 =9 From PrefTypeCode Item ¾ Producer Of zation Name ? FromDate [ThruDate] ¾ Market Interest Comment Description SerialNumber QuantityOnHand Id ? Party Type Service StorageFor Id ¾ 6 Product Category 6 PhysicalOccurenceOf Container Description ^ - Organi- FromDate [ThruDate] [Comment] PrimaryFlag Finished Good [ReorderQuantity] [ReorderLevel] Item L Code - Container Type Code Product Supplier Preference Prod Category Class Raw Material Description Abbildung 60: Pattern for Products IS ADD Description Product Supplier - RatingType R ° ª ? ¾ Cost RatingTypeCode Costed By Product [Comment] Supplier AvailableTruDate FromDate WorkIn Progress - Inventory ) Estimated FromDate Product Cost [ThruDate] R 6 WarehousedAt [Comment] [ThruDate] [Percent] Code Quantity : Boundary OptionalComponent µ Name DependentOn Product Characterized MadeUpOf ProdCode Name [Comment] [Instruction] [IntroductionDate] [SalesDiscontinuationDate] Consists [Comment] [SupportDiscontinuationDate] [ManufSuggestRetailPrice] Of [QuantityUsed] UsedIn ThruDate Type Geographic Location UsedToDefine Priced By Description GeoAreaCode Supplier jR FromDate Additional Identifier (ManifacturerID | StockKeepingUnit | UniversalProductCode (American UPCA | European UPCE) | IntStandBookNumb ISBN)) Additional Item Identification > Purchaser Of [Price] Price Component FromDate Surcharge Component Description Party Type Description [Comment] Specified For Code ¸ U ^ Product º L 6 Discount Level PriceSequenceNum ¾ Price Component Type Used To Define Discount Component y UOM UnitOf Measure [ThruQuantity] PartyTypeCode ? Quantity Break Base Product Price k CompTypeCode FromQuantity Description [TaxIdNum] UsedTo Define CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 240 2.10 Transformation von Schemata in andere Modelle Man kann für die Übersetzung zwei verschiedene Zugänge unterscheiden: Interpretation: Typen des Ausgangschemas werden in einer bestimmten Reihenfolge in Konstrukte der Zielsprache überführt. Compilierung: Eine Transformation kann zu Schemata führen, die ein ungünstiges Verhalten haben. Deshalb wird oft von einem Entwerfer erwartet, daß er nach einer Übersetzung das Zielschema ‘glättet’. Ein Compilierungszugang dagegen4 berücksichtigt Eigenschaften der Zielsprache bei der Übersetzung mit. Übersetzer können wie ein klassischer Compiler aufgebaut sein. siehe auch H.C. Mayr’s Vorlesungen siehe Embley-Kapitel im Handbuch Wir stellen zuerst einige Transformationstechniken vor. Diese Techniken stellen den Hintergrund der betrachteten Konzeptualisierung. Sie können bereits in diesem Schritt angewandt werden. Da wir uns hier jedoch vollständig auf den konzeptionellen Entwurf konzentrieren und nicht mit mehreren Entwurfsmodellen und -sprachen den Entwerfer verwirren wollen, dient die folgende Darstellung der Transformationstechniken nur dem Verständnis der folgenden Schritte. Erst im letzten Schritt wenden wir eine Transformation an. Dadurch wird gesichert, daß sich der Entwerfer nur mit einem Modell beschäftigen muß. Er kann die Transformation am Ende als vollständig automatisierbares Verfahren anwenden, ohne gezwungen zu sein, das physische oder das logische Schema im Detail zu betrachten. Spätere Änderungen oder Anpassungen sind dadurch stets auf konzeptionellen Niveau darzustellen. Dieser Vorteil rechtfertigt das Verschieben der Transformation auf den letzten Schritt. Grundkenntnisse. Übersetzungstechniken kann man analog zu den Ansätzen der Theorie der Programmiersprachen unterscheiden nach ER-Modellen: Es gibt eine Vielzahl von erweiterten Entity-Relationship-Modellen. Meist sind jedoch nur strukturelle Erweiterungen vorgeschlagen wurden. Einbeziehen von Integritätsbedingungen: Ein Schema hat implizite und explizite Integritätsbedingungen. Übersetzungstechniken verwenden oft nur einen Teil der entwickelten semantischen Bedingungen. Prozeßunterstützung: Einige erweiterte Entity-Relationship-Modelle lassen das explizite Modellieren von Prozessen z.B. durch Transaktionen zu. Andere dagegen erlauben keine Operationen. Aufgrund der Integritätserzwingungsmechanismen, die in Kapitel ?? bereits entwicklet wurden, sind generische Operationen bereits modelliert. Darüber hinausgehende Mechanismen können angewandt werden. Entwerferinteraktion: Einige Transformationstechniken sind nichtdeterministisch und lassen eine direkte Interaktion mit dem Entwerfer zu. Übersetzungsvoraussetzungen: Oft setzen Übersetzungen spezifische Normalformen voraus. Weiterhin werden oft Metaannahmen (unique-name-assumption u.a.) vorausgesetzt. Erhaltung der gesamten Entwurfsinformation: Es ist möglich, die gesamte Entwurfsinformation in das logische Zielmodell zu transformieren. Meist fehlt aber eine Umsetzung in ein physischen Modell, so daß darauf auch für physische Modelle verzichtet werden muß. Qualität des Zielschemas: Durch eine Reihe von Zugängen kann ein minimales, normalisiertes oder nichtredundantes Schema für verschiedene Arten von Ausgangsschemata erreicht werden. 4 Die Arbeit Incremental translation of database schemas as an optimization process von N. Runge und P.C. Lockemann ist leider nach einer turbulenten EMISA-Tagung in Tutzingen 1996 nach unberechtigter Kritik von der Veröffentlichung zuruückgezogen worden. Wir verwenden diesen Ansatz aufgrund seiner Richtigkeit jedoch im weiteren. Mod IS IS ADD WebIS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 241 2.10.1 Interpreter-Zugang Interpretation von ER-Konstrukten durch relationale Konstrukte. Fast alle Bücher und auch die entsprechenden Vorlesungen bieten nur den interpretierenden Zugang an!!! Mehrschrittverfahren wobei Semantik und Funktionalität mit übertragen werden muß Schlüssel und funktionale Abhängigkeiten in Schlüssel, funktionale und mehrwertige Abhängigkeiten implizite Komponenten in Inklusionsabhängigkeiten Exklusionsabhängigkeiten in Exklusionsabhängigkeiten Kardinalitätsbedingungen in funktionale, Inklusions- und No-null-Abhängigkeiten 1. Herstellen der ersten Normalform (Tupelattribute durch Verkettungsregel, Mengenattribute entweder über Wiederholung in Tupeln oder durch eigene Relation); Neuberechnung der Schlüssel (bei Mengenattributen, die bislang im Schlüssel vorkamen, wird dann eine mehrwertige Abhängigkeit generiert und der Schlüssel verändert sich stark) 2. Flache Entity-Typen werden in Relationenschema überführt 3. Schwache flache Entity-Typen werden in Relationenschema übersetzt, wobei die Attributmenge um die Schlüssel der identifizierenden Schemas erweitert werden. 4. Hierarchien von Typen sind in einem der folgenden Zugänge überführbar • event-nonseparation: Student, Professor, Person • event-separation: Student, Professor, AnderePerson • union: Person = Student + Professor + AnderePerson • weak universal relation: Person 5. Relationship-Typen werden entsprechend ihrer Ordnung überführt • Binäre 1:1-Relationship-Typen : Mehrere Optionen: • Einbetten in vorhandenes Relationenschema (möglichst der ‘mandatory’-Seite; d.h. bei (1,1):(0,1)-Typen in ersten Typ) des Primärschls̈sels des anderen Typen, sowie der Attribute des Relationship-Typen (Einfügen eines Fremdschlüssels) • Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen • Zusammenfügen der beiden Relationenschemas unter Beifügung der entsprechenden Relationship-Typ-Attribute falls Attribute keine Nullwerte enthalten dürfen, dann nur bei (1,1):(1,1)-Typen • N-äre 1:...-Relationship-Typen (n > 2): Mehrere Optionen: • Einbetten in vorhandenes Relationenschema (möglichst der ‘mandatory’-Seite; d.h. bei (1,1):(0,1)...-Typen in ersten Typ) des Primärschls̈sels des anderen Typen, sowie der Attribute des Relationship-Typen (Einfügen eines Fremdschlüssels) • Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen • Zusammenfügen der beiden Relationenschemas unter Beifügung der entsprechenden Relationship-Typ-Attribute falls Attribute keine Nullwerte enthalten dürfen, dann nur bei (1,1):(1,1)-Typen • Binäre 1:n-Relationship-Typen : Mehrere Optionen: • Einbetten in vorhandenes Relationenschema (möglichst der ‘mandatory’-Seite; d.h. bei (1,1):(0,1)-Typen in ersten Typ) des Primärschls̈sels des anderen Typen, sowie der Attribute des Relationship-Typen (Einfügen eines Fremdschlüssels) • Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen Mod IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 242 • N-äre 1:n...-Relationship-Typen (n > 2): Mehrere Optionen: • Einbetten in vorhandenes Relationenschema (möglichst der ‘mandatory’-Seite; d.h. bei (1,1):(0,1)...-Typen in ersten Typ) des Primärschls̈sels des anderen Typen, sowie der Attribute des Relationship-Typen (Einfügen eines Fremdschlüssels) • Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen • n:m -Relationship-Typen Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen • Rekursive Relationship-Typen wier normale Relationship-Typen aber unter Beibehaltung der Rollennamen • Is-A-Relationship-Typen • Einbetten in vorhandenes Relationenschema (möglichst der ‘mandatory’-Seite; d.h. bei (1,1):(0,1)-Typen in ersten Typ) des Primärschls̈sels des anderen Typen, sowie der Attribute des Relationship-Typen (Einfügen eines Fremdschlüssels) • Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen • Zusammenfügen der beiden Relationenschemas unter Beifügung der entsprechenden Relationship-Typ-Attribute falls Attribute keine Nullwerte enthalten dürfen, dann nur bei (1,1):(1,1)-Typen • Cluster Mehrere Optionen: • Definieren eines separaten Relationenschemas mit Primärschlüssel der Komponenten und Attributen des RelationshipTypen unter Einbeziehung der Rollennamen • Einbetten in vorhandenes Relationenschema (möglichst der ‘mandatory’-Seite) des Primärschls̈sels des anderen Typen (Einfügen eines Fremdschlüssels) unter Beibehaltung der Rollennamen • Einführen eines virtuellen Clusters durch Nutzung der Indexisierung CREATE CLUSTER und damit eines Typs, der nur die Schlüssel vereinigt! Interpretation durch XML-Modelle (DTD). Nach Lipeck/Kleiner [KL02] Mod IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS Der Algorithmus nach Lipeck/Kleiner: Mod IS ab SS 2012 243 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Übersetzung von HERM in XML-Bäume. HERM ist besser geeignet als einfache ER-Modelle • Typen bereits genestete Struktur • Typen höherer Ordnung • unäre Kardinalitätsbeschränkungen mit Participation-Semantik HERM ist besser geeignet als UML • Typen haben klar definierte Semantik • Schematakomponenten sind integriert • durch Codesign auch Pragmatik und Entwicklungsmethodik XML ist Einschränkung von HERM • XML Schema und XForms geeignet für hierarchische Extrakte von HERM • HERM-Spezialisierung entspricht Schema-Typen-Spezialisierung • einelementige Kardinalitäten ansonsten clustering mit pivoting • Varianten von I-Objekten über XDNL-Zugang • XML - objekt-orientiertes hierarchisches Datenmodell • Mehrfach-Szenarien werden mit XDNL-Varianten verbunden damit ist Übertragung von HERM-Schemata in XML Schemata determiniert Übersetzung Mod IS 244 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 245 • Objektifizierung mit Master-Slave-Mirror für Auflösung mit ID’s alle Typen, auf die verwiesen wird unter Beachtung der Exklusionsabhängigkeiten • starke Aggregationen sind exklusiv (Komponente gehört zu genau einem Supertyp) • schwache (nicht-exklusive) Aggregationen werden in (evt. auch künstliche) Mirror-Beziehung abgebildet evt. mit Varianten je nach Interaktion un Szenarien • schrittweise Übersetzung von HERM-Typen von 0. Ordnung bis zu i. Ordnung Entity-Typen werden direkt übertragen Attributtypen sind auch in HERM exklusiv, gehören zu ER-Typen Cluster-Typen werden in Varianten übertragen Relationship-Typen werden ggf. auch kolladiert ((1, 1)(1, 1)-Typen) bzw. objektifiziert Hierarchien müssen nicht aufgelöst werden, sondern werden direkt als Subtypen realisiert • Sichten werden als Anfragen in XML-QL formuliert, falls nicht bereits in Schema-Definition eingegangen • Integritätsbedingungen der Datenbank für XML-Interaktion müssen spezifisch behandelt werden • Translationsmechanismus wird analog für die Datenbank mit HERM-Reengineering-Zugang erweitert damit ist dann Direktanbindung der Datenbank möglich Interpretation durch Netzwerk- und hierarchische Modelle. Netzwerkmodell Zwei Konstrukte: Recordtyp, Settyp stark implmentationsabhängig trotz Codasyl-Standards Recordtyp : Name, Menge von Attributen mit ihren Wertebereichen Attribute • einfache Attribute • mengenwertige Attribute: Vektor • zusammengesetzte mengenwertige Attribute: Wiederholgruppe Settyp : beschreibt 1-m-Beziehung zwischen Recordtypen Records, die mit mehreren anderen Records in Beziehung stehen: Owner die in Beziehung gesetzten: Member hat eigenen Namen und keine Attribute Settypen können auch mehrere Membertypen haben, meist wird jedoch Zweistelligkeit der Beziehung hervorgehoben und nur jeweils ein Membertyp zugelassen; damit dann graphische Repräsentation durch Bachman-Diagramme Settyp ist kein Mengentyp !! Codasyl empfiehlt Liste !! Professor Mod IS hält Vorlesung CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 246 Ein Pfeil wird von A nach B gezeichnet, wenn eine partielle Funktion von B C nach AC existiert. entgegen der Pfeilrichtung Settyp (Member-Records eines Sets) wird kann auf folgende Art und Weise implementiert: • entweder first/last: neuer Record stets als erstes/letztes Mitglied einer Set-Occurrence eingefügt • oder next/prior: Einfügen jeweils vor bzw. nach laufendem Pointer (z.B. letzte Anfrag) • oder System Default: wird durch System übernommen • oder Sortiert: nach Werten vorgegebener Attribute Einschränkungen : jeder Record - Member in höchstens einer Occurrence eines gegebenen Settyps Member-Record kann nicht im gleichen Settyp Owner sein erlaubt ist jedoch zusätzlich: ein Record kann mehrfach Owner-Record verschiedener Settypen sein ein Record kann gleichzeitig Member-Record verschiedener Settypen sein es können gleichzeitig mehrere Settypen zwischen gleichen Paaren von Recordtypen gebildet werden Abfederung der Inflexibilität durch: Set-Insertion-Option Einfügen eines neuen Member-Records vom Typ R • Automatisch: falls R Membertyp in Settyp S, dann neuer Record auch in S eingefügt • Manual: Einfügen in S ist Programmierersache Set-Retention-Option Member-Record vom Typ R in S löschen • Optional: Record kann ohne Mitgliedschaft in Set-Occurrence in DB existieren • Mandatory: Record muß in eine Occurrence eingebunden sein • Fixed: Record R muß in S verbleiben Da im obigen Schema Vorlesung kein Attribut haben darf: • entweder Hinzunahme der Vorlesungsattribute zum Professor • oder Übersetzung von ER-Schemata in Netzwerkdiagramme Verschiedene Strukturen müssen aufgelöst werden: • Relationship-Typen höherer Ordnung (> 1) bzw. Arität (> 2) • Relationship-Typen mit eigenen Attributen • rekursive Relationship-Typen • IsA-Relationship-Typen • z.T. 1-1-Beziehungen • Cluster Mod IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 247 Folgende Strukturen können im wesentlichen erhalten bleiben: • Entity-Typen mit genesteten Attributen • attributlose, binäre 1:n Relationshiptypen Übersetzung der Problemfälle • 1-1-Beziehungen ohne Attribute: entweder Zusammenfassen zu einem Typ oder Bildung eines Settyps für einen der beiden Typen • m-n-Beziehungen bzw. nicht-binaäre Beziehungen: Einführen mehrerer Settypen und eines Membertyps (KettTyp) mit Set-Beziehungen zwischen diesem und dem Ownertypen Attribute werden dem Kett-Typen zugeordnet • IsA-Beziehungen: wie 1-1-Beziehungen in umgekehrter Richtung Unterscheidung total/partiell geht verloren; muß über DML gelöst werden • Rekursive Typen: Duplizierung des Recordtyps mit Umbenennung oder Einbeziehung eines Dummy-MemberTyps Person ? IsA IsA Professor hält ª betreut ª R Vorlesung Student wird-besucht besucht R ª Stud-Vorles Vorlesung setzt voraus ? IsA ? Dummy Vorlesung 6 wird vorausgesetzt von IsA ? Vorausges Vorlesung Vorlesung 6 wird vorausgesetzt von 6 IsA Vorausges Vorlesung Optimierung der Übersetzung durch entsprechende ER-Normalisierung Ersetzung der genesteten Strukturen durch flache: Mengennestung wird durch Einführung eines neuen Kett-Typs aufgehoben mit entsprechender Set-Typen-Einführung Mod IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 248 Tupelnestung wird verflacht Integritätsbedingungen sind Programmiereraufgabe bis auf: Domain-Bedingungen: mit CHECK-Klausel Intrarecord-Bedingung: duplicates are not allowed for < Attribut > ist aber keine Schlüsselbedingung Interrecord-Bedingung: gleichbenannte Attribute können über CHECK getestet werden (damit referentielle Integrität möglich) Hierarchisches Modell alle Daten durch Baumstrukturen dargestellt Datenbank durch Wald strukturiert Beziehungen sind 1:1 oder 1:n Wurzel ist nicht optional Mod IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 249 2.10.2 Intelligente Übersetung durch Beachtung der Spezifika von HERM-Schemata Spezifika der Struktur-Übersetzung von HERM-Schemata. Beobachtung 2. Es können komplexe Attribute auch eine harmonisierte Übersetzung anderer komplexer Attribute erfordern. Beispiel: Name(Vornamen(...), Familienname, [Geburtsname] ,...) Adresse(PlzBezirk ◦ Zustellamt, Ort, ...) erfordert Harmonisierung der Übertragung beider Attribute, da diese über Primärschlüssel gekoppelt sind Beobachtung 3. Die bisherigen Übersetzungsregeln sind nur Interpretationsregeln, die induktiv über dem Schemaaufbau definiert sind und nicht die Möglichkeiten von SQL92 und SQL:1999 unterstützen. Ein compilierender Zugang wird i.a. besser sein. Übersetzungsregeln in SQL:1999 nach S. Schoradt: 1. Datensammelnde Regeln Für die Transformation eines Typen werden Informationen benötigt, die am Typen direkt anliegen, sich aus den Verbindungen zu anderen Typen ergeben oder aber aus anderen Typen bezogen werden müssen. Da die Übersetzungsregeln, der Übersichtlichkeit halber, nur lokal auf einem Typen des Schemagraphen wirken sollen, werden durch Regeln zur Datensammlung die notwendigen Daten zur Tranformation der Typen zusammengetragen. Dies können z. B. die Notwendigkeit der Erstellung eines Surrogatschlüssels zu einer Entitytypen oder das Hinzufügen von Integritätsbedingungen zu einem Typen sein. (a) Erstellen von Surrogatschlüsseln Das Erstellen von Surrogatschlüsseln ermöglicht es Objekte, die in der konzeptionellen Sicht nur auf sehr komplexe Art zu identifizieren sind, in einem DBMS zu verwalten. Hierzu wird zu dem Objekt ein atomares Attribut hinzugefügt, das als neuer Schlüssel für das Objekt fungiert. Die existierende Schlüsselbeziehung wird weiterhin mitgeführt und gepflegt, dient aber nicht mehr der Identifikation der Instanzen des Objektes. Der Surrogatschlüssel zu einem Objekt sollte vom DBMS gepflegt werden, so das die darüberliegende Applikation diese technische Veränderung des Schemas nicht beachten muss. Dies kann durch Mittel des DBMS zum generieren eindeutiger Objektschlüssel geschehen oder aber durch die Erzeugung eines Schlüssels in einem Trigger zum Objekt. Durch diese Regel wird zu jeder Entity-Typen oder Relationship-Typen, die Komponente einer Relation oder eines Clusters ist, ein Surrogatschlüssel angelegt. Mittels diesem wird im Weiteren die Implementation der Relation und die Pflege der damit verbundenen Integritätsbedingungen realisiert. (b) Optimierung der Schemastruktur Bei der Übersetzung von Schemata kann es notwendig sein das Schema strukturell zu verändern, um ein optimales Ergebnis zu erzielen. Eine häufig genutzte Optimierungsvariante ist das Auflösen von Relationen mit der Kardinalitätsbeschränkung (1, 1) oder (0,1). Über den Controller wird festgelegt, ob für (1,1)-(0,1)-Relationship-Typen condense zu einem zusammenhängenden Typen, reference oder stay alone angestoßen wird. (c) Integritätsbedingungen Oftmals sind Integritätsbedingungen indirekt im konzeptionellen Schema kodiert. Um diese bei der Transformation zu beachten, müssen sie zur Menge der Integritätsbedingungen eines Typen hinzugefügt werden. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 250 Diese Regeln weisen zum Einen die Komponenten einer Relation als Schlüssel aus, falls noch nicht geschehen und vergeben für alle Relationen deren Kardinalität nicht spezifi- ziert ist die Kardinalitätsbeschränkung (0,n). 2. Elementare Transformationen An dieser Stelle sollen für die einzelnen Schemaelemente elementare Übersetzungsregeln angegeben werden. Diese Wandeln einen Typen in eine SQL Anweisung oder einen Anweisungsteil um. Die Transformationen, die in diesen Regeln verwandt werden, stammen grösstenteils aus [Tha00] und wurden an die Möglichkeiten von SQL:1999 und den entworfenen Übersetzungsprozess angepasst. (a) Regeln für Domaintypen Jeder Domaintyp im Schemagraph repräsentiert eine Domäne aus dem HER Schema. Diese sind durch die Menge aller erlaubten Elemente beschrieben und müssen durch die Transformation auf die vorhandenen SQL Datentypen abgebildet werden. SQL:1999 kennt Datentypen der Kategorien: • • • • Zeichendaten numerische Daten Wahrheitswerte Datumswerte Die richtige Transformation der Domains in SQL Datentypen wird durch die Kombination von Transformationsregel und Bewertungsfunktion erreicht. (b) Regeln zur Behandlung von Attributtypen Bei den AttributTypen hängt die Anwendung einer Regel von ihrem Konstruktor und den globalen Parametern für die Attributtransformation ab. Für die komplexen Attribute sind mehrere Möglichkeiten für die Transformation vorhanden: • verflachen des Attributs durch Transformation in eine Zeichenkette mit Trennzeichen • einführen von Blattattributen, z. B. wird ein Tupelattribut Name(vname,nname) in die Attribute Name.vname und Name.vname transformiert • erstellen eines eigenen Subschemas • als komplexes Attribut belassen In SQL:1999 ergibt sich weiterhin die Möglichkeit komplexe Attribute in komplexe Datentypen zu transformieren. Diese Option wurde soweit möglich verfolgt, um die Möglichkeiten von SQL:1999 auszunutzen. Bei der Transformation von Tupeltypen, kann als Implementation ein ROW Typ verwandt werden. Mengentypen werden rekursiv, anhand ihrer Struktur, transformiert. Es existieren mehrere Möglichkeiten Mengen in einer Datenbank zu repräsentieren, hier soll dies durch das Erstellen einer Tabelle zu jeder Menge geschehen. Zur Transformation eines mengenwertigen Attributs muss zuerst der Inhalt der Menge transformiert werden und danach das Attribut in eine Tabelle und eine Referenz in die Mengentabelle transformiert werden. (c) Transformation der Entity-Typen Die Transformation eines Entity-Typen kann erfolgen wenn alle enthaltenen Attribut-Typen transformiert wurden. (d) Transformation von Relationship-Typen Die Transformation eines Relationship-Typen kann erfolgen wenn alle Attribute und alle enthaltenen Objekte transformiert wurden. Hierzu müssen die enthaltenen Relationen und Entityen in Fremdschlüsselbeziehungen umgewandelt werden. Die enthaltenen Attribute werden analog zur Transformation eines Entity-Typen behandelt. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 251 (e) Transformation von Cluster-Typen Ein Cluster-Typ wird transformiert nachdem alle enthaltenen Relationen bzw. Entityen transformiert wurden. Der Cluster C = R1 + R2 + . . . + Rn wird in eine Referenz auf die Surrogatschlüssel der enthaltenen Relationen transformiert, ohne aber mittels einer Fremdschlüsselbeziehung abgesichert zu werden. Spezifika der Semantik-Übersetzung von HERM-Schemata. Beobachtung 4. Weder SQL’92 noch SQL:1999 erlauben eine vollständige direkte Übertragung von Integritätbedingungen. Es können Integritätsbedingungen auf unterschiedliche Art übertragen werden: • Restrukturierung des Schemas bis eine vollständige Übertragung unterstützt wird. • Deklarative Spezifikation der Integritätsbedingungen. • Prozedurale Spezifikation der Integritätsbedingungen. • Abbildung der Integritätsbedingungen in eine Wirtssprache • Zusätzliche integritätsbedingungssichernde Maßnahmen • Sicherstellung durch Benutzungsschnittstellen • Sicherstellung durch Ausnahmebehandlung • Generierung und Benutzung von sicheren integritätspflegenden Funktionen anstelle der nicht invarianten Funktionen • Verwaltung von Integritätsverletzungen durch das System • Transaktionssysteme • ... MATCH-Bedingungen. SQL-92 erlaubt unterschiedliche MATCH-Bedingungen: • einfach als nicht spezifiziertes “default” und Anwendung auf alle Tupel t über Attributliste X mit t[X]!, d.h. über Teilmenge {t ∈ RC | ∀A ∈ X : t(A) 6= NULL} , d.h. z.B. für R[X] ⊆ S[Y ], X = A1 ...Ak , und Y = B1 ...Bk wird die Bedingung ∀t ∈ RC ( (∃i(1≤i≤k) t(Ai ) = NULL) ∨ ∃s ∈ S C (t[X] = s[Y ])) • FULL wird angewandt auf alle Tupel, die nicht das NULL-Tupel sind, wobei dann Nullwerte nicht erlaubt sind, d.h. z.B. für R[X] ⊆ S[Y ], X = A1 ...Ak , und Y = B1 ...Bk wird die Bedingung ∀t ∈ RC ( ∀i(1≤i≤k) (t(Ai ) = NULL) ∨ (∀i(1≤i≤k) (t(Ai ) 6= NULL) ∧ ∃s ∈ S C (t[X] = s[Y ]))) • PARTIAL wird angewandt auf alle Tupel t, deren X-Wert nicht das NULL-Tupel ist, wobei in der Kontrollmenge eine Gleichheit bis auf Nullwerte in t[X] besteht, d.h. z.B. für R[X] ⊆ S[Y ], X = A1 ...Ak , und Y = B1 ...Bk wird die Bedingung ∀t ∈ RC ( ∀i(1≤i≤k) (t(Ai ) = NULL) ∨ C ∃s ∈ S (∀i(1≤i≤k) (t(Ai ) = NULL ∨ t(Ai ) = s(Bi )))) wobei diese Bedingung äquivalent ist zu ∀t ∈ RC (∃s ∈ S C (∀i(1≤i≤k) (t(Ai ) = NULL ∨ t(Ai ) = s(Bi )))) . IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 252 FULL kann auch direkt ausgedrückt werden durch: CHECK ( (A1 IS NULL AND ... AND Ak IS NULL) OR ( A1 IS NOT NULL AND ... AND Ak IS NOT NULL AND A1,...,Ak IN SELECT B1 ... Bk FROM S )) PARTIAL ist auch darstellbar durch eine Fallunterscheidung je nach vorkommenden Nullwert im referenzierendem Tupel: CHECK ( (A1 IS NULL AND ... AND Ak IS NULL) OR ( A1 NULL AND A2 IS NOT NULL ... AND AK IS NOT NULL AND A2,...,Ak IN SELECT B2 ... Bk FROM S ) OR ... OR ( A1 IS NOT NULL ... AND A(k-1) IS NOT NULL AND AK IS NULL AND A1,...,A(k-1) IN SELECT B1 ... B(k-1) FROM S ) OR ... OR ( A1 IS NULL AND ... A(k-1) IS NULL AND AK IS NOT NULL AND Ak IN SELECT Bk FROM S ) ) Ausführungsmodi. SQL-92 hat bereits Asuführungsmodi eingeführt: DEFERRED IMMEDIATE kann. erlaubt das Aufschieben eine Kontrolle der Integritätsbedingungen bis zum Ende einer Transaktion. fordert die Kontrolle einer Integritätsbedingung für jede Anweisung, mit der diese verletzt werden Diese Ausführungsmodi können gesetzt werden auf einen initialen Modus, der dann auch ggf. überschrieben werden kann. Damit erhalten wir: INITIALLY IMMEDIATE NOT DEFERABLE ist die default-Bedingung für Integritätsbedingungen. Diese Bedingung kann auch durch NOT DEFERABLE INITIALLY IMMEDIATE deklariert werden. INITIALLY DEFERRED NOT DEFERABLE Diese Bedingung kann auch durch NOT DEFERABLE INITIALLY DEFERRED deklariert werden. INITIALLY DEFERRED DEFERABLE Diese Bedingung kann auch durch DEFERABLE INITIALLY DEFERRED deklariert werden. INITIALLY IMMEDIATE DEFERABLE sollte stets für alle Bedingungen deklariert werden, die mit Transaktionen ggf. verletzt werden können. Diese Bedingung kann auch durch DEFERABLE INITIALLY IMMEDIATE deklariert werden. Der Ausführungsmodus kann umgesetzt werden mit SET CONSTRAINTS name list IMMEDIATE bzw. IS ADD CAU zu Kiel, IfI, ISE, β SET CONSTRAINTS 2. Strukturierung von IS name list ab SS 2012 253 DEFERRED bzw. SET CONSTRAINTS ALL IMMEDIATE bzw. SET CONSTRAINTS ALL DEFERRED Deklarative Spezifikation mit CHECK-Bedingungen. CHECK-Bedingungen werden definiert • auf Attributniveau zu den Werten dieses Attributes, • auf Tabellenniveau für jedes einzelne Tupel der Relation, wobei hier auch subselect erlaubt sind und • über den Umweg der Defintion mit Assertions. Deklarative Spezifikation mit ASSERTION. ASSERTION ist eine Schema-Bedingung. Sie ist jedoch relativ selten realisiert. Oracle erlaubt z.B. nicht die Spezifikation. CREATE ASSERTION Institut CHECK (Bedingung); Sie wird immer dann aktiviert, wenn die Klassen zu den verwendeten Tabellen modifiziert werden. CREATE TABLE Fakultaet ( ... Nummer FakNr PRIMARY KEY, .. ); CREATE ASSERTION AssignFakultaet CHECK (NOT EXISTS ( SELECT * FROM Institut WHERE FakNr IS NULL) ); CREATE ASSERTION AnzahlInstZuFak CHECK ( (SELECT COUNT(*) FROM Fakultaet) <= (SELECT COUNT(*) FROM Institut) ); Die erste der beiden Assertionen wird kontrolliert bei jder Veränderung zu Institut. Die zweite wird kontrolliert bei jeder Veränderung sowohl von Institut als auch von Fakultaet. Prozedurale Spezifikation mit Triggern. Trigger sind mit den Event-Condition-Action-Paradigma entworfen (kurz ECA). Damit gewähren Trigger anderen Möglichkeiten als die anderen SQL-Konstrukte. So kann z.B. mit Oracle folgender Trigger spezifiziert werden. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 254 CREATE OR REPLACE TRIGGER TriggInstitutFakult AFTER INSERT ON Institut FOR EACH ROW WHEN (new.Fakultaet NOT IN (SELECT Nummer FROM Fakulataet)) BEGIN INSERT INTO Fakultaet (Nummer) VALUES (:new.Fakultaet); END; . run Folgende Besonderheiten sollten beachtet werden: • • OR REPLACE kann auch nicht spezifiziert werden. Sollte jedoch bereits ein Trigger existieren, dann ist dies ein Fehler. AFTER kann auch ersetzt werden durch BEFORE . • Wird der Trigger für eine Sicht spezifiziert, dann kann auch anstelle von AFTER der Ersatz durch INSTEAD OF be nutzt werden. Damit kann auch eine Sicht modifiziert werden. • Anstelle von INSERT kann auch DELETE oder UPDATE OF <attribute> verwendet werden. • FOR EACH ROW kann man auch weglassen. In diesem Fall wird der Trigger nur einmal für jede Modifikationsmenge zur Relation angewandt. • Die Variablen new und old repräsentieren den Zustand nach bzw. vor Anwendung der Modifikationsoperation. Bei Verwendung der Variablen in Anfragen ist der Doppelpunkt erfoderlich ( :new.Fakulataet ). • Die Aktionen sind Anweisungen des Systemes. Mitunter sind sie verschieden in verschiedenen Systemen. • Durch den Punkt wird die Triggerdefinition abgelegt mit einem run . • Oracle erlaubt keine Veränderung einer Relation, deren Trigger feuert, sowie auch von assoziierten Relationen (z.B. über Fremdschlüssel). Trigger in Sybase Eine Integritätsbedingung als Sybase-Trigger in unserem Beispiel wird z.B. wie folgt beschrieben create trigger tI_eingeschriebenIn on eingeschriebenIn for INSERT as begin declare @numrows int, @nullcnt int, @validcnt int, @errno int, @errmsg varchar(255) select @numrows = @@rowcount if update(MatrNr) begin select @nullcnt = 0 select @validcnt = count(*) IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 255 from inserted,Student where inserted.MatrNr = Student.MatrNr if @validcnt + @nullcnt != @numrows begin select @errno = 30002, @errmsg = ’Cannot INSERT eingeschriebenIn because Student does not exist.’ goto error end end return error: raiserror @errno @errmsg rollback transaction end go Trigger in Oracle Analog wird ein Trigger mit Oracle deklariert, mit dem ein Update in anderen Relationen erzwungen wird: create trigger tI_eingeschriebenIn after INSERT on EingeschriebenIn for each row declare numrows INTEGER; begin /* ON CHILD INSERT CASCADE */ insert into Student (MatrNr) select MatrNr from EingeschriebenIn where not exists ( select * from Student where :new.MatrNr = Student.MatrNr ); end; / create trigger tD_EingeschriebenIn after DELETE on EingeschriebenIn for each row declare numrows INTEGER; begin /* ON CHILD DELETE RESTRICT */ select count(*) into numrows from Student where :old.MatrNr = Student.MatrNr; if (numrows > 0) then raise_application_error( -20010, ’Cannot DELETE EingeschriebenIn because Student exists.’ ); IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 256 end if; end; / create trigger tU_EingeschreibenIn after UPDATE on EingeschriebenIn for each row declare numrows INTEGER; begin /* ON CHILD UPDATE RESTRICT */ select count(*) into numrows from StarkerTyp where :new.MatrNr = Student.MatrNr; if ( numrows = 0 ) then raise_application_error( -20007, ’Cannot UPDATE EingeschriebenIn because Student does not exist.’ ); end if; end; / create trigger tD_Student after DELETE on Student for each row declare numrows INTEGER; begin /* ON PARENT DELETE RESTRICT */ select count(*) into numrows from einfachabhangig where EingeschriebenIn.MatrNr = :old.key; if (numrows > 0) then raise_application_error( -20001, ’Cannot DELETE Student because EingeschriebenIn exists.’ ); end if; end; / /* Student ON PARENT UPDATE CASCADE */ /* Student ON CHILD DELETE RESTRICT */ /* Student ON CHILD INSERT CASCADE */ /* Student ON CHILD UPDATE RESTRICT */ Trigger in PostgreSQL Trigger könne in PostgreSQL durch Funktionen realisiert werden, die die neue RECORD Variable nutzen: IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 257 • Es wird die Funktion deklariert. • Der Trigger benutzt die Funktion. Funktionendefinition: CREATE FUNCTION trigger_insert_update_relName() RETURNS opaque AS ’BEGIN IF ... THEN RAISE EXCEPTION ’’Mitteilung an alle’’; END IF; RETURN new; END;’ LANGUAGE ’plpgsql’; Damit kann nun der Trigger spezifiziert werden: CREATE TRIGGER tr_relName BEFORE INSERT OR UPDATE ON relName FROR EACH ROW EXECUTE PROCEDURE trigger_insert_update_relName() ; Zusammenfassende Übersicht. Art Primary key, domain constraints Unique constraints Referential constraints CheckBedingungen Assertions Entry Level immer sofort SQL-92 Intermediate Level immer sofort NOT NULL, immer sofort MATCH wird nicht unterstützt ohne subquery MATCH wird nicht unterstützt ohne subquery nicht unterstützt nicht unterstützt SQL-99 Full Level 2.10.3 Allgemeine Grundlagen der Erzwingung von Integritätsbedingungen In SQL 99 bestehen mehrere Möglichkeiten Integritätsbedingungen auszudrücken und zu erzwingen. Diese sind • Tabellenbedingungen, wie PRIMARY KEY, UNIQUE oder CHECK Beschränkungen • Ausnahmen (Assertion), die einen unerwünschten Zustand in der Datenbank verhindern • Trigger, die ermöglichen auf Datenbankoperationen zu reagieren IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 258 Tabellenbedingungen, wie PRIMARY KEY, UNIQUE oder CHECK können nur über den Daten einer Tabelle formuliert werden. Dies macht sie für die meisten der benötigten Integritätsbedingungen nur bedingt nutzbar. Komplexere Bedingungen können mittels Ausnahmen (Assertions) oder Trigger beschrieben werden. Bei einer Ausnahme, wird ein erwünschter Datenbankzustand beschrieben, und es wird von der Datenbank nach jeder datenverändernden Aktion garantiert, das dieser noch erfüllt wird. Wird der Zustand nicht erfüllt, so wird die Aktion abgelehnt. Durch Trigger kann nach einer datenverändernden Aktion individuell reagiert werden. Schlüsselbedingungen: Die Behandlung von HER Schlüsselbedingungen kann auf zwei Arten erfolgen. Zum einen durch eine statische UNIQUE Bedingung über den Schlüsselfeldern der erstellten Tabelle oder aber durch eine Ausnahmebehandlung mittels ASSERTION. Die Auswahl des geeigneten Mittels hängt von der Komplexität des Schlüssels ab. Schlüssel im HER Ansatz werden als generalisierte Untermengen [Tha91, S. 7] der Attributmenge eines Entity-Typs beschrieben. Diese können nur auf die Schlüsselbedingungen in SQL abgebildet werden, wenn die Untermenge nur aus atomaren Attributen des Entity-Typen besteht. Ist diese Bedingung für den Schlüssel nicht erfüllt, so muss dieser in eine ASSERTION transformiert werden. Stehen keine Ausnahmen zur Verfügung, kann ebenfalls ein Trigger, der bei Verletzung der noch zu definierenden Schlüsselbedingung key condition ein Rollback der letzten Datenbankaktion auslöst, verwandt werden. Solch ein Trigger müsste zu allen des Objekt E betreffenden Tabellen in der Datenbank erstellt werden. Aus diesem Grunde stellt eine Ausnahme die vorzuziehende Alternative dar. Um die Schlüsselbedingung zu garantieren darf es keine zwei verschiedenen Datensätze in E geben, bei denen alle atomaren Schlüsselattribute und die aus den mengenwertigen Schlüsselattributen ableitbaren Mengen gleich sind. Da Mengen in SQL nicht auf kanonische Weise vergleichbar sind, wird der Zusammenhang M1 = M2 ⇔ M1 ∪ M2 \ M1 ∩ M2 = ∅ für den Vergleich zweier Mengen verwandt. Dieser lässt sich mittels UNION, INTERSECTION und EXCEPT in SQL ausdrücken. Anhand dieser Betrachtungen wurde die Abfrage key condition abgeleitet: SELECT COUNT(_) FROM E e1, E e2 WHERE e1.s1 = e2.s1 AND . . . AND e1.sk = e2.sk AND NOT EXISTS ( ( ( SELECT i1 FROM set m1 WHERE set id = e1.k1.m1 UNION ( SELECT i1 FROM set m1 WHERE set id = e2.k1.m1 ) EXCEPT ( ( SELECT i1 FROM set m1 WHERE set id = e1.k1.m1 INTERSECT ( SELECT i1 FROM set m1 WHERE set id = e2.k1.m1 ) ) . . . AND NOT EXISTS ( ( ( SELECT il FROM set ml WHERE set id = e1.kl.ml ) UNION ( SELECT il FROM set ml WHERE set id = e2.kl.ml ) ) EXCEPT ( ( SELECT il FROM set ml WHERE set id = e1.kl.ml ) INTERSECT IS ADD ) ) ) ) CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 259 ( SELECT il FROM set ml WHERE set id = e2.kl.ml ) ) ) AND e1. E id <> e2. E id Wertebereichsbeschränkungen sollen den Wertebereich direkt spezifizieren. Diese können entweder durch einen extra spezifizierten Wertebereich dargestellt werden (die bessere Variante) oder durch eine Bedingung in der Tabellendefinition. CREATE TABLE Institut ( ... Fakultaet char(1) NOT NULL CHECK VALUE IN (’1’, ’2’, ’3’, ’4’), .. ); Besser ist die Definition eines Wertebereiches CREATE DOMAIN FakNr CHAR(1) CHECK VALUE IN (’1’, ’2’, ’3’, ’4’); und die Benutzung dieses Wertebereiches mit CREATE TABLE Institut ( ... Fakultaet .. ); FakNr NOT NULL, Hierarchiebedingungen: Oft werden Hierarchien abgebildet im Vereinigungszugang. So kann z.B. due Hierarchie Person, Professor in einen Typ abgebildet werden: CREATE TABLE Person ( Name Gebdatum Geburtsort Adresse Spezialisierung InIName char[40] date char[20], char[60] varchar[50] char[15] Primary Key, Primary Key, CHECK ((InIName IS NULL AND Spezialisierung IS NULL) OR (InIName IS NOT NULL AND Spezialisierung IS NOT NULL)) CHECK ((InIName IS NULL AND Spezialisierung IS NULL) OR (InIName IS NOT NULL AND Spezialisierung IS NOT NULL)) ); Kardinalitätsbedingungen: Die Transformation der Kardinalitätsbeschränkungen, benötigt einige Vorbetrachtungen, die es uns im späteren ermöglichen einigen Problemen bei der Behandlung dieser zu umgehen. Kardinalitätsbeschränkungen beschreiben die Beziehungen zwischen Relationen und ihren Komponenten in einem HER Schema. Bei der Betrachtung einer Menge von Kardinalitätsbeschränkungen ist schnell ersichtlich, das bei schlechtem Design Konstellationen entstehen können, die nach der Transformation auf eine Datenbank in dieser unerwartete Effekte erzeugen können, z.B. zu unerfüllbaren Datenbankschemata führen. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 260 In [Tha00] wird die Nichterfüllbarkeit eines Systems von Kardinaliträtsbeschränkungen auf die Existenz eines kritischen Pfades im System reduziert. Unter Nutzung des dort beschriebenen Tests auf Nichterfüllbarkeit und der Möglichkeiten zur Korrektur der Kardinalitätsbeschränkungen eines Schemas kann die Menge der Kardinalitätsbeschränkungen soweit möglich in einen konsistenten Zustand gebracht werden, so das die Transformation auf das Datenbankniveau keine unerwarteten Effekte erzeugt. Die Transformation der Kardinalitätsbeschränkung kann analog zu den Schlüsselbeschränkungen in einen Trigger oder eine Ausnahme erfolgen. Es ist aber auch unter speziellen Bedingungen möglich, Kardinalitätsbedingungen durch eine Transformation des Ergebnissschemas auszudrücken. So kann bei Kardinalitätsbedingungen der Form comp(R, Ri ) = (n, 1) , mit n ∈ {0, 1} auf einer binären Relation R, die Relation R aufgelöst werden und in die Relation Ri hineingezogen werden. Das bewirkt das alle Attribute aus R zu Attributen von Ri werden. Gilt n = 0 wird der Spaltendefinition noch eine NULL Definition hinzugefügt. Handelt es sich nicht um eine Kardinalitätsbeschränkung der obigen Art, so ist die Transformation in einen Trigger der Ausnahme vorzuziehen, da individuell auf die Verletzung der Bedingung reagiert werden kann. Zu jeder Kardinalitätsbeschränkung ist die zu triggernden Aktionen bei Veränderung oder Löschen des referenzierten Datensatzes als Transformationsparameter zu beachten. Die Transformation der Kardinalitätsbeschränkung comp(R, Ri ) = (m, n) führt zu einer Veränderung der Relation und zu mehreren Triggern. Für die Kardinalitätsbedingung sind die Aktionen • Einfügen von Elementen in Ri • Verändern der Identifikationsspalte (hier des Surrogatschlüssels) von Ri. Dieser Fall sollte nicht auftreten, ist aber aus Stabilitätsgründen trotzdem zu behandeln. • Einfügen von Elementen in R. Es können hier die Beschränkungen von 26 überschritten werden. • Verändern der Ri Spalte von R. Hier sind die unteren und oberen Grenzen der Kardinalitätsbedingungen zu überprüfen. • Löschen von Elementen von R. Hier ist die untere Grenze der Bedingung zu prüfen. zu überwachen. Werden durch eine dieser Aktionen die Bedingungen verletzt, so wird die auslösende Aktion zurückgenommen. Hierbei ist im Zusammenhang mit dem Hintergrund der Datenpflege zu beachten das bestimmte Integritätsbedingungen erst nach dem Ende einer Transaktion gepflegt werden dürfen, da sonst ihre Erfüllung praktisch ünmöglich ist. Dies ist z. B. bei Kardinalitätsbeschränkungen der Form comp(R, E) = (1, n) der Fall. Beim Einfügen eines Datensatzes in E muss auch ein Eintrag in der Relation R erfolgen. Dies kann praktisch durch eine Transaktion geschehen, in der erst der Datensatz in E angelegt wird und daraufhin der Datensatz in R. Für die Transformation einer Kardinalitätsbeschränkung werden auch Trigger erzeugt, durch die die Einhaltung der Kardinalitätsbedingung comp(R, Ri ) = (m, n) erreicht wird. Sie verhindern jede datenverändernde Aktion (Insert, Update oder Delete), durch die die Kardinalitätsbedingung verletzt werden könnte. Da die Kardinalitätsbedingung per Definition in der leeren Datenbank erfüllt ist, so ist sie es auch in jeden Folgezustand. Wir können Kardinalitaätsbedingungen in zwei Klassen von Integritätsbedingungen aufspleißen: 1. Unäre tupelgenerierende Bedingungen LHS vminimal multiplicity RHS bzw. card(RHS, LHS) = (a, .) • Insertion in LHS: Kaskadierend in RHS oder Verbot für LHS (wenn IC ungültig, RESTRICT (als harte Bedingung: wird sofort vor allen anderen kontrolliert) oder NO ACTION (als weiche Bedingung: wird nach allen anderen IC kontrolliert)) oder Benutzung von Ersatzwerten (DEFAULT oder NULL)[wobei diese Optionen nur in Ausnahmefällen sinnvoll sind] in RHS oder bewußte Verletzung (REFERENCES ARE NOT CHECKED, SKIP) Default-Strategie für fast alle Systeme: REJECT IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 261 • Insertion in RHS: keine Auswirkungen • Delete in RHS: CASCADE in LHS oder RESTRICT (in SQL-92: Default-Regel; wenn nicht deklarierts) bzw. NO ACTION in RHS oder SET DEFAULT bzw. SET NULL in LHS oder bewußte Verletzung (SKIP) • Delete in LHS: keine Auswirkungen • Update in LHS: CASCADE in RHS oder RESTRICT bzw. NO ACTION in LHS oder SET DEFAULT bzw. SET NULL in RHS [wobei diese Optionen nur in Ausnahmefällen sinnvoll sind] oder bewußte Verletzung (SKIP) Default-Strategie für fast alle Systeme: REJECT • Update in RHS: CASCADE in LHS oder RESTRICT bzw. NO ACTION in RHS oder SET DEFAULT bzw. SET NULL in LHS oder bewußte Verletzung (SKIP) Erzwingungsmodus als Hexatupel (iLHS , λ, λ, dRHS , uLHS , uRHS ) ausreichend ist bereits Quadrupel (iLHS , dRHS , uLHS , uRHS ) z.B. card(EingeschriebenIn, Student) = (1, .) erfordert (iStud =C,λ,λ,dEing =R,uStud =R,uEing =R) bzw. (iStud =C,dEing =R,uStud =R,uEing =R) Realisierung: • RESTRICT für Insert und Update bei card(RHS, LHS) = (1, .) bei EingeschriebenIn : ALTER TABLE Student ADD CONSTRAINT CHECK(EXISTS(SELECT * FROM EingeschriebenIn WHERE EingeschriebenIn.StudMatrNr = MatrNr)); Alternativ kann auch bei einigen Systemen die RESTRICT-Regel direkt den Attributen zugeordnet werden: CREATE TABLE EingeschriebenIn ( StudMatrNr char[7] CHECK( StudMatrNr IN (SELECT MatrNr FROM Student) ), ... Bis date CHECK ( Von < Bis ) PRIMARY KEY (SName, StudMatrNr) ); Die Möglichkeit wird z.Z. nur rudimentär unterstützt. Z.B. Oracle erlaubt keine Subqueries in Bedingungen. Die CHECK-Bedingung ist weniger restriktiv, da eine Veränderung in Student nicht auf EingeschriebenIn durchgegeben wird! Sie wird nur kontrolliert, wenn das entsprechende Attribut sich in EingeschriebenIn ändert (d.h. bei Update und Insert). Analog für RESTRICT für Insert und Update bei card(RHS, LHS) = (3, .) ALTER TABLE Student ADD CONSTRAINT CHECK(EXISTS( SELECT * FROM EingeschriebenIn E1, WHERE E1.StudMatrNr = MatrNr AND EXISTS( SELECT * FROM EingeschriebenIn E2 WHERE MatrNr = E2.StudMatrNr AND E1.SName <> E2.SName AND EXISTS( SELECT * FROM EingeschriebenIn E3 WHERE E3.StudMatrNr = MatrNr IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 262 AND E1.SName <> E3.SName AND E2.SName <> E3.SName)))); • Modi für Delete und Update für Komponentenabhängigkeiten R[S] ⊆ S z.B. EingeschriebenIn[Student] ⊆ Student bei Student wird durch Nebenbedingung für den Fremdschlüssel mit bewältigt: CREATE TABLE EingeschriebenIn ( StudMatrNr char[7] FOREIGN KEY REFERENCES Student(MatrNr) ON DELETE CASCADE ON UPDATE RESTRICT, ... Bis date CHECK ( Von < Bis ) PRIMARY KEY (SName, StudMatrNr) ); ALTER TABLE Student ADD CONSTRAINT CHECK(EXISTS(SELECT * FROM EingeschriebenIn WHERE EingeschriebenIn.StudMatrNr = MatrNr)); Damit erhalten wir die folgende Auflösung für den Fall R1 [X] v(1,.) R2 [Y ] Schlüssel von R2 ist: CASCADE RESTRICT NO ACTION insertR1 deleteR1 – – – updateR1 insertR2 – – – deleteR2 foreign key foreign key foreign key updateR2 foreign key foreign key foreign key für den Fall, daß Y ein NULL/DEFAULT – – foreign key foreign key Im allgemeinen Fall erhalten wir die folgende Auflösung für den Fall R1 [X] v(a,.) R2 [Y ] : CASCADE RESTRICT NO ACTION NULL/DEFAULT insertR1 stored procedure CHECK CHECK DEFERRED deleteR1 – – – – updateR1 trigger CHECK CHECK DEFERRED insertR2 – – – – deleteR2 updateR2 2. Numerische Beschränkungen card(RHS, LHS) = (0, b) • Insertion in LHS: kein Effekt • Insertion in RHS: CASCADE in RHS (Bereinigung (DELETE von Konkurrenten)) oder RESTRICT bzw. NO ACTION in RHS oder bewußte Verletzung (SKIP) • Delete in LHS: keine Auswirkungen (bzw. positive Auswirkungen) • Delete in RHS: keine Auswirkungen • Update in LHS: CASCADE in RHS oder RESTRICT bzw. NO ACTION in LHS oder bewußte Verletzung (SKIP) • Update in RHS: CASCADE in RHS (Bereinigung (DELETE von Konkurrenten)) oder RESTRICT bzw. NO ACTION in RHS oder bewußte Verletzung (SKIP) Erzwingungsmodus als Hexatupel (λ, iRHS , λ, λ, uLHS , uRHS ) ausreichend ist bereits Tripel (iRHS , uLHS , uRHS ) z.B. card(EingeschriebenIn, Student) = (0, 3) erfordert (iEing =R,uStudent =C,uEing =R) . IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 263 Spezielle numerische Beschränkungen sind funktionale Abhängigkeiten. Diese können wie card(RHS, LHS) = (0, 1)-Abhängigkeiten behandelt werden. • Primärschlüsselabhängigkeiten werden sowohl im Entry als auch Intermediate Level von SQL’92 sofort erzwungen. Es wird die “Entity-Integrität” gefordert (keine Nullwerte in diesen Attributen), d.h. es wird gefordert ∀t ∈ RC (t[K]!). • Sekundarschlüsselabhängigkeiten erlauben einen variablen Erzwingungsmodus: immediate oder deferred. Im Entry Level von SQL’92 ist noch die “Entity-Integrität” gefordert. Der Nullwert wird wie ein Wert in der Ungleichung t(A) 6= t0 (A) behandelt. Die DBMS haben ggf. hier eine abweichende Behandlung: • SQL-99 fordert bei UNIQUE-Bedingungen den Vergleich nur bei gleichzeitig voll definierten Teiltupeln: ∀t∀t0 (t[X]! ∧ t0 [X]! → t[X] 6= t0 [X]). • ORACLE erzwingt UNIQUE nur für vollständig definierte Teiltupel, d.h. ∀t∀t0 (t[X] = NULL ∨ t0 [X] = N U LL ∨ ((∃A∈X (t[A]! ∨ t[A]!)) → t[X] 6= t0 [X]). • DB2, Informix, Sybase, MS SQL, Ingres, SybaseAnywhere definieren dagegen ∀t∀t0 (t[X] 6= t0 [X]) . Realisierung: • RESTRICT für Insert und Update bei card(RHS, LHS) = (0, 2) in der Relation EingeschriebenIn ALTER TABLE EingeschriebenIn ADD CONSTRAINT CHECK(NOT EXISTS( SELECT * FROM EingeschriebenIn E1, WHERE EXISTS( SELECT * FROM EingeschriebenIn E2 WHERE E1.StudMatrNr = E2.StudMatrNr AND E1.SName <> E2.SName AND EXISTS( SELECT * FROM EingeschriebenIn E3 WHERE E3.StudMatrNr = E2.StudMatrNr AND E1.SName <> E3.SName AND E2.SName <> E3.SName)))); Analog mit Schachtelung der Tiefe b + 1 für card(RHS, LHS) = (0, b). Besser ist in diesem Fall sogar die Einführung eines Surrogat-Schlüssels für die Relation EingeschriebenIn, weil bei komplexeren Schlüsseln die Bedingungen E1.SName <> E3.SName dann um den gesamten Schlüssel von EingeschriebenIn erweitert werden müssen. Relationale Integritätsbedingungen: Relationale Integritätsbedingungen werden auf der Basis der relationalen Algebra formuliert. Unter der Menge der möglichen relationalen Integritätsbedingungen sind zwei Klassen besonders zu beachten, da sie in der Modellierungspraxis recht häufig benötigt werden: Inklusionsbeziehungen: Durch Inklusionsbeziehungen werden statische Beziehungen zwischen Objekten in der Datenbank beschrieben. Ihre Transformation kann, wie in den vorherigen Fällen, in Trigger oder Ausnahmen erfolgen. Da die beiden Transformationen ineinander überführbar sind, wird hier im folgenden nur die Transformation in eine Ausnahme betrachtet. CREATE ASSERTION R inc S CHECK ( NOT EXISTS ( SELECT * FROM R IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 264 WHERE NOT EXISTS ( SELECT S id FROM S WHERE S.Y1 = R.X1, . . . , S.Yk = R.Xk ) ) ) Bei mehreren Inklusionsabhängigkeiten zwischen R und S muss der Name der Ausnahme mittels einer Nummer erweitert werden. Es sollen u.a. Bedingungen der Daten untereinander abgebildet werden. Typische Beispiele sind Beschränkungen über Kalenderdaten oder referentielle Integritätsbedingungen wie z.B. CREATE TABLE EingeschriebenIn ( StudMatrNr char[7] CHECK( StudMatrNr IN (SELECT MatrNr FROM Student) ), ... Bis date CHECK ( Von < Bis ) PRIMARY KEY (SName, StudMatrNr) ); Exklusionsbeziehungen: Die Exklusionsbeziehungen werden analog zu den Inklusionsbeziehungen in eine Ausnahme transformiert. Hierzu ist zu prüfen, das es kein Element in R gibt, zu dem ein passendes Element in S existiert. Dies wird durch den SQL Ausdruck CREATE ASSERTION R_exclus_S CHECK ( NOT EXISTS ( SELECT * FROM R WHERE EXISTS ( SELECT S id FROM S WHERE S.Y1 = R.X1, . . . , S.Yk = R.Xk ) ) ) comp(R, Ri ) = (m, n) CREATE TRIGGER comp_R_i_R_insert AFTER INSERT ON R_i REFERENCING NEW TABLE inserted WHEN ( ( SELECT COUNT(*) FROM R, inserted WHERE R.R i = inserted.R_i_id ) < m ) OR ( SELECT COUNT(*) FROM R, inserted WHERE R.R_i = inserted. R_i_id ) > n ) ) ROLLBACK TRANSACTION CREATE TRIGGER comp_R_i_R_update AFTER UPDATE OF R_i id ON R_i REFERENCING NEW TABLE inserted REFERENCING OLD TABLE deleted WHEN ( ( SELECT COUNT(*) FROM R, deleted WHERE R.R_i = inserted.R_i_id ) < m ) OR ( SELECT COUNT(*) FROM R, inserted IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 WHERE R.R_i = inserted. R_i_id ) > n ) ) ROLLBACK TRANSACTION CREATE TRIGGER comp R_R_i_insert AFTER INSERT ON R REFERENCING NEW TABLE inserted WHEN ( ( SELECT COUNT(*) FROM R_i, inserted WHERE inserted.R_i = R_i. R_i_id ) < m ) OR ( SELECT COUNT(*) FROM R, inserted WHERE inserted.R_i = R_i. R_i_id ) > n ) ) ROLLBACK TRANSACTION CREATE TRIGGER comp_R_R_i_update AFTER UPDATE OF R_i ON R REFERENCING NEW TABLE inserted REFERENCING OLD TABLE deleted WHEN ( ( SELECT COUNT(*) FROM R_i, deleted WHERE deleted.R_i = R_i.R_i_id ) < m ) OR ( SELECT COUNT(*) FROM R_i, inserted WHERE inserted.R_i = R_i. R_i_id ) > n ) ) ROLLBACK TRANSACTION CREATE TRIGGER comp_R_R_i_delete AFTER DELETE ON R REFERENCING OLD TABLE deleted WHEN ( ( SELECT COUNT(*) FROM R_i, deleted WHERE deleted.R_i = R_i.R_i_id ) < m ) ) ROLLBACK TRANSACTION 2.10.4 Compiler-Zugang Abbildung 61: Übersetzungsphasen eines Mehrpaßcompilers Die Umgebung eines Compilers. IS ADD 265 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 266 Präprozessor: Der Präprozessor wird vom Compiler aufgerufen und hat die Aufgabe Makros5 zu ersetzen. Falls das Programm aus mehreren Quelltexten besteht, ist er außerdem dafür zuständig, die verschiedenen Teile zusammenzusetzen. Compiler: Der Compiler erhält seine Eingabe, den Quellcode, vom Präprozessor und übersetzt diesen Code in eine Zielsprache: Assembler- oder Maschinencode. Auf die Arbeitsweise des Compilers wird später genau eingegangen. Assembler: Es gibt Compiler, die Assemblercode ausgeben und an den Assembler weitergeben. Dieser erzeugt dann einen verschiebbaren Maschinencode, indem er Assemblerbefehle in Maschinenbefehle transformiert, symbolischen Namen (z.B. Labels) Maschinenadressen zuweist und ein Objektprogramm6 erzeugt. Binder: Der Binder hat die Aufgabe, Objektprogramme aus verschiedenen Dateien (aus verschiedenen Übersetzungen oder systemeigene Bibliotheksdateien) in verschiebbarem Maschinencode zu einem Programm zusammenzufassen und die Querverweise7 und externen Referenzen8 aufzulösen. Lader: Der Lader fordert entsprechend der Größe des Programms Speicherbereich vom Betriebssystem an. Anschließend lädt er das Programm in diesen Bereich im Arbeitsspeicher, ersetzt die verschiebbaren Adressen durch nicht verschiebbare absolute Adressen und startet das Programm. Häufig sind Binder und Lader zu einem sogenannten Bindelader zusammengefasst, der dann sowohl die Aufgaben des Binders als auch des Laders übernimmt. Abbildung 62: Übersetzungsphasen eines Mehrpaßcompilers Compilerarten. Die Mächtigkeiten von Quell- und Zielsprache können unterschiedlich sein, daher werden Compiler wie folgt klassifiziert: Compiler: Die Quellsprache ist mächtiger als die Zielsprache, z.B. der Compiler gcc, welcher einen C-Quelltext in Maschinensprache übersetzt. 5 Makro: Zusammenfassung von Befehlen zu einer mit einem Befehl ansprechbaren Einheit Objektprogramm: maschinenunabhängiger Zwischencode, in dem unter anderem vorbesetzte Bibliotheken vorliegen 7 Querverweise - hier: symbolische Verweise, die in anderen Programmteilen definiert sind 8 externe Referenz - hier: noch nicht aufgelöste Bezeichner, die z.B. in Bibliotheken definiert sind 6 IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 267 Decompiler: Die Zielsprache ist mächtiger als die Quellsprache. Präcompiler: Quell- und Zielsprache haben etwa die gleiche Mächtigkeit, deshalb wird ein Präcompiler auch 1-1Compiler genannt, z.B. der Präprozessor vom gcc Compiler unterscheiden sich nicht nur in Mächtigkeit von Quell- und Zielsprache sondern auch in Konstruktion und Verwendungszweck: Ein-Pass-Compiler: Er benötigt nur einen Arbeitsgang, um den Quelltext in den Zielcode zu übersetzen. Mehr-Pass-Compiler: Zunächst wird der Quellcode von einem Präcompiler bearbeitet und anschließend vom Compiler in die Zielsprache übersetzt. Hier sind folglich mehrere Arbeitsgänge für die Übersetzung erforderlich. Compiler-Compiler: Ein Compiler-Compiler erhält die Beschreibungen für zwei Programmiersprachen und gibt anschließend einen Übersetzer (Compiler) von der einen in die andere Sprache aus. Er wird auch Compilergenerator genannt optimierender Compiler: Dieser Compiler optimiert ein Programm bezüglich Laufzeit und Speicherbedarf, er verändert jedoch nicht den Inhalt des Programms. Native-Code-Compiler: Der erzeugte Code ist auf dem System lauffähig, auf dem auch der Compiler das Programm übersetzt hat. Cross-Compiler: Soll das Programm auf einem Rechner B ausgeführt werden, kann aber nicht auf B compiliert werden (z.B. Mikrocomputer), benötigt man einen Cross-Compiler, der auf einer anderen Maschine A das Programm übersetzt. Cross-Compiler ermöglichen also die Übersetzung für andere Rechnerarchitekturen. Just-In-Time-Compiler: Von einem Compiler wird zuerst aus dem Quellcode ein plattformunabhängiger Zwischencode erstellt. Dieser wird dann zur Laufzeit des Programms von einem Just-in-Time-Compiler Stück für Stück umgewandelt, prozessorspezifisch optimiert und ausgeführt. Eine aufwendige Optimierung hätte allerdings eine negative Auswirkung auf die Ausführungszeit. Der Zwischencode wird also nicht interpretiert sondern unmittelbar vor seiner Ausführung compiliert, dadurch ist der Just-in-Time-Compiler sehr schnell. Übersetzungsphasen eines Compilers. Während der Übersetzung durchläuft ein Quelltext verschiedene Phasen des Compilers: die lexikalische, syntaktische9 und semantische10 Analyse, die Zwischencodeerzeugung, die Codeoptimierung und schließlich die Codegenerierung. Diese Phasen lassen sich unterschiedlich zusammenfassen. Zum Einen in die Analysephase und die Synthesephase (s. Abb.), zum Anderen in Front-End und Back-End. Das Front-End besteht aus den Phasen, die von der Quellsprache und nicht von der Zielsprache abhängen, also aus der Analysephase, Zwischencodeerzeugung und teilweise der Optimierung. Zum Back-End gehören die Phasen, die sich auf die Zielmaschine beziehen, wie teilweise die Codeoptimierung und die Code-Erzeugung. Oft entfällt die Synthesephase und der vom Compiler nach der Analyse erzeugte Zwischencode wird von einem Laufzeitsystem11 , das eigene Datenstrukturen verwaltet, direkt interpretiert. • Analysephase • Lexikalische Analyse Die lexikalische Analyse wird vom sogenannten Scanner durchgeführt, ist für die Bearbeitung des Quelltextes zuständig und liefert dem Parser einen Strom von Token. Bei der Bearbeitung des Quelltextes filtert der Scanner Leerzeichen, Leerzeilen und Kommentare heraus, wertet die Konstanten aus, überprüft, 9 Syntax: Festlegung, welche Zeichenfolgen als Programme zugelassen sind Semantik: Festlegung, welche Auswirkung die Ausführung des Programms auf einem Rechner hat 11 Laufzeitsystem: System, das alle zur Ausführung eines Programms nötigen Routinen zur Verfügung stellt, wie Speicheranforderung, Fehlerroutinen, Interaktion mit dem Betriebssystem 10 IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 268 Abbildung 63: Analysephase eines Mehrpaßcompilers ob alle Zeichen aus dem Zeichenvorrat der Quellsprache sind und erkennt Grundsymbole und Token. Des weiteren ist das Nachladen weiterer Source-Dateien, die in C zum Beispiel über die #includeAnweisung angegeben werden, eine Aufgabe der lexikalischen Analyse. Der Scanner arbeitet auf der Basis eines deterministischen Automaten Erkennt der Scanner ein gelesenes Symbol bzw. eine Symbolteilfolge, wird anhand einer Symboltabelle festgestellt, ob dieses Lexem11 irgendwann schon einmal vorkam. Ist dies nicht der Fall, so wird ein neuer Symboltabelleneintrag erzeugt und dem Symbol als Attribut einen Verweis auf den entsprechenden Eintrag in der Symboltabelle angefügt. • Syntaktische Analyse Die syntaktische Analyse wird vom Parser12 durchgeführt. Seine Aufgaben sind es, die syntaktische Struktur des Programms entsprechend der Grammatik der Programmiersprache zu erkennen, Syntaxfehler zu entdecken und den Ableitungsbaum zu erstellen. Letzterer wird aus den grammatikalischen Grundkomponenten erstellt, deren Beziehung untereinander durch die Verbindungen der einzelnen Knoten im Baum dargestellt werden. Grundsätzlich gibt es zwei verschiedene Arten von Parsern, die Top-downParser und die Bottom-up-Parser. Der Top-down-Parser betrachtet zuerst das Programm als Ganzes und zerlegt dieses dann bis in seine grammatikalischen Grundkomponenten. Der Bottom-up-Parser beginnt mit der Analyse der grammatikalischen Grundkomponenten und baut hieraus das Programm auf. In jeder Programmiersprache gibt es Regeln wie z.B. eine Schleife, eine Bedingung oder eine Zuweisung aufgebaut sein müssen, ob Variablen vor ihrem ersten Zugriff deklariert werden müssen usw. Wird gegen eine dieser Regeln verstoßen, startet der Parser eine Fehlerbehandlung. Um bei einem Compiler-Durchlauf möglichst viele Fehler entdecken und melden zu können, bricht der Parser nach einem Fehler seine Analyse nicht ab, sondern überliest die nachfolgenden Zeichen bis zu einem synchronisierenden13 Symbol und setzt seine Arbeit dort fort. Der Parser arbeitet auf Basis eines Kellerautomaten, dessen Aufgabe es ist, Anfang und Ende von geschachtelten Konstruktionen zu erkennen. Dieser Automat hat endlich viele Zustände und besitzt als Speicher für die einzelnen Zeichen einen stack. Abhängig vom Eingabezeichen, vom aktuellen Zustand und vom obersten Kellersymbol wechselt der Automat seinen Zustand und verändert die Kellerspitze. • Semantische Analyse Die semantische Analyse baut auf den Ergebnissen der syntaktischen Analyse auf. Im Wesentlichen finden drei Überprüfungen statt, nämlich die Typ-, die Eindeutigkeits- und die Gültigkeitsprüfung. Die Typprüfung basiert dabei auf dem Typ-System der Quellsprache, welches definiert, wie bestimmte Typen 12 engl. to parse: zerlegen synchronisierendes Symbol: abschließendes Zeichen von grammatikalischen Komponenten (wie Deklarationen und Anweisungen), Beispiel: ; in C 13 IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 269 in Ausdrücken verwendet werden dürfen und welchen Typs das Resultat zu sein hat. In C würde eine arithmetische Verknüpfung zweier int-Variablen zum Beispiel ein Ergebnis wiederum vom Typ int zur Folge haben. Die statische Typprüfung wird während des Kompilierens durchgeführt, kann jedoch nicht garantieren, dass es zur Laufzeit nicht zu Typfehlern kommt. Prinzipiell ist aber, falls Typ und Wert eines Elements auch in der Zielsprache bekannt sind, die sogenannte dynamische Typprüfung ausreichend. Sie findet zur Laufzeit des Programms statt. Die semantische Analyse überprüft jedoch nicht nur die Typen sondern sammelt auch Typinformationen, um mit ihnen sowohl die Symboltabelle als auch den Ableitungsbaum aus der syntaktischen Analyse durch Attribute zu erweitern. Erste Ergebnisse der semantischen Analyse sind also ein attributierter Ableitungsbaum sowie eine erweiterte Symboltabelle. Im attributierten Ableitungsbaum werden die syntaktischen Komponenten von der Wurzel bis zu den Blättern, die die grammatikalischen Grundkomponenten enthalten, immer weiter verfeinert. Die dann folgenden Eindeutigkeits- und Gültigkeitsprüfungen dienen schließlich zur Vorbereitung auf die Codeerzeugung, indem beim Durchlaufen des Ableitungsbaumes den Variablen und Konstanten bereits relative Adressen zugewiesen werden und des weiteren die eigentliche semantische Richtigkeit überprüft wird. Darunter fällt zum Beispiel die Überprüfung von Indexgrößen, von Argumentenanzahl und -typ bei Funktionsaufrufen sowie von Typkonformität beiderseits einer Anweisung. Auch hier wird, wie bei den vorigen Phasen, im Fehlerfall die Analyse nicht abgebrochen, damit die Fehlerausgabe am Ende des Compiliervorgangs möglichst vollständig ist. Attributierte Grammatiken A = (G, V, F ) sind durch eine kontextfreie Grammatik G, Attribute V und Attributzuweisungen F bestimmt. So kann z.B. für die kontextfreie Grammatik mit den Regeln N → S 00 .00 S S → SB S → B B → 00 000 B → 00 100 eine Ergänzung um den Scale-Faktor f , den Wert v und die Länge l vorgenommen werden, so daß dann für eine Werteweitergabe nach unten ↓ bzw. nach oben ↑ im Baum die folgende attributierte Grammatik entsteht: [v = v1 + v2 ; f1 = 1; f2 = 2−l2 ] N ↑ v → S ↓ f1 ↑ v1 ↑ l1 00 .00 S ↓ f2 ↑ v2 ↑ l2 S ↓ f ↑ v ↑ l → S ↓ f1 ↑ v1 ↑ l1 B ↓ f2 ↑ v2 [v = f1 · v1 + f2 · v2 ; f1 = 2f ; f2 = f ; l = l1 + 1] S ↓f ↑v↑l → B ↓f ↑v [l = 1] B ↓ f ↑ v → 00 000 [v = 1] B ↓ f ↑ v → 00 100 [v = 1] Wir erhalten damit für die Ableitung von 11.01 = 3 14 den folgenden Ableitungsbaum: N S; l=2 S; l=2 S; l=1 B S; l=1 B; l=1 1 B 1 N; v = 3 14 N 0 B 1 S; f = 1 S; f = S; f=2 B; f=1 S; f = B; f=2 1 1 B; f = 0 IS ADD 1 2 1 2 S; v=3 1 4 B; f = 1 1 4 S; v = S; v=2 B; v=1 S; v=0 B; v=1 1 1 B; v=0 0 1 4 B; v=1 1 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 270 • Synthesephase • Zwischencodeerzeugung Nach der Analyse und somit als Ende des Front-Ends wird eine maschineneunabhängige Form des Quellprogramms aus den Zwischendarstellungen der vorherigen Phasen erzeugt. Dies ist vorteilhaft, falls das Programm auf eine andere Maschine portiert wird, denn dann muss ausgehend vom Zwischencode lediglich die Codeerzeugungsphase erneut ausgeführt werden. Ein Zwischencode erleichtert also die Weiternutzung für ähnliche Zielsprachen. Voraussetzung ist allerdings, dass die Zwischensprache leicht erzeugt werden kann und ebenso leicht in die eigentliche Zielsprache übersetzbar ist. Häufig bietet sich dazu der sogenannte Drei-Adress-Code an. Nach einer eventuell notwendigen Aufteilung in Teilanweisungen wird das gesamte Programm in diesem Code in Instruktionen implementiert, die jeweils eine Zuweisung sind, außer dem Zuweisungsoperator höchstens einen weiteren Operator enthalten dürfen und insgesamt aus maximal 3 Operanden bestehen. Gegebenfalls werden dazu zusätzliche, temporäre Variablen erzeugt. • Codeoptimierung Die Codeoptimierung bildet nicht immer eine eigene Phase, da sie meistens in die letzte Phase, die Codegenerierung, integriert ist. Es können jedoch immer zwei Arten der Codeoptimierung unterschieden werden, nämlich zum Einen die maschinenabhängige und zum Anderen die maschinenunabhängige. Die maschinenabhängige Codeoptimierung konzentriert sich, wie schon der Name sagt, auf eine Verbesserung des Zielcodes hinsichtlich der Zielmaschine. Es wird versucht, Eigenschaften der Zielmaschine auszunutzen, so dass zum Beispiel eine ganzzahlige Multiplikation mit 2 durch Shift-Operationen realisiert, bestimmte Befehle der Zielmaschine genutzt oder auch die Nutzung von Registern hinsichtlich weniger Rechenzeit verbessert werden. Die maschinenunabhängige Codeoptimierung hingegen lässt die Eigenschaften der Zielmaschine außen vor und ist dafür zuständig, die Qualität des Zwischencodes zu verbessern, dabei aber die Funktionalität zu erhalten. In diesem Zusammenhang kann wieder eine Unterscheidung statt finden und zwar die der Übersetzungs- und der Codeoptimierung an sich. Erstere bemüht sich die Übersetzungszeit möglichst gering zu halten, dabei aber trotzdem eine umfangreiche Fehlerprüfung durchzuführen. Die Codeoptimierung erstellt derweil ein Zielprogramm, das wenig Rechenzeit sowie wenig Speicherplatz in Anspruch nimmt. Dazu wird zum Beispiel “passiver” oder ”nicht erreichbarer” Code entfernt , Operationskosten eingespart, indem “teure” Operatoren durch “günstige” ersetzt werden, oder konstanter Code aus Schleifen herausgezogen. Typische Schritte bei der Codeoptimierung sind: • einfache Optimierung z.B. algebraische Vereinfachungen, Konstantenfaltung, Unterdrücken von Laufzeitprüfungen • Entfernen gemeinsamer Teilausdrücke • Fortpflanzung von Zuweisungen • Schleifeninvarianter Code • Befehlsanordnung • Registerzuordnung • Codegenerierung Im letzten Schritt wird aus dem vorher optimierten Zwischencode der entgültige Zielcode erzeugt, der meistens aus verschiebbarem Maschinen- oder seltener aus Assemblercode besteht. Es werden nun also ëchte”Befehle erzeugt, was bedeutet, dass jede Zwischencodeanweisung in eine gleichwertige Folge von Maschinenbefehlen übersetzt wird und den Programmvariablen verschiebbarer Speicherplatz zugeordnet wird. Typische Schritte bei der Codegenerierung sind: • Erhebung der Eigenschaften der Zielmascheine • Coderzeugung für Ausdrücke IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 271 • Coderzeugung für Anweisungen • Coderzeugung für Prozeduren • Objektdatei, die durch den Binder später zusammengeführt werden kann Verfahren der Compilerentwicklung (Wie baut man einen Compiler?) . Das Bootstrapping-Verfahren Ein Compiler ist nicht nur durch Quell- und Zielsprache gekennzeichnet, sondern auch noch durch die Implementierungssprache des Compilers, das ist die Programmiersprache, in der der Compiler geschrieben wurde und wird deshalb auch Basissprache des Compilers genannt. Diese drei Sprachen werden in einem sogenannten T-Diagramm dargestellt. Abbildung 64: Bootstrapping Verfahren eines Mehrpaßcompilers Compiler haben zwei für den Compilerbau wichtige Eigenschaften: 1. Wie viel Speicherplatz braucht der Compiler und wie schnell ist er? 2. Wie schnell sind die durch den Compiler erzeugten Programme und wie viel Speicherplatz brauchen sie? In einem T-Diagramm wird dann an der entsprechenden Stelle je nach Eigenschaft ein Plus- oder ein MinusZeichen notiert. Abbildung 65: T-Diagramm des Bootstrapping-Verfahren Compilerbau-Werkzeuge: Für eine Programmiersprache kann es verschiedene Compiler geben, wie für C zum Beispiel den Borland Compiler, den gcc usw. Für ein und dieselbe Programmiersprache müssen alle Scanner und Parser der Compiler immer nach den gleichen Regeln arbeiten. Deshalb ist es nützlich Scanner und Parser beim Compilerbau nicht immer neu generieren zu müssen, sondern Funktionen zur Verfügung zu haben, die die Implementierung dieser Routineaufgaben erleichtern. In diesem Zusammenhang sind besonders die kostenlosen Tools Lex als ein Scanner-Generator und Yacc als ein Parser-Generator zu nennen. Sie finden sowohl unter UNIX/Linux als auch unter Windows Verwendung und können Scanner und Parser für C/C++, Java, Pascal usw. generieren. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 272 Fehlerbehandlung. Lexikalische Fehler werden durch Verletzungen der Syntax hervorgerufen. Die Fehlerart wird zusammen mit der Position des fehlerhaften Symbols gemeldet. Die fehlerhaften Symbole werden trotzdem an den Syntaxanlysator weitergegeben. Fehlerbehandlung in der Syntaxanalyse analog zum recovery realisierbar Verfahren Panikmodus für rekursiven Abstieg: Die Syntaxanalyse wird abgebrochen. Wiederaufsatz mit allgemeinen Fangsymbolen für rekrsiven Abstieg: Tritt ein Syntaxfehler auf, wird der Symbolstrom solange überlesen, bis ein Symbol auftritt, das an der Fehlerstelle erwartet wurde oder das Nachfolger eines in Arbeit befindlichen Nichtterminalsymboles ist. Mit diesem Symbol wird die Analyse fortgesetzt. Wiederaufsatz mit speziellen Fangsymbolen für rekrsiven Abstieg: Es werden spezielle Symbole ausgezeichnet, mit denen ein Wiederanfahren oder eine Fortsetzung einfach möglich ist. Fehlerbehandlung bei tabellengesteuerter Top-Down-Analyse: meist durch allgemeine Fangsymbole Fehlerbehandlung bei tabellengesteuerter Bottom-Up-Analyse: meist durch allgemeine Fangsymbole Fehlerbehandlung in der Semantikverarbeitung: Fehlerbehandlung während der Optimierung: Fehlerbehandlung während der Codeerzeugung: Qualitätskriterien. Sowohl für die Transformation als auch die Compilierung wird strukturelle, semantische und funktionelle Korrektheit gefordert. Die Korrektheit muß auch beweisbar sein. Dies ist jedoch selbst für einfache Klassen von Integritätsbedingungen wie die Menge der Kardinalitätsbedingungen {(0, 1), (1, 1), (1, n), (0, n)} bereits nicht mehr gegeben, da damit auch Inklusions- und funktionale Abhängigkeiten ausgedrückt werden können. Diese Menge ist jedoch nicht axiomatisierbar. Damit kann auch die semantische Korrektheit von Transformationen nicht bewiesen werden. Deshalb ist eine Compilierung für Datenbankschema nur in Teilfällen möglich. Damit ist unser Ziel eine Transformationstechnik, die sowohl den Korrektheitsforderungen genügt als auch Optimierungstechniken einschließt (Optimierender Transformer). Einen Teilschritt haben wir bereits mit der Normalisierung von Schemata in HERM-Normalform vorgenommen. Die hier vorgestellten Transformationstechniken sollten Qualitätkriterien genügen: • Der Transformationsprozeß sollte einfach sein. • Der Transformationsprozeß sollte die Strukturen im wesentlichen erhalten. • Der Transformationsprozeß sollte die Eigenschaften der unterlegten Implementationstechnologie unterstützen. Insbesondere im Falle des relationalen Modelles als logisches Modell sollte durch die Transformation die Einfachheit, Pruduktivität und Flexibilität erhalten bleiben. • Der Transformationsprozeß sollte weitestgehend unabhängig vom gewählten Datenbank-Management-System sein. Das bedeutet nicht, daß die gewählte Plattform eine Berücksichtigung finden sollte. Da mit einer Änderung von Versionen stets zu rechnen ist, sollte man die Transformation und damit auch das physische Schema nicht zu stark an die Version koppeln. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 273 • Der Transformation sollte daten-orientiert und weniger prozeß-orientiert angelegt sein. Eine Reihe von Tuningtechniken lassen sich konzeptionalisieren wie im folgenden gezeigt wird. Darauf aufbauend können die Performanzprobleme direkt in den Entwurf einbezogen werden. 2.10.5 Compilation von HERM-Schemata Vorsicht: Vorgriff auf Funktionalität aufgrund der notwendigen Optimierung Schwierigkeiten und Fallen: 1. Man muß den Unterschied zwischen Primärschlüssel, Primärindex und primärer Zugriffsmechanismus klar herausstellen. Der Primärschlüssel ist ein Instrument zur Pflege der Integrität von Daten. Es werden die beiden anderen Begriffe nicht impliziert. Der Primärindex kann verschiedenste Verwirklichungen haben. Noch unterschiedlicher ist der Zugriffsmechanismus. Er ist der meist aus Performanzgründen favorisierte Zugriffsmechanismus. Er kann auf dem Primärschlüssel beruhen, kann aber auch auf einen anderen Schlüssel oder sogar auf einen künstlichen Schlüssel wie dem Tupelidentifikator beruhen. 2. Mit nullwertigen Attributtypen sind nicht alle Auswertungsoperationen mit der gleichen Semantik versehen. Da der Vergleich von Daten in diesem Fall zum Wert wahr, falsch oder unbekannt führen kann, sind für Nullwerte zusätzlich die Auswertungsoperationen (z.B. Operationen der relationalen Algebra oder Aggregationsoperationen) zu betrachten. Hinzu kommt, daß verschiedene Plattformen mit Nullwerten auf unterschiedliche Art und Weise umgehen. Eine zusätzliche Programmierung von weiteren Operatoren kann nur eine teilweise Lösung bieten. Begründung der Notwendigkeit. • Verlust des Zusammenhanges zum konzeptuellen Schema nach Transformation im klassischen Zugang, insbesondere nach Denormalisierung • zu uniforme Übersetzung, jeder Typ muß eigentlich mit seiner Option laufen, dies ist aber zu schrecklich zum Spezifizieren, erfordert dann Handarbeit • Trigger-Generierung geht meist schief, muß dann per Hand nachgearbeitet werden; wer beherrscht diese Aufgabe? • ohne Berücksichtigung der Funktionen Wissenschaftlicher Hintergrund: Der ETL-Prozeß. ETL: Extract-Transform-Load • anstatt des klaasischen Interpreter-Zuganges • mit Integration des Profiles und des Portfolio • sowie ERzwingungsprofil für Integritätsbedigungen einschließlich der berücksichtigung des diamond problems IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 274 Abbildung 66: The Kiel approach to performance forecasting: Parameter zur Erhebung der DBMS-Performanz c1 c2 {Si (c̄, p̄)|1 ≤ i ≤ m} ... cn 6 p1 6 p2 ... o1 o2 ... om - 6 pl Abbildung 67: The general model for performance forecasting Abbildung 68: The Kiel approach to performance forecasting: Der Synergetik-Zugang IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 275 Abbildung 69: The Kiel approach to performance forecasting: Auswahloberfläche des Prototyps Abbildung 70: The Kiel approach to performance forecasting: Auswahl der CPU-Analyse Abbildung 71: Comparing the prediction with the real behaviour IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 276 Erfahrungs: Explizite Berücksichtigung des Performanz-Profiles und -Portfolio. Beispiel von ETL: Beyond SQL Querying (Not trapped into the SQL trap). - ?? user in thehelp !! help !! DBMS trap Tina Musterfrau, casual user 6 6 ? Search request topic : welt concepts ? search concept ? result concept parametric HERM expressions ? relational database schema ? ? - query - SQL ¾ -answer SQL query ¾ set form form ? ? ) answer for search query interface query data base q DBS DBMS query representation Abbildung 72: Concept-Based Query Processing Instead Of Direct SQL Querying Three-Step Approach to SQL Query Generation The Cottbus Intelligent NL Request Transformer IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 277 Generation of SQL query candidates based on full information Ontology / WordNet / thesaurus Relational database content NL utterance Database schema in extended ER model z ? z ? 9 z ? Proper name candidates Enriched syntax tree Translation style used for compilation of relational schemata from HERM schemata Priority-ordered paths in the extended ER schema z 9 priority-ordered set of SQL query candidates Abbildung 73: Three-step Approach to SQL Query Generation Query Liquefaction W ORD N ET O NTO LOGY R RADD DB Design Tool Syntactical Analysis ? µ NL query ¾ Syntax tree ? 6 DB Schema Manager R * Intelligent Path Extractor ? (e)ER Schema Paths in ER Schema ? ER2R Translation Style Relational Query Melting-Pot - - Paths and SQL queries - 6 I DBMain DB Design Tool Web Input ? DB Thesaurus Manager ? ISL ¾ Web Presenter ... Database Database ¾ - Managem. ¾ System DB2Web System ¾ - Abbildung 74: The Cottbus Intelligent NL Request Transformer IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS Abbildung 75: ab SS 2012 Das Vorlesungsplanungsbeispiel zur Illustration IS ADD 278 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Which lectures are given by Vierhaus and Thalheim? IS ADD 279 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 280 The Trick Behind the Curtain: Media Types for Specification of Content • Raw media types = (cont(M ), sup(M ), view(M ), op(M )) content type cont(M ), set of supertypes sup(M ), view(M ) = Q (Sinp , Soutp ) generic functions op(M ) for changing the database • Attached operations: (signature, selection type, body) selection type - supertype of cont(M ) e.g. generalization/specialization, reordering, browsing, linking, surveying, searching, join • Media type: raw media type + unit extension + order extension + cohesion/adhesion + hierarchical versions • Usage modeling: usage dimensions, scales, user profiles, user kind • Container = (cont(C), layout(C), kind(C)) for shipping and representation IS ADD HERM view CAU zu Kiel, IfI, ISE, β HERM-Compiler 0. 2. Strukturierung von IS ab SS 2012 281 Konfiguration des HERM-Übersetzers. Kanonische Spezifikation von Typen T relationaler Typ R attr(R) keySyst(R) .... ... • “abgebogene” Constraints comp(T) .... HERM-Typ keySyst(T) ... integr(T) ΣT ... Listen-Typ XML multilist(L) .... ΣR ... keySyst(L) ... integr(T) ΣL ... • ΣL als refStructure mit expliziter variabler Listensemantik innere • hier auch expliziter Stil eg., “Russian doll” oder auch “Venetian blind” oder auch “Salami slice” • domain constraints • constrained references DBMS-Profil z.B. 80er Jahre • atomare Attribute • primary key - entity integrity rule / assumption • rudimentäre domain constraints • domain-key-NF als die präferierte NF wobei auch viele Einschränkungen hinzukommen z.B. INT4 als Typ • Index-Strukturen oder auch DBMS der 90er • domains als UDT’s • automatische ID als TID oder auch XML oder semistructured DBMS • rationale Bäume mit expliziter Führung der Referenzen • semantically meaningful units # overlay structure with units Architektur des Systemes mit einigen expliziten Annahmen z.B. • Integritätspflege über Schnittstellen z.T. • nur über stored procedures werden interfaces gefildet • ... Unterstützung der Integritätspflege Typensystem ist • mengenbasiert • multimengenbasiert • listenbasiert IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 282 Complex attributes mit Default-Einstellung • Flattening z.B. zum String-Datentyp • Wurzel-Attribute • Separates Schema • Listen-Type Hierarchies entweder mit dem event-separation oder dem union oder der Universal-Relationen-Annahme Null value support je anch DBMS Strong or weak semantics Weak support as the normal case Cluster mit/ohne Harmonisierung der Identifikation oder verallgemeinerter, angereicherter Integrität [Wan98] Treatment of cardinality constraints Inherent constraints Controlled redundancy Naming conventions Abbreviation rules z.B. bei Erzeugung von .-Notationen Portfolio-Aufnahme der Anwendung. (DB − Schema, F unctionality, Support − Schema) mit Functionality umfaßt auch: access portfolio und modification portfolio modelliert am einfachsten als Überlagerungsschema schema × f unction → P(schema) y.B. auch S × Q → query − subschema mit DBschema × q → (DB − sub − schema, result − schema) oder auch DBschema ∪ views × q → (DB − sub − schema, result − schema) wobei auch Anfrageformen und Antwortformen verwendet werden können Abgeleitete Übersetzungsoptionen. analog zu den compiler directives (C, C++) 1. Hierarchien-Behandlung 2. kontrolleirte Redundanz 3. NULL support 4. Constraint enforcement insbesondere für • ID und Integration • cardinality constraints • inherent constraints IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 siehe auch das vorgestellte enforcement profile and portfolio nach den Jaakkola-Thalheim-Rahmenwerk 5. naming conventions 6. !!! Schattentypen 7. Mengen oder Pointer- oder hybride Semantik 8. explizite abgeleitete Attribute mit refresh-Funktion (Trigger, stored procedures, ...) 9. Separation der Integritätspflege interface-basiert TA-basiert maintenance-based 10. orthogonale Schemata separat oder eingefaltet (z.B. Währung, Adresse mit PLZ,...) 11. Referenztypus: schlüsselbasiert oder reference based 12. identifier based treatment Resultierendes Preprocessing. 1. Trennung von Defintions- und Nutzungsbaum optional normalisiertes HERM-Schema mit IC-Anreicherung Trick: Attribut-Graph-Schema 2. Pivoting von Nutzungstypen siehe Vorlesungsbeispiel: inserted by ist separierbar 3. Reduktion ableitbarer Typen 4. explizite Injektion von impliziten ER-IC uses constraints (based-on types) 5. Bereitstellung von Hilfskonstrukten Transformationsobligationen Typus ... ... HERM-Compiler 1. Obligation ... Lexikalische Analyse. Resultat: Syntaxbaum und aufgelöste Token als Beispiel: β-Schema nach Embley-Beispiel im Handbook, Kapitel 5, Bild 5.2. ggf. auch mit bereits erfaßten interface-gepflegten IC Aufteilung in Sinneinheiten 1. Ableitung eines kanonischen HERM-Schemas Definitionstypen unabhängig in der Existenz, hin zu Kern-Entity-Typen ER-Schema mit expliziten Existenzabhängigkeiten 2. FD-Umgebung eines Typen auch unter Einbeziehung der Subtypen i.a. nur erste Stufe erfoderlich EnvF1 D = {T1 (...), .Tp (.....)} IS ADD 283 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 284 3. Aufbau eiens Token-Waldes Entfernung der Redundanz unter den Zeichen Entfernung von Pragmas (processing directives) HERM-Compiler 2. Syntaktische Analyse. Resultat: erweiterter Syntaxbaum, Baum der Integritätsbedingung ggf. auch mit bereits erfaßten interface-gepflegten IC Zusammenfassung zu Einheiten (Abletungsmechanismen dazu, auch unter Berücksichtigung der hierarchischen Struktur) d.h. von T comp(T) keySyst(T) integr(T) ΣT mit Env(T) = ∅ .... ... ... zu T ∪ env(T) comp(T) ∪ foeignKeys(T) keySyst(T) integr(T) ΣT ∪ foreignKeyConstraints(T) .... ... ... beachte auch mit Erzwingungsform damit 1. Env(T)-Ermittlung 2. Auflösung der Compiler-Directives • Hierarchien-Behandlung (union, root entity type, new attribute for each specilisation, cluster) • redundancy • NULL support • enforcement style • naming and binding • shadow, set semantics, derived notions • orthogonale Schemata, reference type, ID HERM-Compiler 3. Semantische Analyse. Resultat: Schema korrekt, Schema erfüllbar Ermittlung und Überprüfung der semantischen Eigenschaften Verbesserung der Schemata Typensystem für Dom(S) ggf. mit Überprüfungsmechanismen und Ableitung Optionen für Optimierer Steeg-Beispiel Ableitung einer attributierten Grammatik eiinschließlich azyklischer Attributierung 1. Ableitung der IC 2. Control of IC 3. Coherence of IC, e.g., diamond property IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 HERM-Compiler 4. Zwischencodeerzeugung. 285 Resultat: Schema in der Zielsprache als logisches Schema anhand von HERM Regeln 1. Auflösung der komplexen Attribut-Typen (Menge, Liste, Multimenge, Tupel, ...) zu (STRING, RECORD, separates Schema, Kodierung, Einmbettung in anderes Attribut) 2. mit expliziter Umgebungsintegration von T comp(T) keySyst(T) integr(T) ΣT env(T) .... ... ... ... zu T comp(T) ∪ primKey(T) keySyst(T) integr(T) ΣT ∪ foreignKeys(T) .... ... ... Damit dann direkte Zwischencodeerzeugung 1. Ableitung von Hilfsstrukturen Indizes, views, Schlüssel, ID-Types 2. Preschema einschließlich der Mengengerüste, nullable attributes, default values 3. view derivation 4. index derivation 5. precedural components, trigger, stored procedures Girokontokarte ¾ (1,1) nutzt L - berechtigt ^ Girokonto ¾ (1,1) ? besitzt R - Kunde Abbildung 76: Ein einfache Bankanwendung mit alternativer relationaler Wiederspiegelung des Clustertypen wird durch die explizite Einführung der Art der Girokontenkarte anstatt einer Einführung eines weiteren Relationentyps, mit dem die Kundenkarte des Berechtigten von der Kundenkarte des Inhabers unterschieden wird (Vorteil: damit sind Kontobewegungen mit der Karte direkt der Karte zugeordnet) Kunde KundenNr Konto KontoNr KundenNr IS ADD CAU zu Kiel, IfI, ISE, β Berechtigter 2. Strukturierung von IS KundenNr ab SS 2012 KontoNr 286 Kundenkarte KartenNr KontoNr Art Berechtigter[KundenNr] ⊆ Kunde[KundenNr] Berechtigter[KontoNr,KundenNr] || Konto[KontoNr,KundenNr] σArt=“direkt00 (Kundenkarte[KontoNr,KundenNr]) ⊆ Konto[KontoNr,KundenNr] σArt=“berechtigt00 (Kundenkarte[KontoNr,KundenNr]) ⊆ Berechtigter[KontoNr,KundenNr] Durch ein derartiges Herangehen kann dann auch aufNormalform-Garantien (siehe Embley spüter, translate & normalise (im compiler) versus normalise & translate (im Preprocessor)) orientiert werden. HERM-Compiler 5. Vorbereitung zur Schema-Optimierung. Ziel: Vermeidung überflüssiger oder schelchter Berechnungen Ersetzung von Berechnungen durch billigere Anpassung an die Hardware und Architektur 1. post normalisation 2. view optimisation index optimisation 3. materialisation options 4. process separation into database phases initialisation phase production phase archive phase ... 5. query etc. hints Vorbereitung auf Performanzbetrachtungen 1. Kernentitytypen Kernentitytypen stellen unabhängig voneinander existierende Klassen von Objekten dar. Ausgehend von Kernentitytypen werden Spezialisierungs- und Generalisierungshierarchien dargestellt. Damit wird festgelegt, welcher der Transformationszugänge (event-separation, event-nonseparation, union, weak-universal-relation) für Hierarchien benutzt werden. Die Reihenfolge der Attributtypen kann aus Performanzgründen verändert werden. Häufig benutzte bzw. Typen mit Wertebereichen fester Länge sollten zuerst entworfen werden. Die Reihefolge hängt von der beabsichtigten Plattform ab, deren Eigenschaften nun zu integrieren sind. Attributtypen Pragmatik: Die Zuordnung der Transformationszugänge kann durch eine Betrachtung der Inklusionsabhängigkeiten vereinfacht werden. Liegen echte Inklusionsabhängigkeiten vor und keine ‘Geschwister’typen, dann liegt eine Spezialiserungshierarchie für diesen Kerntypen vor. Im Beispiel können wir die Typen Lehrstuhlinhaber, Dekan, Person und Angestellter betrachten. Es gilt keine Exklusionsbeziehung der ersten beiden Typen, aber eine Exklusionsabhängigkeit dieser beiden Typen zum letzten Typen. Somit sind entweder die Typen Lehrstuhlinhaber, Dekan einem gemeinsamen Supertypen zugeordnet, der mit dem Typen Angestellter einen Kerntypen bildet, oder der Typ Person ist ein Kerntyp. Analog sind zusätzliche Attribute ein Hinweis auf eine Eigenständigkeit der Teiltypen. Hierarchien können kompakter gestaltet werden, sobald entsprechende Komplexitätsbeschränkungen comp(R, R0 ) = IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 287 (1, 1) gelten. In diesem Fall ist zu prüfen, ob eine Eigenständigkeit beibehalten werden muß aufgrund der Anwendung. Da in der Modellierung aus bestimmten Gründen Entitytypen auseinander gehalten wurden, bleibt auch bei einer automatischen Übersetzung diese Differenzierung erhalten. Sollte davon abgegangen werden für das physische oder logische Schema, dann liegt ein Modellierungsfehler auf der HERM-Ebene vor. Für die spätere Übersetzung verwenden wir den Typennamen, die Typenbeschreibung, den Entwerfernamen, Synonymbeziehungen, die Quelle (falls Daten durch Algorithmen generiert werden), die Häufigkeiten und andere quantitative Charakteristika. Daneben können die Behandlung von Backup und Wiedergewinnung, Reorganisationsparameter, Monitoringanforderungen, Sicherheitsbeschränkungen, Eliminationsbedingungen und andere Parameter der Umgebung und der Plattform von Bedeutung sein. Ist dies noch nicht erfaßt oder kann nicht aus den bereits entworfenen Informationen erschlossen werden, dann sind diese Informationen für die entsprechenden Typen zu erfassen. Da Plattformen meist beliebige Reihenfolgen von Attributen nicht unterstützen, ist die Reihenfolge explizit festzulegen. Speicherblöcke, Fragmentierungszugänge können eine andere Reihenfolge implizieren. 2. Anpassung an die Plattform Wir unterscheiden relationale, hierarchische und Netzwerkplattformen. Weiterhin können Plattformen nach ihrer Hardware (PC, Workstation, Mainframe) und der Architektur (Client/Server etc.) unterschieden werden. Eine Transformation legt auch die Speicherzuordnung (Primärspeicher, Sekundärspecher, freier Speicher) für Klassen fest. Durch die Kardinalität der Entitytypen wird diese Zuordnung mit bestimmt. Sie ist damit an die Eigenschaften der Plattform gebunden, die nun explizit zu berücksichtigen ist. Ein Zugriff im Sekundärspeicher ist meist weniger effizient. Deshalb sollte ausreichend Primärspeicher vorgesehen werden können. Ansonsten ist eine horizontale Dekomposition vorzusehen. Die Affinität von verschiedenen Entitytypen bedingt oft auch einen gemeinsamen Zugriff bzw. eine gemeinsame Modifikation. Sieht eine Plattform nur relativ kleine Teile einer Datenbank zur gemeinsamen Abspeicherung vor, dann ist durch die Affinität bereits eine Abspeicherungsstrategie determiniert. Für solche Plattformen ist die Affinität mit zu modellieren. Analog ist der parallele Zugriff verschiedener Benutzergruppen zu behandeln. In diesem Fall ist das gemeinsame Benutzen von Daten mit darzustellen. Pragmatik: Meist sind die Regeln für eine Plattform nur sehr schwer aus den Begleitdokumentationen abzuleiten. Eine Abhilfe kann dann eine Benutzung von entsprechenden Entwurfshinweisen für die gewählte Plattform sein. Es werden die Entwurfshinweise mit unserem liberaleren Zugang verglichen und die Unterschiede auf Implementationsbeschhränkungen untersucht. 3. Erzwingungsregeln für Entitytypen Einige Plattformen erlauben nur eine Erzwingung über Primärschlüsseln. In diesem Fall sind die Schlüssel, die vererbt werden, an die Erzwingungsregeln anzupassen. Weiterhin erlauben einige Plattformen für Primärschlüssel keine Nullwerte. Dann sind auch Nullwerte auszuschließen oder entsprechende Identifikatoren einzuführen. Die Komplexität der Erzwingungsregeln kann für verschiedene Plattformen unterschiedlich sein. Deshalb ist diese Komplexität bei der Beurteilung der Erzwingungsregeln mit einzubeziehen. Pragmatik: Obwohl das Einschränken der Schlüssel auf Primärschlüssel unserer Entwurfsphilosophie widerspricht, erhöht dieses Einbeziehen die Transparenz der Übersetzung des Schemas für den Benutzer. Deshalb wurde in diesem Schritt diese Einschränkung mit eingeschlossen, sobald die Plattform nur diese Behandlung zuläßt. Zugleich wird aber diese Einschränkung auch zu einer relativ harten Einschränkung für die modellierten Schemata. Ein Mittelweg ist das explizite Darstellen der Implementationseinschränkungen für eine spätere Berücksichtigung während des Transformationsprozesses. Werden Wertebereiche für die Erzwingungsregeln benutzt, dann entsteht in vielen Fällen ein nur für diesen IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 288 Wertebereich zugeschnittener Code. Damit wird eine spätere Modifikation des Schemas nicht mehr unterstützt. Deshalb ist es besser nach einer optimalen Erzwingungsregel zu suchen. Wird durch eine Plattform diese Suche nicht unterstützt, dann kann auch die Plattform falsch gewählt sein. Eine Reihe von DBMS unterstützen nicht mehrere Schlüssel oder auch nicht komplexere Schlüssel. In diesem Fall sind die Erzwingungsmechanismen anzupassen. Das Schema bedarf keiner Änderung. 4. Regeln für Relationshiptypen Auf analoge Art werden Erzwingungsregeln für Relationshiptypen auf ihre Umsetzung und Umsetzbarkeit für die gewählte Plattform untersucht. Die bereits entworfenen Erzwingungsregeln sind für einen Benutzer transparent. Sie können direkt in den meisten DBMS umgesetzt werden. Ist dies nicht für die gewählte Plattform möglich, sind entsprechende Maßnahmen zu ergreifen. Pragmatik: Oft steht für Erzwingungsregeln nur die referentielle Integrität zur Verfügung Deshalb können solche Erzwingungsregeln entweder durch Zurückführung auf die Erzwingungsregeln oder durch entsprechende Anwendungsprogramme unterstützt werden. 5. Erzwingungsregeln für Attributtypen Es wird für die gewählte Plattform überprüft, inwieweit die entworfenen Datentypen, die Formate, die Wertebedingungen, die Eindeutigkeit, Nullwerte und Defaultwerte unterstützt werden können. Ist dies nicht der Fall, dann sind evt. Kompromisse ausreichend oder es sind entsprechende Veränderungen am Schema oder an der Plattform vorzunehmen. Nullwerte sollten anhand der Eigenschaften der Plattform nochmals auf Notwendigkeit untersucht werden. Man kann oft eher auf Defaultwerte ausweichen. In diesem Fall sind automatisch generierte Defaultwerte einsetzbar. Im Falle der Verletzung der Integritätsbedingungen können Standardfunktionen zur Mitteilung an den Benutzer oder den Datenbank-Administrator entwickelt werden. Pragmatik: Welche der Veränderungsoptionen genutzt wird im Falle eines Konfliktes zwischen Attributtyp und der Darstellbarkeit durch die Plattform, hängt von den Möglichkeiten der Plattform, den Kosten und Schwierigkeiten einer Integritätserzwingung und der Unterstützung durch Anwendungsprogramme ab. Eine Schlüsseleigenschaft kann meist entweder durch entsprechende Datenwörterbücher der Plattform oder durch eindeutige Indizes unterstützt werden. Die Eigenschaft, daß ein Schlüssel minimal ist (d.h. keine echte Teilmenge von diesem Schlüssel ist wiederum ein Schlüssel) wird sehr selten unterstützt. Ein Ausweg aus der Nichtdarstellbarkeit kann auch die Entwicklung einer Menge von Standardprozeduren für die Pflege der Semantik einer Datenbank sein. Damit werden jedoch die Implementationsmechanismen für den Benutzer evt. etwas schwieriger nachvollziehbar. Es wird eine zusätzliche Programmierung erforderlich. Dieser Zugang ist jedoch einfacher als die direkte Benutzergesteuerte Pflege. Werden Defaultwerte anstatt von Nullwerten eingesetzt, dann sind die Erzwingungsregeln zu überarbeiten. Insbesondere Aggregationsoperationen können zu inkorrekten Werten führen. Werden zusätzlich Standardfunktionen eingesetzt, dann sind die generischen Funktionen und die Retrievaloperationen zu kontrollieren und gegebenenfalls zu programmieren. Damit werden die Standardoperationen abhängig vom jeweiligen Typ. Da ein ständiges Berichten über Integritätsverletzungen nicht nur die Performanz verschlechtert, sondern auch dem Benutzer lästig werden kann, sind eher akkumulierende Funktionen sinnvoll, die zu einem festgelegten Zeitpunkt die Verletzung von Integritätsbedingungen anmelden. Damit wird jedoch auch das Verhalten von Transaktionen verändert, da diese erst mit dem Abarbeiten der Verletzungsliste zuende geführt werden können. 6. Regeln für die Funktionalität IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 289 Alle Anfragen sind auf ihre Unabhängigkeit von anderen Modifikationen zu überprüfen. Für Updateoperationen muß genügend freier Speicher zur Verfügung stehen. Damit ist nach einer umfangreichen Modifikationsoperation eine Neuorganisation des Speichers vorzusehen. Aus Sicherheitsgründen kann die Weitergabe von Klarnamen an Benutzer nicht erlaubt sein. In diesem Fall ist ein Standard für die Namenbehandlung über eine Synonymbeziehung für die ensprechenden Namen mitzuführen. Locking-Mechanismen werden benutzt, um eine konsistente Verwaltung konkurrierender Operationen verschiedener Benutzer zu ermöglichen. Diese Mechanismen sind durch die Größe der zu blockierenden Datenbankteile, durch den Lock-Modus und durch die Lock-Dauer zu unterstützen. Diese Spezifikation ist wiederum von der gewählten Plattform abhängig. Pragmatik: Vorbereitete Anfragen, die Attributnamen nicht näher eingrenzen, sollten möglichst nur in Ausnahmefällen verwendet werden. Sie sind für jeder Modifikation des Schemas wieder zuu überprüfen. Damit sind solche Anfragen kontextsensitiv. Für Lock-Mechanismen ist es sinnvoll, den allgemeinsten Mechanismus auszuwählen. Für die Auswahl der entsprechenden Lock-Mechanismen sind bei verschiedenen DBMS die Zuordnung der logischen Tabelle zur physischen Speicherstruktur, das physische Layout der Elemente von Klassen, die Bedeutung des Wortes ‘Datenbank’ im Rahmen der Plattform und die Herausschälung der Lock-Parameter, die vom Entwerfer wirklich beeinflußt werden können. HERM-Compiler 6. Schema-Tuning (Operationale Optimierung durch Tuningtechniken). Aufgabe: Tuning des Zugriffs und Spezifikation von Indizes Tuningtechniken und ihre konzeptionelle Wiederspiegelung Weder für das relationale, noch das hierarchische oder Netzwerkmodell gibt es inhärente Probleme, die zu einer schlechten Performanz, insbesondere beim Retrieval führen. Die Implementation dieser Konzepte führt erst zu den Performanzproblemen. Um das Tuning einer Anwendung zu ermöglichen können folgende Charakteristika betrachtet werden: 1. Es werden Eigenschaften des Anwendungsszenarios betrachtet: (a) Art der Berechnung i. erforderliche Operationen ii. Art der Selektionskriterien iii. Datenvolumen (Anzahl der durchmusterten Objekte und der berechneten Resultatsobjekte) (b) Sichtbarkeit i. Organisationsniveau der Benutzer ii. Häufigkeit der Operationen iii. Beziehung zum Geschäftsprozeß und seinen Implikationen (c) Berechnungsmodi i. ii. iii. iv. online (voraussichtlich) batch (voraussichtlich) interaktiv (ad hoc) Berechnung während oder außerhalb von Spitzenzeiten (d) Performanzerwartungen IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 290 i. Ausführungszeit (im online- oder batch-Betrieb, während interaktiver Anfragen bzw. die Zeit bis zur Auslieferung von batch-Jobs) ii. Durchlaßfähigkeit (Transaktions-/Anfrageraten, Modifikationsraten) iii. Priorität der Operationen 2. Es werden Benutzer, die kritische Anforderungen an die Performanz haben, analysiert. Damit können entsprechende Bewertungen (Priorität) für deren Operationen gefunden werden und in das Anwendungsszenario mit einfließen. 3. Kritische Transaktionen, Anfragen, batch-Prozesse, die eine Herausforderung für die Performanz darstellen, werden besonders angemerkt. 4. Kritische Prozesse werden mit ihrem Berechnungs- und Zugriffsmechanismus modelliert. Man kann z.B. spezifische Zugriffspattern für die Darstellung auf konzeptionellen Niveau nutzen ohne die genauen Zugriffsmechanismen oder Berechnungsalgorithmen zu kennen oder weiter vergröbernd nur die involvierten Typen als solche kennzeichnen. 5. Es werden verschiedene Entwurfsalternativen für kritische Teile von Schemata betrachtet. Im weiteren werden verschiedene Tuningmechanismen im Detail betrachtet. Die Reihenfolge ist dabei durch die Erhaltung der Schemaqualität (Korrektheit, Konsistenz, Stabilität, Natürlichkeit) determiniert. Tuningmechanismen, die sich nicht auf konzeptionellen Niveau widerspiegeln, werden im weiteren nur angezeigt, nicht aber ausführlich erörtert. Tuningtechniken für Zugriffsmechanismen Zugriffsmechanismen beeinflussen die Performanz in starkem Maße. Es gibt verschiedene Speicherungsmethoden und darauf aufbauend sehr verschiedene Zugriffsmethoden (Durchmustern, Gruppieren, Benutzung von HashFunktionen). Damit wird auch eine Speichermethode auszuwählen sein, die von der gewählten Plattform zu unterstützen ist. Darauf aufbauend können entsprechende Algorithmen für den Zugriff ausgewählt werden. Ein weiterer Schritt zur Steigerung der Effizienz ist die Einführung von Indizes. Zugriffspfade werden gewöhnlich durch den Optimierer generiert. Der Optimierer benutzt dazu als Eingabedaten Statistiken der Datenbankbenutzung (I/O-Raten, Speicherverbrauch, CPU-Zeit usw.). Es werden allerdings durch den Optimierer nur die endgültigen Zugriffspfade ausgewählt. Durch die Angabe von Zugriffspfaden kann jedoch ein Entwerfer den Zugriffsmechanismus determinieren. Damit ist eine Spezifikation zum einem abhängig von der gewählten Plattform und dem Stand der Technologie, zum anderen aber von der Anwendung, insbesondere den Prozessen und somit typische Zugriffsmuster. Voraussetzung zur Spezifikation der Zugriffspfade sind damit Zugriffsmechanismen, die durch die Plattform unterstützt werden können, Auswahlmechanismen, die die Plattform für die Auswahl einer spezifischen Zugriffsmethode benutzt und die kritischen Prozeßanforderungen der Anwendung. Man kann und soll sich nicht auf eine Auswahl genau einer Zugriffsmethode konzentrieren, sondern eher auf die Auswahl einer optimalen Menge von Zugriffsmechanismen. Damit sind die folgenden Problemstellungen von Interesse: · Welcher Zugriffsmechanismus kann am besten die verschiedenen Anforderungen der Anwendung befriedigen? · Welche Zugriffsmechanismen werden zusätzlich benötigt? Kann evt. die Einführung eines zusätzlichen Index Abhilfe schaffen? Kann eine Sortierung den Zugriff erleichern? · Welche Zugriffsmechanismen sind zu komplex? Kann z.B. eine Gruppierung den Zugriff erleichtern ohne daß durch das schlechtere Updateverhalten die Performanz sinkt? IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 291 Diese Fragestellungen sehen nur auf den ersten Blick sehr maschinennah aus. In Wirklichkeit kann aber gerade durch eine Strukturierung bereits ein besseres Verhalten erreicht werden. Damit werden aber zumindest das konzeptionelle Modell, mitunter sogar die eine oder andere Sicht einer Veränderung unterworfen. Im allgemeinen ist die Auswahl des besten Zugriffspfades ein trickreiches Verfahren. Dazu müssen auch nicht nur die Plattform oder das DBMS, sondern auch die Version und Konfiguration des Systemes berücksichtigt werden. Es gibt jedoch einige allgemeine Prinzipien, die direkt aus der Anwendung ableitbar sind, auch wenn durch eine relationale Transformation bereits aufgrund von Forderungen wie 1. Normalform vorhandenes Wissen nicht direkt dargestellt wird. In diesem Schritt wird eine interne Repräsentationsstruktur abgeleitet bzw. es werden Strukturen entsprechend dem Verhalten restrukturiert. Zuerst werden dabei Zugriffsmethoden betrachtet (Speicherorganisation, Indexiserungsmethoden). In nächsten Schritt werden wir die Forderung nach Redundanzarmut aufweichen entsprechend den Verhaltensanforderungen. Damit wird die Struktur in den Sichten und des konzeptionellen Schemas nochmals verändert. Oft unterstützen Werkzeuge das Abschätzen der Performanz einer Anwendung. Solche Werkzeuge verlangen jedoch ebenfalls eine Abschätzung der CPU-Zeit, der I/O-Zeit, der Durchmusterungszeit und -rate, sowie weitere Parameter. Es gibt bereits eine kommerzielle Animationswerkzeuge, mit deren Hilfe die Performanz durchgespielt werden kann. Hinzufügen von Indexierungsmechanismen Indizes können zu jeder Klasse hinzugefügt werden für jeden Identifikationsmechanismus. Da ein Index bei einer Modifikation gepflegt werden muß, wählt man nur einige Identifikationsmechanismen aus, für die ein Index angelegt und gepflegt wird. Wir unterscheiden Gruppierungsindizes, die das Durchmustern unterstützen und auf einer Gruppierung basieren, und geordnete Indizes, die auf einer Ordnung der Wertebereiche basieren. Außerdem werden Indizes zur Unterstützung der Operationen angelegt. Somit impliziert die entworfene Funktionalität auch das Anlegen entsprechender Indizes für die verschiedenen Typen. 1. Durchmusterungsprozesse Für welche Typen ist ein Durchmustern noch ausreichend effizient, für welche nicht? Damit kann für die letzteren Typen nach anderen Zugriffsmechanismen gesucht werden. Die Effizienz wird durch die Häufigkeit der Modifikationen, durch die Durchmusterungsrate für Anfragen entsprechend den Dialogobjekten, durch die Größe der Klassen und das Anwendungsszenario bestimmt. Durch Gruppierung, Projektion und Partitionierung kann Durchmustern noch effizienter werden. Deshalb ist für die interne Darstellung eine vertikale oder horizontale Dekomposition, eine Verfeinerung der Teiltypenhierarchie oder eine Gruppierung sinnvoll. Dabei sind jedoch alle Prozesse im Komplex zu betrachten. Diese interne Repräsentation kann den jeweiligen Typen zugeordnet werden. Die konzeptionelle Darstellung wird dadurch jedoch nicht verändert. Dagegen sollten Klassen mit gleicher Struktur nicht den gleichen Speicherraum zugeordnet werden, weil dadurch Durchmustern ineffizienter wird. Pragmatik: Sequentiell Durchmustern kann heute jedes System. Es ist z.B. bei relationalen Plattformen der Defaultsuchmechanismus. Damit muß nur verstanden werden, wann Durchmustern effizient und wann es ineffizient ist. Durchmustern ist für kleine Klassen, die nicht zu komplex strukturiert sind (z.B. nicht mehr als 6 physische Blöcke für die Daten ihrer Objekte benötigen), für Klassen, für die Anfragen oft einen größeren Teil (mindestens ein Fünftel, je nach Plattform) der gesamten Klasse liefern, und für Klassen, über denen nur Anfragen einer niedrigen Priorität berechnet werden, eine Alternative. Damit wird die Pflege eines Index nicht mehr notwendig. Klassen dieser Form mit häufigen Modifikationen sind deshalb noch effizienter. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 292 Viele Plattformen unterstützen eine Segmentierung. Damit kann eine horizontale Dekomposition, die mit der Struktur der Antworten auf Anfragen korrespondiert, Durchmustern zur effizienten Suchmethode werden lassen. Analog kann durch eine Führung von Tupelidentifikatoren und eine Partitionierung bzw. Projektion das Durchmustern effizienter werden. Klassen, deren Anfragen nicht zusammenhängen, die aber gleiche Speicherräume benutzen, lassen Durchmustern ineffizient werden. Der Verbund von Klassen kann jedoch durch Durchmustern unter gewissen Umständen auch effizient werden. Die Effizienz von Durchmustern hängt auch von der Plattform ab. Wird z.B. paralleles Durchmustern unterstützt, werden Hochgeschwindigkeitsmedien und Techniken wie das Puffern oder andere Ressourcen verwandt, dann ist Durchmustern effizient sogar für größere Klassen. 2. Möglichkeiten von Gruppierungen Typen, die häufig auf die gleiche Art durchmustert werden, deren Anfrageoperationen strukturiert (insbesondere durch analoge Selektionskriterien) sind und analoge Durchmusterungsreihenfolgen erfordern, können, insbesondere falls Modifikationen durch die generischen Operationen eine Gruppierung nicht verändern, entsprechend den Operationen gruppiert werden. Neben der Gruppierung kann auch eine Sortierung (Darstellung durch eine Liste) die Performanz steigern. Bei einer Gruppierung sind die Auswirkungen auf parallele Anfragen mit zu betrachten. Lock-Techniken können dadurch vereinfacht werden oder komplexer werden. Wird das Verhalten verschlechtert, dann ist eine Gruppierung nicht angebracht. Eine Gruppierung ist für Relationshiptypen oft eine geeignete Methode zur Vereinfachung der Operationen über solchen Typen. Eine Gruppierung der Komponententypen nach ihren auf den Relationshiptypen vererbten Identifikationsmechanismus ist dann sinnvoll, wenn keine verschiedenenartigen Identifikationsmechanismen für verschiedene Relationshiptypen erforderlich sind. Pragmatik: Eine allgemeine universelle Optimierungsmethode existiert nicht. Man muß deshalb Gruppierungen und Ordnungen gegen die Komplexitiät der Operationen abwägen. Wird eine Klasse häufig modifiziert und ist die Modifikation durch die Gruppierung oder die Sortierung so erschwert, daß sich das Gesamtverhalten verschlechtert, dann wird man von einer Veränderung Abstand nehmen. Weiterhin wird bei manchen Plattformen eine Modifikation auch das Verschieben ganzer Teilklassen oder eine Neusegmentierung erfordern. Solche Plattformen sollten nur mit einfachen Strukturen benutzt werden. Kleine Klassen erfordern keine Gruppierung. Für solche ist ein Durchmustern stets effizienter. In relationalen Systemen wird die Gruppierung durch O RDER B Y, G ROUP B Y, U NION , D ISTINCT, verschiedene Arten von Verbunden und Selektionen unterstützt. Damit kann eine entsprechende Repräsentationsstruktur angegeben werden. Die Gruppierung der Identifikationsmechanismen ist eine einfache und effiziente Methode, solange nicht zu viele verschiedene Identifikationsmechanismen für den gleichen Typ geführt werden müssen. Sind Modifikationen nicht so häufig, die Trefferquoten für Anfragen relativ niedrig, dann kann eine Indexierung günstiger sein. Gruppierungen können auch durch Werkzeuge einiger DBMS für den Optimierer generiert werden. Solche Werkzeuge können auch benutzt werden, um freien Speicherplatz für zukünftige Modifikationen zuzuweisen. Diese Vorgehensweise liegt jedoch außerhalb unseres Zuganges zur Modellierung von Datenbanken. Die Komplexität der Sortierung ist abhängig von der gewählten Plattform. In unserem Beispiel kann z.B. ein Reiseverlauf dargestellt werden durch einen Typ, der Abfahrtsort und -zeit, sowie Ankunftsort und -zeit darstellt. Eine alternative Form ist die Verwendung einer Liste mit Listenelementen, die den Ort und die Zeit darstellen. Mit der letzten Form werden Konsitenzüberprüfungen zum Reiseverlauf einfacher. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 293 3. Möglichkeiten von Hashmechanismen Da der Hashzugriff besonders schnell ist, sollte für Abfragen in großen Klassen, die einen Zugriff auf Objekte in zufälliger Ordnung benötigen und relativ wenig Modifikationen erfahren, ein Hash-‘Schlüssel’ benutzt werden können. Hashzugriffe können insbesondere für Komponenten vorgesehen werden, die vielen Anfragen gemeinsam sind. Kann eine Hashfunktion benutzt werden, dann ist die Verteilung der Daten zu spezifizieren, sowie eine Strategie für Konfliktfälle, in denen der Zugriff auf mehrere Objekte erfolgt, die dann weiterselektiert werden. Pragmatik: Mit einer Angabe der Verteilung der Daten der Objekte in einer Klasse kann meist auch eine Hash-Funktion automatisch generiert werden. Da Hash-Funktionen Objekte nicht eindeutig identifizieren müssen, ist vorzusorgen für diese Nichteindeutigkeit. Konflikte von Hashwerten, d.h. eine Hash-Funktion generiert gleiche Werte für verschiedene Objekte, sollten beschränkt bleiben. Hashing ist nicht anzustreben, wenn die Wertebereiche nicht ausreichend genau spezifiziert sind, wenn die Werte nicht gleichverteilt vorkommen, wenn die verwendeten Komponenten nicht einfach zu einem Schlüssel ergänzt werden können, wenn die Selektionskriterien von Anfragen den Hash-‘Schlüssel’ nicht enthalten oder der Zugriff selbst nicht zufällig erfolgen kann. HashTechniken sind als Ergänzung zu anderen Zugriffstechniken anzusehen. Hash-Techniken können in verteilten DBMS meist nur für einen Ort angewandt werden. Häufig benutzte Kombinationen von Komponenten in Selektionskriterien eignen sich besonders dann für Hashfunktionen, wenn diese Komponenten nicht zu häufig modifiziert werden. Werden jedoch Teilmengen von den Hashfunktionen zugrundegelegten Komponenten in Selektionskriterien benutzt, dann können diese Hashfunktionen nicht benutzt werden. Die Auswahl einer geeigneten Hashfunktionen ist keine Aufgabe des Entwurfes. Sie wird für einige DBMS durch Werkzeuge unterstützt, in einigen DBMS werdenn Hashfunktionen sogar automatisch generiert. 4. Auswahl von Schlüsseln Indizes werden für große Klassen angelegt, für die Anfragen eine relativ kleine Teilmenge auswählen und für die Anfragen über relativ wenige Komponenten reichen. Schlüssel bzw. Identifikationsmechanismen mit diesen Eigenschaften werden gekennzeichnet mit entsprechenden Indizes. Es ist bei der Auszeichnung eines Schlüssels für einen Index die Verschlechterung der Performanz möglich. Deshalb muß das Anlegen von Indizes abgewogen werden. Pragmatik: Beim Anlegen von Indizes können Gruppierungsindizes oder geordnete Indizes angelegt werden. Für die meisten Plattformen sind Gruppierungsindizierungsmechanismen vorhanden. Kann man eine Ordnung angeben, die mit der Ordnung einer Anwendung oder einer Reihe von Anfragen korrespondiert, dann ist ein geordneter Index mit der Angabe der Ordnung besser. Können verschiedene Klassen im gleichen Speicher abgelegt werden, dann können Indizes benutzt werden, um diese Klassen voneinander zu trennen. Damit kann ein Mehrklassendurchmustern vermieden werden. Das Anlegen und die Pflege von Indizes erfordern zusätzliche Funktionen. Deshalb ist eine Betrachtung der Performanz notwendig. Dazu werden Speicherplatzabschätzungen, der Einfluß der generischen Operationen insert, delete und update, die Folgen für das Laden der Datenbank, die Reorganisationserfordernisse, die Wiederanlaufs- bzw. Rücksetzungszeit und die Sicherungsmechanismen betrachtet. Indizes über kleinen Klassen bringen keine Verbesserung der Performanz. Indizes über häufig modifizierten Komponenten bringen eine Verschlechterung der Performanz. Diese sind nur in Ausnahmesitutationen (keine andere Möglichkeit) zu benutzen. Falls die Daten von zu indizierenden Komponenten nicht in regelmäßiger Form verteilt sind, dann ist entweder die Verteilung in die Definition mit einzubeziehen oder ein anderer Zugriffsmechanismus zu wählen. Die erste IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 294 Möglichkeit wird nur von wenigen DBMS unterstützt. Kürzeste Schlüssel, d.h. solche die sich unter der Menge der minimalen Schlüssel durch die kleinste Speicherdarstellung bzw. die die kleinste Anzahl von Attributen besitzen, sind oft effizienter als andere minimale Schlüssel. Das dynamische Verändern von Indizes kann vor Perioden von intensiven Modifikationen vermieden werden, indem der Index vorher entfernt wird und danach wieder neu aufgebaut wird. Indizes, die zur Integritätspflege erforderlich sind, können nicht entfernt werden. Die Namen der Typen und ihrer Indizes sollten aufeinander auf der Grundlage eines Namensstandards abgeglichen sein. 5. Unterstützung von Operationen Operationen, insbesondere Anfragen, die häufiger ausgeführt werden, können durch Indizes unterstützt werden. Selektionskriterien, Verbunde von Klassen, Ordnungen (G ROUP B Y, O RDER BY) und Mengenoperationen wie z.B. Vereinigungen (U NION , D ISTINCT) können durch Indizes unterstützt werden. Schlüssel oder Identifikationsmechanismen, die für Komponenten in Relationshiptypen verwendet werden, sollten durch Indizes unterstützt werden. Werden Indizes verwendet, dann kann eine Blockierung anderer Zugriffsmechanismen sinnvoll werden, sobald diese weniger effizient sind als die Indizierung. Pragmatik: Werden Indizes zur Unterstützung von Operationen angelegt, dann sollten diese effizienter sein als das Durchmustern. Deshalb sollte die Trefferquote niedrig sein. Built-in-Funktionen, inbesondere Aggregationsfunktionen, die häufig in Anfragen benutzt werden, sollten durch entsprechende Indizes gestützt werden. Kann ein geordneter Index mit mehreren Komponenten benutzt werden, dann ist die Reihenfolge der Komponenten so zu entwerfen, daß der Zugriff im Mittel schnell erfolgt. Mitunter ist es günstiger mehrere Indizes in parallel für jede einzelne Komponente zu benutzen und nicht einen Index, der alle Komponenten erfaßt. 6. Adaption an die Plattform In diesem Schritt können wir verschiedene Implementationsbeschränkungen in den Entwurf einbeziehen. Da sich diese nicht direkt auf den konzeptionellen Entwurf auswirken und nur für die Transformation notwendig sind, verwenden wir diese Beschränkungen hier nicht für die Entwicklung von Tuningmechanismen. Pragmatik: Plattformen unterstützen Operationen auf verschiedene Weise. Z.T. werden für bestimmte Operationen auch Indizes automatisch angelegt. Die Performanz hängt in diesem Fall auch von den Sortieralgorithmen ab. Eine Blockierung anderer Zugriffsmechanismen wird nicht von jeder Plattform unterstützt. Dazu muß auch der Optimierer des DBMS angepaßt sein. Eine Plattform kann die Verfügbarkeit von Indizes einschränken. Deshalb sollte in diesem Fall bereits eine Spezifikation auf Realisierbarkeit insbesondere für parallele Zugriffe geprüft werden. Erlaubt eine Plattform eine Verteilung von Klassen und Indizes auf verschiedene Speichermedien, dann sollte diese Verteilung aus Zugriffsgründen angestrebt werden. Eine Indexblockierung kann aufgrund der Klassengröße eintreten. Deshalb sind die maximalen Klassengrößen mit einzubeziehen. Werden durch die Plattform verschiedene Arten von Indizes (eindeutig, nicht-eindeutig; gruppiert, ungruppiert; partitioniert, unpartitioniert; verschiedene Speicherstrukturen (B-Bäume etc.)) unterstützt, dann ist eine feinere Unterscheidung auch für konzeptionelle Entwürfe sinnvoll. Da die meisten DBMS keine umfangreichen Möglichkeiten besitzen, verzichten wir hier auf eine Untersetzung. IS ADD CAU zu Kiel, IfI, ISE, β HERM-Compiler 7. 2. Strukturierung von IS ab SS 2012 295 Einführung gesteuerter Redundanz. Gesteuerte Redundanz Unser Ziel ist eine Verbesserung des Verhaltens. Dabei versuchen wir, die Sichten beizubehalten und höchstens das konzeptionelle Schema zu verändern. Durch Operationen kann jedoch auch eine Veränderung des konzeptionellen Schemas notwendig werden. Ein Performanzengpaß ist z.B. der Zugriff auf mehrere Klassen, die durch Dekomposition entstanden sind. Oft wird deshalb eine strenge Denormalisierung empfohlen. Besser ist eine gesteuerte Denormalisierung. Diese orientiert sich an den Prozeßanforderungen und den unterstützenden Algorithmen. Operationen des DBMS wie Verbund, Vereinigung und äußerer Verbund verursachen oft diese Ineffizienz. Eine andere Ursache sind Hierarchien, die eine gemeinsame Bearbeitung verschiedener Klassen erfordern. Redundante Abspeicherung sollte jedoch erst dann vorgesehen werden, wenn andere Tuningmechanismen nicht weiterführen. Eine redundante Datenbank erfordert zusätzliche Mechanismen zur Integritätspflege. Oft werden diese jedoch durch DBMS nicht mit angeboten. Vor einer Einführung von redundanten Strukturen sind deshalb · alternative Schemata zu untersuchen, inwieweit dadurch entstehende Probleme besser bewältigt werden können, · alternative Programmiermethoden oder Algorithmen Probleme besser lösen oder · eine Revision des Schemas weiterhilft. 1. Einführung von Komponentenkopien Werden durch Operationen verschiedene durch Normalisierung entstandene Typen wieder verbunden, dann kann durch eine Kopie der Komponenten bereits ein Verbesserung der Performanz erreicht werden. Insbesondere kann auch eine Kopie von Nichtschlüsselattributen für einen Teiltyp einen Verbund von Supertyp und Teiltyp unnötig machen. Analog kann in Generalisierungshierarchien vorgegangen werden. Relationshiptypen können eingeführt worden sein, um eine Eigenschaft einer Klasse darzustellen. Durch explizites redundantens Mitführen dieser Eigenschaft kann der Relationshiptyp für die Berechnung von Operationen unnötig werden. Pragmatik: Werden Komponenten und insbesondere Attribute in anderen Typen kopiert, dann ist durch eine entsprechende Namenskonvention eine Ableitung anzeigbar. Jede Einführung von redundanten Komponenten erfordert entsprechende Pflegemechanismen. Deshalb sollte eine Einführung auf konzeptionellen Niveau auch mit einer Spezifikation der Pflegemechanismen verbunden werden. Außerdem ist der zusätzliche Speicherbedarf mit ins Kalkül zu ziehen. Die Wertebereiche und die Semantik der kopierten Komponenten muß im neuen Schema mit dargestellt werden. 2. Einführung abgeleiteter Daten Abgeleitete Daten können die Effizienz von verschiedenen Operationen, insbesondere der kritischen oder häufigen Operationen, die einen Verbund von mehreren Klassen erfordern, verbessern. Pragmatik: Werden abgeleitete Daten mitgeführt, dann ist analog zu abgeleiteten Attributen ein Pflegemechanismus für die generischen Operationen auf dem Ursprungstyp mitzuführen. Erlaubt die Plattform Dämonen, dann kann auch mit einer verzögerten Anpassung der Daten eine Verbesserung erreicht werden. Spezielle Namenskonventionen erleichtern das Rekapitulieren der Einführung redundanter, abgeleiteter Daten. Synonyme sind damit entsprechend einzuführen. Durch ein Vermeiden oder Blockieren von Modifikationen auf den abgeleiteten Komponenten kann eine Inkonsistenz zusätzlich vermieden werden. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 296 Da die abgeleiteten Daten nicht wieder zur Ableitung verwendet werden, ist in diesem Fall der Triggermechanismus sicher. Deshalb können über Trigger diese Daten nachgeführt werden. 3. Einführung von Wiederholgruppen Durch Operationen mit hoher Priorität oder mit hoher Frequenz können Gruppenberechnungen erforderlich sein. Überwiegen diese Operationen, dann kann eine Einführung einer Wiederholgruppe unter Umständen eine Verbesserung der Performanz bringen. Durch eine mehrwertige Abhängigkeit kann eine vertikale Dekomposition erforderlich werden. Ist jedoch die Wiederholrate begrenzbar, dann kann eine redundate Abspeicherung eine bessere Option sein. Ist eine Kardinalität für eine wiederholte Darstellung der Daten abzuschätzen, dann kann durch eine nochmalige Einführung der gleichen Komponenten (mit Kennzeichnung der Kopienummer) eine Wiederholgruppe simuliert werden. Weiterhin können die Konstruktoren zu einer Verbesserung der Struktur benutzt werden. Pragmatik: Mehrwertige Abhängigkeiten können auch Ausnahmen der Gültigkeit von funktionalen Abhängigkeiten spezifizieren. Dann sind wiederholende Werte eher eine Ausnahme. In diesem Fall ist eine redundante Abspeicherung auch begrenzbar. Eine andere Begrenzung der Wiederholrate kann man durch Betrachtungen für den mittleren Fall gewinnen. Werden Komponenten mehrmals geführt, dann muß eine Verwaltung von Nullwerten explizit geführt werden können. Im Beispiel kann z.B., falls Dienstreisen von nicht mehr als zwei Antragstellern, meist sogar von zwei durchgeführt wird, eine Reise im Relationshiptyp beantragt mit zwei Komponenten Antragsteller1 und Antragsteller2 geführt werden, wobei die letztere evt. noch optional sein kann. Diese Einführung entspricht der Einführung eines Mengenkonstruktors im allgemeinen Fall für die Komponente Antragsteller im Typ beantragt. 4. Einführung von Abstrakta Abstrakta haben keine Bedeutung für die Anwendung. Sie können bei langen Schlüsseln, die relativ viel Speicher erfordern, eingeführt werden, falls eine Zugriffsmethode für diese Abstrakta existiert. Abstrakta können auch durch eine Vielzahl von Beziehungen erforderlich werden. Damit sind dann z.B. gleichzeitig benutzte Objekte (shared objects) in Beziehungen besser aufzufinden. Vor der Einführung von Abstrakta sind alle Schlüssel zu untersuchen. Ist ein Schlüssel einfacher, dann kann dieser Schlüssel anstatt des ursprünglichen benutzt werden. Pragmatik: Die Einführung von Abstrakta entspricht der Einführung von Objektidentifikatoren. Diese kann durch die plattform bereits vorgegeben sein oder durch den Entwerfer explizit eingeführt werden. Verschiedene relationale Plattformen erlauben die Benutzung von Tupelidentifikatoren. Diese Alternative ist äquivalent zur Einführung von Abstrakta. 5. Einführung von Objektkopien Es können Objekte direkt kopiert werden oder Objekte aus Objekten abgeleitet oder zusammengesetzt werden. Eine Einführung einer Objektkopie erfordert entsprechende Pflegemechanismen. Pragmatik: Kopien des gleichen Objektes in der gleichen Klasse sind nicht erlaubt. Analog sollten abgeleitete Objekte in der gleichen Klasse vermieden werden, weil damit die Identifikationseigenschaft zerstört wird. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 297 6. Einführung von äußeren Verbunden Durch den äußeren Verbund werden auch nicht über den Verbundkomponenten übereinstimmende Objekte gewonnen. Damit kann eine Vereinigung von Klassen gewonnen werden. Damit sind Operationen auch auf andere Weise darstellbar. Man kann diese Darstellung wählen, wenn dieser Verbund unterstützt wird und die Performanz verbessert wird. Pragmatik: HERM-Compiler 8. Redefinition und Revision von Typen. Eine Restrukturierung kann auf logischen oder konzeptionellen Niveau ohne Probleme für die Benutzer durchgeführt werden. Damit kann oft eine effizientere Datenbank entworfen werden, ohne daß ein Benutzer die Restrukturierung nachvollziehen muß. Wir haben bereits entsprechende Optimierungsschritte auf den Sichten in früheren Schritten durchgeführt. Sollte trotzdem in diesem Schritt eine Restrukturierung der Sicht notwendig werden, dann liegt ein Modellierungsfehler vor. 1. Bewertung speicherintensiver Komponenten Lange Textfelder und andere komplexe Wertebereiche sind für Schlüssel und den Zugriff nicht geeignet. Deshalb sehen wir im konzeptionellen Schema abstrakte Komponenten vor, die die Daten der Komponentenobjekte in verkürzter Darstellung verwenden. Kommen komplexe Daten mehrfach vor, dann werden spezifische Typen neu definiert. Pragmatik: Speicherintensive Komponenten ziehen meist auch komplexere (Text-)Verarbeitungsfunktionen nach sich. Deshalb sollten auch diese Funktionen bei der Revision mit verwendet werden. 2. Schrittweise Revision von Komponentenschlüsseln Alle Komponenten werden anhand der Dialogobjekte nochmals auf ihre vererbten Identifikationsmechanismen überprüft. Pragmatik: Oft werden die Primäridentifikationsmechanismen für die Definition von Komponenten in Relationshiptypen herangezogen, obwohl durch die Anwendung andere Identifikationsmechanismen benötigt werden. Deshalb kann selbst in der entsprechenden Sicht eine Modifikation notwendig werden. Dabei muß die Semantik auch weiterhin pflegbar sein. 3. Elimination von Typen Typen, die keine neue Information hinzufügen, und Typen, die durch keine Anwendungsoperation benötigt werden, können entfernt werden. Vor einer Entfernung ist die Gültigkeit der Entfernungsbedingung zu prüfen. Analog können Komponenten, die in keinem Dialogobjekt benutzt werden, entfernt werden, falls sie für die Anwendung keine Bedeutung besitzen. Pragmatik: Redundante Typen existieren auch in Hierarchien, in denen Supertypen nur eine Vereinigung der Subtypen sind ohne eigenständige, außerhalb der Identifizierung exisitierende Komponenten zu besitzen. Analog kann die Kontraktion von Typen genutzt werden. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 298 Im Beispiel kann das Teilschema Antragsteller = ... Fahrkarte = ( { Firma, Preis }, { Firma, Preis } ) bestellt = ( Antragsteller, Fahrkarte, { Zeitraum } ) Route = ( { Name } , { Name } ) möglichT = ( Fahrkarte, Route, ∅ ) aufgrund der Gültigkeit von Komplexitätsbedingungen comp(bestellt, Fahrkarte) = (1, 1), comp(bestellt, Antragsteller) = (0, n) comp(möglichT, Fahrkarte = (1, n) , comp(möglichT, Route) = (1, 1) kontrahiert werden zu den Typen Antragsteller = ... RoutenFahrkarte = ( { Firma, Preis, Route.Name }, { Firma, Preis, Route.Name } ) benutzt = ( Antragsteller, RoutenFahrkarte, { Zeitraum } ) , ohne Verlust von Semantik. 4. Hinzufügen von Duplikattypen Aufgrund häufiger Anfragen kann auch ein abgeleiteter Typ aus einem Typ durch Projektion, Selektion und andere Operationen der Algebra hergeleitet und explizit zur Erleichterung dieser Operationen benutzt werden. Pragmatik: Auch ad-hoc-Anfragen können durch Duplikattypen erleichtert werden. Analoges gilt für Aggregationsanfragen, die kritisch sind. Mit einer Duplizierung ist eine Pflege der Integrität notwendig. 5. Segmentierung von Typen Pragmatik: Durch vertikale oder horizontale Dekomposition kann das Verhalten der Datenbank verbessert werden, insbesondere dann wenn die Operationen Datenmengen erfordern, die nicht im Hauptspeicher gehalten werden können aber durch Dekomposition geladen werden können. 6. Kombination von Typen Pragmatik: 1:1-Relationshiptypen können durch Einlagerung nicht nur kompakter dargestellt werden, sondern auch zu einer Verbesserung der Performanz führen. Verbinden die kritischen Operationen mehrere Typen, sind diese Typen weniger separat in Operationen von Interesse, dann kann auch ein kombinierter Typ anstelle dieser Typen zu einer Verbesserung der Performanz führen. Auch in Hierarchien kann eine zusätzliche Generalisierung oder eine Zusammenführung von Super- und Subtyp Operationen besser unterstützen. Analoges gilt für 1:n-Relationshiptypen und n-äre Relationshiptypen. 7. Kombination durch äußeren Verbund IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 299 Pragmatik: HERM-Compiler 9. Betrachtungen für sehr große Datenbanken. Große Datenbanken sind heute keine Seltenheit mehr. Insbesondere in klassischen Anwendungen wie der Versicherungsbranche, bei Banken, bei Telefongesellschaften und Vermarkungsgesellschaften sind bereits Datenbestände im Terabytebereich zu verwalten. In neueren Anwendungen zur Erderkundung, in der Molekularbiologie und der Kartographie werden von Anfang an sehr große Datenmengen anfallen. Für diese Datenmengen ist eine sehr sorgfältige Planung der Performanz erforderlich. Schritte 1. Performanz der Retrieval Das Retrieval von Daten kann durch lange Durchmusterungsprozesse und Sortieroperationen z.T. stark verlangsamt werden. Deshalb ist bei der Implementation durch verschiedene Tuningschritte die Performanz des Retrieval zu verbessern. Auswahl von Zugriffsmechanismen; Implementation von Beispieltabellen zur Erprobung; Implementation von Auswertungsrelationen auf der Grundlage von Beispieltabellen. Pragmatik: 2. Durchlaßfähigkeit Hohe Transaktionsraten stellen nach wie vor ein Problem für DBMS dar. Deshalb sollte für große Datenbanken die Durchlaßfähigkeit zusätzlich gesondert optimiert, da die Größe der Datenbank und die Anzahl der Transaktionen eine doppelte Herausforderung darstellen. Typische Beispiele dieser Art sind Bankenanwendungen, in denen die Anzahl der Kunden und der Datenumfang eine größere Anzahl von Transaktionen hervorruft. Deshalb wird die Durchlaßfähigkeit gesondert nach folgenden Kriterien optimiert: Auswahl der Locking-Mechanismen: Kleine Locking-Granularität erhöht die Parallelisierungsmöglichkeiten. Andererseits kann Locking auf Tabellenniveau, insbesondere bei read-only-Locks, die zusätzliche Verarbeitungskapazität, die durch Locking-Mechanismen erforderlich sind, minimieren. Deshalb ist für große Tabellen ein anderer Abgleich erforderlich. Eventuell sind für diese Lösung zusätzlich ‘dummy’-Tupel notwendig. Gruppierung: Günstig sind Transaktionen, die Gruppen von Daten erfordern. In diesem Fall kann durch eine Gruppierung die Transaktionsrate verbessert werden. Partitionierung und Segmentierung: Eine noch günstige Optimierungsmethode ist die Partitionierung und die Segmentierung der Daten in Abhängigkeit von den Transaktionen. Damit kann die Abhäsion der Daten mit in die Optimierung einbezogen werden. Commit-Processing: Durch ein spätes Commit wird die zusätzliche Kapazität, die die Verarbeitung von Commits erfordert, minimiert. Sind jedoch die Tabellen sehr groß, dann ist mit einem Abort jedoch ein höherer Berechnungsaufwand erforderlich. Deshalb sind für sehr große Relationen frühe Commits günstiger. Segmentierung der Updates: Werden die Manipulationsoperationen für größere Datenströme angewandt, dann verursachen die seitenweise Verarbeitung, das Identifikationsmanagement etc. einen Performanzverlust. Günstiger ist dagegen, die Partitionierung und Segmentierung der Datenströme. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 300 Pragmatik: 3. Insert-/Delete-Prozesse Die Insert- und Deleteoperationen können für größere Datenmengen einen erhöhten Aufwand durch Logging, Locking, Commit-Processing, Indexveränderungen etc. erfordern. Deshalb sollte die Insertoperation optimiert werden durch Nutzung folgender Systemroutinen: Ladewerkzeuge: Gewöhnlich wird die Insertoperation als eine Ein-Tupeloperation behandelt. Einige Systeme erlauben jedoch auch ein ‘Refresh’ oder ‘Replace’ von Tabellen. Außerdem wird oft ein Insert durch Anfügen an eine Tabelle implementiert. Günstiger ist - wie in den großen Systemen unterstützt - eine vorhergehende Suche nach freiem Speicherplatz in entsprechenden Seiten. Temporäres Aufheben des Loggings: Für größere Datenströme kann ein Logging zu aufwendig sein. Kann man die Insertoperation wiederholen bzw. die Fehlerbehandlung verzögern, dann ist ein zeitweiliges Unterbrechen des Loggings laufzeitgünstiger. Temporäres Verändern der Indizes: Da das Verändern von Indizes aufwendig sein kann, ist für große Datenströme eine Neuberechnung von Indizes bzw. eine Berechnung eines Inputindexes mit anschließendem Mischen günstiger. Analog kann ein Massendelete durch Partitionierung und Segmentierung besser unterstützt werden. In unserem Beispiel kann z.B. durch eine Partitionierung auf Dienstreisejahre ein Delete vermeiden, das dann einem Streichen einer ganzen Relation entspricht. Pragmatik: 4. Checkpoints und Wiederanlauf Für große Datenbanken wirkt sich die Benutzung von Sicherungspunkten performanzverschlechternd aus. Dies trifft insbesondere auf lange Transaktionen zu. Deshalb ist diesen Transaktionen besondere Aufmerksamkeit zu widmen. Sind Transaktionen zerlegbar in Folgen kürzerer Transaktionen, dann sollte eine Zerlegung angestrebt werden, falls die zusätzliche Zeit, die für die Verbindung der einzelnen Teile erforderlich ist, nicht zu stark ins Gewicht fällt. Pragmatik: 5. Adminstration, Scheduling und Werkzeuge erfordert meist einen zusätzlichen Aufwand. Ist dieser nur linear vom Umfang der Daten abhängig, dann ist eine Benutzung der Tools eher sinnvoll als bei höherer Komplexität. Im letzteren Falle kann Abhilfe durch folgende Lösungen geschaffen werden: Ausnutzung der Parallelisierung: Bei nichtlinearer Komplexität von Werkzeugen kann durch eine zielgerichtete Parallelisierung eine Verbesserung erreichen. Benutzung von partiellen Funktionen anstelle von totalen: Ein Beispiel sind Backupfunktionen. Werden Backups regelmäßig durchgeführt, dann kann auch ein partielles Backup für die Änderungen seit dem letzten Backup effizienter sein. Geringere Benutzung der statistischen Funktionen: Sind die Änderungen minimal verglichen mit der Größe der Relationen, dann kann auch auf Statistiken, die die Verwaltung der Datenbank vergleichen, verzichtet werden. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 301 Betrachtung der Fehlerbehandlungszeit: Für große Datenbanken kann die Fehlerbehandlung auch zu groß werden. Durch unterschiedliche Fehlerbehandlungskonzepte kann die Zeit minimiert werden. Pragmatik: HERM-Compiler 10. Vorbereitung für Veränderungen der Datenbanksysteme. Datenbanken sind für viele Anwendungen auch in der Struktur nicht statisch. Sowohl die Struktur als auch die Semantik und insbesondere die Funktionalität unterliegen einer häufigen Veränderung. Viele Veränderungen können durch relationale DBMS aufgefangen werden. Einige Veränderungen wirken sich jedoch stark auf vorhandene Funktionen aus. In der relationalen Technologie wird zwischen der Delete- und der Dropoperation unterschieden. Letztere Operation erlaubt neben dem Streichen eines Objektes auch das Streichen der zugehörigen Struktur. Analoge Auswirkungen kann die Insertoperation haben. Syntax: Pragmatik: Eine Modifikation, das Streichen und das Hinzufügen von Tabellen kann die Arbeit der Datenbank in wesentlichen Teilen stark verändern. Deshalb ist es sinnvoll, den gesamten Modifikationsprozeß in die Datenbankentwurfsgeschichte einzuarbeiten. Vor Veränderungen der Datenbank ist es sinnvoll, ein Veränderungsszenario zu entwickeln. Dieses Szenario schließt auch eine Betrachtung der Risiken von Veränderungen mit ein. Schwierigkeiten und Fallen: Schritte 1. Streichen von Schema-Objekten Veränderungen in der Datenbankstruktur können in einigen Systemen nur durch ein vollständiges Entfernen der Tabellen und anschließenden Neuaufbau bewerkstelligt werden. Dazu gehören Änderungen des Datentypen, das Verbot von Nullwerten, das Streichen einer Spalte, die Änderung von Defaultwerten, Partitionierung, Segmentierung und Kombination von Tabellen, Änderungen des Hashmechanismus, Änderungen in der Gruppierung und Veränderungen der Abspeicherung. Einige Systeme blockieren während der Dropoperationen andere Benutzer. Sind mit den Relationen, die verändert werden zusätzlich noch andere Relationen, z.B. durch Trigger verbunden, dann kann die Dropoperation weitreichende Auswirkungen in der Datenbank haben. Das Streichen einer Sicht zieht auch das Streichen aller darauf basierenden Sichten, insbesondere auch der Sicherheitssichten, nach sich. Sicherer sind deshalb eingeschränkte Dropoperationen, die nur ein Streichen erlauben, wenn keine anderen abhängigen Relationen existieren. Dann sind jedoch Veränderungen in der Datenbankstruktur nur schwer möglich. Moderne Systeme generieren deshalb als Antwort auf eine Dropinformation eine Reihe von Warnungen über die Implikationen der Dropoperation. Erst bei Bestätigung der Auswirkungen als gewünschte Auswirkungen wird dann die Dropoperation ausgeführt. Deshalb sollte vor dem Streichen von Relationen der Effekt dieser Operation auf alle Objekte der Datenbank untersucht werden. Dabei sind alle expliziten und impliziten Integritätsbedingungen besonders zu untersuchen. Wird eine Streichoperation ausgeführt, dann ist es sinnvoll alle Benutzer von dieser Veränderung zu informieren. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 302 In Systemen, in denen eine Dropoperation automatisch kaskadiert wird, sollten extra Mechanismen vor den unerwünschten Effekten dieser Operation warnen oder durch eine Rückführung der implizierten Reaktionen auf eine Dropoperation die Wiederherstellung des korrekten Zustandes ermöglichen. Pragmatik: 2. Hinzufügen von Schema-Objekten Das Hinzufügen ist im allgemeinen eine einfache Operation. Implizite Annahmen der Datenbank können jedoch auch davon beeinflußt werden. Dazu gehören Namenskonventionen, Sicherungsmechanismen, Sicherheitsmechanismen und die Authorisierung. Außerdem können die Speichermechanismen davon betroffen sein. Wird eine Relation hinzugefügt, dann ist auch die Integrität gesondert zu betrachten. Dazu gehören auch Integritätsbedingungen und Erzwingungsregeln. Pragmatik: 3. Modifikation von Schema-Objekten Die Modifikation von Relationen kann um ein Vielfaches komplizierter sein als das Hinzufügen. Es kann sowohl die physische als auch die logische Struktur geändert werden. Änderungen in der physischen Struktur sind z.B. Veränderungen der Speicherzuordnung, von Indexierungen, von Locking- und Pufferstrategien. Veränderungen in der logischen Struktur sind meist Veränderungen, die sich in der konzeptionellen Struktur auch wiederspiegeln. Die Modifikation sollte die normale Arbeit mit der Datenbank so wenig wie möglich beeinflussen. Deshalb erfordert eine Modifikation oft auch die Betrachtung der gesamten Entwurfsgeschichte. Auswirkungen der Modifikation der Struktur können oft durch entsprechende Sichten verbessert werden. Eine andere Methode basiert auf der Einführung von Synonymen. Damit wird zwar auch die Performanz der Datenbank beeinflußt, nicht aber die Weiterverwendbarkeit. Dabei ist jedoch auf die Identifizierbarkeit über diese Sichten zu achten, um eine Modifikation von Daten über Sichten zu erlauben. Das RENAME und das ALTER Kommando von SQL sollte mit entsprechender Vorsicht angewandt werden. Werden z.B. Spalten angefügt, die keine Nullwerte oder Defaultwerte enthalten können, dann ist die exisiterende Relation zu modifizieren. Prozesse, die auf einem SELECT * basieren sind in diesem Fall ebenso zu modifizieren. Weiterhin sind auch entsprechende Performanzbetrachtungen und Speicherstrategien in die Modifikation einzubeziehen. Portierbarkeit, Änderungen der Plattform. Da DBMS bereits sehr komplexe Softwaresysteme sind und sich trotz der Standardisierung von SQL in ihrer Funktionalität stark unterscheiden können ist eine Weiterentwicklung von Systemen kaum vorauszusehen. Einige Schwachpunkte von existierenden Systemen werden in den nächsten Jahren behoben werden. Datenbanksysteme erfahren eine Erweiterung hin zur Integration objekt-relationaler Technologie. Damit werden komplexere Typensysteme direkt unterstützt. Mit einer Veränderung der Technologie ist oft eine Veränderung großer Teile der Implementation erforderlich. Deshalb sollten auch solche Informationen im Entwurf berücksichtigt werden, die z.Z. noch nicht implementiert werden können. Damit kann eine Verbesserung der Funktionalität von DBMS direkt aufgenommen werden. Typische Änderungen sind z.B.: • Die Integritätsbedingungen werden von Version zu Version immer besser unterstützt. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 303 • Die Optimierer werden mit umfangreicheren Möglichkeiten zur Berücksichtung von Erkenntnissen des konzeptionellen Entwurfs ausgerüstet sein. • Einschränkungen von Funktionen werden verschwinden. • Durch Verbesserung der Hardware und der Software wie verbesserte Ein- und Ausgabe wird auch die Funktionalität von DBMS erweitert werden können. • Die Datenwörterbücher können mehr semantische und funktionelle Information aufnehmen und verarbeiten. • Es werden verteilte Systeme, offene Systeme und föderierte Systeme geschaffen werden. Syntax: Pragmatik: Schwierigkeiten und Fallen: Schritte 1. Neue semantische Regeln Pragmatik: 2. Neue Operationen Pragmatik: 3. Höhere Performanz Pragmatik: HERM-Compiler 11. Diensteverwaltungssystem. HERM-Compiler 12. Erzeugung des Schemas in der Zielsprache. 2.10.6 Besonderheiten der Abbildung auf UML-Strukturen bzw. XML-Strukturen Entfaltung durch Objekt-Schalen, ggf. mit kontrollierter Schalen-Redundanz Basis-Schale meist genutzt zur direkten Identifikation Objekt-Schale mit Objektentfaltung, optionalen Komponenten, Default-Ergänzungen Sharing-Modell zur gemeinsamen, redundanten Benutzung gemeinsamer Komponenten ggf. mit Vertragsmodell, Injektionsmodell, Modifikationsstrategie, Notifikationsdienst bei Veränderung IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 304 Inductive and Abstraction Layered Typed Modelling Constructs. Typically, a model is defined in a certain language. A model language L for a model uses some signature S and a set of constructors C that allows to build a set of all possible expressions in this language. Typically constructors are defined by structural recursion [Tha00]. The set of constructors may allow to build expressions that do not fulfill certain quality or more generally integrity conditions. Therefore we introduce a set ΣS,C well-formedness conditions. Well-formedness conditions separate ‘normal’ expressions from ‘abnormal’ ones. The later can be separated into construction abnormality and semantic abnormality. We may allow such abnormalities that are corrigible to normal expressions. The avoidance of abnormality is still research in progress. Kinds of abnormality that should be handled within a theory of conceptual modelling are pleonasm (e.g., redundancy), semantic clashes (e.g., contradictions), Zeugma (e.g., overloading of constructs, combining separable semantic units into one concept), and improbability (e.g., almost empty classes). Well-formedness restrictions influence the modelling style [Kle07]. • The Strong Venetian style rigidly separates basic constructs and builds a fully compositional structuring. ER schemata and UML class diagrams are typically based on this style. • The Weak Venetian style separates constructs to same degree but not more than it is necessary. Performancetuned physical relational schemata are typically based on this style. • The Strong Russian Doll style is based on a full expansion of objects, i.e. objects in a database are potentially expandable through navigational sub-structures. • The Weak Russian Doll style uses a layered representation similar to tree languages. ER modelling is typically based on the Salami slice style whereas XML modelling typically uses the strong Russian doll (DTD style) or the weak Venetian or weak Russian doll (XML schema) style. The weak Venetian blind style is also the basis for component-based development of models since amalgams constructs as small models of coexisting and co-evolving facets of objects. 2.10.7 Das regelbasierte Verfahren nach D.W. Embley und O. Sörensen 2.11 Spezielle Modellierungsmethoden für Spezialanwendungen 2.11.1 Besonderheiten verteilter Informationssysteme Syntax: Pragmatik: Da die Modellierung der Verteilung eine orthogonale Aufgabe ist, bedarf die Verflechtung der Modellierung von Verteilung und der anderen Modellierungsaufgaben einiger Tricks: • • Schwierigkeiten und Fallen : in der Modellierung bereiten insbesondere folgende Probleme: 1. Die Replikation, die Partitionierung und die Allokation beruhen in diesem Entwurfsstadium meist auf Schätzungen. Damit sind auch die Resultate in diesem Schritt eher als Näherungen zu betrachten. Eine Optimalität kann auf diese Art und Weise kaum erreicht werden. 2. Oft wird eine gleichmäßige Auslastung der Rechnerknoten angestrebt. Damit können zwar lokale Engpässe gut umgangen werden. Aber auch dieser Parameter beruht auf Schätzungen. Schritte IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 305 1. Analyse der Anforderungen Es werden Qualitätsparameter wie Datenumfang, Rechtzeitigkeit, einfacher Zugriff, Datenort, Datenzuverlässigkeit, Erreichbarkeit der Daten, bevorzugte Lokalisierung und einfache Pflege der Integrität der Daten analysiert. Auf der Grundlage dieser Daten kann entschieden werden über die folgenden technischen Strategien: Qualitätsparameter Datenumfang Rechtzeitigkeit einfacher Zugriff Datenort Datenzuverlässigkeit Erreichbarkeit Pflege der Daten Information für Entwurfsschritt Auswahl der Technologie Replikationsstrategien Strukturen Eigentümer-/Besitzer-/Nutzerstrategien Eigentümer-/Besitzer-/Nutzerstrategien Datenermittlung Backup-/Wiederanlaufprozesse Unterstützungstrategien Pflegestrategien Eigentümer-/Nutzerstrategien Pragmatik: Die verschiedenen Qualitätsparameter können benutzt werden, um Entwurfsentscheidungen eventuell einer Revision zu unterziehen. Meist begrenzen diese Parameter jedoch die Wahl der Plattform. Eine pragmatische und zugleich praktikable Methode zur Beherrschung der Verteilung ist eine Trennung von Benutzern und Besitzern von Daten. Damit kann Benutzern ein read-only-Zugriff auf einfache Art ermöglicht werden. Sind mehrere Benutzer Besitzer von Daten und können sie die Daten simultan ändern, dann ist diese Möglichkeit explizit vorzusehen. Im weiteren ordnen wir den Daten die Besitzer und die Benutzer zu. Ist der Umfang der Daten zu hoch und werden keine Forderungen nach einer zentralen Verarbeitung erhoben, dann kann aus der Größe der Datenbank bereits eine minimale Serverkonfiguration abgeleitet werden. Die Aktualität der Daten beeinflußt direkt die Replikationsfunktionen. Wird eine hohe Aktualität gefordert, dann kann nur mit einer komplexen Updatefunktion die Aktualität gesichert werden. Für viele Anwendungen ist ein einfacher und schneller Zugriff für einen Teil der Daten benutzerabhängig unbedingt erforderlich. Deshalb sind die kritischen Anwendungen direkt zu erfassen. Ein Zugriff wird insbesondere auch durch Namenskonventionen für die Sichten erleichtert. Tuningstrategien sollten sich auf die Anwendungen der einzelnen Knoten beschränken und weniger auf das allgemeine konzeptionelle Schema der gesamten Anwendung über alle Knoten hinweg. Müssen allen Benutzern alle Daten zur Verfügung stehen, dann wird dadurch die Sharingstrategie und die Replikationsstrategie beeinflußt. Da die gleichen Zugriffe nicht an verschiedenen Standorten zur gleichen Zeit parallel ausgeführt werden sollen, werden durch die erwartete Funktionalität der Knoten auch die Datenermittlung, die Anfrageverarbeitung und die Modifikationsprozeduren beeinflußt. Je mehr Funktionen an allen Standorten zur gleichen Zeit benötigt werden, umso sorgfältiger muß die Verteilung entworfen werden. Um einen Wiederanlauf und eine Backup-Funktionalität zu unterstützen, werden diese Funktionen beim Entwurf der Knoten mit berücksichtigt. Treten Zuverlässigkeitskonflikte auf, dann sind sowohl der Besitzer als auch die Benutzer zu informieren. Die Verfügbarkeit von Daten auf verschiedenen Knoten kann durch häufige Anforderungen von anderen Knoten mit beeinflußt werden. Deshalb kann auch eine Veränderung der Netzarchitektur notwendig werden. Die Integrität von Daten ist einfacher zu pflegen, wenn nur ein Knoten über Modifikationsrechte verfügt. Um die Integrität zu pflegen, können Trigger, stored procedures und die referentielle Integrität auf logischem Niveau entworfen werden. Dabei ist jedoch zu sichern, daß keine Zyklen auftreten können. Diese Information liegt bereits für das konzeptionelle Schema vor. Eine Betrachtung des logischen Schemas ist deshalb nicht notwendig. Die vorliegende Information ist deshalb zu nutzen, um einen einfachen Mechanismus zur Pflege der Integrität abzuleiten. Um unnötige Modifikationen zu vermeiden, sobald Daten nicht mehr auf einem Knoten benötigt werden, ist eine explizite Operation zum Entfernen aller Daten sinnvoll. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 306 2. Analyse der Architektur des Netzes In diesem Schritt werden die Funktionen der einzelnen Knoten analysiert. Dazu werden die einzelnen Dialogobjekte, Sichten und Funktionen der Knoten auf ihre Realisierbarkeit untersucht. In Abhängigkeit von diesen Funktionen ist das Schema zu optimieren. Bei der Optimierung werden sowohl die Anforderungen der Benutzer für die jeweiligen Knoten analysiert, als auch die Möglichkeiten zur Bereitstellung von aktuellen Informationen für die jeweiligen Knoten. Jedem Benutzer werden seine Knoten zugeordnet. Dabei werden sowohl die funktionalen Anforderungen als auch die Anforderungen an die Sichten berücksichtigt. In diesem Schritt wird auch eine allgemeine Replikationsstrategie entwickelt. Falls eine Pflege der Replikate durch ein paralleles Verschicken aller Modifikationstransaktionen erfolgt, dann wird jede Modifikation nachgezogen. Es kann auch ein Schnappschuß der modifizierten Daten an die Replikate versandt werden, deren Daten in den Knoten modifiziert werden. Ist eine Charakterisierung der durch das Replikat benötigten Daten möglich, dann kann die versandte Menge weiter eingeschränkt werden. Kann man für Klassen deduktive Normalformen einführen, dann kann die Menge der versandten Objekte weiter eingeschränkt werden. Für die einzelnen Knoten sind entsprechende load, unload und send Funktionen zu entwickeln. In analoger Form ist eine cancel Funktion zu entwickeln. Pragmatik: Bei der Analyse der Anforderungen in den einzelnen Knoten kann nach folgendem Schema für jede einzelne Klasse vorgegangen werden: (a) Es wird die Granularität für das Datensharing analysiert. Dabei werden auch die beizubehaltenden Daten (ankernde Daten) und die Beziehungen der Daten (Identifikationsbeziehungen etc.) analysiert. (b) Es wird das Verhalten der Benutzergruppe modelliert, die für die Modifikation und die Bereitstellung der Daten verantwortlich ist. Dabei werden die entsprechenden Prozesse bzw. Funktionen dieser Benutzergruppe zugeordnet. Falls eine bereits normalisierte Klasse unterschiedlichen Benutzern aus dieser Gruppe zugeordnet wird, dann ist das gemeinsame Benutzen der Daten zu spezifizieren. Gegebenenfalls ist eine horizontale Dekomposition die Lösung. Die Benutzergruppe ist den einzelnen Knoten zuzuordnen. Falls verschiedene Benutzer unterschiedliche Daten einbringen, dann kann ebenfalls durch horizontale Dekomposition eine einfachere Pflege möglich sein. (c) Es wird das Verhalten der Benutzergruppe analysiert, die die Daten im Wesentlichen für Anfragen benutzt. Dazu werden deren Prozesse, Funktionen, Sichten und Dialogobjekte betrachtet sowie die Knotenzuordnung. Außerdem wird für jede Klasse analysiert, inwieweit ein Benutzer die gesamte Klasse benötigt. 3. Entwicklung einer Architektur (Partitionierung , Replikation der Daten) Auf der Grundlage der nun bekannten Information können nun die Operationen für die Entwicklung einer Verteilung herangezogen werden. Für jede Operation wird die Knotenmenge berechnet, die für diese Operation herangezogen werden muß. Es werden die horizontalen, vertikalen und gemischten Partitionierungen für die verschiedenen Anwendungen betrachtet. Vertikale Partitionierung vs. horizontale vs. gemischte Pragmatik: Sowohl für die horizontale, als die vertikale oder gemischte Partitionierung können verschiedene Operationen herangezogen werden. Zu jeder Operation werden die benötigten Klassen und deren Verbindungen (z. B. über Relationshiptypen) explizit dargestellt. Darauf aufbauend kann für eine Klasse die Teilmenge bestimmt IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 307 werden, die für eine statistisch homogene Auslastung der Teilmengen innerhalb der betrachteten Operationen und für die Existenz unterschiedlicher Anwendungen für mindestens zwei verschiedene Partitionen sorgen. Eine Klasse wird so in Teilmengen zerlegt, daß jede von ihnen ausreichend für eine entsprechende Operation ist. Damit ist eine horizontale Partitionierung ableitbar. Oft ist dies nur bei Anwendung der 80/20%-Regel möglich. Um eine feinere Granularität zu erreichen, können auch die Klassen- bzw. Teilmengengröße, die Zugriffshäufigkeit und die mittlere Trefferrate mit einbezogen werden. Damit kann auch eine Betrachtung der Relevanz einer Klasse für einen Knoten erfolgen. Die Relevanz ist definiert über die Proportion der Trefferquote zur ‘Nicht’trefferquote. Analog kann für den Fall der abgeleiteten horizontalen Partitionierung vorgegangen werden. Da der EquiVerbund für eine Darstellung von Hierarchien günstig ist, kann in diesem Falle auch eine Hierarchie unterstützt werden. Sind mehrere horizontale Partitionierungen gleich günstig, dann wird man die Partitionierung mit den wenigstens Verbunden bzw. die für eine größere Anzahl von Anwendungen benötigte wählen. Der Verbundgraph kann in diesem Fall herangezogen werden. Die vertikalen Partitionierung erfordert eine genaue Betrachtung der Integritätsbedingungen. Die Vielfalt ist wesentlich höher. Durch Gruppierung und Splittung kann die kombinatorische Vielfalt etwas eingedämmt werden. Für eine vertikale Dekomposition wird die Affinität der Komponenten betrachtet. Für Komponenten, die nicht zur (primären) Identifikation benötigt werden, wird eine Bewertung der diese Komponenten verwendenden Operationen vorgenommen (Benutzungswert). Analog wird berechnet, inwieweit für Paare von Komponenten entsprechende Operationen existieren (Affinität). Darauf aufbauend kann eine Affinitätsmatrix entwickelt werden. Diese Matrix wird auf separierbare Teile untersucht. Kann eine Gruppierung in der Matrix vorgenommen werden, dann kann auch das Schema in dieser Form gruppiert werden. Gruppierungen können nach verschiedenen Algorithmen (bond-Algorithmus; Algorithmen, die die Masse von Komponenten einbeziehen) abgeleitet werden. Auf dieser Grundlage wird ein allgemeines Affinitätsmaß entwickelt. Mit jeder Modifikation der Datenbank ist dann ein entsprechender Netzbeitrag zur Komplexität abschätzbar. Auf dieser Grundlage werden Typen separiert. Analog kann im Falle der vermischten Partitionierung vorgegangen werden. Die abgeleiteten Partitionierung werden auf ihre Korrektheit geprüft (Vollständigkeit, Rekonstruierbarkeit, Disjunktheit). 4. Allokation der Daten und Prozesse Für eine Menge von Partitionen F = {F1 , ..., Fn }, ein Netz mit den Knoten S = {S1 , ..., Sm } und eine Menge von Anwendungen Q = {q1 , ..., qq } wird nun eine optimale Verteilung von F auf S gesucht. Die optimale Verteilung wird bestimmt durch (a) die minimalen Kosten und (b) die Performanz. Dabei werden die Kosten bestimmt aus Speicherkosten für das Speichern von Fi auf Sj , Anfragekosten für das Berechnen einer Anfrage über Fi auf Sj , Modifikationskosten für die Modifikation von Fi auf allen Knoten und Kommunikationskosten. Es gibt bislang kein allgemeines Kostenmodell. Ein einfaches Modell kann wie folgt entwickelt werden für eine Partition Q1 und Q2 von Q nach retrieval-only-Anfragen und Modifikationsanfragen: Für ein Partition Fk betrachten wir die folgenden Kosten retrieval-only-Verkehr für die Knoten Tk = {t1 , ..., tm } , IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 308 update-Verkehr für die Knoten Uk = {u1 , ..., um }, Kommunikationsosten für retrieval C(Tk ) = {c12 , c13 , ..., c1m , ..., cm−1,m } Kommunikationsosten für update C 0 (Uk ) = {c012 , c013 , ..., c01m , ..., c0m−1,m } Speicherkosten für die Partition D = {d1 , ..., dm } unter der Voraussetzung, daß keine weiteren Kapazitätsbeschränkungen gelten. Dann kann für die Booleschen Plazierungsvariablen xj mit ½ 1 falls Fk in Sj xj = 0 falls Fk nicht in Sj optimiert werden nach der folgenden Formel für Teilmengen I von S, in denen Fk gespeichert wird: m X X X . xj dj min xj uj c0ij + tj min cij + i=1 j|Sj ∈I j|Sj ∈I j|Sj ∈I Diese Optimierung ist trotz der starken Vereinfachung NP-vollständig. Sie stellt nur ein Näherung dar, weil Partitionen stärker strukturiert sind, der Zugriff zu einfach dargestellt wird, die Kosten für die Erzwingung der Integrität nicht erfaßt wurden und die Kosten für parallele Zugriffe nicht berücksichtigt sind. Deshalb wählen wir im weiteren ein Modell, das auf folgenden Informationen zur Anwendung und zur Modellierung beruht: Datenbankinformationen: Selektivität seli (Fj ) einer Partition Fj für eine einzelne Anfrage qi und die approximative Größe der Partition size(Fj ) ; Anwendungsinformation: Anzahl der Lesezugriffe RRij für Anfragen qi über einer Partition Fj Anzahl der Updatezugriffe U Rij für Anfragen qi über einem Partition Fj ½ 1 falls Anfrage qi modifiziert Fk uij = 0 falls Anfrage qi modifiziert Fk nicht ½ 1 falls Anfrage qi liest Fk Rij = 0 falls Anfrage qi liest Fk nicht O = {o1 , ..., oq } für jede Anfrage eine maximal tolerierbare Antwortszeit oi Ausgangspunkt von qi Knoteninformation: Speicher- U SCk und Berechnungskapazität LP Ck Netzinformationen: Kommunikationskosten gij pro Kommunikationseinheit Kanalkapazität, Abstände zwischen den Knoten, Protokolloverhead usw. Auf dieser Grundlage kann ein allgemeines Kostenmodell unter Berücksichtigung der Beschränkungen für die Antwortzeit, die Speicherzeit und die Berechnungszeiten erstellt werden. Pragmatik: Das allgemeine Kostenmodell kann oft zu komplex sein. Deshalb kann man für den Grobentwurf der Verteilung auch auf die folgende Art vorgehen. • Es wird für die Daten nach einer ‘Server/Client’-Verteilung der Daten - wie bereits oben mit dem Besitzer/BenutzerModell eingeführt - anhand der Lokalisierung der Besitzer und Benutzer eine optimale Topologie ermittelt, die untersucht, welche der folgenden Varianten günstiger ist: • • • • Zentralisierung der Daten, Verteilung der Daten nach Besitzern, Verteilung der Daten nach Benutzern, Verteilung der Daten nach Besitzern und Benutzern, IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 309 • Abwägen der Vor- und Nachteile eines zentralen Managements. • Es werden technische Strategien abgeleitet, mit deren Hilfe den Anforderungen der Anwendung in hinreichend kurzer Zeit genügt werden kann und die die entwickelte Partitionierung und Replikation hinreichend gut unterstützen. • Darauf aufbauend wird ein Pflichtenheft für den Netzentwickler abgeleitet. Bewertung der Resultate. Mit dieser einfachen Methodik kann die Verteilung einer Datenbank für diese Phase des konzeptionellen Entwurfes hinreichend genau spezifiziert werden. Genauere Anpassungen müssen vorgenommen werden, sobald die Plattformen hinreichend genau bekannt sind. Dazu können entsprechende Werkzeuge benutzt werden. 2.11.2 Modellierung von Datenbank-Farmen Datenbank- und Informationssysteme sind meist in einer integrierten Form verfügbar. In unserer Universitätsanwendung kann z.B. neben dem Informationssystem zur Stundenplanung auch ein Informationssystem zur Verwaltung von Studentendaten geführt werden. Ein Bestandteil eines solchen Informationssystemes ist z.B. die Erfassung zu Daten zu erworbenen Scheinen und zur erfolgreichen Teilnahme an Lehrveranstaltungen. Deshalb wird eine Archivierungssicht auf das Informationssystem zu den Lehrverantaltungen benutzt, um diese Daten in die Studenten-Datenbank einzupflegen. Diese Archivsicht ist in Bild ?? dargestellt. Eine Datenbank-Farm verwendet die Architektur in Bild 77. Play-InSystem Play-OutSystem DatenbankWarenhausSystem SpeicherMaschine Abbildung 77: Die Architektur von Systemen von Datenbank-Farmen als verallgemeinertes Datenbank-Warenhaus 2.11.3 Besonderheiten bei der Modellierung von inkrementellen Datenbanksystemen Bereits für die Entwicklung der Funktionalität haben wir die induktive Definition von Relationship-Typen genutzt. Für Relationship-Typen sind über eine versteckte Annahme für das Verändern und Einfügen von Komponenten Modifikationsoperationen nur in eingeschränkter Form definiert. Analoge Annahmen können wir in der Sichtenkooperation von Datenbank-Farmen machen. Es wird ein System oder eine Sicht entweder Zentral-System, in dem alle Operationen uneingeschränkt definiert sind, oder abhängiges System, das einen Teil seiner Daten aus einem anderen System bezieht und deshalb diese Daten nur in Zusammenarbeit mit dem anderen System ändern kann. Incremental evolution is thus supported by star and snowflake sub-schemata by: Injection forms enable to inject data into another database. The forms are supported by views and view cooperation approaches. Data injected into another database cannot be changed by the importing database system. The IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 310 auxiliary database auxiliary database auxiliary database auxiliary database injected ? DBS (S p , ΣS p , Op , ΣOp ) injected ? DBS (S c , ΣS c , Oc , ΣOc ) injected ? DBS (S r , ΣS r , Or , ΣOr ) injected ? DBS (S m , ΣS m , Om , ΣOm ) insert inject modifiable - insert - inject injected planning phase DBS modifiable - insert - inject injected construction phase DBS modifiable - injected realization phase DBS maintenance phase DBS Abbildung 78: The General Architecture of Incremental Evolution of Database Systems structuring (S inject , ΣS ) of the views of the exporting database system is entirely embedded into the structuring 0 (S , ΣS 0 ) of the importing database system. The functionality (Oinject , ΣO ) of the views of the exporting 0 database system is partially embedded into the functionality (O , ΣO0 ) of the importing database system by removing all modification operations on the injected data. These data can only be used for retrieval purposes. Insertion forms enable in insertion data from the exporting database into the importing database. These data can be modified. The structuring (S insert , ΣS ) and the functionality (Oinsert , ΣO ) of the views of the exporting 0 0 database system are entirely embedded into the structuring (S , ΣS 0 ) and the functionality (O , ΣO0 ) of the importing database system. 2.11.4 Besonderheiten der Entwicklung von Datenbank-Warenhäusern Units generator Unit, applet, data provider OLTP data Foreign Data Legacy Data Purger Storage Workspace Gate User profiles Payment manager Active acquisition Data suites Access, history manager - Micro-data - import export - tools - Content management system OLAP/DW System Macro-data - extractors database mining -Anonymous user - Business unit user - EIS/DSS user Abbildung 79: Data Warehouse Architecture of the DaMiT System Typisches Beispiel: Document systems should be supported by a specific data warehouse architecture: IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 311 Play-out servers present, store and protect released content. The play-out of documents depends on their usage. Typical widely used documents are documents used in logistics: • Bills have their own numbering and their own format. They serve also as an contract of carriage between shipper and carrier. • Certificate on the content and the origin of the contents are used for statistical research, and for accessing duties, particularly under trade agreements. • Invoices declare against which payment is made. They are used for clearing documents. • Dock receipts are issued by the forwarder on experter’s behalf. They include shipment description, physical details, and shipping information. • Bills of lading are used as contracts between carrier and shipper, spell out legal responsibilities and liability limits for all parties to the shipment. • Packing lists provide details on the packing procedure of the container. • Sight, time drafts instruct the buyer’s bank to collect payment. Production servers have controlled access to documents and host dockets. Specific docket servers manage trusted content exchange between the servers. Generic docket servers communicate and encapsulate value-adding services. Für die drei Komponenten ergibt sich bei der Entwicklung das folgende Aufgabenspektrum: Akquisition Speicher Zugriff Lösungsentwicklung Datenidentifikation Daten-Sourcing Daten-Sourcing Validierung der Integration Validierung der Integrität Synchronisation Synchronisation Entwicklung f. Rückkoppl. Speicherarchitektur Speicherarchitektur Transform.-abbildungen Transform.-abbildungen Transform.-abbildungen Qualitätsprüf. Qualitätsprüfung Qualitätsprüfung DB-Modellierung DB-Entwurf Dabei können wir anhand der bislang betrachteten Entwurfsmethode folgende Regeln beim Entwurf betrachten: 1. Akquisition, Speicherung und Zugriff bilden eine Einheit. 2. Aufgrund der Komplexität ist die Dekomposition von Geschäftsprozessen notwendig. 3. Die Anwendungen sollten voneinander separiert werden. 4. Autonome Anwendungen können auch parallel entwickelt werden. Damit kann auch das Aufgabenspektrum während der einzelnen Entwicklungsschritte für die unterschiedlichen Gruppen, die im Entwicklungsprozeß teilnehmen, abgeleitet werden: IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 312 Schritt Exporteure Benutzer Programmierer 1. Lösungsentwicklung stark mittel 2. Datenidentifikation mittel stark 3. Daten-Sourcing stark leicht mittel 4. Validierung der Integrität leicht mittel stark 5. Synchronisation leicht stark 6. Entwicklung f. Rückkopplung stark stark 7. Speicherarchitektur stark 8. Transformationsabbildungen stark 9. Qualitätsprüfung leicht leicht stark 10. DB-Modellierung leicht stark 11. DB-Entwurf stark In analoger Form können die Komponenten, auf die sich die Entwicklungsschritte konzentrieren, herausgestellt werden: Schritt Akquisition Speicher Zugriff 1. Lösungsentwicklung stark 2. Datenidentifikation stark 3. Daten-Sourcing stark leicht 4. Validierung der Integrität stark leicht 5. Synchronisation stark leicht 6. Entwicklung f. Rückkopplung stark 7. Speicherarchitektur stark mittel 8. Transformationsabbildungen stark stark stark 9. Qualitätsprüfung stark stark stark 10. DB-Modellierung stark 11. DB-Entwurf stark Mit diesen Aufgaben ergeben sich im Einzelnen für die Schritte die folgenden Aufgaben: 1. Lösungsentwicklung: Es wird eine software-technologische Analyse durchgeführt, die zu einer Spezifikation der Anforderungen im Rahmen eines Pflichtenhefts führt und die klärt, inwieweit durch eine Warenhausanwendung die derzeitige Situation verbessert wird. 2. Datenidentifikation: Es werden die benötigten Daten und darauf aufbauend die benötigten Datenbestände identifiziert. 3. Daten-Sourcing: Es werden die Charakteristika der benötigten Datenbestände erfaßt und mit den Anforderungen verglichen. 4. Validierung der Integrität: Es wird die Semantik der ausgewählten Datenbestände erfaßt (Identifikation, Population (Formate, Vollständigkeit, ...), Verletzungen, Pflegeroutinen, etc.). 5. Synchronisation: Die Datenbestände müssen für das Warenhaus im Rahmen einer Synchronisationsphase vereinheitlicht oder integriert werden oder zumindest in ihren Beziehungen beschrieben werden. Es werden referentielle Integrität (Benutzungsabhängigkeiten, Standardisierung der Population, Standardisierung der Beziehungen der Datenbanken untereinander) erfaßt, Zeitbeschränkungen (Zeit der Gewinnung der Daten, letzte schreibende Transaktionen auf den Daten, Erfrischungen der Daten), Zugänge zur Korrektur der Verletzungen der Integrität und Routinen, die zur Benutzung der Datenbestände erforderlich sind. Außerdem werden die Identifikation auf Redundanz geprüft, entsprechende Hierarchien entwickelt, etc. 6. Entwicklung f. Rückkopplung: Für die Entwicklung von Durchgriffsmöglichkeiten stehen eine Reihe von Mechanismen aus der Technologie reaktiver Systeme zur Verfügung. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 313 7. Speicherarchitektur: Es existieren eine Reihe von unterschiedlichen Herangehensweisen für die Speicherarchitektur wie: • Tabellen der relationalen Technologie, • Verweistabellen auf die Quellensysteme, • kodierte Tabellen, • assoziative Verbundtabellen (bridge/cross-reference table), • gemischte Tabellen, • Teilmengen-Tabellen, • aggregierte Tabellen (summarization roll-up tables) und • historische Tabellen. Dabei muß für eine effiziente Hauptspeicherverwaltung eine Lösung wie im Falle großer Datenbanken gefunden werden. 8. Transformationsabbildungen: Nun kann die eigentliche Integrationsaufgabe in Angriff genommen werden. Die Datenstrukturen werden analysiert und die Transformationsabbildungen werden entwickelt. • Wie im Datenbankentwurf werden zuerst die Identifikationsprobleme gelöst. • Es wird ein Abhängigkeitsgraph der Sourcedaten und ihrer Funktionen erstellt. • Es wird eine Liste der Transformations- und Reinigungsschritte erstellt. • Darauf aufbauend werden die Transformationsprogramme entwickelt, die auch eine Reinigung der Daten, ein Mischen der Daten, ein Restrukturieren der Daten je nach Bedarf mit einschließen. • Es wird schrittweise ein Datenwörterbuch erstellt, das auch Synonyme, Homonyme und Namenskonzepte mit erfaßt. Darauf aufbauend wird ein Speicherplan erstellt. • Für die Transformationen wird ein Diagramm erstellt. 9. Qualitätsprüfung: Dazu sind eine Reihe von Daten zu erfassen. • Benutzungsschätzungen: Es werden Schätzungen für die Anzahl der Benutzer, für die Häufigkeit und Art ihrer Zugriffe, für den Arbeitsraum, den die Benutzer benötigen, für die Plattformen der Benutzer und für die Performanzanforderungen entwickelt. • Umfang der Daten: Umfangreiche Datenbanken sind ein Gewinn für das Warenhaus, können aber aufgrund ihrer Performanzanforderungen die Rechenpotenzen von Superrechnern erfordern. Es kann notwendig werden, leistungstarke symmetrische Multiprozessorsysteme (SMP) oder massiv-parallele Systeme (MPP) einzusetzen. Sowohl zur Aufbereitung der Sourcedaten als auch zur Bearbeitung von Anforderungen kann bereits eine solche Datenmenge anfallen, die SMP oder MPP benötigt. • Zugriffsraten und Prozeßabschätzungen: Darauf basierend werden die Prozeßanforderungen abgeleitet. Auf der Grundlage dieser Daten kann analog zu Methoden des Benchmarkings eine Bewertung der Qualität erfolgen. Abschließend sollte ein Vergleich mit den Möglichkeiten anderer Systemlösungen erfolgen. 10. DB-Modellierung: Der Datenbank-Modellierungsprozeß entspricht dem Vorgehen für ‘normale’ Datenbanken. • Es werden alle Datenstrukturen der Sourcedaten und der Warenhausdaten erfaßt. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 314 • Es werden die Prozesse zur Transformation und die Prozesse für die Auswertung der Daten erfaßt. • Es werden die Drehbücher für die Benutzung erstellt. • Es werden die Sichten der Benutzer und die Prozesse mit den Dialogen abgeglichen. Damit entsteht ein komplexes Vorschema der Daten, Prozesse, Handlungen und Sichten auf das Warenhaus. 11. DB-Entwurf: Nunmehr kann auch der konzeptionelle, logische und physische Entwurf angeschlossen werden. Das Datenbank-Warenhaus verwendet auch die Lösung eines alten Integrationsproblemes: Anstatt für eine Anwendung µ ¶ n 2 verschiedene Schnittstellen zwischen den Anwendungen zu entwickeln, wird eine lose Integration - in unserem Fall eine Reduktion und anschließende Integration - vorgenommen. 2.12 Modellierung von Sicherheitsmechanismen 2.12.1 Design-By-Units und lokale komponentenbasierte Sicherung Im Design-by-units-Zugang unterscheiden wir zwischen dem Retrieval und Manipulationsanforderungen. die folgende Skizze schematisiert den Zugang. Informationseinheiten Container Manipulationsanforderungen Im erweiterten ER-Modell können spezifische Sicherheitsarchitekturen ebenso spezifiziert werden: Autorisierte Operation ( < Akteur > < Sicht > < zugelassene Operationen > ) < Korrektheitsbedingung > Diese Form ist relativ einfach als Sicherheitkonzept sowohl durch Sichten als auch durch Funktionalität unterstützbar. 2.12.2 Sicherheitsarchitekturen Sichten zur Unterstützung von Sicherheit. Im allgemeinen wird oft eine dreistufige Architektur bevorzugt: Basisrelationen Sicherheitssichten Sicherheitssichten für Retrieval Sicherheitssichten für Manipulationsanforderungen Arbeitsssichten Arbeitssichten für das Retrieval Arbbeitssichtensichten für Manipulationsanforderungen Benutzergruppen-orientierte Sichten sind die direkten Arbeitssichten der Benutzer. Retrieval-Sichten Sichten für Manipulationsanforderungen IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 315 Nutzung der Daten-Warenhaus-Architektur als Sicherheitskonzept. LEHRBRIEF Modellierung und Konzipierung von Sicherheitskonzepten. Syntax: Pragmatik: Schwierigkeiten und Fallen: Schritte 1. Abschottung durch Sichten Mit diesem Hintergrund können wir folgende Schritte entwerfen: Zugriff erfolgt nur über die Sichten: Die gesamte Dialogstruktur sollte nur auf Sichten aufsetzen. Ein direkter Zugriff auf die Datenstrukturen sollte vermieden werden. Deshalb werden die Sichten direkt mit den einzelnen Dialogschritten gekoppelt. Da Sichten auch zur Herstellung der Unabhängigkeit von Daten dienen, sollte die gesamte Oberfläche auf Sichten abgestellt werden. Damit werden die folgenden Ziele verwirklicht: Vereinfachter Zugriff für den Endbenutzer. Durch Sichten können auch komplexere Manipulations- bzw. Zugriffsoperationen modularisiert dargestellt werden. Damit wird für den Endbenutzer die Arbeit mit der Datenbank erleichtert. Verbesserung der Produktivität für den Benutzer und den Programmierer. Durch die Einführung von Sichten werden auch von verschiedenen Dialogen benötigte Proozesse im Rahmen einer Lokalisierungsabstraktion miteinander wiederbenutzbar verwoben. Benutzung von Synonymen für Typen und abgeleitete Daten. Synonyme können die Transparenz der unterlegten Datenbankstrukturen und die Anwendungsbezogenheit von Namen verbessern. Zugriffs- und Authorisierungsbeschränkungen. Der Zugriff und die Authorisierung wird an die spezifische Sicht angepaßt und erlaubt wie bei abstrakten Datentypen nur den Zugriff auf diese Sichten, nicht aber auf die anderen Sichten. Integration bzw. Kombination über zentrale Sichten: Durch zentrale Sichten kann die Behandlung der unterschiedlichen Aspekte der Anwendung, deren Behandlung die Sichten dienen, vereinheitlicht und mit einem einfacheren Prozeßmanagement versehen werden. Damit entsteht eine Abbildungsstruktur zwischen verschiedenen Sichten wie im Bild 98. Da die zentralen Sichten auch an das integrierte Schema angepaßt werden können, haben diese Sichten keine update-Beschränkungen. Sie sind damit für die Programmierung einfacher zu handhaben. Zugriffssichten für den read-only-Zugriff: Sichten können eine komplexe Syntax, die eine Vielzahl von Fällen wiederspiegeln muß, vermeiden. Solche Sichten können auch benutzt werden, um den Zugriff einzuschränken. Integritätspflege über zentrale Sichten: Statt die Integritätspflge nur über das zentrale Schema zu definieren, können die zentralen Sichten aufgrund der Nichtbeschänkung des Zugriffs und der update-Operationen eher für die Pflegeoperationen benutzt werden. IS ADD CAU zu Kiel, IfI, ISE, β Beantragungssicht Genehmigungssicht1 2. Strukturierung von IS Genehmigungssicht2 Abrechnungssicht ab SS 2012 VerGenehmiGenehmigungsgungsbuchungssicht3 sicht4 sicht1 R Zentrale ? ª 316 Verrechnungssicht1 R Zentrale ? ª Beantragungssicht Verbuchungssicht ... Verrechnungssicht4 R Zentrale ? ª Verrechnungssicht ¼ z U ? Integriertes Datenbankschema zum Dienstreiseantrag Abbildung 80: Sichtenintegration in unserer Anwendung Einbettung der Sichten in die Dokumentation: Zur Sichtendefinition gehört neben der Strukturdefinition, der Verbindung zu den Dialogen und der Definition der Beziehung zu Prozessen auch eine Information über den Entwerfer bzw. Besitzer, Synonymen, zum Status (wie z.B. Test, Version, Kopie), zur Verbindung mit den zentralen Sichten, zur Pflege und Monitoring. Definition von Sicherungsmechanismen über zentrale Sichten: Sichten sind günstig, um den Zugriff zu beschränken, aber sie sind nicht ausreichend, um die Datensicherheit zu gewährleisten. Meist kann man die Sicherheit auch durch die zentralen Sichten pflegen. Oft ist dies aber nicht ausreichend. Deshalb kann man den zentralen Sichten auch Sicherheitssichten zur Gewährleistung der Sicherheit beiordnen. Damit ergibt sich eine Hierarchie in den Sichten wie in Bild 99. Benutzersichten zur Vereinfachung des Zugriffs Beantragungssicht Genehmigungssicht1 ? ? Zugriffsbeschr. Genehmigungssicht1 Zugriffsbeschr. Beantragungssicht Sicherheitssichten zur Kontrolle des Zugriffs Zentrale Sichten zur Darstellung der Unabhängigkeit Integriertes Schema zur Darstellung der Speicherung Genehmigungssicht2 ... ? Zugriffsbeschr. Genehmigungssicht2 ? ª Zentrale Beantragungssicht ... R ... z Integriertes Datenbankschema zum Dienstreiseantrag Abbildung 81: Ausschnitt aus der Sichtenarchitektur mit Sicherheitssichten Damit sind die Sichten der Blätter nach wie vor sichtbar für jedermann. Zugleich wird damit aber der weitere unbefugte Einblick verwehrt. Damit kann für die Sicherheitssichten die Anbindung an die Aktoren und deren rollen erfolgen. Nach außen ist aber durch ein GRANT ALL ON benutzersichten TO PUBLIC die Sicht einheitlich frei. Definition einer Authorisierungstabelle zur Kontrolle des Zugriffs: Die Authorisierungstabelle stellt den IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 317 Zusammenhang zwischen den Sichten, einzelnen Dialogschritten und den Aktoren her. Aktoren können ihre Rechte bedingt oder bedingungslos weitergeben. Bevorzugung der Standardprozeduren zur Integritätspflege: Die durch ein DBMS vorgegebenen updateKommandos schließen eine Pflege der Integrität nicht ein. Deshalb sollten diese Kommandos zugunsten der bereits entworfenen Routinen zur Integritätspflege verboten werden. Die Routinen zur Integritätspflege können jedoch der Definition der Sicherheitsanforderungen zuwider laufen. Deshalb ist die Konsistenz dieser beiden unterschiedlichen Anforderungen zu überprüfen. Unterbindung des Zugriffs auf physische Strukturen: Die Veränderung der Standardprozeduren zur Integritätspflege sollte den Systemadminstratoren vorbehalten bleiben. Haben Benutzer eigene Mechanismen entwickelt, dann sollten die neuen Pflegemechanismen diesen Benutzer vorbehalten bleiben. Einige DBMS erlauben nicht die Beschränkung der Rechte auf einen Zugriff von der Beschränkung der Rechte auf Spaltennamen zu unterscheiden. Damit ist auch einem Benutzer die Veränderung der Tabellenstruktur möglich. Diese Rechte sollten speziell eingeschränkt werden. Pragmatik: Zugriff erfolgt nur über die Sichten: Durch eine Vielzahl von Sichten, unterschiedliche Zugriffsmechanismen etc. können jedoch auch eine Reihe von Problemen entstehen. Insbesondere ist die Vielfalt der Sichten zu verwalten, wodurch ein overhead entsteht. Wildwuchs von Sichten: Werden insbesondere Dialoge verfeinert, die Rechte und Rollen der Benutzer verändert, dann entstehen oft weitere Sichten, die einer Verwaltung durch das System bedürfen. Wildwuchs von Namen: Durch eine Vielfalt von Namen kann auch der semantische Zusammenhang zwischen diesen Namen verloren gehen. Dies kann durch die Benutzung von guidelines und Synonymwörterbüchern vermieden werden. Wildwuchs von Programmen: Der Zusammenhang zwischen den Sichten muß sich auch in einem Zusammenhang zwischen den Sichten wiederspiegeln. Die einfachste Methode, Wildwuchs zu vermeiden, ist ein Verbot der Benutzung kombinierter Sichten. Funktionelle Beschränkungen im Zusammenhang mit speziellen Sichten: Da insbesondere Updates über Sichten kritisch sind, werden verschiedene Operationen über den Sichten nicht erlaubt sein. Dieser Umstand kann für die einzelnen Benutzer nicht mehr nachvollziehbar sein. Integration bzw. Kombination über zentrale Sichten: Die Kombinationsregeln und die Integrationsregeln sollten im Rahmen der Entwurfsdokumentation explizit niedergelegt werden. Zugriffssichten für den read-only-Zugriff: Durch ein striktes ‘hiding’ wird evt. auch zuviel an Information dem Benutzer vorenthalten. Deshalb ist auch in diesem Schritt die Dialogmenge mit in die Betrachtung einzubeziehen. Integritätspflege über zentrale Sichten: Durch eine sichtenorientierte Integritätspflege können die Pflegemechanismen auch in modularer Form entwickelt werden. Damit sind Überschneidungen, die auch Zyklen hervorrufen können, eher zu vermeiden. Einbettung der Sichten in die Beschreibung: Bezeichner sollten für den Benutzer einfach mit dem Inhalt verknüpfbar sein. Zentrale Sichten können im Namen bereits auch einen Hinweis auf den Integrationsmechanismus geben. Im integrierten Schema kann die Wahl der Bezeichner bereits anhand der gewünschten Transformation in das logische Modell erfolgen. Definition von Sicherungsmechanismen über zentralen Sichten: Die Trennung von Zugriff und Sicherung bringt einen overhead mit sich, denn man in die operationale Optimierung mit einbeziehen muß. In unserem Beispiel soollten jedoch unbefugten Personen, die nicht im Genehmigungsprozeß bzw. Verbuchungsprozeß einbezogen und nicht Besitzer des entsprechenden Dokumentes sind, der Zugriff verwehrt bleiben. IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 318 Definition einer Authorisierungstabelle zur Kontrolle des Zugriffs: Oft wird empfohlen, jedem Aktor für jede seiner Rollen eine spezifische Sicht zuzuordnen. Damit wird der Entwurf übermäßig komplex. Die Programme sind dann meist nicht mehr zu pflegen. Aus diesem Grund ist eine Authorisierungstabelle meist der sinnvollere Ausweg. Dann kann durch einen Verbund der Authorisierungstabelle mit den zentralen Sichten die jeweilige Arbeitssicht direkt gewonnen werden. Wird diese Darstellung zu komplex, dann kann man durch Techniken der Denormalisierung einfachere Sichten gewinnen, wobei in diesem Fall die Redundanz erplizit gepflegt werden muß. Ist eine direkte Compilierung der Sicherheitsroutinen in die Programme möglich, dann kann auch dieser Weg gewählt werden. Damit erhalten wir die folgenden Pragmatiken. Sicherheitsanforderungen Read-Zugriff auf alle Objekte und Komponenten Read-Zugriff auf alle Objekte und einige Komponenten Read-Zugriff auf einige Objekte und alle Komponenten Benutzung von Sichten Zentrale Sichten Sicherheitssichten Sicherheitsichten GRANT Kommandos GRANT Read-Zugriff ON Sicht TO alle Benutzer bzw. Gruppen GRANT Read-Zugriff ON Sicht TO alle Benutzer bzw. Gruppen GRANT Read-Zugriff ON Sicht TO alle Benutzer bzw. Gruppen oder Zentrale Sichten mit Authorisierungstabelle mit Read-Zugriff auf einige Objekte und einige Komponenten Authorisierungssicht über Verbund und SELECT WHERE Attr = USER bzw. Authorisierungssicht über Subquery und SELECT WHERE Attr = USER bzw. Duplikatspalten in einer Tabelle mit Authorisier.-sicht SELECT WHERE Attr = USER bzw. Authorisierungsprogramm mit Inhalt SELECT WHERE ... Kombination der vorherigen Zugänge GRANT Read-Zugriff ON Authorisierungssicht TO PUBLIC oder GRANT execution ON Authorisierungsprogramm TO PUBLIC Bevorzugung der Standardprozeduren zur Integritätspflege: Die Integritätspflege kann auch durch benutzer umgangen werden. Dies trifft insbesondere auf Makros, die zur Pflege der Integrität entwickelt wurden, zu. Anstelle dieser kann man durch entsprechende ‘exit’s oder entsprechenden Programmkode die Umgehung verhindern. Ein pragmatischer Zugang wird in der folgenden Tabelle vorgestellt. IS ADD CAU zu Kiel, IfI, ISE, β Sicherh.-anford. Update-Zugriff auf alle Objekte und alle Komponenten 2. Strukturierung von IS Benutzung von Sichten Zentrale Sichten ab SS 2012 Normale Update-Operationen versus Standard-Prozeduren mit DML-Kommandos mit Standard-Pflege-Prozeduren Update-Zugriff auf alle Objekte und einige Komponenten Update-Zugriff auf einige Objekte und alle Komponenten Zentrale Sichten über Standard-Pflege-Prozed. (erforderlich hier) Sicherheitssichten mit DML-Kommandos Zentrale Sichten Sicherheitssichten über Standard-Pflege-Prozed. bei Separierung der Routinen für jede Sicht (eine Routine; verschiedene kompilierte Versionen für jede Sicht oder dynamische Bindung der Routinen an die Sichten) mit Standard-Pflege-Prozeduren (erforderlich hier) mit DML-Kommandos mit Standard-Pflege-Programmen Update-Zugriff auf einige Objekte und einige Komponenten Zentrale Sichten, zentrale Authorisierungssichten, Authorisierungssicht zur Verbindung dieser mit DML-Kommandos Zentrale Sichten, zentrale Authori- , sierungssichten, aber DBMS erlaubt keine updates über join/subquery-Sichten beider mit Standard-Pflege-Programmen (erforderlich hier), die (erforderlich hier), die Zugriffsauthorisierung über SELECT WHERE Attr = USER verfizieren mit Standard-Pflege-Programmen 319 GRANT Kommandos GRANT updates ON Sicht TO alle Ben./Gruppen Verbot der DML-updates über Sichten GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen Verbot der DML-updates über Sichten GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen Verbot der DML-Kommandos GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen Verbot der DML-Kommandos GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen Verbot der DML-Kommandos GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen Verbot der DML-Kommandos GRANT execution ON Maintenance-Routinen TO alle Ben./Gruppen Kombination der beiden obigen Verfahren Unterbindung des Zugriffs auf physische Strukturen: Eine einfache Methode zur Kontrolle der Modifikationsmöglichkeiten der Benutzer ist die zentrale Kontrolle der Aufgaben, die eine größere Sicherheitsrelevanz oder auch größere Auswirkungen auf die Arbeit der Datenbanken haben (Neudefinition von Datenbanken, Speicheroptionen, konkurrierender Zugriff zu Tabellen vieler Benutzer). Andere Aufgaben können einem breiteren Benutzerkreis geöffnet sein. Damit sind Benutzer auch für ihre eigene Sicherheit selbst verantwortlich. 2.13 Design by schema pattern nach den beiden Modellierungsfibeln People and organization Products Ordering products IS ADD CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Order delivery and invoicing Work effort Accounting and budgeting Human resources siehe 2000 und 2001 Preprints zu Pattern und Stars IS ADD 320 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 321 2.14 Ein Beispiel 2.14.1 Ein HERM-Beispiel 2.14.2 Die relationale Transformation des Beispieles Annahmen für die Transformation im Vorlesungsbeispiel: • volle ID-Entfaltung • rigides Nullwerte-Management • Separation von Schemadefintion und Integritätsbedingungen • minimale Indexunterstützung (nur Schls̈sel (Primär- und Fremd-)) • minimale Menge von Wertebereichen • vollständige Verflachung • Auflösung aller Cluster-Typen • Event-Nonseparation mit Surrogat-Auflösung • Einbettung von (0,1)-*-Beziehungen • Namensgenerierung mit Präfixerweiterung und vorgegebener Präfixmenge, Trennung durch als Delimiter -- Database Section -- ________________ create database DB1_Vorlesungsbeipiel; -- DBSpace Section -- _______________ -- Table Section -- _____________ create table Studiengang ( ID_Stu char(10) not null, SName char(1) not null, Betreuer char(1) not null, Pruefungsamt char(6) not null, ID_Ins char(10) not null, primary key (ID_Stu)); create table Kurs ( ID_Kur char(10) not null, KursNr char(7) not null, Bezeichnung char(20) not null, primary key (ID_Kur)); create table Raum ( ID_Rau char(10) not null, Gebaeude char(4) not null, Raumnr numeric(5) not null, primary key (ID_Rau)); Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 322 Name(First,Fam,{Title}) Person Adr(Zip,Town,Street(Name,Nr)) Person’s number > K I Supervisor Since Major ¼ Student StudNr j ª s I 3 O Department ¾ - In Speciality Professor > Minor 6 DName Phones{Phone} Primary Investigator Director Member L Result Time(Day,Hour) - Enroll 9 + Lecture Has ? CNu Room Semester Course 6 Year Season Nr CName ? 6 Project Building Prerequis Num Begin End Abbildung 82: HERM-Diagram of the University Database Mod IS IS ADD Web IS PName CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 323 create table Institut ( ID_Ins char(10) not null, RaumSekret char(8) not null, Kostenstelle char(12), Telefon numeric(4) not null, IName char(1) not null, Sprecher char(15) not null, Fakultaet char(1) not null, primary key (ID_Ins)); create table Semester ( ID_Sem char(10) not null, Jahreszeit char(2) not null, Jahr numeric(4) not null, primary key (ID_Sem)); create table Projekt ( ID_Pro char(10) not null, Projektnr char(8) not null, Beschreibung varchar(90) not null, Bezeichnung char(20) not null, primary key (ID_Pro)); create table Student ( ID_Stu char(10) not null, ID_Per char(10) not null, MatrNr char(7) not null, primary key (ID_Stu), unique (ID_Per)); create table Professor ( ID_Pro char(10) not null, ID_Per char(10) not null, Spezialisierung char(1) not null, primary key (ID_Pro), unique (ID_Per)); create table Person ( ID_Per char(10) not null, Geburtsort char(15) not null, Adresse char(40) not null, Personenname char(25) not null, Geburtsdatum date not null, primary key (ID_Per)); create table Betreuer ( ID_Pro char(10) not null, ID_Stu char(10) not null, von date not null, bis date, Thema varchar(30) not null, primary key (ID_Pro, ID_Stu)); create table eingeschrieben in ( E_S_ID_Stu char(10) not null, ID_Stu char(10) not null, von date not null, bis date not null, primary key (ID_Stu, E_S_ID_Stu)); Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 324 create table hoert ( ID_Stu char(10) not null, ID_Vor char(10) not null, Resultat char(10) not null, Note char(2), primary key (ID_Vor, ID_Stu)); create table Projektmitarbeiter ( ID_Pro char(10) not null, ID_Stu char(10) not null, P_P_ID_Pro char(10) not null, primary key (ID_Pro), unique (ID_Stu), unique (P_P_ID_Pro)); create table Vorlesung ( ID_Vor char(10) not null, Wochentag char(2) not null, Block char(2) not null, Nummer char(9) not null, ID_Pro char(10) not null, ID_Sem char(10) not null, ID_Rau char(10) not null, ID_Kur char(10) not null, primary key (ID_Vor)); create table In ( ID_Pro char(10) not null, Seit char(1) not null, ID_Ins char(10) not null, primary key (ID_Pro)); create table wirkt mit ( W_P_ID_Pro char(10) not null, ID_Pro char(10) not null, bis date not null, Kontraktnr char(6) not null, von date not null, primary key (ID_Pro, W_P_ID_Pro)); -- Constraints Section -- ___________________ alter table Studiengang add constraint FKverantwortlich fuer foreign key (ID_Ins) references Institut; --alter table Student add constraint -check(exists(select * from eingeschrieben in -where eingeschrieben in.E_S_ID_Stu = ID_Stu)); alter table Student add constraint FKPer_Stu foreign key (ID_Per) references Person; --alter table Professor add constraint -check(exists(select * from In -where In.ID_Pro = ID_Pro)); Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 325 alter table Professor add constraint FKPer_Pro foreign key (ID_Per) references Person; alter table Betreuer add constraint FKBet_Stu foreign key (ID_Stu) references Student; alter table Betreuer add constraint FKBet_Pro foreign key (ID_Pro) references Professor; alter table eingeschrieben in add constraint FKein_Stu_1 foreign key (ID_Stu) references Studiengang; alter table eingeschrieben in add constraint FKein_Stu foreign key (E_S_ID_Stu) references Student; alter table hoert add constraint FKhoer_Vor foreign key (ID_Vor) references Vorlesung; alter table hoert add constraint FKhoer_Stu foreign key (ID_Stu) references Student; alter table Projektmitarbeiter add constraint FKStu_Pro foreign key (ID_Stu) references Student; alter table Projektmitarbeiter add constraint FKPro_Pro foreign key (P_P_ID_Pro) references Professor; alter table Vorlesung add constraint FKliest foreign key (ID_Pro) references Professor; alter table Vorlesung add constraint FKim foreign key (ID_Sem) references Semester; alter table Vorlesung add constraint FKveranstaltet foreign key (ID_Rau) references Raum; alter table Vorlesung add constraint FKzu foreign key (ID_Kur) references Kurs; alter table In add constraint FKIn_Pro foreign key (ID_Pro) references Professor; alter table In add constraint FKIn_Ins foreign key (ID_Ins) references Institut; Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 326 alter table wirkt mit add constraint FKwir_Pro_1 foreign key (ID_Pro) references Projektmitarbeiter; alter table wirkt mit add constraint FKwir_Pro foreign key (W_P_ID_Pro) references Projekt; -- Index Section -- _____________ create unique index ID on Studiengang (ID_Stu); create index FKverantwortlich fuer on Studiengang (ID_Ins); create unique index ID on Kurs (ID_Kur); create unique index ID on Raum (ID_Rau); create unique index ID on Institut (ID_Ins); create unique index ID on Semester (ID_Sem); create unique index ID on Projekt (ID_Pro); create unique index ID on Student (ID_Stu); create unique index FKPer_Stu on Student (ID_Per); create unique index ID on Professor (ID_Pro); create unique index FKPer_Pro on Professor (ID_Per); create unique index ID on Person (ID_Per); create unique index IDBetreuer on Betreuer (ID_Pro, ID_Stu); create index FKBet_Stu on Betreuer (ID_Stu); create index FKBet_Pro on Betreuer (ID_Pro); create unique index IDeingeschrieben in on eingeschrieben in (ID_Stu, E_S_ID_Stu); Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 327 create index FKein_Stu_1 on eingeschrieben in (ID_Stu); create index FKein_Stu on eingeschrieben in (E_S_ID_Stu); create unique index IDhoert on hoert (ID_Vor, ID_Stu); create index FKhoer_Vor on hoert (ID_Vor); create index FKhoer_Stu on hoert (ID_Stu); create unique index ID on Projektmitarbeiter (ID_Pro); create unique index FKStu_Pro on Projektmitarbeiter (ID_Stu); create unique index FKPro_Pro on Projektmitarbeiter (P_P_ID_Pro); create unique index ID on Vorlesung (ID_Vor); create index FKliest on Vorlesung (ID_Pro); create index FKim on Vorlesung (ID_Sem); create index FKveranstaltet on Vorlesung (ID_Rau); create index FKzu on Vorlesung (ID_Kur); create unique index FKIn_Pro on In (ID_Pro); create index FKIn_Ins on In (ID_Ins); create unique index IDwirkt mit on wirkt mit (ID_Pro, W_P_ID_Pro); create index FKwir_Pro_1 on wirkt mit (ID_Pro); create index FKwir_Pro on wirkt mit (W_P_ID_Pro); Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 328 2.15 Schrittweise Modellierung im Co-Design an einem Beispiel Angaben zur Reise Reisedaten Reiseablaufdaten Kostenüberweisung Kostenabrechnungsdaten Reisekostenanerkennung Finanzdaten Abbildung 83: Die Grobstruktur der Anwendung Storyschritt Vertreter ? 6 ? Akteur ¾ Rolle - Sicht Abbildung 84: Das Akteurmodell für die Geschäftsprozeßschicht CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 329 Überweisung Verbuchung 6 Genehmigung Abrechnung (1,1) abgerechnet durch (1,n) ? Antragsteller (1,n) ¾ (1,1) - beantragt Dienstreise Genehmigung Reiseverlauf Abbildung 85: Grobdarstellung der Struktur der Anwendung Abrechnungssicht Beantragungssicht Sicht für allgemeine Verbuchung Abbildung 86: Sichtenskizze für unsere Anwendung Beantragung - Ausfüllen - Befürwortung - Genehmigung - Genehmigung der Abrechnung - Kontrolle der Abrechnung, Berechnung der Kostensätze - Genehmigung der Verbuchung - Zuordnung zum Abrechnungsmodus * j Überweisung Kassenbereitstellung Rückforderung ? Abrechnung ? Verbuchung ? Verrechnung Abbildung 87: Szenarien für Behandlung des Dienstreiseantrages (Normalverfahren) CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Antragsteller - Beantragung 330 Vorges. des Antragst. - Ausfüllen Befürwortung Dekan - Genehmigung - Genehmigung der Verbuchung ? Antragsteller Abrechnung ? - Verbuchung Sachbearb. X Dekan Genehmigung der Abrechnung - Sachbearb. X ? - Verrechnung Zuordnung zum Abrechnungsmodus * j Kontrolle der Abrechnung, Berechnung der Kostensätze Sachbearb. Y Sachbearb. X Kassiererin Kassenbereitstellung Rückforderung Sachbearb. X Überweisung Abbildung 88: Themen und Akteuren für Behandlung des Dienstreiseantrages (Normalverfahren) Akteur ¾ Rolle - Dialogschritte ¾ zugeordnete 6 ? Vertreter ? -Sichtenelemente 6 ? Rechte berechnet durch Abbildung ? ¾ Handlungsschritte ? In Abbildung 89: Das Akteurmodell für die Aktionsschicht - Skelettelement CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 Beantragungssicht Beantragung - 331 Genehmigungssicht 1 - Ausfüllen Genehmigungssicht 2 - Befürwortung Genehmigung ? Abrechnungssicht Abrechnung ? Verbuchungssicht 1 Genehmigungssicht 3 Verbuchung Genehmigung der Abrechnung - - Verrechnungssicht 1 ? Verrechnung * j Zuordnung zum Abrechnungsmodus - Genehmigungssicht 4 Kontrolle der Abrechnung, Berechnung der Kostensätze - Genehmigung der Verbuchung Verrechnungssicht 2 Verrechnungssicht 3 Kassenbereitstellung Verrechnungssicht 4 Rückforderung Überweisung Abbildung 90: Skelett für den Dienstreiseantrag (Normalverfahren) ≈ (1, 10) 200 (1, n) 500 ¾ 2000 Antragsteller beantragt ≈ (1, 1) (0, 1) ¾ ≈ (1, 2) (1, 30) (1, 50) ? Reise wird abgerechnet (Vorschlag) ? 1000 5000 30000 100 Verbuchung 200 300 Abbildung 91: Erster Entwurf für die Beantragungssicht System Historie Antragstellerdaten Optionen Fenster Reisedaten Verbuchungsdaten Name Institut Vorname Lehrstuhl Wohnort Dienstort Datum Unterschrift Vergüt.-stufe f1 (name,vorname) Reisek.-stufe f2 (name,vorname) Abbildung 92: Dialogobjekt zur Darstellung von Antragstellerdaten für Lehrstuhlanträge CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS System Historie Antragstellerdaten ab SS 2012 332 Optionen Fenster Verbuchungsdaten Reisedaten Name Institut Vorname Lehrstuhl Zus.hang zu Privatreise Beförd.-mittel Poliz. Kennz. bei Privat PkW Ziel Dauer - von Dauer - bis Zweck Weitere Teilnehmer Abbildung 93: Dialogobjekt zur Darstellung von Reisedaten für Anträge aus Lehrstuhl 0 30 3000 Auto 6 PolKZ ≈ (1,1) (1,2) Name zugeordnet zu Benutzt Name ≈ (1,1) (1,4) ≈ (1,1) (0,4) ? 6 Wohnort≈ (1,1) ≈ (10,40) (0,n) Bis Von Zweck À 200 500 2000 Dienstort ¾≈ (0,1) beantragt (0,2) Vorschuß(Höhe,Auszahlart) q Reiseziele AHatV Art Ort Land 0 1000 ∞ ¾ ≈ (1,1) (1,3) Mögliche Reise - ≈ (0,n) (0,n) Fakultät Nr (1,30) (0,4) ≈ (1,200) (1,n) - ≈ (2,5) (0,n) In Kostenstelle Ver- 100 200 buchung 300 AntrDatum Privatzweck≈ (1,2) Titel ¾≈ (1,10) (1,n) ≈ (1,1) Lehr- 20 90 ¾ stuhl 150 (1,2) 6 Vorname Antragsteller - ≈ (20,80) (0,n) Beförderungsmittel 1 3 8 Art ? Ver1 gütungs- 3 Reisekostenstufe gruppe 4 Abbildung 94: Beantragung einer Dienstreise mit Verbuchung über den Lehrstuhl 1 5 5 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS 6 PolKZ ≈ (1,1) (1,2) Name zugeordnet zu Benutzt ≈ (1,1) (1,4) ≈ (1,1) (0,4) ? 6 200 500 2000 Dienstort ¾≈ (0,1) beantragt (0,2) Vorschuß(Höhe,Auszahlart) q Reiseziele AHatV Art Ort Land 0 1000 ∞ ¾≈ (1,1) (1,3) Mögliche Beförderungsmittel - ≈ (0,n) (0,n) Fakultät Nr (1,30) (0,4) ≈ (1,200) (1,n) - ≈ (2,5) (0,n) In Kostenstelle Ver- 100 200 buchung 300 AntrDatum Privatzweck≈ (1,2) Titel ¾≈ (1,10) (1,n) ≈ (1,1) Lehr- 20 90 ¾ stuhl 150 (1,2) ≈ (10,40) (0,n) Bis Von Zweck À Antragsteller - ≈ (20,80) (0,n) 6 Vorname Wohnort≈ (1,1) 333 0 30 3000 Auto Name ab SS 2012 Beförderungsmittel 1 3 8 Art ? Ver1 gütungs- 3 Reisekostenstufe gruppe 4 Abbildung 95: Beantragung einer Dienstreise mit Verbuchung über den Lehrstuhl 1 5 5 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS 6 PolKZ ≈ (1,1) (1,2) Name zugeordnet zu Benutzt ≈ (1,1) (1,4) ≈ (1,1) (0,4) Vorname ? Wohnort≈ (1,1) 200 500 2000 ≈ (1,1) Lehr- 20 90 ¾ stuhl 150 (1,2) - ≈ (20,80) (0,n) ¾≈ (1,10) (1,n) Dienstort ¾ beantragt ≈ (0,1) (0,2) AntrDatum Privatzweck≈ (1,2) q Reiseziele AHatV Art Ort Land 0 1000 ∞ ¾≈ (1,1) (1,3) Mögliche Beförderungsmittel - ≈ (0,n) (0,n) Fakultät 6 ≈ (10,40) (0,n) Vorschuß (Höhe,Auszahlart) (1,30) (0,4) ≈ (1,200) (1,n) - ≈ (2,5) (0,n) In Kostenstelle Bis Von Zweck À Antragsteller 6 334 0 30 3000 Auto Name ab SS 2012 Beförderungsmittel 1 3 8 Art ? Ver1 gütungs- 3 Reisekostenstufe gruppe 4 Abbildung 96: Beantragung einer Dienstreise mit Verbuchung über die Fakultät Nr Ver- 100 200 buchung 300 Titel 1 5 5 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 335 -LehrstGenehm DekanBestät DekGenehm ? ¾ Person 6 Antragsteller¾ 6 beantragt y¾ ? LBefürw LVerbuch 6 ? ArbeitetAn ? Reise ? LehrstFonds FVerbuch * ? - Lehrstuhl ¾ leitet LHatFond 6 FakVonL - DekanVonF Fakultät ? ¾ FakHatFond - FakFonds Abbildung 97: Genehmigungen und Bestätigungen der Anträge durch Lehrstuhl bzw. Dekanat - erste Sichten Beantragungssicht Genehmigungssicht1 R Genehmigungssicht2 ? ª Zentrale Beantragungssicht Abrechnungssicht Verbuchungssicht1 Genehmigungssicht3 Genehmigungssicht4 Verrechnungssicht1 R ? ª Zentrale Verbuchungssicht z U ? Integriertes Datenbankschema zum Dienstreiseantrag Abbildung 98: Sichtenintegration in unserer Anwendung ... R Verrechnungssicht4 ? ª Zentrale Verrechnungssicht ¼ CAU zu Kiel, IfI, ISE, β Benutzersichten zur Vereinfachung des Zugriffs 2. Strukturierung von IS Beantragungssicht Zentrale Sichten zur Darstellung der Unabhängigkeit Integriertes Schema zur Darstellung der Speicherung ? R ? ... ? Zugriffsbeschr. Genehmigungssicht1 Zugriffsbeschr. Beantragungssicht 336 Genehmigungssicht2 Genehmigungssicht1 ? Sicherheitssichten zur Kontrolle des Zugriffs ab SS 2012 Zugriffsbeschr. Genehmigungssicht2 ... ª Zentrale Beantragungssicht ... z Integriertes Datenbankschema zum Dienstreiseantrag Abbildung 99: Ausschnitt aus der Sichtenarchitektur mit Sicherheitssichten 2.15.1 HERM und OLAP bzw. Data Warehouses siehe Bild 103, 104 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 337 V1 V2 Reisen{(Ort, Land, Zweck, Von, Bis) } Reisezeitraum (Von, Bis) Reisende{ (Name, Vorname) } Dienstreisender Name Vorname Dienstreisen Ort Land Zweck V3 Dienstreisender ¾ Von führt durch - Bis Name Vorname Ort Dienstreise Land Zweck Abbildung 100: Zwei verschiedene Sichten auf eine Dienstreise und eine integrierte Sicht Vergütungsgruppe Auto 6 6 Benutzt Person 6 AHatV ? j Antragsteller ¾ ¾ 6 - LehrstGenehm DekanBestät DekGenehm ? beantragt ¾ y ? LBefürw LVerbuch 6 ? Mögliche Reise ArbeitetAn ? ? LehrstFonds FVerbuch * R ? leitet - Lehrstuhl Reiseziele ¾ LHatFond ^ 6 FakVonL Beförderungsmittel ? Fakultät DekanVonF - ¾ FakHatFond - FakFonds Abbildung 101: Integration der Beantragungs- und Genehmigungssichten bei Verbuchung über den Lehrstuhl bzw. die Fakultät CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS z j Hauptmenü ab SS 2012 338 Antragsteller * : Reisedaten - Verbuchungsvorschlag z Befürwortung j Genehmigung Beantragungsmenü ... ... Abbildung 102: Die Organisation der Menüs für die Beantragung Person OtherData Person POBox Person Postal q 1 Person EmailURL ? Person Basic Data 6 Person SMTP ) i Person PhoneFax Abbildung 103: HERM Representation of the Star Type Person C UBE A: PARTICIPANTS PER L ECTURE AND DAY Lectures ¾ HeldOn - C UBE B: U SAGE OF ROOMS PER DAY Day Room ¾ #Participants Usage - Day #TotalUsage S CHEDULING S CHEMA ON U NIVERSITY AND E VENING L ECTURES Room# Room# University ¾ Lecture Room IsA - Room ¾ IsA 6 ? University ¾ Lectures HeldOn #Participants General Purpose Room - Working Day 6 IsA Room# 6 - Day ¾ Organized On #Participants Abbildung 104: Scheduling Views on Lectures Given in a University Title - Evening Lectures CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS 2.16 Beispiele aus dem HERM-Buch . ab SS 2012 339 CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 340 Literatur [AFT92] S. S. Al-Fedaghi and B. Thalheim. The key concept in database models. Unpublished manuscript, 1992. [AHV95] S. Abiteboul, R. Hull, and V. Vianu. Foundations of databases. Addison-Wesley, Reading, MA, 1995. [All84] J.F. Allen. Towards a general theory of action and time. Artificial intelligence, (6):123–154, 1984. [AT93] P. Atzeni and R. Torlone. A metamodel approach for the management of multiple models and the translation of schemes. Information Systems, 18(6):349–362, 1993. [BDK92] P. Buneman, S. Davidson, and A. Kosky. Theoretical aspects of schema merging. In A. Pirotte, C. Delobel, and G. Gottlob, editors, Proc. 3rd Int. Conf. on Extending Database Technology - EDBT’92, LNCS 580, pages 152–167, Vienna, 1992. Springer, Berlin/New York. [Bis95] J. Biskup. Foundations of information systems. Vieweg, Wiesbaden, 1995. In German. [BM97] E. Börger, , and L. Mearelli. Integrating ASM into the software development life cycle. J. Universal Computer Science, 3(5):603–665, 1997. [BS00] E. Börger and W. Schulte. Architecture Design and Validation Methods, chapter Modular design for the Java virtual machine architecture, pages 297–357. Springer, Berlin, 2000. [BS03] E. Börger and R. Stärk. Abstract state machines - A method for high-level system design and analysis. Springer, Berlin, 2003. [BT92] C. Beeri and B. Thalheim. Identification is well-founded in object-oriented databases. Manuscript, 1992. [BT95] C. Beeri and B. Thalheim. Can I see your identification, please? - Identification is well-founded in object-oriented databases. Manuscript, Cottbus/Jerusalem, 1995. [BT99] C. Beeri and B. Thalheim. Identification as a primitive of database models. In Proc. FoMLaDO’98, pages 19–36. Kluwer, London, 1999. [Cad76] J.-M. Cadiou. On semantic issues in the relational model of data. In A. W. Mazurkiewicz, editor, Proc. 5th Symp. on Mathematical Foundations of Computer Science - MFCS’76, LNCS 45, pages 23–38, Gdańsk, 1976. Springer, Berlin. [CCN80] P. P. Chen, I. Chung, and F. Nakamura. Entity-relationship normal forms. unpublished manuscript, 1980. [Cel95] J. Celko. Joe Celko’s SQL for smarties - Advanced SQL programming. Morgan Kaufmann, San Francisco, 1995. [CGT90] S. Ceri, G. Gottloba, and L. Tanca. Logic programming and databases. Springer, Heidelberg/New York, 1990. [CL73] C. L. Chang and R. C. T. Lee. Symbolic logic and mechanical theorem proving. Academic Press, New York, 1973. [Das92] S. K. Das. Deductive databases and logic programming. Addison-Wesley, Wokingham, England, 1992. [Dat05] C.J. Date. Database in depth: Relational theory for practitioners. O’Reilly, Sebastopol, 2005. [DMT04] J. Demetrovics, A. Molnar, and B. Thalheim. Graphical and spreadsheet reasoning for sets of functional dependencies. In ER’2004, LNCS 3255, pages 54–66, 2004. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 341 [DMT07] J. Demetrovics, A. Molnar, and B. Thalheim. Graphical axiomatisation of sets of functional dependencies in relational databases. In Alkalmazott Matematikai Lapok, volume 24, pages 223–264. 2007. [EN89] R. Elmasri and S. B. Navathe. Fundamentals of database systems. Benjamin/Cummings, Redwood City, 1989. [EWH85] R. Elmasri, J. Weeldreyer, and A. Hevner. The category concept: An extension to the entity-relationship model. DKE, 1(1):75–116, 1985. [Fag81] R. Fagin. A normal form for relational data bases that is based on domains and keys. ACM TODS, 6(3):387–415, 1981. [Fownn] M. Fowler. Analysemuster. Addison-Wesley, 1999, Bonn. [Gog94] M. Gogolla. An extended entity-relationship model - fundamentals and pragmatics. LNCS 767. Springer, Berlin, 1994. [Gol06] R. Goldblatt. Topoi: The Categorial Analysis of Logic. Dover Books on Mathematics, 2006. [GSS89] G. Gottlob, M. Schrefl, and M. Stumptner. On the interaction between closure and functional dependencies. LNCS 364, pages 187–206, Visegrád, Hungary, Jun 26 - 30, 1989, 1989. Springer, Berlin. [Hal95] T. A. Halpin. Conceptual schema and relational database design. Prentice-Hall, Sydney, 1995. [HL07] S. Hartmann and S. Link. English sentence structures and eer modeling. In APCCM, volume 67 of CRPIT, pages 27–35. Australian Computer Society, 2007. [HLM93] W. L. Hürsch, K.-J. Lieberherr, and S. Mukherjea. Object-oriented schema extension and abstraction. In Proc. 1993 ACM/SIGAPP Symp. on Applied Computing: States of the Art and Practice - SAC’93, pages 54–62, Indianapolis, 1993. ACM Press, New York. [Hoh93] U. Hohenstein. Formale Semantik eines erweiterten Entity-Relationship-Modells. Teubner, Stuttgart, 1993. [KL02] Carsten Kleiner and Udo W. Lipeck. Automatische Erzeugung von XML DTDs aus konzeptuellen Datenbankschemata. Datenbankspektrum, 1(2):14–22, 2002. [Kle07] M. Klettke. Modellierung, Bewertung und Evolution von XML-Dokumentkollektionen. Advanced PhD (Habilitation Thesis), Rostock University, Faculty for Computer Science and Electronics, 2007. [KR97] H.-J. Klein and J. Rasch. Value based identification and functional dependencies for object databases. In Proc. 3rd Basque Int. Workshop on Information Technology, pages 22–34. IEEE Computer Science Press, New York, 1997. [Lei60] G.W. Leibniz. Fragmente zur Logik. Berlin, 1960. [Leo92] M. Leonard. Database design theory. MacMillan, Houndsmills, 1992. [LTN07] S. Lightstone, T. Teorey, and T. Nadeau. Physical database design. Morgan Kaufmann, 2007. [MN83] J. Minker and J.-M. Nicolas. On recursive axioms in deductive databases. Information Systems, 8(1):1– 13, 1983. [Mok97] W. Y. Mok. On keys and normal forms. Information Processing Letters, 62(5):255–258, 1997. [MR92] H. Mannila and K.-J. Räihä. The design of relational databases. Addison-Wesley, Wokingham, England, 1992. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β [MR98] 2. Strukturierung von IS ab SS 2012 342 J. A. Makowsky and E. V. Ravve. Dependency preserving refinements and the fundamental problem of database design. DKE, 24(3):277–312, 1998. Special Issue: ER’96 (ed. B. Thalheim). [PBGG89] J. Paredaens, P. De Bra, M. Gyssens, and D. Van Gucht. The structure of the relational database model. Springer, Berlin, 1989. [PS89] C. Parent and S. Spaccapietra. Complex objects modelling: An entity-relationship approach. In S. Abiteboul, P. C. Fischer, and H.-J. Schek, editors, Nested Relations and Complex Objects, Workshop Theory and Applications of Nested Relations and Complex Objects, LNCS 361, pages 272–296, Darmstadt, 1987, 1989. Springer, Berlin. [RK02] J. Rasch and H.-J. Klein. Database Integrity: Challenges and Solutions, chapter Functional Dependencies for Value Based Identification in Object-Oriented Databases, pages 250–292. Idea Group Publishing, 2002. [Sch77] J. W. Schmidt. Some high level language constructs for data of type relation. ACM TODS, 2(3):247–261, 1977. [Sch94] K.-D. Schewe. The specification of data-intensive application systems. Advanced PhD (Habilitation Thesis), Brandenburg University of Technology at Cottbus, Faculty of Mathematics, Natural Sciences and Computer Science, 1994. [SI91] D.-G. Shin and K. B. Irani. Fragmenting relations horizontally using a knowledge-based approach. IEEE TSE, 17(9):872–883, 1991. [SS83] G. Schlageter and W. Stucky. Datenbanksysteme: Konzepte und Modelle. Teubner, Stuttgart, 1983. [ST93] K.-D. Schewe and B. Thalheim. Fundamental concepts of object oriented databases. Acta Cybernetica, 11(4):49–81, 1993. [ST98] K.-D. Schewe and B. Thalheim. Readings in object-oriented databases. Reprint, BTU-Cottbus, accessible through http://www.is.informatik.uni-kiel.de/∼thalheim, Collection of papers by C. Beeri, K.-D. Schewe, J.-W. Schmidt, D. Stemple, B. Thalheim, I. Wetzel, 1998. [SW05] G. Simsion and G.C. Witt. Data modeling essentials. Morgan Kaufmann, San Francisco, 2005. [Teo89] T. J. Teorey. Database modeling and design: The entity-relationship approach. Morgan Kaufmann, San Mateo, 1989. [Tha85] B. Thalheim. Abhängigkeiten in Relationen. PhD thesis, TU Dresden, 1985. [Tha90] A. Thayse, editor. From modal logic to deductive databases. John Wiley & Sons, vol. 1: 1989, vol. 2: 1990. [Tha91a] B. Thalheim. Dependencies in relational databases. Teubner, Leipzig, 1991. [Tha91b] B. Thalheim. Reconsidering key and identifier definitions in database models. Technical Report CS - 08 - 91, Rostock University, Computer Science Department, 1991. [Tha00] B. Thalheim. Entity-relationship modeling – Foundations of database technology. Springer, Berlin, 2000. [TL82] D. Tsichritzis and F. H. Lochovsky. Data Models. Prentice-Hall, Englewood Cliffs, 1982. [Vin94] M. W. Vincent. The semantic justification for normal forms in relational database design. PhD thesis, Monash University, Melbourne, 1994. Mod IS IS ADD Web IS CAU zu Kiel, IfI, ISE, β 2. Strukturierung von IS ab SS 2012 343 [Vos87] G. Vossen. Datenmodelle, Datenbanksprachen und Datenbank-Management-Systeme. Addison-Wesley, Bonn, 1987. (2nd edition, 1994). [VS93a] M. W. Vincent and B. Srinivasan. A note on relation schemes which are in 3NF but not in BCNF. Information Processing Letters, 48(6):281–283, 1993. [VS93b] M. W. Vincent and B. Srinivasan. Redundancy and the justification for fourth normal form in relational databases. Journal of Foundations of Computer Science, 4(4):355–365, 1993. [Wan98] G. Wanner. Entwurf eines objektorientierten Datenbankmodells für relationale Datenbanksysteme. DISBIS 46. infix-Verlag, 1998. [Wit58] L. Wittgenstein. Philosophical Investigations. Basil Blackwell, Oxford, 1958. [Yan86] C.-C. Yang. Relational Databases. Prentice-Hall, Englewood Cliffs, 1986. [YT89] M. Yaseen and B. Thalheim. Practical database design methodologies. Technical report, Kuwait University, Faculty of Science, 1989. [ZB92] J. Zhou and P. Baumann. Evaluation of complex cardinality constraints. LNCS 645, pages 24–40, Karlsruhe, Germany, Oct. 7 - 9, 1992, 1992. Springer, Berlin. Mod IS IS ADD Web IS