[ca] Les bases de dades són el mètode preferit per a l'emmagatzemament estructurat de dades. Les grans aplicacions multiusuari, els telèfons mòbils o les agendes electròniques utilitzen tecnologia de bases de dades per a assegurar la integritat de les dades i facilitar la tasca tant dels usuaris com dels programadors que les van desenvolupar. Des de la realització del primer model de dades, passant per l'administració del sistema gestor, fins a arribar al desenvolupament de l'aplicació, la tecnologia i els conceptes associats són molts i molt heterogenis. Tanmateix, és imprescindible conèixer els aspectes clau de cada un d'aquests temes per a tenir èxit en qualsevol projecte que impliqui treballar amb bases de dades. En aquest curs tractarem de donar una visió completa dels conceptes relacionats amb els sistemes gestors de bases de dades. Per començar, veurem els aspectes involucrats en els motors d'aquests magatzems de dades, la seva evolució històrica i els diferents tipus d'organització i abstracció que ha anat sorgint des de la seva conceptualització fins als nostres dies. A continuació aprofundirem en el model anomenat relacional (el més usat als nostres dies), proporcionant els mètodes i eines que ens permetin representar necessitats d'emmagatzemament i consulta de dades en aquest model. Després, estudiarem a fons el llenguatge de consultes estructurat SQL, imprescindible per a treballar amb bases de dades relacionals, tant si és directament com mitjançant qualsevol llenguatge de programació. El disseny de bases de dades té també un capítol dedicat a aprendre a modelar una base de dades i representar-la gràficament, a detectar els possibles problemes de disseny abans que afectin l'aplicació i a construir bases de dades òptimes per als diferents casos de relacions entre entitats que formaran la nostra base de dades. Una vegada establertes aquestes bases, estarem en disposició d'examinar detingudament dos dels sistemes gestors de bases de dades de programari lliure més populars actualment. Així doncs, aprendrem l'ús, l'administració i les particularitats de MySQL i PostgreSQL mitjançant exemples i casos pràctics. També veurem les eines de consulta i administració gràfiques per a aquests dos sistemes gestors de bases de dades, que ens permetran millorar la nostra productivitat en el treball diari amb ells. A continuació, veurem els mètodes d'accés a aquests sistemes gestors de bases de dades des d'alguns llenguatges de programació. En cada cas, comentarem les millors pràctiques i les seves particularitats, i introduirem alguns conceptes relacionats amb la programació en bases de dades com la persistència, el tractament d'errors, etc. Finalment, creiem que la millor manera d'acabar aquest curs és mitjançant un cas d'estudi complet que abordi els temes que s'hi han tractat, en l'ordre en què es produirien en la realitat d'un projecte i fent prevaler la pràctica sobre la teoria. Així doncs, aquest curs tracta de proporcionar a l'estudiant una visió completa dels aspectes implicats en el treball amb bases de dades. Encara que no aprofundirem en alguns temes especialitzats com el disseny intern d'un sistema gestor de bases de dades, aprofundirem tècnicament en els temes més necessaris.

[en] Databases are the preferred method for structured data storage. Large multi-user applications, mobile telephones and electronic agendas all use database technology to ensure data integrity and to facilitate the task of both the users and the programmers who developed them. Since the first data model was created, followed by administration of the management system and, finally, development of the application, the technology and associated concepts have been extremely diverse. It is also essential to know the key aspects of each of these topics to ensure success in any project that involves working with databases. This course will attempt to offer a comprehensive view of the concepts related to database management systems. To begin with, we will look at the aspects involved in the engines of these data warehouses, their historical evolution and the different types of organisation and abstraction they have gone through from their initial design to the present day. We will then look at the 'relational' model (the most common one nowadays), providing the tools and methods that allow us to represent data storage and query needs in this model. Following on from this, we will study Structured Query Language (SQL) in depth, since it is essential for working with relational databases, whether directly or through a programming language. Database design also has a chapter on learning how to model a database and represent it graphically, to detect possible design issues before they affect the application and to build optimal databases for the different cases of relations between entities that will form our database. Once we have established these bases, we will be ready to take a detailed look at two of the most popular free software database management systems currently available. Hence, we will learn about the use, administration and special features of MySQL and PostgreSQL with examples and case studies. We will also look at query and graphic administration tools for these two database management systems, which will enhance our productivity in our day-to-day work with them. We will then study the methods for accessing these database management systems from some programming languages. In each case, we will discuss the best practices and their special features, and we will introduce concepts related to programming in databases, such as persistence, dealing with errors, etc. Lastly, we believe that the best way to end this course is a complete case study looking at the topics we have discussed in the order in which they would occur in a real project, putting practice before theory. To sum up, this course attempts to provide students with a comprehensive understanding of the aspects of working with databases. Although we will not discuss certain specialist topics, such as the internal design of a database management system, we will take a technical approach to the more essential topics.