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 ;
|
|