Le terme "schéma de base de données" décrit une collection d'objets connexes tels que des tables, des vues et des index appartenant à un utilisateur ou à une application. Dans la plateforme de données Actianchaque utilisateur a un schéma implicite créé pour lui, à moins qu'il n'utilise l'instruction CREATE SCHEMA.
Types de schémas de base de données
Les deux principaux types de schémas sont les schémas logiques et les schémas physiques. Lors de la conception d'une base de données pour le stockage des données d'une application, un développeur d'applications commence généralement par un modèle entité-relation qui cartographie les interrelations entre les éléments de l'entreprise. L'étape suivante consiste à créer une conception de base de données normalisée qui ajoute des détails sur chaque entité, ses attributs et ses clés. Cette conception devient la base des instructions SQL utilisées pour créer des tables, avec leurs colonnes, les relations entre les clés primaires et étrangères et les contraintes d'intégrité référentielle.
Outre les schémas logiques qui support applications, il existe la notion de schéma qui contient des objets créés par un utilisateur . C'est ce qu'on appelle communément un schéma utilisateur . Par exemple, l'objet SCOTT.DEPT est une table appelée DEPT dans le schéma utilisateur SCOTT.
Un schéma physique définit la manière dont la conception logique de la base de données est mappée sur des dispositifs physiques tels que les dispositifs de stockage à semi-conducteurs (SSD) et les disques durs. De nombreuses bases de données ont la notion de DBSPACE ou de TABLESPACE qui est mappé à un périphérique de stockage physique ou virtuel. L'instruction CREATE TABLE peut éventuellement spécifier le DBSPACE ou le TABLESPACE pour s'assurer que la table réside sur un périphérique spécifique. Ceci est généralement fait pour minimiser la contention des entrées-sorties.
Exigences en matière d'intégration des schémas
L'intégration des schémas de base de données fait référence à l'intégration de deux ou plusieurs schémas de base de données distincts en un seul schéma unifié. Vous trouverez ci-dessous quelques éléments importants à prendre en compte pour l'intégration des schémas :
- Les objets de la base de données doivent être mis en correspondance avec l'entité commerciale qu'ils représentent afin que les chevauchements ou les conflits puissent être identifiés et intégrés.
- Les types de données doivent être homogénéisés. Un schéma peut utiliser un format de caractères fixe pour optimiser la capacité de stockage, tandis qu'un autre peut avoir normalisé un format variable dans un souci de flexibilité
- Les clés et les contraintes peuvent différer d'un schéma à l'autre, car leurs applications peuvent nécessiter des schémas d'accès différents.
- Les vues peuvent différer d'un schéma à l'autre. L'optimisation des performances se traduit souvent par la matérialisation des vues.
- Les tableaux peuvent être dé-normalisés et pré-joints, ce qui crée un choix de conception qui doit être rectifié.
- Les objets redondants doivent être supprimés au fur et à mesure que l'évolution de l'application entraîne l'utilisation d'objets plus récents, laissant des objets orphelins.
- Il est très peu probable que deux organisations utilisent les mêmes normes de dénomination.
Création d'un schéma dans la plateforme de données Actian
L'instruction CREATE SCHEMA crée une collection nommée d'objets de base de données. L'instruction CREATE SCHEMA a le format suivant :
[EXEC SQL] CREATE SCHEMA AUTHORIZATION schema_name [object_definition {object_definition}];
nom_du_schéma
Spécifie l'utilisateur effectif de la session qui émet l'instruction CREATE SCHEMA.
définition de l'objet
Il s'agit d'une instruction CREATE TABLE, CREATE VIEW ou GRANT. Chaque utilisateur dispose au maximum d'un schéma par base de données.
Les instructions contenues dans l'instruction CREATE SCHEMA ne doivent pas être séparées par des points-virgules ; toutefois, l'instruction CREATE SCHEMA doit se terminer par un point-virgule après la dernière instruction de définition d'objet. Si les définitions d'objets sont omises, un schéma vide est créé.
Pour émettre des instructions d'octroi dans une instruction CREATE SCHEMA, vous devez disposer des privilèges requis. Plus précisément, pour accorder un privilège sur un objet dont vous n'êtes pas propriétaire, ce privilège doit vous avoir été accordé avec la clause GRANT OPTION (voir la clause GRANT OPTION).
Si une instruction CREATE SCHEMA est émise en spécifiant un schéma existant (nom_du_schéma), plateforme de données Actian émet une erreur. Pour ajouter des objets à un schéma existant, émettez les instructions CREATE requises en dehors d'une instruction CREATE SCHEMA.
Si aucun schéma n'existe pour l'identifiant de l'utilisateur effectif, un schéma est implicitement créé lors de la création d'un objet de la base de données. Si une instruction CREATE SCHEMA est émise ultérieurement pour l'utilisateur, plateforme de données Actian renvoie une erreur.
Si, dans le cadre d'une instruction CREATE SCHEMA, des tables sont créées avec des contraintes référentielles, l'ordre des instructions CREATE TABLE n'est pas significatif. Cela diffère des exigences relatives à la création de tables avec des contraintes de référence en dehors d'une instruction CREATE SCHEMA, où la table référencée doit exister avant la création d'une contrainte qui la référence. Pour plus d'informations sur les contraintes référentielles, voir CREATE TABLE.
Les autres utilisateurs peuvent référencer les objets de votre schéma si vous leur avez accordé les autorisations nécessaires. Pour accéder à un objet dans un schéma autre que celui de l'utilisateur effectif de la session, spécifiez le nom de l'objet comme suit :
schema.object
Par exemple, l'utilisateur Harry peut sélectionner des données dans la table employés du groupe comptabilité (si la comptabilité a accordé à Harry l'autorisation de sélectionner). Harry peut émettre l'instruction SELECT suivante :
SELECT lname, fname from accounting.employees
Verrouillage
L'instruction CREATE SCHEMA prend un verrou exclusif sur une page du catalogue iischema. Les verrous sont acquis par les instructions CREATE individuelles au sein de l'instruction CREATE SCHEMA, mais ne sont libérés que lorsque l'instruction CREATE SCHEMA elle-même est validée. Si l'instruction CREATE SCHEMA contient des instructions CREATE qui acquièrent des verrous dépassant le maximum configuré pour la plateforme de données Actian, l'instruction CREATE SCHEMA est interrompue.
L'exemple suivant montre comment la création d'un schéma Actian pour l'utilisateur comptable fournit un contexte pour les sous-objets :
CREATE SCHEMA AUTHORIZATION accounting CREATE TABLE employees (lname CHAR(30) NOT NULL, fname CHAR(30) NOT NULL, salaire MONEY, dname CHAR(10) REFERENCES dept(deptname), PRIMARY KEY (lname, fname)) CREATE TABLE dept(deptname CHAR(10) NOT NULL UNIQUE, lieu CHAR(15), budget MONEY, dépenses MONEY DEFAULT 0) CREATE VIEW mgr(mlname, mfname, mdname) AS SELECT lname, fname, deptname FROM employees,dept WHERE dname = deptname GRANT REFERENCES(lname, fname) ON TABLE employees TO harry ;
Avantages des schémas de base de données
L'utilisation de schémas de base de données présente de nombreux avantages, dont ceux énumérés ci-dessous :
- Fait correspondre la conception logique de la base de données d'une application à sa conception physique.
- Permet d'associer les utilisateurs aux objets qu'ils créent.
- Sépare les catalogues système des objets de base de données spécifiques à l utilisateur ou à l'application.
- Isole les applications qui utilisent la même instance de base de données pour des raisons de sécurité.
- Regroupe une application unique ou une base de données de département afin qu'elles puissent être sauvegardées en tant qu'unité logique.
- Permet d'affecter des objets connexes à des pools de stockage ou à des périphériques de deuxième niveau spécifiques.