Données et Indexs

Les Tables

Les tables sont des segments physiques. Elles contiennent les données utilisateur. Elles sont composées de colonnes typées. Elles présentent des contraintes d’intégrite (unique, clé primaire, clé étrangère, ‘check’).
Décrites dans le dictionnaire dans USER_TABLES, ALL_TABLES et DBA_TABLES.

exemple

SQL> CREATE TABLE salaires
( no_emp NUMBER , salaire NUMBER)
TABLESPACE USERS
STORAGE (INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS 25 PCTINCREASE 0)

SQL> describe salaires
Name Null? Type
——————————- ——– —-
NO_EMP NUMBER
SALAIRE NUMBER

on peut vérifier les caractéristiques de la table dans le dictionnaire :

SQL> select TABLE_NAME, TABLESPACE_NAME, INITIAL_EXTENT,
NEXT_EXTENT, BLOCKS from user_tables
where TABLE_NAME=’SALAIRES’

TABLE_NAME TABLESPACE_NAME INITIAL_EXTENT     NEXT_EXTENT     BLOCKS
----------     ---------------        --------------    -----------    ------
SALAIRES    USERS                  53248              53248

Il peut être judicieux comme ici de préciser la clause STORAGE au niveau de chaque table plutôt qu’au niveau du tablespace, les volumes pouvant être très différents d’une table à l’autre….

SQL> CREATE TABLE mini_emp (empno NUMBER CONSTRAINT pk_emp PRIMARY KEY,
ename VARCHAR2(10) CONSTRAINT upper_ename CHECK (ename = UPPER(ename)),
hiredate DATE DEFAULT SYSDATE,
deptno NUMBER(2) CONSTRAINT fk_deptno REFERENCES scott.dept(deptno) )

on voit ici un certain nombre de contraintes d’intégrité qui faciliteront les développements

Les clusters

Les clusters sont des segments spéciaux qui contiennent plusieurs tables fusionnées, suivant en général une colonne de jointure. On peut les voir comme des jointures physiques.

rem : un certain nombre de tables du dictionnaire sont organisées en cluster.
Voir dba_clusters
Les indexs

Ce sont des accélérateurs, externes aux tables. Peuvent être créés / détruits à tout moment. Se remplissent dynamiquement au fur et à mesure des mises à jour de la table indexée. Organisés en B-TREE. Description dans dba_indexes.

On peut créer autant d’index qu’on veut sur une table (mais il ne faut pas en abuser…)

rem : un index n’est efficace que si la colonne indexée est utilisée dans la clause WHERE d’un SELECT !!

SQL> create [unique] index i1 on t1(col1)

rem : un index peut ne pas être unique. Une clé primaire dans une table est représentée sous forme d’index unique par Oracle.

Toutes les informations concernant les tables (description, paramètres de stockage, contraintes, index, …) peuvent être visualisées dans la console : Onglet ‘Administration’, rubrique ‘Schema’, Table / Visualiser Table
em_table_emp.jpg