1) Object oriented databases were developed to directly represent complex objects from emerging applications that could not be effectively modeled in the relational model. 2) Embedded SQL allows SQL queries to be embedded within a general purpose programming language to access and manipulate database objects. 3) Object oriented database management systems can be either pure object oriented programming languages with persistence or extend relational databases with object oriented features as defined in the SQL3 standard.
Object Oriented Database Management systems evolved to address the complex objects in emerging applications that could not be effectively represented in the relational model. ODBMSs provide a direct representation of objects to the database, overcoming the impedance mismatch between application data structures and the relational model. ODBMSs take two approaches - persistent object oriented programming languages that add persistence to programming language objects, and object-relational databases that extend relational databases with object features. The Object Database Management Group developed standards including an object model, query language, and language bindings to allow portability between ODBMS systems.
This document provides an introduction to object-oriented databases (OODBMS). It discusses key concepts like objects having an identity, structure and type constructor. An OODBMS allows for complex object structures, encapsulation of operations, inheritance and relationships between objects using object identifiers. It provides advantages over traditional databases for applications requiring complex data types and application-specific operations.
The document discusses various topics related to integrating programming languages with databases, including:
1. Object persistence and serialization allow objects in programming languages to be stored and retrieved from databases.
2. Most applications use an RDBMS for data storage while using an object-oriented language for development, requiring objects to be mapped to database tables.
3. Embedded SQL and database drivers allow programming languages to execute SQL statements and interact with databases, addressing the "impedance mismatch" between object-oriented and relational models.
This document provides an overview of objects, classes, messaging, and the Objective-C runtime system. It discusses key concepts including:
- Objects associate instance variables (data) with methods (operations). Objects encapsulate their data and methods.
- The id type can hold any object regardless of class. Objects are dynamically typed at runtime based on their class.
- Messages in the form [receiver message] are used to send objects messages to invoke their methods. Method names in messages are called selectors.
- Polymorphism and dynamic binding allow objects to respond differently to the same message depending on their class. The runtime looks up the appropriate method implementation at runtime based on the object's class.
This document discusses object-oriented programming (OOP) concepts and languages. It begins with an introduction to programming languages from low-level machine languages to high-level languages. It then covers OOP concepts like classes, objects, encapsulation, inheritance, and polymorphism. It provides examples to illustrate these concepts. The document also discusses advantages and disadvantages of OOP as well as its suitability for complex, modular systems that can benefit from code reuse.
This document discusses concepts related to object-oriented databases. It begins by outlining the objectives of examining object-oriented database design concepts and understanding the transition from relational to object-oriented databases. It then provides background on how object-oriented databases arose from advancements in relational database management systems and how they integrate object-oriented programming concepts. The key aspects of object-oriented databases are described as objects serving as the basic building blocks organized into classes with methods and inheritance. The document also covers object-oriented programming concepts like encapsulation, polymorphism, and abstraction that characterize object-oriented management systems. Examples are provided of object database structures and queries.
This document provides an overview of object-oriented programming (OOP) and Java. It defines key OOP concepts like classes, objects, methods, attributes, inheritance, encapsulation, and polymorphism. It also introduces Java, describing it as a general-purpose, object-oriented programming language that is simple, portable, reliable, secure, and multithreaded. The document notes some of Java's advantages over C++ as well as its potential disadvantage of being slower than compiled languages like C.
Object Oriented Database Management systems evolved to address the complex objects in emerging applications that could not be effectively represented in the relational model. ODBMSs provide a direct representation of objects to the database, overcoming the impedance mismatch between application data structures and the relational model. ODBMSs take two approaches - persistent object oriented programming languages that add persistence to programming language objects, and object-relational databases that extend relational databases with object features. The Object Database Management Group developed standards including an object model, query language, and language bindings to allow portability between ODBMS systems.
This document provides an introduction to object-oriented databases (OODBMS). It discusses key concepts like objects having an identity, structure and type constructor. An OODBMS allows for complex object structures, encapsulation of operations, inheritance and relationships between objects using object identifiers. It provides advantages over traditional databases for applications requiring complex data types and application-specific operations.
The document discusses various topics related to integrating programming languages with databases, including:
1. Object persistence and serialization allow objects in programming languages to be stored and retrieved from databases.
2. Most applications use an RDBMS for data storage while using an object-oriented language for development, requiring objects to be mapped to database tables.
3. Embedded SQL and database drivers allow programming languages to execute SQL statements and interact with databases, addressing the "impedance mismatch" between object-oriented and relational models.
This document provides an overview of objects, classes, messaging, and the Objective-C runtime system. It discusses key concepts including:
- Objects associate instance variables (data) with methods (operations). Objects encapsulate their data and methods.
- The id type can hold any object regardless of class. Objects are dynamically typed at runtime based on their class.
- Messages in the form [receiver message] are used to send objects messages to invoke their methods. Method names in messages are called selectors.
- Polymorphism and dynamic binding allow objects to respond differently to the same message depending on their class. The runtime looks up the appropriate method implementation at runtime based on the object's class.
This document discusses object-oriented programming (OOP) concepts and languages. It begins with an introduction to programming languages from low-level machine languages to high-level languages. It then covers OOP concepts like classes, objects, encapsulation, inheritance, and polymorphism. It provides examples to illustrate these concepts. The document also discusses advantages and disadvantages of OOP as well as its suitability for complex, modular systems that can benefit from code reuse.
This document discusses concepts related to object-oriented databases. It begins by outlining the objectives of examining object-oriented database design concepts and understanding the transition from relational to object-oriented databases. It then provides background on how object-oriented databases arose from advancements in relational database management systems and how they integrate object-oriented programming concepts. The key aspects of object-oriented databases are described as objects serving as the basic building blocks organized into classes with methods and inheritance. The document also covers object-oriented programming concepts like encapsulation, polymorphism, and abstraction that characterize object-oriented management systems. Examples are provided of object database structures and queries.
This document provides an overview of object-oriented programming (OOP) and Java. It defines key OOP concepts like classes, objects, methods, attributes, inheritance, encapsulation, and polymorphism. It also introduces Java, describing it as a general-purpose, object-oriented programming language that is simple, portable, reliable, secure, and multithreaded. The document notes some of Java's advantages over C++ as well as its potential disadvantage of being slower than compiled languages like C.
This document discusses design patterns and their use in software engineering. It defines what design patterns are, how they are categorized, and provides examples of common design patterns. The document also discusses the benefits of using design patterns, such as enabling reuse and improving communication. However, it notes some drawbacks, such as patterns not leading to direct code reuse and the potential for "pattern overload". It concludes with suggestions for effectively integrating and applying patterns.
This document outlines a course on advances in database management systems. The course covers object and object-relational databases over 9 hours. Topics include object database concepts, object extensions to SQL, the ODMG object model and ODL language, object database design, and the OQL query language. The course is taught by Dr. M.K. Jayanthi Kannan at JAIN Deemed To-Be University.
Overview of Object-Oriented Concepts Characteristics by vikas jagtapVikas Jagtap
Object-oriented data base systems are proposed as alternative to relational systems and are aimed at application domains where complex objects play a central role.
The approach is heavily influenced by object-oriented programming languages and can be understood as an attempt to add DBMS functionality to a programming language environment
1. Object oriented programming (OOP) is a programming paradigm that models concepts as "objects" that contain data and functionality.
2. A class defines the format for objects, including attributes like properties and behaviors like methods. Creating an object from a class is like a real-world object.
3. OOP concepts like encapsulation, inheritance, and polymorphism address limitations of procedural programming by combining related data and functions into classes and objects. Encapsulation wraps data and functions together, hiding implementation details.
The document provides an overview of the relational data model and relational algebra. It discusses how the relational model represents data using tables of attribute-value pairs and allows standard logical operations. Key concepts covered include the relational operations of projection, selection, join, union, difference, and divide. SQL is introduced as the standard language for querying and manipulating relational data using these algebraic operations.
This document provides information about a class on Object Oriented Programming (OOP) with C++ taught by Venkatadri.M, an Assistant Professor at the University of Petroleum and Energy Studies in Dehradun, India. The class covers the evolution of OOP, the history of C++, organizing data and functions in OOP, features of object oriented languages, and polymorphism. The instructor uses diagrams, animations and PowerPoint presentations to teach the concepts and address frequently asked questions from students.
#1 The diversity of terminology shows the large spectrum of shapes DSLs can take.
#2 As syntax and development environment matter, DSLs should allow the user to choose the right shape according to their usage or task.
#3 A metamorphic DSL vision is proposed where DSLs can adapt to the most appropriate shape, including transitioning between shapes based on usage or task.
Advanced SQL - Database Access from Programming LanguagesS.Shayan Daneshvar
This document discusses various approaches for accessing databases from programming languages, including dynamic SQL, embedded SQL, standards like ODBC, JDBC, ADO/ADO.NET, and examples of using these standards. It covers connecting to databases, executing queries and stored procedures, handling results, and addressing issues like SQL injection. Other topics mentioned include database metadata, transactions, repository patterns, object-relational mapping tools, and database version control.
The document provides a biography and background information on Daniel N. Egan, including his roles as a Microsoft Regional Director, Microsoft MVP for ASP.Net, author, and speaker. It then outlines the topics to be covered in the presentation, including object relational mappers, language enhancements in C# and VB.Net, LINQ goals, fundamentals and usage.
Web services allow software components to communicate over the web through standardized interfaces. There are two main types - RESTful web services which use HTTP methods to manipulate resources, and SOAP-based services which use XML messages over HTTP. A WSDL contract describes the operations, messages, and data types of a web service. JAX-WS and JAX-RS are Java APIs for creating web services that map Java methods to WSDL operations and SOAP/HTTP messages. RESTful services follow architectural constraints like using URIs to identify resources and HTTP methods to manipulate them.
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...Trivadis
Roland Stirnimann presented an agenda on Oracle to PostgreSQL migrations. He discussed differences between Oracle and PostgreSQL, as well as between PostgreSQL and EDB Postgres Advanced Server. He described two migration projects: one analyzing 800 Oracle schemas for migration feasibility, collecting data as CSV and generating HTML reports; the other performing a proof-of-concept migration to EDB Postgres Advanced Server for an aviation application using EDB's migration assessment and toolkit.
The document provides an overview of Daniel Egan's professional experience including his roles as a Microsoft Regional Director, Microsoft MVP for ASP.Net, Chief Architect at Odyssey Consulting Group, author, instructor, and his involvement with various .Net user groups. It then outlines topics to be covered including object relational mappers, language enhancements in VB.Net and C# 3.0, LINQ and LINQ to SQL.
This document discusses object-oriented data modeling concepts including objects, classes, inheritance, and persistent programming languages. It defines an object as having data variables, messages it responds to, and methods implementing those messages. Classes group objects and inheritance allows subclasses to inherit attributes and methods from parent classes. Persistent programming languages allow objects to be directly manipulated from a programming language and stored in a database without explicit data formatting changes or loading/storing.
U-SQL - Azure Data Lake Analytics for DevelopersMichael Rys
This document introduces U-SQL, a language for big data analytics on Azure Data Lake Analytics. U-SQL unifies SQL with imperative coding, allowing users to process both structured and unstructured data at scale. It provides benefits of both declarative SQL and custom code through an expression-based programming model. U-SQL queries can span multiple data sources and users can extend its capabilities through C# user-defined functions, aggregates, and custom extractors/outputters. The document demonstrates core U-SQL concepts like queries, joins, window functions, and the metadata model, highlighting how U-SQL brings together SQL and custom code for scalable big data analytics.
The document provides an overview of various programming techniques including procedural programming, modular programming, and object-oriented programming. It then discusses key concepts in C++ like data types, variables, constants, input/output streams, and basic program structure. A sample "Hello World" program is included and explained to demonstrate fundamental C++ syntax and program execution.
The document provides an introduction to the Objective-C programming language. It discusses objects, classes, messaging between objects, and the Objective-C runtime system. It covers key concepts such as classes, inheritance, protocols, properties, categories and extensions, memory management, and threading. The document is intended for readers interested in programming with Objective-C or learning the basis of the Cocoa frameworks.
This document provides an introduction to iOS programming. It begins with an overview of the instructor and contact information. It then asks why the reader wants to learn programming and what problems they want to solve. The document outlines four lessons: introductions, iOS specifics, data modeling, and logic/interface. Lesson 1 covers setting up a project in Xcode and an Objective-C primer, including basic syntax, variables, objects, classes, and the MVC architecture. It demonstrates creating a project in Xcode and discusses prerequisites. It also provides comparisons to other programming languages and covers object-oriented programming concepts. The next steps outlined are the four planned lessons.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
This document discusses design patterns and their use in software engineering. It defines what design patterns are, how they are categorized, and provides examples of common design patterns. The document also discusses the benefits of using design patterns, such as enabling reuse and improving communication. However, it notes some drawbacks, such as patterns not leading to direct code reuse and the potential for "pattern overload". It concludes with suggestions for effectively integrating and applying patterns.
This document outlines a course on advances in database management systems. The course covers object and object-relational databases over 9 hours. Topics include object database concepts, object extensions to SQL, the ODMG object model and ODL language, object database design, and the OQL query language. The course is taught by Dr. M.K. Jayanthi Kannan at JAIN Deemed To-Be University.
Overview of Object-Oriented Concepts Characteristics by vikas jagtapVikas Jagtap
Object-oriented data base systems are proposed as alternative to relational systems and are aimed at application domains where complex objects play a central role.
The approach is heavily influenced by object-oriented programming languages and can be understood as an attempt to add DBMS functionality to a programming language environment
1. Object oriented programming (OOP) is a programming paradigm that models concepts as "objects" that contain data and functionality.
2. A class defines the format for objects, including attributes like properties and behaviors like methods. Creating an object from a class is like a real-world object.
3. OOP concepts like encapsulation, inheritance, and polymorphism address limitations of procedural programming by combining related data and functions into classes and objects. Encapsulation wraps data and functions together, hiding implementation details.
The document provides an overview of the relational data model and relational algebra. It discusses how the relational model represents data using tables of attribute-value pairs and allows standard logical operations. Key concepts covered include the relational operations of projection, selection, join, union, difference, and divide. SQL is introduced as the standard language for querying and manipulating relational data using these algebraic operations.
This document provides information about a class on Object Oriented Programming (OOP) with C++ taught by Venkatadri.M, an Assistant Professor at the University of Petroleum and Energy Studies in Dehradun, India. The class covers the evolution of OOP, the history of C++, organizing data and functions in OOP, features of object oriented languages, and polymorphism. The instructor uses diagrams, animations and PowerPoint presentations to teach the concepts and address frequently asked questions from students.
#1 The diversity of terminology shows the large spectrum of shapes DSLs can take.
#2 As syntax and development environment matter, DSLs should allow the user to choose the right shape according to their usage or task.
#3 A metamorphic DSL vision is proposed where DSLs can adapt to the most appropriate shape, including transitioning between shapes based on usage or task.
Advanced SQL - Database Access from Programming LanguagesS.Shayan Daneshvar
This document discusses various approaches for accessing databases from programming languages, including dynamic SQL, embedded SQL, standards like ODBC, JDBC, ADO/ADO.NET, and examples of using these standards. It covers connecting to databases, executing queries and stored procedures, handling results, and addressing issues like SQL injection. Other topics mentioned include database metadata, transactions, repository patterns, object-relational mapping tools, and database version control.
The document provides a biography and background information on Daniel N. Egan, including his roles as a Microsoft Regional Director, Microsoft MVP for ASP.Net, author, and speaker. It then outlines the topics to be covered in the presentation, including object relational mappers, language enhancements in C# and VB.Net, LINQ goals, fundamentals and usage.
Web services allow software components to communicate over the web through standardized interfaces. There are two main types - RESTful web services which use HTTP methods to manipulate resources, and SOAP-based services which use XML messages over HTTP. A WSDL contract describes the operations, messages, and data types of a web service. JAX-WS and JAX-RS are Java APIs for creating web services that map Java methods to WSDL operations and SOAP/HTTP messages. RESTful services follow architectural constraints like using URIs to identify resources and HTTP methods to manipulate them.
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...Trivadis
Roland Stirnimann presented an agenda on Oracle to PostgreSQL migrations. He discussed differences between Oracle and PostgreSQL, as well as between PostgreSQL and EDB Postgres Advanced Server. He described two migration projects: one analyzing 800 Oracle schemas for migration feasibility, collecting data as CSV and generating HTML reports; the other performing a proof-of-concept migration to EDB Postgres Advanced Server for an aviation application using EDB's migration assessment and toolkit.
The document provides an overview of Daniel Egan's professional experience including his roles as a Microsoft Regional Director, Microsoft MVP for ASP.Net, Chief Architect at Odyssey Consulting Group, author, instructor, and his involvement with various .Net user groups. It then outlines topics to be covered including object relational mappers, language enhancements in VB.Net and C# 3.0, LINQ and LINQ to SQL.
This document discusses object-oriented data modeling concepts including objects, classes, inheritance, and persistent programming languages. It defines an object as having data variables, messages it responds to, and methods implementing those messages. Classes group objects and inheritance allows subclasses to inherit attributes and methods from parent classes. Persistent programming languages allow objects to be directly manipulated from a programming language and stored in a database without explicit data formatting changes or loading/storing.
U-SQL - Azure Data Lake Analytics for DevelopersMichael Rys
This document introduces U-SQL, a language for big data analytics on Azure Data Lake Analytics. U-SQL unifies SQL with imperative coding, allowing users to process both structured and unstructured data at scale. It provides benefits of both declarative SQL and custom code through an expression-based programming model. U-SQL queries can span multiple data sources and users can extend its capabilities through C# user-defined functions, aggregates, and custom extractors/outputters. The document demonstrates core U-SQL concepts like queries, joins, window functions, and the metadata model, highlighting how U-SQL brings together SQL and custom code for scalable big data analytics.
The document provides an overview of various programming techniques including procedural programming, modular programming, and object-oriented programming. It then discusses key concepts in C++ like data types, variables, constants, input/output streams, and basic program structure. A sample "Hello World" program is included and explained to demonstrate fundamental C++ syntax and program execution.
The document provides an introduction to the Objective-C programming language. It discusses objects, classes, messaging between objects, and the Objective-C runtime system. It covers key concepts such as classes, inheritance, protocols, properties, categories and extensions, memory management, and threading. The document is intended for readers interested in programming with Objective-C or learning the basis of the Cocoa frameworks.
This document provides an introduction to iOS programming. It begins with an overview of the instructor and contact information. It then asks why the reader wants to learn programming and what problems they want to solve. The document outlines four lessons: introductions, iOS specifics, data modeling, and logic/interface. Lesson 1 covers setting up a project in Xcode and an Objective-C primer, including basic syntax, variables, objects, classes, and the MVC architecture. It demonstrates creating a project in Xcode and discusses prerequisites. It also provides comparisons to other programming languages and covers object-oriented programming concepts. The next steps outlined are the four planned lessons.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Climate Impact of Software Testing at Nordic Testing Days
oodb.ppt
1. Object Oriented Database Management
B.Tech. IV (CSE)
Semester – VIII
ADVANCED DATABASE MANAGEMENT SYSTEMS
(CORE ELECTIVE - 6)
CS442
2. Outline
• OBJECT ORIENTED DATABASES
• Notion of Abstract Data Type
• Object Oriented Systems
• Object Oriented DB Design
• Expert Databases: Use of Rules of Deduction in Databases
• Recursive Rules
3. Motivation of ODBMSs
• Complex objects in emerging DBMS applications cannot be
effectively represented as records in relational model.
• Representing information in RDBMSs requires complex and
inefficient conversion into and from the relational model to the
application programming language
• ODBMSs provide a direct representation of objects to DBMSs
overcoming the impedance mismatch problem
Application
data structures
Relational
representation
RDBMS
Copy and
translation
Transparent
ODBMS
data transfer
4. Embedded SQL
• Access to database from a general purpose programming language required since:
– Not all queries can be expressed in SQL --e.g., recursive queries cannot be written
in SQL.
– Non declarative actions -- e.g., printing reports cannot be done from SQL.
• General purpose language in which SQL is embedded called host language.
• SQL structures permitted in host language called embedded SQL.
SQL+ C
.o file
SQL library
object
code
pre-
compiler
loader
SQL library calls + C
C compiler
Embedded SQL Compilation
5. Embedded SQL
• SQL commands embedded in the host programming language
• Data exchanged between host language and DBMS using cursors
• SQL query passed from host language to DBMS which computes
the answer set
• A cursor can be viewed as a pointer into the answer set
• DBMS returns the cursor to the programming language
• Programming language can use the cursor to get a record at a time
access to materialized answer.
6. :dname = “toy”;
raise = 0.1;
EXEC SQL SELECT dnum into :dnum
FROM Department
WHERE dname= :dname;
EXEC SQL DECLARE Emp CURSOR FOR
SELECT * FROM Employee
WHERE dno = :dnum
FOR UPDATE
EXEC SQL OPEN Emp;
EXEC SQL FETCH Emp INTO :E.ssn, :E.dno, :E.name, :E.sal;
while (SQLCODE == 0) {
EXEC SQL UPDATE WHERE CURRENT OF CURSOR
SET sal = sal * (1 + ::raise);
EXEC SQL FETCH Emp INTO :E.ssn, :E.dno, :E.name, :E.sal;
}
EXEC SQL CLOSE CURSOR Emp
/* SQL embedded in C to read the list of employees who work for
the toy department and give them a 10 percent raise */
Example of Embedded SQL
7. Object Oriented Database Management
• Object Oriented databases have evolved along two different paths:
• Persistent Object Oriented Programming Languages: (pure ODBMSs)
– Start with an OO language (e.g., C++, Java, SMALLTALK) which
has a rich type system
– Add persistence to the objects in programming language where
persistent objects stored in databases
• Object Relational Database Management Systems (SQL3 Systems)
– Extend relational DBMSs with the rich type system and user-defined
functions.
– Provide a convenient path for users of relational DBMSs to migrate to
OO technology
– All major vendors (e.g., Informix, Oracle) will/are supporting features
of SQL3.
8. Object Database Management Group (ODMG)
• Special interest group to develop standards that allow ODBMS
customers to write portable applications
• Standards include:
– Object Model
– Object Specification Languages
• Object Definition Language (ODL) for schema definition
• Object Interchange Format (OIF) to exchange objects between databases
– Object Query Language
• declarative language to query and update database objects
– Language Bindings (C++, Java, Smalltalk)
• Object manipulation language
• Mechanisms to invoke OQL from language
• Procedures for operation on databases and transactions
9. Object Model
• Object:
– observable entity in the world being modeled
– similar to concept to entity in the E/R model
• An object consists of:
– attributes: properties built in from primitive types
– relationships: properties whose type is a reference to some other object
or a collection of references
– methods: functions that may be applied to the object.
10. Class
• Similar objects with the same set of properties and describing
similar real-world concepts are collected into a class.
• Class definition:
interface Employee {
attribute string name;
attribute integer salary;
attribute date date-of-birth;
attribute integer empid;
relationship Projects works-for
inverse Projects::team;
age-type age();
}
Interface Projects{
attribute string name;
attribute integer projid;
relationship Employee team
inverse Emplolyee works-for;
int number-of-employees();
}
11. Class Extents
• For each ODL class, an extent may be declared.
• Extent is the current set of objects belonging to the class.
– Similar notion to the relation in the relational model.
– Queries in OQL refer to the extent of a class and not the class directly.
interface Employee (extent Emp-set)
{ attribute string name;
attribute integer salary;
attribute date date-of-birth;
attribute integer empid;
relationship Projects works-for
inverse Projects::team;
age-type age(); }
12. Subclasses and Inheritance
• A class can be declared to be a subclass of another class.
• Subclasses inherit all the properties
– attributes
– relationships
– methods
from the superclass.
Interface Married-Employee: Employees {
string spouse-name;
}
• Substitutability: any method of superclass can be invoked over
objects of any subclass (code reuse)
14. Multiple Inheritance
• A class may have more than one superclass.
• A class inherits properties fromeach of its superclasses.
• There is a potential of ambiguity -- variable with same name
inherited from two superclasses:
– flag and error
– rename variable
– choose one
15. Object Identity
• Each object has an identity which it maintains even if some or all
of its attributes change.
• Object identity is a stronger notion of identity than in relational
DBMSs.
• Identity in relational DBMSs is value based (primary key).
• Identity in ODBMSs built into data model
– no user specified identifier is required
• OID is a similar notion as pointer in programming language
• Object identifier (OID) can be stored as attribute in object to refer
to another object.
• References to other objects via their OIDs can result in a
containment hierarchy
• Note: containment hierarchy different from class hierarchy
17. Persistence
• Objects created may have different lifetimes:
– transient: allocated memory managed by the programming language
run-time system.
• E.g., local variables in procedures have a lifetime of a procedure execution
• global variables have a lifetime of a program execution
– persistent: allocated memory and stored managed by ODBMS runtime
system.
• Classes are declared to be persistence-capable or transient.
• Different languages have different mechanisms to make objects
persistent:
– creation time: Object declared persistent at creation time (e.g., in C++
binding) (class must be persistent-capable)
– persistence by reachability: object is persistent if it can be reached from
a persistent object (e.g., in Java binding) (class must be persistent-
capable).
18. Persistent Object-Oriented Programming Languages
• Persistent objects are stored in the database and accessed from the
programming language.
• Classes declared in ODL mapped to the programming language
type system (ODL binding).
• Single programming language for applications as well as data
management.
– Avoid having to translate data to and from application programming
language and DBMS
• efficient implementation
• less code
– Programmer does not need to write explicit code to fetch data to and
from database
• persistent objects to programmer looks exactly the same as transient
objects.
• System automatically brings the objects to and from memory to storage
device. (pointer swizzling).
19. Disadvantages of ODBMS Approach
• Low protection
– since persistent objects manipulated from applications directly, more
changes that errors in applications can violate data integrity.
• Non-declarative interface:
– difficult to optimize queries
– difficult to express queries
• But …..
– Most ODBMSs offer a declarative query language OQL to overcome
the problem.
– OQL is very similar to SQL and can be optimized effectively.
– OQL can be invoked from inside ODBMS programming language.
– Objects can be manipulated both within OQL and programming
language without explicitly transferring values between the two
languages.
– OQL embedding maintains simplicity of ODBMS programming
language interface and yet provides declarative access.
20. OQL Example
interface Employee {
attribute string name;
relationship
setof(Projects) works-for
inverse Projects::team;
}
Interface Projects{
attribute string name;
relationship setof(Employee) team
inverse Emplolyee works-for;
int number-of-employees();
}
Select number-of-employees()
From Employee e, e.works-for
where name = “sharad”
Find number of employees working on each project “sharad” works on
21. Migration of RDBMSs towards OO Technologies
• SQL3 standard incorporates OO concepts in the relational model.
• A row in a table considered as an object
• SQL3 allows a type to be declared for tuples (similar to class in
ODBMSs)
• Relations are collection of tuples of a row type (similar to extent in
ODBMSs)
• Rows in a relation can refer to each other using a reference type
(similar to object identity in ODBMSs)
• A reference can be dereferenced to navigate among tables
• Attributes in a relation can belong to abstract data types
• Methods and functions (expressed in SQL as well as host
programming language) can be associated with abstract data
types
22. SQL-3 Example
CREATE ROW TYPE Employee-type {
name CHAR(30)
works-for REF(Projects-type)
}
CREATE ROW TYPE Projects-type {
name CHAR(30)
team setof(REF(Employee-type))
}
CREATE TABLE Emp OF TYPE Employee-type
CREATE TABLE Project of TYPE Project-type
Select works-for --> name
From Emp
Where name = ‘sharad’
Return name of the project
sharad works for
24. OQL -- Motivation
• Relational languages suffer from impedance mismatch when we
try to connect them to conventional languages like C or C++.
– The data models of C and SQL are radically different, e.g. C does not
have relations, sets, or bags as primitive types; C is tuple-at-a-time,
SQL is relation-at-a-time.
25. OQL -- Motivation (II)
• OQL is an attempt by the OO community to extend languages like
C++ with SQL-like, relation-at-a-time dictions.
• OQL is query language paired with schema-definition language
ODL.
26. OQL Types
• Basic types: strings, ints, reals, etc., plus class names.
• Type constructors:
– Struct for structures.
– Collection types: set, bag, list, array.
• Like ODL, but no limit on the number of times we can apply a
type constructor.
• Set(Struct()) and Bag(Struct()) play special roles akin to relations.
27. OQL Uses ODL as its Schema-Definition Portion
• For every class we can declare an extent = name for the current set
of objects of the class.
– Remember to refer to the extent, not the class name, in queries.
28. Example
• interface Bar
(extent Bars)
{
attribute string name;
attribute string addr;
relationship Set<Sell> beersSold
inverse Sell::bar;
}
30. Example (III)
• interface Sell
(extent Sells)
{
attribute float price;
relationship Bar bar
inverse Bar::beersSold;
relationship Beer beer
inverse Beer::soldBy;
}
31. Path Expressions
• Let x be an object of class C.
• If a is an attribute of C, then x.a = the value of a in the x object.
• If r is a relationship of C, then x.r = the value to which x is
connected by r.
– Could be an object or a collection of objects, depending on the type of
r.
• If m is a method of C , then x.m (...) is the result of applying m to x.
32. Examples
• Let s be a variable whose type is Sell.
• s.price = the price in the object s.
• s.bar.addr = the address of the bar mentioned in s .
– Note: cascade of dots OK because s.bar is an object, not a collection.
33. Example of Illegal Use of Dot
• b.beersSold.price, where b is a Bar object.
• Why illegal? Because b.beersSold is a set of objects, not a single
object.
35. OQL Select-From-Where (II)
• Collections in FROM can be:
1. Extents.
2. Expressions that evaluate to a collection.
• Following a collection is a name for a typical member, optionally
preceded by AS.
36. Example
• Get the menu at Joe's.
SELECT s.beer.name, s.price
FROM Sells s
WHERE s.bar.name = "Joe's Bar"
• Notice double-quoted strings in OQL.
• Result is of type
Bag(Struct(name: string, price: float))
37. Example
• Another way to get Joe's menu, this time focusing on the Bar objects.
SELECT s.beer.name, s.price
FROM Bars b, b.beersSold s
WHERE b.name = "Joe's Bar"
• Notice that the typical object b in the first collection of FROM is used to
help define the second collection.
– Typical usage: if x.a is an object, you can extend the path expression; if x.a is a
collection, you use it in the FROM list.
38. Tailoring the Type of the Result
• Default: bag of structs, field names taken from the ends of path
names in SELECT clause.
• Example
SELECT s.beer.name, s.price
FROM Bars b, b.beersSold s
WHERE b.name = "Joe's Bar"
has result type:
Bag(Struct( name: string, price: real))
39. Rename Fields
• Prefix the path with the desired name and a colon.
• Example
SELECT beer: s.beer.name, s.price
FROM Bars b, b.beersSold s
WHERE b.name = "Joe's Bar"
41. Example
• SELECT DISTINCT s.beer.name, s.price
FROM Bars b, b.beersSold s
WHERE b.name = "Joe's Bar"
• Use ORDER BY clause to get a list of structs.
42. Example
• joeMenu =
SELECT s.beer.name, s.price
FROM Bars b, b.beersSold s
WHERE b.name = "Joe's Bar"
ORDER BY s.price ASC
• ASC = ascending (default); DESC = descending.
• We can extract from a list as if it were an array, e.g. cheapest =
joeMenu[1].name;
44. Example: Subquery in FROM
• Find the manufacturers of the beers served at Joe's.
SELECT b.manf
FROM (
SELECT s.beer
FROM Sells s
WHERE s.bar.name = "Joe's Bar"
) b
45. Quantifiers
• Boolean-valued expressions for use in WHERE-clauses.
FOR ALL x IN < collection > :
< condition >
EXISTS x IN < collection > :
< condition >
• The expression has value TRUE if the condition is true for all
(resp. at least one) elements of the collection.
46. Example
• Find all bars that sell some beer for more than $5.
SELECT b.name
FROM Bars b
WHERE EXISTS s IN b.beersSold :
s.price > 5.00
• Problem
How would you find the bars that only sold beers for more than
$5?
47. Example
• Find the bars such that the only beers they sell for more than $5 are
manufactured by Pete's.
SELECT b.name
FROM Bars b
WHERE FOR ALL be IN (
SELECT s.beer
FROM b.beersSold s
WHERE s.price > 5.00
) :
be.manf = "Pete's"
48. Extraction of Collection Elements
• a) A collection with a single member: Extract
the member with ELEMENT.
49. Example
• Find the price Joe charges for Bud and put the result in a variable
p.
• p = ELEMENT(
SELECT s.price
FROM Sells s
WHERE s.bar.name = "Joe's Bar"
AND s.beer.name = "Bud"
)
50. Extraction of Collection Elements (II)
• b) Extracting all elements of a collection, one at a time:
– 1. Turn the collection into a list.
– 2. Extract elements of a list with <list name>[i].
51. Example
• Print Joe's menu, in order of price, with beers of the same price
listed alphabetically.
52. Example (II)
• L =
SELECT s.beer.name, s.price
FROM Sells s
WHERE s.bar.name = "Joe's Bar"
ORDER BY s.price, s.beer.name;
printf("BeertPricenn");
for(I = 1; I <= COUNT(L); i++)
printf("%st%fn", L[i].name, L[i].price );
53. Aggregation
• The five operators avg, min, max, sum, count apply to any
collection, as long as the operators make sense for the element
type.
54. Example
• Find the average price of beer at Joe's.
• x = AVG(
SELECT s.price
FROM Sells s
WHERE s.bar.name = "Joe's Bar"
);
• Note coercion: result of SELECT is technically a bag of 1-field structs,
which is identified with the bag of the values of that field.
55. Grouping
• Recall SQL grouping, for example:
SELECT bar, AVG(price)
FROM Sells
GROUP BY bar;
• Is the bar value the "name" of the group, or the common value for
the bar component of all tuples in the group?
56. Grouping (II)
• In SQL it doesn't matter, but in OQL, you can create groups from
the values of any function(s), not just attributes.
– Thus, groups are identified by common values, not name."
– Example: group by first letter of bar names (method needed).
57. Outline of OQL Group-By
Collection Defined
by FROM, WHERE
Collection with
function values and
partition
Output collection
Group by values
of function(s)
Terms from
SELECT clause
58. Example
Find the average price of beer at each
bar.
SELECT barName, avgPrice: AVG(
SELECT p.s.price
FROM partition p
)
FROM Sells s
GROUP BY barName: s.bar.name
59. Example (II)
1. Initial collection = Sells.
» But technically, it is a bag of structs of the
form
Struct(s: s1)
Where s1 is a Sells object. Note, the lone
field is named s; in general, there are fields
for all of the tuple variables in the FROM
clause.
60. Example (II)
2. Intermediate collection:
» One function: s.bar.name maps Sells
objects s to the value of the name of the
bar referred to by s.
» Collection is a set of structs of type:
Struct{barName: string, partition: Set<
Struct{s: Sell} >
}
61. Example (III)
» For example:
Struct(barName = "Joe's Bar", partition = {s1,…, sn})
where s1,…, sn are all the structs with one field,
named s, whose value is one of the Sells objects
that represent Joe's Bar selling some beer.
62. Example (IV)
3. Output collection: consists of beer-
average price pairs, one for each struct
in the intermediate collection.
» Type of structures in the output:
Struct{barName: string, avgPrice: real}
63. Example (V)
» Note that in the subquery of the SELECT clause:
SELECT barName, avgPrice: AVG(
SELECT p.s.price
FROM partition p
)
We let p range over all structs in partition. Each of these
structs contains a single field named s and has a Sells
object as its value. Thus, p.s.price extracts the price from
one of the Sells tuples.
» Typical output struct:
Struct(barName = "Joe's Bar", avgPrice = 2.83)
64. Another, Less Typical Example
Find, for each beer, the number of bars
that charge a "low" price ( 2.00) and a
"high" price ( 4.00) for that beer.
Strategy: group by three things:
» 1. The beer name,
» 2. A boolean function that is true iff the
price is low.
» 3. A boolean function that is true iff the
price is high.
65. The Query
SELECT beerName, low, high, count:
COUNT(partition)
FROM Beers b, b.soldBy s
GROUP BY beerName: b.name, low:
s.price <= 2.00, high: s.price >= 4.00
66. The Query (II)
1. Initial collection: Pairs (b; s), where b
is a beer, and s is a Sells object
representing the sale of that beer at
some bar.
» Type of collection members: Struct{b: Beer,
s: Sell}
67. 2. Intermediate collection
Quadruples consisting of a beer name,
booleans telling whether this group is
for high, low, or neither prices for that
beer, and the partition for that group.
The partition is a set of structs of the
type:
Struct{b: Beer, s: Sell}
A typical value:
Struct(b: "Bud" object, s: a Sells object
involving Bud)
68. 2. Intermediate collection (II)
» Type of quadruples in the intermediate
collection:
Struct{
beerName: string,
low: boolean,
high: boolean,
partition: Set<Struct{
b: Beer,
s: Sell
}>
}
69. 2. Intermediate collection (III)
» BeerName low high partition
» Bud TRUE FALSE Slow
Bud FALSE TRUE Shigh
Bud FALSE FALSE Smid
» where Slow Shigh, and Smid are the sets of beer-sells pairs (b;
s) where the beer is Bud and s has, respectively, a low (
2:00), high ( 4:00) and medium (between 2.00 and 4.00)
price.
» Note the partition with low = high = TRUE must be empty
and will not appear.
70. 3. Output collection:
The first three components of each
group's struct are copied to the output,
and the last (partition) is counted.
The result:
beerName low high count
Bud TRUE FALSE 27
Bud FALSE TRUE 14
Bud FALSE FALSE 36
72. Objects in SQL3
• OQL extends C++ with database concepts, while SQL3 extends
SQL with OO concepts.
73. Objects in SQL3 (II)
• Ullman's personal opinion: the relation is so fundamental to data
manipulation that retaining it as the core, as SQL3 does, is
"right."
• Systems using the SQL3 philosophy are called object-relational.
74. Objects in SQL3 (III)
– All the major relational vendors have something of this kind, allowing
any class to become the type of a column.
• Informix Data Blades
• Oracle Cartridges
• Sybase Plug-Ins
• IBM/DB2 Extenders
75. Two Levels of SQL3 Objects
• 1. For tuples of relations = "row types."
• 2. For columns of relations = "types."
– But row types can also be used as column types.
76. References
• Row types can have references.
• If T is a row type, then REF(T) is the type of a reference to a T
object.
• Unlike OO systems, refs are values that can be seen by queries.
77. Example of Row Types
• CREATE ROW TYPE BarType (
name CHAR(20) UNIQUE,
addr CHAR(20)
);
• CREATE ROW TYPE BeerType (
name CHAR(20) UNIQUE,
manf CHAR(20)
);
78. Example of Row Types (II)
• CREATE ROW TYPE MenuType (
bar REF(BarType),
beer REF(BeerType),
price FLOAT
);
79. Creating Tables
• Row-type declarations do not create tables.
– They are used in place of element lists in CREATE TABLE
statements.
• Example
– CREATE TABLE Bars OF TYPE BarType
– CREATE TABLE Beers OF TYPE BeerType
– CREATE TABLE Sells OF TYPE MenuType
80. Dereferencing
• A B = the B attribute of the object referred to by reference A.
• Example
– Find the beers served by Joe.
SELECT beer -> name
FROM Sells
WHERE bar -> name = 'Joe''s Bar';
81. OID's as Values
• A row type can have a reference to itself.
– Serves as the OID for tuples of that type.
• Example
CREATE ROW TYPE BarType (
name CHAR(20),
addr CHAR(20),
barID REF(BarType)
);
CREATE TABLE Bars OF TYPE BarType
VALUES FOR barID ARE SYSTEM GENERATED
82. OID's as Values (II)
• VALUES... clause forces the barID of each tuple to refer to the
tuple itself.
Name addr barID
Joe'sMaple St.
83. Example: Using References as Values
• Find the menu at Joe's.
SELECT Sells.beer->name, Sells.price
FROM Bars, Sells
WHERE Bars.name = 'Joe''s Bar' AND
Bars.barID = Sells.bar;
84. ADT's in SQL3
• Allows a column of a relation to have a type that is a "class,"
including methods.
• Intended application: data that doesn't fit relational model well,
e.g., locations, signals, images, etc.
• The type itself is usually a multi-attribute tuple.
85. ADT's in SQL3 (II)
• Type declaration:
CREATE TYPE <name> (
attributes
method declarations or definitions
);
• Methods defined in a PL/SQL-like language.
86. Example
CREATE TYPE BeerADT ( name CHAR(20), manf CHAR(20),
FUNCTION newBeer( :n CHAR(20), :m CHAR(20))
RETURNS BeerADT;
:b BeerADT; /* local decl. */
BEGIN
:b := BeerADT(); /* built-in constructor */
:b.name := :n;
:b.manf := :m;
RETURN :b;
END;
FUNCTION getMinPrice(:b BeerADT) RETURNS FLOAT; );
87. Example (II)
• getMinPrice is declaration only; newBeer is definition.
• getMinPrice must be defined somewhere where relation Sells is
available.
88. Example (III)
• FUNCTION getMinPrice(:b BeerADT)
RETURNS FLOAT;
:p FLOAT;
BEGIN
SELECT MIN(price) INTO :p
FROM Sells
WHERE beer->name = :b.name;
RETURN :p;
END;
89. Built-In Comparison Functions
• We can define for each ADT two functions EQUAL and
LESSTHAN that allow values of this ADT to participate in
WHERE clauses involving =, <=, etc.
90. Example: A "Point" ADT
• CREATE TYPE Point ( x FLOAT, y FLOAT,
FUNCTION EQUALS( :p Point, :q Point )
RETURNS BOOLEAN;
BEGIN
IF :p.x = :q.x AND :p.y = :q.y THEN
RETURN TRUE
ELSE
RETURN FALSE;
END;
91. Example: A "Point" ADT (II)
• FUNCTION LESSTHAN( :p Point, :q Point )
RETURNS BOOLEAN;
BEGIN
IF :p.x > :q.x THEN
RETURN FALSE
ELSIF :p.x < :q.x THEN
IF :p.y <= :q.y THEN
RETURN TRUE
ELSE RETURN FALSE
ELSE /* :p.x = :q.x
IF :p.y < :q.y THEN
RETURN TRUE
ELSE RETURN FALSE
END;
);
92. Using the Comparison Functions
• Here is a query that computes the lower convex hull of a set of
points.
• Assumes MyPoints(p) is a relation with a single column p of type
Point.
– SELECT p
FROM MyPoints
WHERE NOT p > ANY MyPoints;