1 package uba.db;
2
3 import java.util.Collection;
4
5 import uba.db.table.Table;
6 import uba.db.table.TableSchema;
7
8 /***
9 * Interfaz que deben cumplir las clases que implementan el acceso físico a los
10 * datos.
11 *
12 * @version $Revision: 1.5 $
13 */
14 public interface Database {
15 /***
16 * Crea una nueva tabla.
17 *
18 * @param tableSchema
19 * es equema de la tabla a crear.
20 *
21 * @return un objeto que representa la nueva tabla creada.
22 *
23 * @throws TableAlreadyExistsException
24 * esta excepción si ya existe una table con el nombre de tabla
25 * indicado en el esquema.
26 * @throws TableCreationException
27 * esta excepción se genera si no se pudo crear la tabla.
28 */
29 Table createTable(TableSchema tableSchema) throws TableAlreadyExistsException,
30 TableCreationException;
31
32 /***
33 * Retorna una lista con las tablas creadas por el usuario y las tablas del
34 * sistema.
35 */
36 Collection tables();
37
38 /***
39 * Retorna una lista con las tablas que son especiales para el sistema
40 * (catalogo).
41 */
42 Collection systemTables();
43
44 /***
45 * Retorna una lista con las tablas creadas por el usuario.
46 */
47 Collection userTables();
48
49 /***
50 * Retorna la tabla de nombre <i>tableName</i>.
51 *
52 * @param tableName
53 * el nombre de la tabla a retornar.
54 *
55 * @throws UnknowTableName
56 * si no existe una tabla de nombre <i>tableName</i>
57 */
58 Table tableNamed(String tableName) throws UnknowTableName;
59
60 /***
61 * Retorna la tabla del cátalogo, que contiene a todas las tablas definidas
62 * por el usuario.
63 *
64 * @see SystemTableSchemas#TABLES_SCHEMA
65 */
66 Table tablesTable();
67
68 /***
69 * Retorna la tabla del cátalogo, que contiene a todos los tipos de datos
70 * disponibles.
71 *
72 * @see SystemTableSchemas#DATATYPES_SCHEMA
73 */
74 Table dataTypesTable();
75
76 /***
77 * Retorna la tabla del cátalogo, que contiene a todas las columnas en las
78 * tablas de usuario.
79 *
80 * @see SystemTableSchemas#COLUMNS_SCHEMA
81 */
82 Table columnsTable();
83
84 /***
85 * Permite determinar si la base de datos contiene una tabla de nombre
86 * <i>tableName</i>.
87 *
88 * @param tableName
89 * nombre de la table
90 *
91 * @return <i>true</i> si existe una tabla con el nombre dado.
92 */
93 boolean containsTableNamed(String tableName);
94 }