Simulation in 3D Informationssystemen

Inhalt

Anhang A: Erstellen der Datenbank

Einrichten

Da das Projekt auf SQL-Datenbanken aufsetzt, finden sich hier die SQL-Befehle um die Datenbank einzurichten. Das Erstellen der Datenbank selbst ist nicht standardisiert und hängt von der verwendeten Datenbank ab. Unter MySQL sind die folgenden Befehle (unter Kenntnis des richtigen Passwortes) einzugeben:

	> mysqladmin --user=root --password="password" create sim3d
	> mysql --user=root --password="password"  < create_user.sql
	> mysql --user=root --password="password"  < create_db.sql

Die Datei "create_db.sql" findet sich im Verzeichnis "Dokumentation". Sie enthält die entsprechenden Befehle um die Datenbank (Datenbank "franklin", nach dem berühmten Franklin-Gebäude, dem Heim aller Informatiker an der TU-Berlin) einzurichten. Die Datei "create_user.sql" erzeugt einen Standardbenutzer ("frank" mit Passwort "frank"). Hierbei ist zu beachten, daß diese Datei nur mit MySQL-Datenbanken funktioniert, da jede Datenbank ihr eigenes Sicherheitskonzept implementiert. Der "Standardbenutzer" ist natürlich eine Sicherheitslücke das mit dem in Kapitel 3 erläuterten Sicherheitskonzept behoben wird.

Die folgenden Befehle zum Erstellen der Datenbank stammen aus der Datei "create_db.sql":


USE franklin;

CREATE TABLE Room 
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    origin_x 	double,
    origin_y 	double,
    origin_z 	double,
    height 	double,
    Floor_texID int,
    Ceil_texID 	int,
    int_inf 	blob
);

CREATE TABLE Wall
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    RoomID 	int,
    p1_x 	double,
    p1_y 	double,
    p2_x 	double,
    p2_y 	double,
    color 	int,
    TextureID 	int,
    int_inf 	blob
);

CREATE TABLE Break_Through
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    WallID 	int,
    PassageID 	int,
    rel_start 	double,
    rel_end 	double,
    height1 	double,
    height2 	double,
    int_inf 	blob
);

CREATE TABLE Texture 
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    width 	double,
    height 	double,
    filename 	VARCHAR(20),
    data_pix  	blob,
    int_inf  	blob
);

CREATE TABLE Passage 
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    RoomID1 	int,
    RoomID2 	int,
    DoorFrameID int,
    DoorWingID 	int,
    int_inf 	blob
);

CREATE TABLE Object3D
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    Type 	VARCHAR(20),
    p_x	 	double,
    p_y	 	double,
    p_z	 	double,
    rot_x 	double,
    rot_y 	double,
    rot_z 	double,
    TextureID 	int,
    color 	int,
    RoomID 	int,
    GeomID 	int,
    InfoID 	int,
    int_inf 	blob
);

CREATE TABLE Geometry3D
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(20),
    Orientation VARCHAR(20),
    center_x 	double,
    center_y 	double,
    center_z 	double,
    data_3d 	blob,
    int_inf 	blob
);

CREATE TABLE Information
(
    ID int 	PRIMARY KEY,
    Name 	VARCHAR(25),
    url	 	VARCHAR(50),
    email 	VARCHAR(50),
    int_inf 	blob
);


CREATE TABLE user 
(
    UID		int, 
    name	char(30) 
); 

CREATE TABLE gruppe 
( 
    GID		int, 
    name	char(30)  
);

CREATE TABLE raum 
(
    RID		int,
    name	char(30)
); 

CREATE TABLE groupmember
(
    UID		int,
    GID		int
);

CREATE TABLE userpermission
(
    UID		int, 
    RID		int,
    r		enum("0","1"),
    w		enum("0","1"),
    x		enum("0","1")
);

CREATE TABLE grouppermission
(
    GID		int, 
    RID		int,
    r		enum("0","1"),
    w		enum("0","1"),
    x		enum("0","1") 
);   

Tools zum Bearbeiten

Das "eigentliche" Bearbeitungswerkzeug ist der graphische Editor der Editorgruppe des Projektes. Die Datenbankabstraktion die wir zum Projekt beigetragen haben ist in den vorherigen Kapiteln und in der JavaDoc-Dokumentation eingehend beschrieben.

Zur Erzeugung der Testdatenbank haben wir vor allem das zu MySQL gehörende Frontend "xmysql" benutzt. Es bietet eine allgemeine Oberfläche um MySQL-Datenbanken abzufragen und abzuändern.

Allerdings kann man über die Oberfläche keine Dateien (z.B VRML- oder Texturdateien) abspeichern. Dazu diente ein kleines Kommandozeilenprogramm, das auch im Verzeichnis src/sim3d/db/ zu finden ist:

    StoreFileDb "table" "column" "id" "file"