Описание стандартных демо-схем hr и oe - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Конкурс научно-образовательных проектов «Энергия будущего» 1 328.42kb.
Заголовочный файл "Vector h" содержит описание класса tvector, являющегося... 1 70.13kb.
Логические схемы 1 32.66kb.
Электронные лампы и электроннолучевая трубка 1 1 156.18kb.
С помощью стандартных энтальпий образования и стандартных энтропий... 7 1533.69kb.
В отеле 1777 номеров (1383 стандартных, 332 стандартных повышенной... 1 30.56kb.
Построение и анализ декомпозиционных схем по методу карацубы 1 30.06kb.
Решение стандартных задач. По окончании данной программы возможно... 1 108.22kb.
Тезисы к 5-й ежегодной конференции по схематизации. Москва. 1 200.53kb.
А. Н. Тихонов, А. А. Самарский о коэффициенто-устойчивости разностных... 1 62.04kb.
Программа построения стандартных картографических сеток для Госгеолкарт 1 23.74kb.
Организация системы hr-контроллинга Косьяненко Алина Викторовна 1 39.99kb.
Направления изучения представлений о справедливости 1 202.17kb.

Описание стандартных демо-схем hr и oe - страница №1/1

Описание стандартных демо-схем HR и OE


Это описание дано в документе Oracle® Database. Sample Schemas.

Описание из документации Oracle

HR (Human Resource)


In the Human Resource (HR) records, each employee has an identification number, e-mail address, job identification code, salary, and manager. Some employees earn commissions in addition to their salary.

The company also tracks information about jobs within the organization. Each job has an identification code, job title, and a minimum and maximum salary range for the job.

Some employees have been with the company for a long time and have held different positions within the company. When an employee resigns, the duration the employee was working, the job identification number, and the department are recorded.

The sample company is regionally diverse, so it tracks the locations of its warehouses and departments. Each employee is assigned to a department, and each department is identified by a unique department number. Each department is associated with one location, and each location has a full address that includes the street name, postal code, city, state or province, and the country code.

In places where the departments and warehouses are located, the company records details such as, the country name and the region where the country resides geographically.

OE (Order Entry)


The company sells several products, such as computer hardware and software, music, clothing, and tools. The company maintains information about these products, such as product identification numbers, the category into which the product falls, order entry (OE), the weight group (for shipping purposes), the warranty period if applicable, the supplier, the availability status of the product, a list price, a minimum price at which a product will be sold, and a URL address for manufacturer information. Inventory information is also recorded for all products, including the warehouse where the product is available and the quantity on hand. Because products are sold worldwide, the company maintains the names of the products and their descriptions in several languages.

The company maintains warehouses in several locations to fulfill customer needs. Each warehouse has a warehouse identification number, name, facility description, and location identification number.

Customer information is also tracked. Each customer has an identification number. Customer records include customer name, street name, city or province, country, phone numbers (up to five phone numbers for each customer), and postal code. Some customers place orders through the Internet, so e-mail addresses are also recorded. Because of language differences among customers, the company records the native language and territory of each customer.

The company places a credit limit on its customers, to limit the amount of products they can purchase at one time. Some customers have an account manager, and this information is also recorded.

When a customer places an order, the company tracks the date of the order, how the order was placed, the current status of the order, shipping mode, total amount of the order, and the sales representative who helped place the order. The sales representative may or may not be the same person as the account manager for a customer. If an order is placed over the Internet, no sales representative is recorded. In addition to order information, the company also tracks the number of items ordered, the unit price, and the products ordered.

The OE schema also contains XML purchase order documents. The XML documents are stored in the Oracle XML DB Repository after validation against the registered XML schema purchaseorder.xsd. You can access these documents in various ways, such as by querying the PURCHASEORDER object-relational table by using SQL, by querying public views RESOURCE_VIEW and PATH_VIEW, and by querying the repository using XPath expressions.


Перевод описания из документации Oracle

HR (управление персоналом)


В записях о штате сотрудников каждый сотрудник имеет идентификационный номер, адрес электронной почты, идентификатор должности, оклад и (идентификатор) руководителя. Некоторые сотрудники дополнительно к окладу зарабатывают комиссионные.

Также компания хранит информацию о должностях в рамках организации. У каждой должности есть идентификатор, название и диапазон ("вилка") окладов.

Некоторые сотрудники долгое время работают в компании и занимали в ней разные должности. При уходе сотрудника с должности записываются сведения о продолжительности его работы в данной должности, её идентификатор и подразделение, в котором работал сотрудник.

Компания из данного примера работает в нескольких регионах, поэтому хранятся сведения о местах расположения её складов и подразделений. Каждый сотрудник приписан к одному подразделению, а каждое подразделение идентифицируется уникальным номером. Каждое подразделение связано (находится во взаимно однозначном соответствии) с одним местоположением, а для каждого местоположения хранится полный адрес, содержащий название улицы, почтовый индекс, город, штат или область и код страны.

Для местоположений подразделений и складов хранится детализированная информация: название страны и географический регион, где расположена страна.

OE (размещение заказов)


Компания продает различные товары - компьютерное оборудование и программное обеспечение, музыкальные товары, одежду, рабочий ручной инструмент. Компания хранит и обрабатывает информацию об этих товарах – идентификационный номер товара, категорию, к которой относится товар, вводе заказов, весовая группа (для организации доставки), гарантийный период (если имеется), статус доступности товара, цена по каталогу, минимальная цена, по которой товар может быть продан, URL-ссылка на информацию производителя. Обо всех товарах также записывается учетная информация, в том числе, склад, где есть товар и его количество, имеющееся в наличии. Поскольку товары продаются по всему миру, компания хранит и обрабатывает названия и описания товаров на нескольких языках.

Для обслуживания покупателей компания содержит товарные склады в разных районах. Каждый склад имеет идентификационный номер, название, описание объекта и идентификатор места расположения.

Также сохраняется информация о покупателях. Каждому покупателю присваивается идентификационный номер. Записывается имя покупателя, название улицы, город или район, страна, номера телефонов (до пяти номеров для каждого покупателя) и почтовый индекс. Некоторые покупатели вводят заказы через интернет, поэтому записываются также адреса их электронной почты. Записывается также родной язык покупателя и его страна, поскольку покупатели используют разные языки.

Для ограничения объема товаров, доступных для одноразовой покупки, компания устанавливает своим покупателям кредитный лимит. Некоторые покупатели имеют персонального менеджера, эта информация также записывается.

Когда покупатель вводит заказ, записывается дата заказа, способ размещения заказа, текущий статус заказа, способ доставки, сумма заказа и данные торгового представителя, содействовавшего размещению заказа. Торговым представителем может быть, а может и не быть персональный менеджер покупателя. Если заказ размещен через интернет, то данные о торговом представителе отсутствуют. Также записывается информация о заказанных товарах (товарных позициях), заказанное количество единиц товара, цене единицы товара.

Диаграмма Сущность-Связь



Описание таблиц и скрипты для их создания

REGIONS


Таблица REGIONS содержит сведения о регионах деятельности компании.

Name Null? Type

-------------------------- -------- ------------

REGION_ID NOT NULL NUMBER

REGION_NAME VARCHAR2(25)

REGION_ID – идентификатор региона (первичный ключ).

REGION_NAME – название региона.

CREATE TABLE regions(

region_id NUMBER

CONSTRAINT region_id_nn NOT NULL

, region_name VARCHAR2(25) );

CREATE UNIQUE INDEX reg_id_pk ON regions(region_id);

ALTER TABLE regions

ADD CONSTRAINT reg_id_pk

PRIMARY KEY (region_id);

COUNTRIES


Таблица COUNTRIES содержит сведения о странах, где работает компания.

Name Null? Type

-------------------------- -------- ------------

COUNTRY_ID NOT NULL CHAR(2)

COUNTRY_NAME VARCHAR2(40)

REGION_ID NUMBER

COUNTRY_ID – идентификатор страны (первичный ключ).

REGION_NAME – название страны.

REGION_ID – идентификатор региона деятельности компании, к которому отнесена данная страна. Внешний ключ, ссылается на REGIONS.region_id.

CREATE TABLE countries(

country_id CHAR(2)

CONSTRAINT country_id_nn NOT NULL

, country_name VARCHAR2(40)

, region_id NUMBER

, CONSTRAINT country_c_id_pk

PRIMARY KEY (country_id) )

ORGANIZATION INDEX;

ALTER TABLE countries

ADD CONSTRAINT countr_reg_fk

FOREIGN KEY (region_id)

REFERENCES regions(region_id);

LOCATIONS


Таблица LOCATIONS содержит сведения о местах расположения подразделений компании.

Name Null? Type

-------------------------- -------- ------------

LOCATION_ID NOT NULL NUMBER(4)

STREET_ADDRESS VARCHAR2(40)

POSTAL_CODE VARCHAR2(12)

CITY NOT NULL VARCHAR2(30)

STATE_PROVINCE VARCHAR2(25)

COUNTRY_ID CHAR(2)

LOCATION_ID – идентификатор места расположения (местоположения) подразделения компании (первичный ключ).

STREET_ADDRESS – название улицы, номер дома и другие сведения об адресе местоположения.

POSTAL_CODE – почтовый индекс местоположения.

CITY – название города (населенного пункта), где находится местоположение.

STATE_PROVINCE – название штата (области, провинции), где расположен город.

COUNTRY_ID – идентификатор страны, где расположен город. Внешний ключ, ссылается на COUNTRYES.country_id.

CREATE TABLE locations(

location_id NUMBER(4)

, street_address VARCHAR2(40)

, postal_code VARCHAR2(12)

, city VARCHAR2(30)

CONSTRAINT loc_city_nn NOT NULL

, state_province VARCHAR2(25)

, country_id CHAR(2));

CREATE UNIQUE INDEX loc_id_pk ON locations(location_id);

ALTER TABLE locations

ADD (CONSTRAINT loc_id_pk

PRIMARY KEY (location_id)

, CONSTRAINT loc_c_id_fk

FOREIGN KEY (country_id)

REFERENCES countries(country_id) );


DEPARTMENTS


Таблица DEPARTMENTS содержит сведения о подразделениях компании.

Name Null? Type

-------------------------- -------- ------------

DEPARTMENT_ID NOT NULL NUMBER(4)

DEPARTMENT_NAME NOT NULL VARCHAR2(30)

MANAGER_ID NUMBER(6)

LOCATION_ID NUMBER(4)

DEPARTMENT_ID – идентификатор подразделения компании (первичный ключ).

DEPARTMENT_NAME – название подразделения компании.

MANAGER_ID – идентификатор руководителя подразделения. Внешний ключ, ссылается на EMPLOYEEES.employee_id.

LOCATION_ID – идентификатор места расположения подразделения компании. Внешний ключ, ссылается на LOCATIONS. location_id.

CREATE TABLE departments(

department_id NUMBER(4)

, department_name VARCHAR2(30)

CONSTRAINT dept_name_nn NOT NULL

, manager_id NUMBER(6)

, location_id NUMBER(4) ) ;

CREATE UNIQUE INDEX dept_id_pk ON departments(department_id);

ALTER TABLE departments

ADD (CONSTRAINT dept_id_pk

PRIMARY KEY (department_id)

, CONSTRAINT dept_loc_fk

FOREIGN KEY (location_id)

REFERENCES locations (location_id) );


JOBS


Таблица JOBS содержит сведения о должностях, которые могут занимать сотрудники компании.

Name Null? Type

-------------------------- -------- ------------

JOB_ID NOT NULL VARCHAR2(10)

JOB_TITLE NOT NULL VARCHAR2(35)

MIN_SALARY NUMBER(6)

MAX_SALARY NUMBER(6)

JOB_ID – идентификатор должности (первичный ключ).

JOB_TITLE – название должности.

MIN_SALARY – минимальный оклад для данной должности.

MAX_SALARY – максимальный оклад для данной должности.

CREATE TABLE jobs(

job_id VARCHAR2(10)

, job_title VARCHAR2(35)

CONSTRAINT job_title_nn NOT NULL

, min_salary NUMBER(6)

, max_salary NUMBER(6) );

CREATE UNIQUE INDEX job_id_pk ON jobs (job_id) ;

ALTER TABLE jobs

ADD CONSTRAINT job_id_pk

PRIMARY KEY(job_id);

EMPLOYEES


Таблица EMPLOYEES содержит сведения о сотрудниках компании.

Name Null? Type

-------------------------- -------- ----------------------------

EMPLOYEE_ID NOT NULL NUMBER(6)

FIRST_NAME VARCHAR2(20)

LAST_NAME NOT NULL VARCHAR2(25)

EMAIL NOT NULL VARCHAR2(25)

PHONE_NUMBER VARCHAR2(20)

HIRE_DATE NOT NULL DATE

JOB_ID NOT NULL VARCHAR2(10)

SALARY NUMBER(8,2)

COMMISSION_PCT NUMBER(2,2)

MANAGER_ID NUMBER(6)

DEPARTMENT_ID NUMBER(4)

EMPLOYEE_ID – идентификатор сотрудника (первичный ключ).

FIRST_NAME – имя сотрудника.

LAST_NAME – фамилия сотрудника.

EMAIL - адрес электронной почты сотрудника.

PHONE_NUMBER – номер служебного телефона сотрудника.

HIRE_DATE – дата, когда сотрудник был принят на работу.

JOB_ID – идентификатор должности, которую занимает сотрудник. Внешний ключ, ссылается на JOBS.job_id.

SALARY – оклад, установленный сотруднику.

COMMISSION_PCT – установленный размер комиссионных (в процентах от оклада).

MANAGER_ID – идентификатор непосредственного руководителя сотрудника. Внешний ключ, ссылается на EMPLOYEES.employee_id.

DEPARTMENT_ID – идентификатор подразделения, к которому приписан сотрудник. Внешний ключ, ссылается на DEPARTMENTS.department_id.

CREATE TABLE employees(

employee_id NUMBER(6)

, first_name VARCHAR2(20)

, last_name VARCHAR2(25)

CONSTRAINT emp_last_name_nn NOT NULL

, email VARCHAR2(25)

CONSTRAINT emp_email_nn NOT NULL

, phone_number VARCHAR2(20)

, hire_date DATE

CONSTRAINT emp_hire_date_nn NOT NULL

, job_id VARCHAR2(10)

CONSTRAINT emp_job_nn NOT NULL

, salary NUMBER(8,2)

, commission_pct NUMBER(2,2)

, manager_id NUMBER(6)

, department_id NUMBER(4)

, CONSTRAINT emp_salary_min

CHECK (salary > 0)

, CONSTRAINT emp_email_uk

UNIQUE (email) );

CREATE UNIQUE INDEX emp_emp_id_pk ON employees(employee_id);

ALTER TABLE employees

ADD (CONSTRAINT emp_emp_id_pk

PRIMARY KEY (employee_id)

, CONSTRAINT emp_dept_fk

FOREIGN KEY (department_id)

REFERENCES departments

, CONSTRAINT emp_job_fk

FOREIGN KEY (job_id)

REFERENCES jobs (job_id)

, CONSTRAINT emp_manager_fk

FOREIGN KEY (manager_id)

REFERENCES employees);

ALTER TABLE departments

ADD CONSTRAINT dept_mgr_fk

FOREIGN KEY (manager_id)

REFERENCES employees (employee_id);


JOB_HISTORY


Таблица JOB_HISTORY содержит сведения об истории занятия должностей сотрудниками компании.

Name Null? Type

-------------------------- -------- ------------

EMPLOYEE_ID NOT NULL NUMBER(6)

START_DATE NOT NULL DATE

END_DATE NOT NULL DATE

JOB_ID NOT NULL VARCHAR2(10)

DEPARTMENT_ID NUMBER(4)

EMPLOYEE_ID – идентификатор сотрудника. Часть составного первичного ключа. Внешний ключ, ссылается на EMPLOYEES.employee_id.

START_DATE - дата начала работы сотрудника в должности. Часть составного первичного ключа.

END_DATE - дата окончания работы сотрудника в должности.

JOB_ID – идентификатор должности. Внешний ключ, ссылается на JOBS.job_id.

DEPARTMENT_ID - идентификатор подразделения, к которому был приписан сотрудник. Внешний ключ, ссылается на DEPARTMENTS.department_id.

Таблица JOB_HISTORY имеет составной первичный ключ, состоящий из атрибутов EMPLOYEE_ID и START_DATE.

CREATE TABLE job_history(

employee_id NUMBER(6) CONSTRAINT jhist_employee_nn NOT NULL

, start_date DATE CONSTRAINT jhist_start_date_nn NOT NULL

, end_date DATE CONSTRAINT jhist_end_date_nn NOT NULL

, job_id VARCHAR2(10) CONSTRAINT jhist_job_nn NOT NULL

, department_id NUMBER(4)

, CONSTRAINT jhist_date_interval

CHECK (end_date > start_date));

ALTER TABLE job_history

ADD (CONSTRAINT jhist_emp_id_st_date_pk

PRIMARY KEY (employee_id, start_date)

, CONSTRAINT jhist_job_fk

FOREIGN KEY (job_id)

REFERENCES jobs

, CONSTRAINT jhist_emp_fk

FOREIGN KEY (employee_id)

REFERENCES employees

, CONSTRAINT jhist_dept_fk

FOREIGN KEY (department_id)

REFERENCES departments);

CREATE UNIQUE INDEX jhist_emp_id_st_date_pk

ON job_history (employee_id, start_date);


CUSTOMERS


Таблица CUSTOMERS содержит сведения о покупателях, с которыми работает компания.

Name Null? Type

----------------- -------- ----------------

CUSTOMER_ID NOT NULL NUMBER(6)

CUST_FIRST_NAME NOT NULL VARCHAR2(20)

CUST_LAST_NAME NOT NULL VARCHAR2(20)

CUST_ADDRESS CUST_ADDRESS_TYP

PHONE_NUMBERS PHONE_LIST_TYP

NLS_LANGUAGE VARCHAR2(3)

NLS_TERRITORY VARCHAR2(30)

CREDIT_LIMIT NUMBER(9,2)

CUST_EMAIL VARCHAR2(30)

ACCOUNT_MGR_ID NUMBER(6)

DATE_OF_BIRTH DATE

MARITAL_STATUS VARCHAR2(20)

GENDER VARCHAR2(1)

INCOME_LEVEL VARCHAR2(20)

CUSTOMER_ID – идентификатор покупателя (первичный ключ).

CUST_FIRST_NAME – имя покупателя.

CUST_LAST_NAME – фамилия покупателя.

CUST_ADDRESS – адрес покупателя (пользовательский тип данных CUST_ADDRESS_TYP):

Name Null? Type

----------------- -------- -----------------

STREET_ADDRESS VARCHAR2(40 CHAR)

POSTAL_CODE VARCHAR2(10 CHAR)

CITY VARCHAR2(30 CHAR)

STATE_PROVINCE VARCHAR2(10 CHAR)

COUNTRY_ID CHAR(2)

PHONE_NUMBERS - номера телефонов покупателя (пользовательский тип данных PHONE_LIST_TYP):

PHONE_LIST_TYP VARRAY(5) OF VARCHAR2(25)

NLS_LANGUAGE – код родного языка покупателя.

NLS_TERRITORY – название территории, где живет покупатель.

CREDIT_LIMIT – размер кредитного лимита покупателя.

CUST_EMAIL – адрес электронной почты покупателя.

ACCOUNT_MGR_ID - идентификатор персонального менеджера покупателя. Внешний ключ, ссылается на EMPLOYEES.employee_id.

DATE_OF_BIRTH – дата рождения покупателя.

MARITAL_STATUS – семейное положение покупателя:

- 'married' – женат/замужем,

- 'single' – не женат/не замужем.

GENDER – пол покупателя:

- 'F' - женский,

- 'M' – мужской.

INCOME_LEVEL – уровень доходов покупателя.

CREATE OR REPLACE TYPE cust_address_typ AS OBJECT(

street_address VARCHAR2(40 CHAR)

, postal_code VARCHAR2(10 CHAR)

, city VARCHAR2(30 CHAR)

, state_province VARCHAR2(10 CHAR)

, country_id CHAR(2)

)

/



CREATE OR REPLACE TYPE phone_list_typ

AS


VARRAY(5) OF VARCHAR2(25)

/

CREATE TABLE customers(



customer_id NUMBER(6)

, cust_first_name VARCHAR2(20 CHAR) CONSTRAINT cust_fname_nn NOT NULL

, cust_last_name VARCHAR2(20 CHAR) CONSTRAINT cust_lname_nn NOT NULL

, cust_address CUST_ADDRESS_TYP

, phone_numbers PHONE_LIST_TYP

, nls_language VARCHAR2(3 CHAR)

, nls_territory VARCHAR2(30 CHAR)

, credit_limit NUMBER(9,2)

, cust_email VARCHAR2(30 CHAR)

, account_mgr_id NUMBER(6)

, date_of_birth DATE

, marital_status VARCHAR2(20 CHAR)

, gender VARCHAR2(1 CHAR)

, income_level VARCHAR2(20 CHAR)

, CONSTRAINT customers_pk

PRIMARY KEY(customer_id)

, CONSTRAINT customers_account_manager_fk

FOREIGN KEY (account_mgr_id)

REFERENCES employees (employee_id)

ON DELETE SET NULL

, CONSTRAINT customer_credit_limit_max

CHECK (credit_limit <= 5000)

, CONSTRAINT customer_id_min

CHECK (customer_id > 0) );

CREATE INDEX cust_account_manager_ix ON customers(account_mgr_id);

CREATE INDEX cust_email_ix ON customers(cust_email);

CREATE INDEX cust_lname_ix ON customers(cust_last_name);

CREATE INDEX cust_upper_name_ix

ON customers(UPPER(cust_last_name), UPPER(cust_first_name));

WAREHOUSES


Таблица WAREHOUSES содержит сведения о товарных складах компании.

Name Null? Type

--------------- -------- -----------------
WAREHOUSE_ID NOT NULL NUMBER(3)

WAREHOUSE_SPEC SYS.XMLTYPE

WAREHOUSE_NAME VARCHAR2(35 CHAR)

LOCATION_ID NUMBER(4)

WAREHOUSE_ID – идентификатор товарного склада (первичный ключ).

WAREHOUSE_SPEC – описание товарного склада.

WAREHOUSE_NAME – название товарного склада.

LOCATION_ID – идентификатор места расположения товарного склада. Внешний ключ, ссылается на LOCATIONS.location_id.

CREATE TABLE warehouses(

warehouse_id NUMBER(3)

, warehouse_spec SYS.XMLTYPE

, warehouse_name VARCHAR2(35 CHAR)

, location_id NUMBER(4)

, CONSTRAINT warehouses_pk

PRIMARY KEY(warehouse_id)

, CONSTRAINT warehouses_location_fk

FOREIGN KEY(location_id)

REFERENCES locations (location_id)

ON DELETE SET NULL )

XMLTYPE COLUMN warehouse_spec STORE AS SECUREFILE BINARY XML;

CREATE INDEX whs_location_ix ON warehouses(location_id);

PRODUCT_INFORMATION


Таблица PRODUCT_INFORMATION содержит сведения о товарах, продаваемых компанией.

Name Null? Type

------------------- -------- -------------------------

PRODUCT_ID NOT NULL NUMBER(6)

PRODUCT_NAME VARCHAR2(50 CHAR)

PRODUCT_DESCRIPTION VARCHAR2(2000 CHAR)

CATEGORY_ID NUMBER(2)

WEIGHT_CLASS NUMBER(1)

WARRANTY_PERIOD INTERVAL YEAR(2) TO MONTH

SUPPLIER_ID NUMBER(6)

PRODUCT_STATUS VARCHAR2(20 CHAR)

LIST_PRICE NUMBER(8,2)

MIN_PRICE NUMBER(8,2)

CATALOG_URL VARCHAR2(50 CHAR)

PRODUCT_ID – идентификатор товара (первичный ключ).

PRODUCT_NAME – название товара.

PRODUCT_DESCRIPTION – описание товара.

CATEGORY_ID – идентификатор категории, к которой относится товар.

WEIGHT_CLASS – весовая группа (требуется для организации доставки товаров).

WARRANTY_PERIOD – гарантийный период (если имеется).

SUPPLIER_ID – идентификатор поставщика данного товара.

PRODUCT_STATUS – статус доступности товара.

LIST_PRICE – цена товара по каталогу.

MIN_PRICE – минимальная цена, по которой может быть продан товар.

CATALOG_URL – URL-ссылка на информацию производителя товара.

CREATE TABLE product_information(

product_id NUMBER(6)

, product_name VARCHAR2(50 CHAR)

, product_description VARCHAR2(2000 CHAR)

, category_id NUMBER(2)

, weight_class NUMBER(1)

, warranty_period INTERVAL YEAR(2) TO MONTH

, supplier_id NUMBER(6)

, product_status VARCHAR2(20 CHAR)

, list_price NUMBER(8,2)

, min_price NUMBER(8,2)

, catalog_url VARCHAR2(50 CHAR)

, CONSTRAINT product_information_pk PRIMARY KEY(product_id)

, CONSTRAINT product_status_lov

CHECK (product_status IN ('orderable' ,'planned' ,'under development' ,'obsolete')) );

CREATE INDEX prod_supplier_ix ON product_information(supplier_id);

PRODUCT_ DESCRIPTIONS


Таблица PRODUCT_DESCRIPTIONS содержит названия и описания товаров на разных национальных языках.

Name Null? Type

---------------------- -------- ----------------

PRODUCT_ID NOT NULL NUMBER(6)

LANGUAGE_ID NOT NULL VARCHAR2(3 CHAR)

TRANSLATED_NAME NOT NULL NVARCHAR2(50)

TRANSLATED_DESCRIPTION NOT NULL NVARCHAR2(2000)

PRODUCT_ID – идентификатор товара. Часть составного первичного ключа. Внешний ключ, ссылается на PRODUCT_INFORMATION.product_id.

LANGUAGE_ID – идентификатор национального языка. Часть составного первичного ключа.

TRANSLATED_NAME – название товара на национальном языке.

TRANSLATED_DESCRIPTION – описание товара на национальном языке.

Таблица PRODUCT_DESCRIPTIONS имеет составной первичный ключ, состоящий из атрибутов PRODUCT_ID и LANGUAGE_ID.

CREATE TABLE product_descriptions(

product_id NUMBER(6)

, language_id VARCHAR2(3 CHAR)

, translated_name NVARCHAR2(50) CONSTRAINT translated_name_nn NOT NULL

, translated_description NVARCHAR2(2000) CONSTRAINT translated_desc_nn NOT NULL

, CONSTRAINT product_descriptions_pk PRIMARY KEY(product_id, language_id)

, CONSTRAINT pd_product_id_fk

FOREIGN KEY (product_id)

REFERENCES product_information(product_id) );

CREATE INDEX prod_name_ix ON product_descriptions(translated_name);


INVENTORIES


Таблица INVENTORIES содержит учетные сведения по товарам.

Name Null? Type

----------------- -------- ---------

PRODUCT_ID NOT NULL NUMBER(6)

WAREHOUSE_ID NOT NULL NUMBER(3)

QUANTITY_ON_HAND NOT NULL NUMBER(8)

PRODUCT_ID – идентификатор товара. Часть составного первичного ключа. Внешний ключ, ссылается на PRODUCT_INFORMATION.product_id.

WAREHOUSE_ID – идентификатор склада, где товар имеется в наличии. Часть составного первичного ключа. Внешний ключ, ссылается на WAREHOUSES.warehouse_id.

QUANTITY_ON_HAND – имеющееся в наличии количество товара.

Таблица PRODUCT_DESCRIPTIONS имеет составной первичный ключ, состоящий из атрибутов PRODUCT_ID и WAREHOUSE_ID.

CREATE TABLE inventories(

product_id NUMBER(6)

, warehouse_id NUMBER(3) CONSTRAINT inventory_warehouse_id_NN NOT NULL

, quantity_on_hand NUMBER(8) CONSTRAINT inventory_qoh_nn NOT NULL

, CONSTRAINT inventory_pk PRIMARY KEY(product_id, warehouse_id)

, CONSTRAINT inventories_product_id_fk

FOREIGN KEY(product_id)

REFERENCES product_information(product_id)

, CONSTRAINT inventories_warehouses_fk

FOREIGN KEY(warehouse_id)

REFERENCES warehouses(warehouse_id) );

ORDERS


Таблица ORDERS содержит сведения о заказах, размещенных покупателями.

Name Null? Type

------------- --------- ----------------------------

ORDER_ID NOT NULL NUMBER(12)

ORDER_DATE NOT NULL TIMESTAMP(6) WITH LOCAL TIME ZONE

ORDER_MODE VARCHAR2(8 CHAR)

CUSTOMER_ID NOT NULL NUMBER(6)

ORDER_STATUS NUMBER(2)

ORDER_TOTAL NUMBER(8,2)

SALES_REP_ID NUMBER(6)

PROMOTION_ID NUMBER(6)

ORDER_ID – идентификатор заказа (первичный ключ).

ORDER_DATE- дата размещения заказа.

ORDER_MODE – способ размещения заказа.

CUSTOMER_ID – идентификатор покупателя, разместившего заказ. Внешний ключ, ссылается на CUSTOMERS.customer_id.

ORDER_STATUS – текущий статус заказа:

0: Not fully entered,

1: Entered,

2: Canceled - bad credit,

3: Canceled - by customer,

4: Shipped - whole order,

5: Shipped - replacement items,

6: Shipped - backlog on items,

7: Shipped - special delivery,

8: Shipped - billed,

9: Shipped - payment plan,

10: Shipped – paid.

ORDER_TOTAL – сумма заказа.

SALES_REP_ID – идентификатор торгового представителя, содействовавшего размещению заказа. Внешний ключ, ссылается на EMPLOYEES.employee_id.

PROMOTION_ID – идентификатор акции по продвижению товара.

CREATE TABLE orders(

order_id NUMBER(12)

, order_date TIMESTAMP(6) WITH LOCAL TIME ZONE CONSTRAINT order_date_nn NOT NULL

, order_mode VARCHAR2(8 CHAR)

, customer_id NUMBER(6) CONSTRAINT order_customer_id_nn NOT NULL

, order_status NUMBER(2)

, order_total NUMBER(8,2)

, sales_rep_id NUMBER(6)

, promotion_id NUMBER(6)

, CONSTRAINT order_pk PRIMARY KEY(order_id)

, CONSTRAINT orders_customer_id_fk

FOREIGN KEY(customer_id)

REFERENCES customers(customer_id)

ON DELETE SET NULL

, CONSTRAINT orders_sales_rep_fk

FOREIGN KEY(sales_rep_id)

REFERENCES employees(employee_id)

ON DELETE SET NULL

, CONSTRAINT order_mode_lov CHECK (order_mode IN ('direct','online'))

, CONSTRAINT order_total_min CHECK (order_total >= 0) );

CREATE INDEX ord_customer_ix ON orders(customer_id);

CREATE INDEX ord_order_date_ix ON orders(order_date);

CREATE INDEX ord_sales_rep_ix ON orders(sales_rep_id);

ORDER_ITEMS


Таблица ORDER_ITEMS информацию о заказанных товарах (товарных позициях) по заказам, размещенным покупателями.

Name Null? Type

------------- -------- -----------

ORDER_ID NOT NULL NUMBER(12)

LINE_ITEM_ID NOT NULL NUMBER(3)

PRODUCT_ID NOT NULL NUMBER(6)

UNIT_PRICE NUMBER(8,2)

QUANTITY NUMBER(8)

ORDER_ID – идентификатор заказа. Часть составного первичного ключа. Внешний ключ, ссылается на ORDERS.order_id.

LINE_ITEM_ID – номер товарной позиции в заказе. Часть составного первичного ключа.

PRODUCT_ID – идентификатор товара. Внешний ключ, ссылается на PRODUCT_INFORMATION.product_id.

UNIT_PRICE – цена единицы товара.

QUANTITY – заказанное количество единиц товара.

Таблица ORDER_ITEMS имеет составной первичный ключ, состоящий из атрибутов ORDER_ID и LINE_ITEM_ID.

В одном заказе не может быть двух одинаковых товаров. Это правило поддерживается декларативным ограничением уникальности по двум атрибутам ORDER_ID и PRODUCT_ID.

CREATE TABLE order_items(

order_id NUMBER(12)

, line_item_id NUMBER(3) NOT NULL

, product_id NUMBER(6) NOT NULL

, unit_price NUMBER(8,2)

, quantity NUMBER(8)

, CONSTRAINT order_items_pk PRIMARY KEY(order_id, line_item_id)

, CONSTRAINT order_items_uk UNIQUE (order_id, product_id)

, CONSTRAINT order_items_order_id_fk

FOREIGN KEY(order_id) REFERENCES orders(order_id)

ON DELETE CASCADE

, CONSTRAINT order_items_product_id_fk

FOREIGN KEY (product_id) REFERENCES product_information(product_id) );

CREATE INDEX item_order_ix ON order_items(order_id);

CREATE INDEX item_product_ix ON order_items(product_id);


Оглавление


Описание стандартных демо-схем HR и OE 1

Описание из документации Oracle 1

HR (Human Resource) 1

OE (Order Entry) 1

Перевод описания из документации Oracle 2

HR (управление персоналом) 2

OE (размещение заказов) 2

Диаграмма Сущность-Связь 3

Описание таблиц и скрипты для их создания 4

REGIONS 4

COUNTRIES 4

LOCATIONS 4

DEPARTMENTS 5

JOBS 5


EMPLOYEES 6

JOB_HISTORY 7

CUSTOMERS 8

WAREHOUSES 9

PRODUCT_INFORMATION 10

PRODUCT_ DESCRIPTIONS 10

INVENTORIES 11

ORDERS 11

ORDER_ITEMS 12

Оглавление 14













Пусть будет немало, лишь бы хорошее. Жанна Голоногова
ещё >>