Virtabs: Beschreibung der Demo-DB

Entity-Relationship-Diagramm der Beispiel-Datenbank “DEMO”:

Diese Datenbank wird als Beispiel  in der Virtab-Dokumentation benutzt. Es handelt sich um eine modifizierte Variante der ORACLE-Demo-Datenbank (für insider: “scott/tiger”).
Es werden Mitarbeiter (EMPLOYEE) einer fiktiven Vertriebs-Firma verwaltet, die in verschiedenen Abteilungen (DEPARTMENT) an verschiedenen Firmensitzen (LOCATION) beschäftigt sind. Die Arbeitsplatzbeschreibung ist in JOB gespeichert, die Betriebshierarchie ist durch den Schlüssel “EMPLOYEE.manager_id” ausgedrückt. Jeder EMPLOYEE betreut mehrere Kunden (CUSTOMER). Diese bestellen (SALES_ORDER) verschiedene Artikel (ITEM), die über PRODUCT und PRICE spezifiziert sind. Es gibt eine einheitliche Adressenverwaltung (ADDRESS) für Kunden und Mitarbeiter.

Die Virtab-Datenbank-Definitionsdatei “demo.vt”:

Definition der Datenbanktabellen und ihrer Beziehungen.


// VIRTAB-Beschreibung der ORACLE-Beispieldatenbank DEMO
//
// Erzeugung samt Daten aus $ora_home\rdbms\admin\bdemobld.sql
//
// Modifikationen:
// ITEM_ID ist nicht mehr PK, sondern IDENTIFYING.
// technischer PK ist I_ID.
// Neu: Table address: Adressen-Info für DEPARTMENT und CUSTOMER
// (um Queries zeigen zu koennen); CUSTOMER wurde modifiziert
//
// Definition der Datenbanktabellen und ihrer Beziehungen

TABLE LOCATION
 COLUMN        LOCATION_ID      DATATYPE NUMBER(3) PRIMARYKEY
 COLUMN        REGIONAL_GROUP   DATATYPE VARCHAR2(20) IDENTIFYING
;

TABLE ADDRESS
  COLUMN         ADDRESS_ID      DATATYPE NUMBER(6) PRIMARYKEY
  COLUMN         STREET          DATATYPE VARCHAR2 (40)
  COLUMN         CITY            DATATYPE VARCHAR2 (30)
  COLUMN         STATE           DATATYPE VARCHAR2 (2)
  COLUMN         ZIP_CODE        DATATYPE VARCHAR2 (9)
;

TABLE DEPARTMENT
  COLUMN         DEPARTMENT_ID   DATATYPE NUMBER(2) PRIMARYKEY
  COLUMN         NAME            DATATYPE VARCHAR2(14) IDENTIFYING
  COLUMN         LOCATION_ID     DATATYPE NUMBER(3) IDENTIFYING
  COLUMN         ADDRESS_ID      DATATYPE NUMBER(6)
;

LINK location  1:N  department BY location_id ;
LINK address   1:N  department BY address_id ;

TABLE JOB
  COLUMN         JOB_ID          DATATYPE NUMBER(3) PRIMARYKEY
  COLUMN         FUNCTION        DATATYPE VARCHAR2(30)  IDENTIFYING
;

TABLE EMPLOYEE
  COLUMN         EMPLOYEE_ID DATATYPE NUMBER(4)PRIMARYKEY
  COLUMN         LAST_NAME   DATATYPE VARCHAR2(15)IDENTIFYING
  COLUMN         FIRST_NAME  DATATYPE VARCHAR2(15)IDENTIFYING
  COLUMN         MIDDLE_INITIAL DATATYPE VARCHAR2(1)IDENTIFYING
  COLUMN         JOB_ID      DATATYPE NUMBER(3)
  COLUMN         MANAGER_ID  DATATYPE NUMBER(4)
  COLUMN         HIRE_DATE   DATATYPE DATE
  COLUMN         SALARY      DATATYPE NUMBER(7,2)
  COLUMN         COMMISSION  DATATYPE NUMBER(7,2)
  COLUMN         DEPARTMENT_ID DATATYPE NUMBER(2)
;

LINK job   1:N employee BY job_id ;
LINK employee    1:N employee BY manager_id ;
LINK department  1:N employee by department_id ;


TABLE SALARY_GRADE
  COLUMN         GRADE_ID      DATATYPE NUMBER(3)PRIMARYKEY
  COLUMN         LOWER_BOUND   DATATYPE NUMBER(7,2)
  COLUMN         UPPER_BOUND   DATATYPE NUMBER(7,2)
;

TABLE PRODUCT
  COLUMN         PRODUCT_ID    DATATYPE NUMBER (6)PRIMARYKEY
  COLUMN         DESCRIPTION   DATATYPE VARCHAR2 (30)
;

TABLE PRICE
  COLUMN price_id             DATATYPE number(6) PRIMARYKEY // added!
  COLUMN         PRODUCT_ID    DATATYPE NUMBER (6)
  COLUMN         LIST_PRICE    DATATYPE NUMBER(8,2)
  COLUMN         MIN_PRICE     DATATYPE NUMBER (8,2)
  COLUMN         START_DATE    DATATYPE DATE
  COLUMN         END_DATE      DATATYPE DATE
;

LINK product 1:N price BY PRODUCT_ID ;


TABLE CUSTOMER
  COLUMN         CUSTOMER_ID   DATATYPE NUMBER (6)PRIMARYKEY
  COLUMN         NAME          DATATYPE VARCHAR2 (45)IDENTIFYING
  COLUMN         ADDRESS_ID    DATATYPE NUMBER(6)
// COLUMN         CITY                    DATATYPE VARCHAR2 (30)
// COLUMN         STATE                   DATATYPE VARCHAR2 (2)
// COLUMN         ZIP_CODE                DATATYPE VARCHAR2 (9)
  COLUMN         AREA_CODE     DATATYPE NUMBER (3)
  COLUMN         PHONE_NUMBER  DATATYPE NUMBER (7)
  COLUMN         SALESPERSON_ID DATATYPE NUMBER (4)
  COLUMN         CREDIT_LIMIT  DATATYPE NUMBER (9,2)
  COLUMN         COMMENTS      DATATYPE varchar2(255) // LONG !!!
;

LINK address 1:N customer BY ADDRESS_ID ;
LINK employee 1:N customer BY SALESPERSON_ID ;


TABLE SALES_ORDER
  COLUMN         ORDER_ID      DATATYPE NUMBER (4)PRIMARYKEY
  COLUMN         ORDER_DATE    DATATYPE DATEIDENTIFYING
  COLUMN         CUSTOMER_ID   DATATYPE NUMBER (6)IDENTIFYING
  COLUMN         SHIP_DATE     DATATYPE DATE
  COLUMN         TOTAL         DATATYPE NUMBER (8,2)
;

TABLE ITEM
  COLUMN         I_ID          DATATYPE number(6)PRIMARYKEY
  COLUMN         ORDER_ID      DATATYPE NUMBER (4)IDENTIFYING
  COLUMN         ITEM_ID       DATATYPE NUMBER (4)IDENTIFYING
  COLUMN         PRODUCT_ID    DATATYPE NUMBER (6)IDENTIFYING
  COLUMN         ACTUAL_PRICE  DATATYPE NUMBER (8,2)
  COLUMN         QUANTITY      DATATYPE NUMBER (8)
  COLUMN         TOTAL         DATATYPE NUMBER (8,2)
;

// item ist ein Produktposten in einer Bestellung
// 2 sets von identifying:
// order_id item_id: Platznr in Bestellung
// order_id product_id: Produkt in Bestellung


LINK customer    1:N sales_order BY customer_id ;
LINK product     1:N item        BY product_id ;
LINK sales_order 1:N item        BY order_id ;
 

 

[Virtabs] [Positionierung] [Schreibbare Views?] [Schreibbare Views!] [Feature-Überblick] [Virtabs entwickeln] [Unterstützte Datenbanken] [Referenz] [Konzepte] [Application-Interfaces] [Struktur der Demo-DB] [Guided tour] [Beispiel-Code]