Vous êtes sur la page 1sur 6

-- ============================================================

-- Database name : DEMO


-- DBMS name
: Sybase SQL Server Version 6.5
-- Created on
: DEC/13/96
-- ============================================================
use demo
go
sp_addtype user_id, 'char (8)', 'not null'
go
-- ============================================================
-- Table : COUNTRY
-- ============================================================
create table COUNTRY
(
COUNTRY_ID
varchar(3)
not null
CONSTRAINT valid_country
CHECK (COUNTRY_ID IN ('USA', 'CAN', 'MEX', 'UK ', 'ITA', 'FRA')),
COUNTRY_NAME
varchar(45)
not null,
LANGUAGE
varchar(30)
not null,
constraint UK_COUNTRY unique (COUNTRY_ID)
)
go
-- ============================================================
-- Table : CUSTOMER
-- ============================================================
create table CUSTOMER
(
CUSTOMER_NBR
varchar(3)
not null,
COMPANY_NAME
CHAR(30)
not null,
COUNTRY_ID
varchar(3)
not null
CONSTRAINT valid_customer_country
CHECK (COUNTRY_ID IN ('USA', 'CAN', 'MEX', 'UK ', 'ITA')),
STATE_ID
varchar(2)
not null,
REGION_ID
varchar(4)
not null,
SALES_MONTH01
decimal(9,2)
not null,
SALES_MONTH02
decimal(9,2)
not null,
SALES_MONTH03
money
not null,
USER_ID
user_id,
constraint PK_CUSTOMER primary key (CUSTOMER_NBR)
)
go
-- ============================================================
-- Table : EMPLOYEE
-- ============================================================
create table EMPLOYEE
(
EMPLOYEE_ID
EMPLOYEE_NAME
EMPLOYEE_ADDRESS
MANAGER_ID
BANK_ID
BRANCH_ID

varchar(5)
varchar(30)
varchar(30)
varchar(5)
varchar(3)
varchar(3)

not
not
not
not
not
not

null,
null,
null,
null,
null,
null,

ACCOUNT#
varchar(10)
DATE_HIRED
datetime
LAST_UPDATE
varchar(10)
default getdate() not null,
constraint PK_EMPLOYEE primary key (EMPLOYEE_ID)

not null,
,

)
go
-- ============================================================
-- Table : ITEM
-- ============================================================
create table ITEM
(
ITEM_ID
numeric(5)
ITEM_DESCRIPTION
varchar(30)
UNIT_PRICE
decimal(9,2)
CHECK (UNIT_PRICE > 0),
QTY_ON_HAND
decimal(11,0)
CONSTRAINT enough_stock
CHECK (QTY_ON_HAND > 0),
DESCRIPTION1
varchar(50)
DESCRIPTION2
varchar(50)
DESCRIPTION3
varchar(50)
TECHNICAL_INFO
text null,
ITEM_PICTURE
image,
ITEM_STATUS
varchar(02)
CONSTRAINT valid_item_status
CHECK (ITEM_STATUS IN ('ENA')),
LAST_UPDATE
varchar(10)
)
go

identity Primary Key,


not null,
not null
not null
not null,
not null,
not null,

not null

-- ============================================================
-- Index : NDX_ITM
-- ============================================================
create unique index NDX_ITM on ITEM (ITEM_ID)
go
-- ============================================================
-- Index : NDX_ITM_STATUS
-- ============================================================
create index NDX_ITM_STATUS on ITEM (ITEM_STATUS)
go
-- ============================================================
-- Table : ITEM_HISTORY
-- ============================================================
create table ITEM_HISTORY
(
ITEM_ID
numeric(5)
not null,
OCCURRENCE_DATE
datetime
not null,
UNIT_PRICE
decimal(9,2)
not null,
constraint PK_ITM_HST primary key (ITEM_ID, OCCURRENCE_DATE)
)
go

-- ============================================================
-- Index : NDX_ITM_HST
-- ============================================================
create index NDX_ITM_HST on ITEM_HISTORY (OCCURRENCE_DATE, ITEM_ID)
go
-- ============================================================
-- Table : ORDER_ITEM
-- ============================================================
create table ORDER_ITEM
(
ORDER_NBR
ITEM_ID
QUANTITY
UNIT_PRICE
DISCOUNT
)
go

varchar(3)
numeric(5)
decimal(5)
decimal(9,2)
decimal(5,3)

not
not
not
not
not

null,
null,
null,
null,
null

-- ============================================================
-- Index : NDX_ORD_ITM
-- ============================================================
create unique index NDX_ORD_ITM on ORDER_ITEM (ORDER_NBR, ITEM_ID)
go
-- ============================================================
-- Table : ORDER_TBL
-- ============================================================
create table ORDER_TBL
(
ORDER_NBR
varchar(3)
INVOICE_NBR
varchar(3)
CUSTOMER_NBR
varchar(3)
ORDER_DATE
datetime
SALESMAN_ID
varchar(3)
COMPANY_NAME
varchar(25)
USER_ID
user_id,
constraint PK_ORD_TBL primary key (ORDER_NBR)
)
go

not null,
not null,
,
not null,
not null,
not null,

-- ============================================================
-- Index : NDX_CST1
-- ============================================================
create index NDX_CST1 on ORDER_TBL (CUSTOMER_NBR)
go
-- ============================================================
-- Index : NDX_CST2
-- ============================================================
create index NDX_CST2 on ORDER_TBL (CUSTOMER_NBR, ORDER_DATE, COMPANY_NAME)
go
-- ============================================================

-- Table : REGION
-- ============================================================
create table REGION
(
COUNTRY_ID
varchar(3)
DEFAULT 'USX' not null,
STATE_ID
varchar(2)
not null,
REGION_ID
varchar(4)
not null,
REGION_NAME
varchar(45)
not null,
constraint pk_region primary key (COUNTRY_ID, STATE_ID, REGION_ID),
constraint uk_region unique (REGION_NAME)
)
go
-- ============================================================
-- Table : SALESMAN
-- ========================================================
create table SALESMAN
(
SALESMAN_ID
varchar(3)
SALESMAN_NAME
varchar(30)
COUNTRY_ID
varchar(3)
ASSIGNED_STATE
varchar(2)
SALES_TARGET
Decimal(10,2)
EMPLOYEE_ID
varchar(5)
constraint UK_SALESMAN unique (SALESMAN_ID)
)
go

not
not
not
not
not
not

null,
null,
null,
null,
null,
null,

-- ============================================================
-- Index : NDX_SAL_TARGET
-- ============================================================
create index NDX_SAL_TARGET on SALESMAN (SALES_TARGET)
go
-- ============================================================
-- Table : STATE
-- ============================================================
create table STATE
(
COUNTRY_ID
varchar(3)
not null
CONSTRAINT valid_country_for_state
CHECK (COUNTRY_ID IN ('USA', 'CAN', 'MEX', 'UK ', 'ITA')),
STATE_ID
varchar(2)
not null,
STATE_NAME
varchar(30)
not null
)
go
-- ============================================================
-- Index : NDX_STATE1
-- ============================================================
create unique index NDX_STATE1 on STATE (COUNTRY_ID, STATE_ID)
go
-- ============================================================
-- Index : NDX_STATE2

-- ============================================================
create index NDX_STATE2 on STATE (COUNTRY_ID)
go
-- ============================================================
-- Table : VIP_CUSTOMER
-- ============================================================
create table VIP_CUSTOMER
(
VIP_CUSTOMER_NBR
ASSIGNED_SALESMAN
ADDITIONAL_CREDIT
)
go

varchar(3)
varchar(3)
decimal(9,2)

not null,
not null,
not null

-- ============================================================
-- Index : NDX_VIP_CST
-- ============================================================
create unique index NDX_VIP_CST on VIP_CUSTOMER (VIP_CUSTOMER_NBR)
go
-- ============================================================
-- Table : INVOICE
-- ============================================================
create table INVOICE
(
INVOICE_NBR
varchar(3)
ORDER_NBR
varchar(3)
INVOICE_DATE
datetime
constraint PK_INVOICE primary key (INVOICE_NBR)
)
go

not null,
not null,
not null,

-- ============================================================
-- Foreign Keys
-- ============================================================
alter table SALESMAN
add constraint FK_SALESMAN_COUNTRY foreign key (COUNTRY_ID, ASSIGNED_STATE)
references STATE (COUNTRY_ID, STATE_ID)
go
alter table REGION
add constraint FK_REGION_COUNTRY foreign key (COUNTRY_ID)
references COUNTRY (COUNTRY_ID)
go
alter table STATE
add constraint FK_STATE_COUNTRY foreign key (COUNTRY_ID)
references COUNTRY (COUNTRY_ID)
go
alter table EMPLOYEE
add constraint FK_EMPLOYEE_EMPLOYEE foreign key (MANAGER_ID)
references EMPLOYEE (EMPLOYEE_ID)
go

alter table ORDER_ITEM


add constraint FK_ITEM_ORDER_TBL foreign key (ORDER_NBR)
references ORDER_TBL (ORDER_NBR)
go
Create Trigger emp_check_update
on employee
for Insert, update
as
begin
print 'An employee has been inserted or udpated'
end
go
Create Trigger emp_check_delete
on employee
for delete
as
begin
print 'An employee has been deleted'
end
go

Vous aimerez peut-être aussi