Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp15/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp15/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp15/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2015 - D - Table

Tabelle

Syntax von Rust benutzt in den Code ausschnitten werden im Glossar genauer erklärt

Eine Tabelle ist ein struct¹ das Informationen über die Tabelle enthält. Zu diesen Informationen gehören die Meta-Daten und die Engine. Die Tabelle wird verwendet um Zugriff auf die Engine zu erlangen, welche dann Operationen auf der jeweiligen Tabelle ausführt.

pub struct Table<'a> {
    database: &'a Database,
    pub name: String,
    pub meta_data: TableMetaData,
}

Eine Tabelle speichert ihren Namen ihre zugehörige Datenbank und ihre Meta-Informationen in sich.

Benutzung (kurze Anleitung)

Mittels eines Datenbank Objektes kann man eine bereits vorhandene Tabelle laden oder eine neue Tabelle in der Datenbank erstellen (siehe: Datenbank) Man kann einer Tabelle neue Spalten hinzufügen, entfernen oder sich eine Engine dieser Tabelle geben lassen um auf ihr Operationen auszuführen.

Für das erstellen einer neuen Tabelle in einer bereits vorhandenen Datenbank lädt man zuerst eine Instanz mit dem Datenbank-Objekt und erstellt einen Vektor, indem man Spaltenelemente Abspeichert (siehe: Spalten). Man kann nun im Datenbank-Objekt die create_table Funktion aufrufen und ihr den Tabellen namen und den Vektor mit den Spalten übergeben und erhält ein Tabellen-Objekt zurück.

let db = Database::load("storage_team").unwrap();
 
    let mut cols = Vec::new();
    cols.push(Column {
        name: "Heiner".into(),
        sql_type: SqlType::Int,
        allow_null: false,
        description: "Heiner".to_string(),
        is_primary_key: true,
    });
    cols.push(Column {
        name: "Mathias".into(),
        sql_type: SqlType::Bool,
        allow_null: true,
        description: "Mathias".to_string(),
        is_primary_key: false,
    });
    cols.push(Column {
        name: "Dennis".into(),
        sql_type: SqlType::Char(6),
        allow_null: false,
        description: "Dennis".to_string(),
        is_primary_key: false,
    });
 
    let _storage_team = db.create_table("storage_team", cols, EngineID::BStar).unwrap();

Implementationen

new

pub fn new<'b>(database: &'b Database, name: &str, columns: Vec<Column>, engine_id: EngineID) -> Table<'b>

eine associated-function³ die eine neue Instanz einer Tabelle erstellt und zurück gibt.

load

fn load<'b>(database: &'b Database, name: &str) -> Result<Table<'b>, Error>

eine associated-function³ die eine Tabelle aus dem Speicher Lädt und zurück liefert.

save

pub fn save(&self) -> Result<(), Error>

Speichert diese und ihre Meta-Daten in die entsprechende Datei.

delete

pub fn delete(&self) -> Result<(), Error>

Löscht eine Tabelle und auch ihre Spalten werte ganz.

columns

pub fn columns(&self) -> &[Column]

Gibt den Vektor⁴ mit den Spalten aus dem eigenen Meta-Daten zurück

add_column

pub fn add_column(
        &mut self, name: &str, sql_type: SqlType, allow_null: bool, description: &str, is_primary_key: bool) 
->Result<(), Error>

Fügt eine Spalte zur Tabelle hinzu.

remove_column

pub fn remove_column(&mut self, name: &str) -> Result<(), Error>

Entfernt eine Spalte aus einer Tabelle, entfernt nur existierende Spalten.

create_engine

pub fn create_engine(self) -> Box<Engine + 'a>

Erstellt eine Datenbank-Engine für die Tabelle, die dann benutzt werden kann um Operationen auf dieser Tabelle auszuführen.

get_table_metadata_path

fn get_table_metadata_path(&self) -> String

Gibt den Verzeichnis-Pfad für die Meta-Daten Datei zurück.

get_table_data_path

pub fn get_table_data_path(&self) -> String

Gibt den Verzeichnis-Pfad für die Daten Datei zurück.

get_path

fn get_path(database: &str, name: &str, ext: &str) -> String

Gibt den Verzeichniss-Pfad der Tabelle zurück mit einer übergebenen Dateiendung.


Autor: Dennis Lindner
Gruppe: Mathias Flüggen, Dennis Lindner, Heiner Rieping


Page last modified on September 24, 2015, at 02:22 PM