
--CREATE TABLE regions
-- (
-- region_id NUMBER GENERATED BY DEFAULT AS IDENTITY
-- START WITH 5 PRIMARY KEY,
-- region_name VARCHAR2( 50 ) NOT NULL
-- );
CREATE TABLE regions (
region_id INTEGER NOT NULL,
region_name VARCHAR(50) NOT NULL,
CONSTRAINT pk_regions PRIMARY KEY (region_id)
);
CREATE TABLE countries
(
country_id CHAR( 2 ) PRIMARY KEY ,
country_name VARCHAR2( 40 ) NOT NULL,
region_id NUMBER ,
CONSTRAINT fk_countries_regions FOREIGN KEY( region_id )
REFERENCES regions( region_id )
ON DELETE CASCADE
);
--CREATE TABLE locations
-- (
-- location_id NUMBER GENERATED BY DEFAULT AS IDENTITY START WITH 24
-- PRIMARY KEY ,
-- address VARCHAR2( 255 ) NOT NULL,
-- postal_code VARCHAR2( 20 ) ,
-- city VARCHAR2( 50 ) ,
-- state VARCHAR2( 50 ) ,
-- country_id CHAR( 2 ) ,
-- CONSTRAINT fk_locations_countries
-- FOREIGN KEY( country_id )
-- REFERENCES countries( country_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE locations (
location_id INTEGER NOT NULL,
address VARCHAR(255) NOT NULL,
postal_code VARCHAR(20),
city VARCHAR(50),
state VARCHAR(50),
country_id CHAR(2),
CONSTRAINT pk_locations PRIMARY KEY (location_id),
CONSTRAINT fk_locations_countries
FOREIGN KEY (country_id)
REFERENCES countries (country_id)
ON DELETE CASCADE
);
--CREATE TABLE warehouses
-- (
-- warehouse_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 10
-- PRIMARY KEY,
-- warehouse_name VARCHAR( 255 ) ,
-- location_id NUMBER( 12, 0 ),
-- CONSTRAINT fk_warehouses_locations
-- FOREIGN KEY( location_id )
-- REFERENCES locations( location_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE warehouses (
warehouse_id INTEGER NOT NULL,
warehouse_name VARCHAR(255),
location_id INTEGER,
CONSTRAINT pk_warehouses PRIMARY KEY (warehouse_id),
CONSTRAINT fk_warehouses_locations
FOREIGN KEY (location_id)
REFERENCES locations (location_id)
ON DELETE CASCADE
);
--CREATE TABLE employees
-- (
-- employee_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 108
-- PRIMARY KEY,
-- first_name VARCHAR( 255 ) NOT NULL,
-- last_name VARCHAR( 255 ) NOT NULL,
-- email VARCHAR( 255 ) NOT NULL,
-- phone VARCHAR( 50 ) NOT NULL ,
-- hire_date DATE NOT NULL ,
-- manager_id NUMBER( 12, 0 ) ,
-- job_title VARCHAR( 255 ) NOT NULL,
-- CONSTRAINT fk_employees_manager
-- FOREIGN KEY( manager_id )
-- REFERENCES employees( employee_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE employees (
employee_id INTEGER NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(50) NOT NULL,
hire_date DATE NOT NULL,
manager_id INTEGER,
job_title VARCHAR(255) NOT NULL,
CONSTRAINT pk_employees PRIMARY KEY (employee_id),
CONSTRAINT fk_employees_manager
FOREIGN KEY (manager_id)
REFERENCES employees (employee_id)
ON DELETE CASCADE
);
--CREATE TABLE product_categories
-- (
-- category_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 6
-- PRIMARY KEY,
-- category_name VARCHAR2( 255 ) NOT NULL
-- );
CREATE TABLE product_categories (
category_id INTEGER NOT NULL,
category_name VARCHAR(255) NOT NULL,
CONSTRAINT pk_product_categories PRIMARY KEY (category_id)
);
--CREATE TABLE products
-- (
-- product_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 289
-- PRIMARY KEY,
-- product_name VARCHAR2( 255 ) NOT NULL,
-- description VARCHAR2( 2000 ) ,
-- standard_cost NUMBER( 9, 2 ) ,
-- list_price NUMBER( 9, 2 ) ,
-- category_id NUMBER NOT NULL ,
-- CONSTRAINT fk_products_categories
-- FOREIGN KEY( category_id )
-- REFERENCES product_categories( category_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE products (
product_id INTEGER NOT NULL,
product_name VARCHAR(255) NOT NULL,
description VARCHAR(2000),
standard_cost DECIMAL(9,2),
list_price DECIMAL(9,2),
category_id INTEGER NOT NULL,
CONSTRAINT pk_products PRIMARY KEY (product_id),
CONSTRAINT fk_products_categories
FOREIGN KEY (category_id)
REFERENCES product_categories (category_id)
ON DELETE CASCADE
);
--CREATE TABLE customers
-- (
-- customer_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 320
-- PRIMARY KEY,
-- name VARCHAR2( 255 ) NOT NULL,
-- address VARCHAR2( 255 ) ,
-- website VARCHAR2( 255 ) ,
-- credit_limit NUMBER( 8, 2 )
-- );
CREATE TABLE customers (
customer_id INTEGER NOT NULL,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
website VARCHAR(255),
credit_limit DECIMAL(8,2),
CONSTRAINT pk_customers PRIMARY KEY (customer_id)
);
--CREATE TABLE contacts
-- (
-- contact_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 320
-- PRIMARY KEY,
-- first_name VARCHAR2( 255 ) NOT NULL,
-- last_name VARCHAR2( 255 ) NOT NULL,
-- email VARCHAR2( 255 ) NOT NULL,
-- phone VARCHAR2( 20 ) ,
-- customer_id NUMBER ,
-- CONSTRAINT fk_contacts_customers
-- FOREIGN KEY( customer_id )
-- REFERENCES customers( customer_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE contacts (
contact_id INTEGER NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(20),
customer_id INTEGER,
CONSTRAINT pk_contacts PRIMARY KEY (contact_id),
CONSTRAINT fk_contacts_customers
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE CASCADE
);
--CREATE TABLE orders
-- (
-- order_id NUMBER
-- GENERATED BY DEFAULT AS IDENTITY START WITH 106
-- PRIMARY KEY,
-- customer_id NUMBER( 6, 0 ) NOT NULL,
-- status VARCHAR( 20 ) NOT NULL ,
-- salesman_id NUMBER( 6, 0 ) ,
-- order_date DATE NOT NULL ,
-- CONSTRAINT fk_orders_customers
-- FOREIGN KEY( customer_id )
-- REFERENCES customers( customer_id )
-- ON DELETE CASCADE,
-- CONSTRAINT fk_orders_employees
-- FOREIGN KEY( salesman_id )
-- REFERENCES employees( employee_id )
-- ON DELETE SET NULL
-- );
CREATE TABLE orders (
order_id INTEGER NOT NULL,
customer_id INTEGER NOT NULL,
status VARCHAR(20) NOT NULL,
salesman_id INTEGER,
order_date DATE NOT NULL,
CONSTRAINT pk_orders PRIMARY KEY (order_id),
CONSTRAINT fk_orders_customers
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE CASCADE,
CONSTRAINT fk_orders_employees
FOREIGN KEY (salesman_id)
REFERENCES employees (employee_id)
ON DELETE SET NULL
);
--CREATE TABLE order_items
-- (
-- order_id NUMBER( 12, 0 ) ,
-- item_id NUMBER( 12, 0 ) ,
-- product_id NUMBER( 12, 0 ) NOT NULL ,
-- quantity NUMBER( 8, 2 ) NOT NULL ,
-- unit_price NUMBER( 8, 2 ) NOT NULL ,
-- CONSTRAINT pk_order_items
-- PRIMARY KEY( order_id, item_id ),
-- CONSTRAINT fk_order_items_products
-- FOREIGN KEY( product_id )
-- REFERENCES products( product_id )
-- ON DELETE CASCADE,
-- CONSTRAINT fk_order_items_orders
-- FOREIGN KEY( order_id )
-- REFERENCES orders( order_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE order_items (
order_id INTEGER NOT NULL,
item_id INTEGER NOT NULL,
product_id INTEGER NOT NULL,
quantity DECIMAL(8,2) NOT NULL,
unit_price DECIMAL(8,2) NOT NULL,
CONSTRAINT pk_order_items PRIMARY KEY (order_id, item_id),
CONSTRAINT fk_order_items_products
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE CASCADE,
CONSTRAINT fk_order_items_orders
FOREIGN KEY (order_id)
REFERENCES orders (order_id)
ON DELETE CASCADE
);
--CREATE TABLE inventories
-- (
-- product_id NUMBER( 12, 0 ) ,
-- warehouse_id NUMBER( 12, 0 ) ,
-- quantity NUMBER( 8, 0 ) NOT NULL,
-- CONSTRAINT pk_inventories
-- PRIMARY KEY( product_id, warehouse_id ),
-- CONSTRAINT fk_inventories_products
-- FOREIGN KEY( product_id )
-- REFERENCES products( product_id )
-- ON DELETE CASCADE,
-- CONSTRAINT fk_inventories_warehouses
-- FOREIGN KEY( warehouse_id )
-- REFERENCES warehouses( warehouse_id )
-- ON DELETE CASCADE
-- );
CREATE TABLE inventories (
product_id INTEGER NOT NULL,
warehouse_id INTEGER NOT NULL,
quantity DECIMAL(8,0) NOT NULL,
CONSTRAINT pk_inventories PRIMARY KEY (product_id, warehouse_id),
CONSTRAINT fk_inventories_products
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE CASCADE,
CONSTRAINT fk_inventories_warehouses
FOREIGN KEY (warehouse_id)
REFERENCES warehouses (warehouse_id)
ON DELETE CASCADE
);
'정보관리(데이터베이스, DB) > DB' 카테고리의 다른 글
| DA# 4 관계선 표기법 (0) | 2025.09.24 |
|---|---|
| DB 릴레이션 관계선 references 생략 시 문제 (0) | 2025.09.24 |
| 오라클 샘플 테이블 & 데이터 만들기 예제 (0) | 2025.09.22 |
| [SQL] 데이터베이스 구축해보기 (0) | 2025.09.22 |
| DB 설계하는 법 (feat. 데이터 모델링) (0) | 2025.09.22 |