You are on page 1of 9

201200800632

2012

1.

insert DONE
select DONE
delete DONE
insert into DONE
update DONE
update DONE
update DONE
select DONE

AccessSQL ServerMySQL
E-R

2.

2.1
SQL
SERVER 2014,

2.2

3.

3.1
BOOKS
TROLLEYINDENTUSERFORM

ID
ID
ID
ID
ID ID

3.2

1BOOKS

BOOKNAME

AUTHOR

PRICE

STORAGE

varchar(20)
Varchar(20)
money
int

Primary key
Not null
Not null
Not null

2TROLLEY

BOOKNAME

QUANTITY

TOTALPRICE

USERID
ID

Varchar(20)
Int
Money
Varchar(20)

AFFIRM

Varchar(2)

Primary key
Not null
Not null
Not null, foreign
key
Not null, Y or N

3INDENT


INDENTNUM
BOOKNAME

Int
Varchar(20)

QUANTITY
TOTALPRICE
USERID

ID

Int
Money
Varchar(20)

MONEYSTATE
DELIVER
ASSIGN

Varchar(2)
Varchar(2)
Varchar(2)

Primary key
Not null, foreign
key
Not null
Not null
Not null, foreign
key
Not null, Y or N
Not null, Y or N
Not null, Y or N

Varchar(20)
Varchar(20)

Primary key
Not null

4USERFORM

USERID
ID
PASSWORD

3.3 E-R

4.

4.1
CREATE DATABASE ONLINESHOP

4.2
4.2.1
CREATE TABLE BOOKS
(
BOOKNAME VARCHAR(20) PRIMARY KEY,
AUTHOR VARCHAR(20) NOT NULL,
PRICE MONEY NOT NULL,
STORAGE INT NOT NULL,
)

4.2.2
USE ONLINESHOP
GO
CREATE TABLE TROLLEY
(
BOOKNAME VARCHAR(20) NOT NULL CONSTRAINT AB_FOREIGN FOREIGN KEY REFERENCES
BOOKS(BOOKNAME),
QUANTIY INT NOT NULL,
TOTALPRICE MONEY NOT NULL,
USERID VARCHAR(20) NOT NULL CONSTRAINT CD_FOREIGN FOREIGN KEY REFERENCES
USERFORM(USERID),
CONSTRAINT PK_JS PRIMARY KEY (BOOKNAME,USERID)
)

4.2.3
CREATE TABLE INDENT
(
INDENTNUM INT PRIMARY KEY identity(1,1),
BOOKNAME VARCHAR(20) NOT NULL,
QUANTITY INT NOT NULL,
TOTALPRICE MONEY NOT NULL,
USERID VARCHAR(20) NOT NULL,
MONEYSTATE CHAR(2) NOT NULL CHECK (MONEYSTATE IN ('Y','N')),
DELIVER CHAR(2) NOT NULL CHECK(DELIVER IN ('Y','N')),
ASSIGN CHAR(2) NOT NULL CHECK (ASSIGN IN ('Y','N'))
)

4.2.4
USE ONLINESHOP
ALTER TABLE INDENT
ADD CONSTRAINT XS_FOREIGN
FOREIGN KEY(BOOKNAME)

REFERENCES BOOKS(BOOKNAME)
USE ONLINESHOP
ALTER TABLE INDENT
ADD CONSTRAINT KC_FOREIGN
FOREIGN KEY(USERID)
REFERENCES USERFORM(USERID)

4.3
4.3.1
-- BOOKS (STORAGE) 0

CREATE TRIGGER TIG1


ON BOOKS
FOR UPDATE
AS
IF (UPDATE(STORAGE))
BEGIN
DECLARE @MOUNT INT
SET @MOUNT=(SELECT STORAGE FROM deleted)
IF (@MOUNT<0)
BEGIN
PRINT''
ROLLBACK
END
END

4.3.2
--
CREATE TRIGGER TRIG2
ON INDENT
FOR INSERT,UPDATE
AS
BEGIN
DECLARE @MOUNT INT,@PRICE MONEY,@SINGLEPRICE MONEY,@TOTALPRICE MONEY
SET @MOUNT=(SELECT QUANTITY FROM INSERTED)
SET @PRICE=(SELECT PRICE FROM BOOKS,INSERTED WHERE
BOOKS.BOOKNAME=INSERTED.BOOKNAME)
SET @SINGLEPRICE=@MOUNT*@PRICE
UPDATE INDENT SET TOTALPRICE=@SINGLEPRICE WHERE INDENTNUM=(SELECT INDENTNUM FROM
INSERTED)
END
GO

4.3.3
--
CREATE TRIGGER TRIG3
ON TROLLEY
FOR INSERT,UPDATE
AS

BEGIN
DECLARE @MOUNT INT,@PRICE MONEY,@SINGLEPRICE MONEY,@TOTALPRICE MONEY
SET @MOUNT=(SELECT QUANTITY FROM INSERTED)
SET @PRICE=(SELECT PRICE FROM BOOKS,INSERTED WHERE
BOOKS.BOOKNAME=INSERTED.BOOKNAME)
SET @SINGLEPRICE=@MOUNT*@PRICE
UPDATE TROLLEY SET TOTALPRICE=@SINGLEPRICE WHERE USERID=(SELECT USERID FROM
INSERTED)AND QUANTITY=(SELECT QUANTITY FROM INSERTED)
END
GO

4.3.4
--
USE ONLINESHOP
GO
CREATE TRIGGER TRIG5
ON TROLLEY AFTER INSERT
AS
BEGIN
DECLARE @AFFIRM VARCHAR(2),@BOOKNAME VARCHAR(20),@TOTALPRICE MONEY,@USERID
VARCHAR(20),@DELIVER VARCHAR(2),@ASSIGN VARCHAR(2),@MONEYSTATE VARCHAR(2),@QUANTITY INT
SET @AFFIRM=(SELECT t.AFFIRM FROM TROLLEY t,inserted WHERE
t.BOOKNAME=inserted.BOOKNAME)
SET @TOTALPRICE=(SELECT t.TOTALPRICE FROM TROLLEY t,inserted WHERE
t.BOOKNAME=inserted.BOOKNAME)
SET @USERID=(SELECT t.USERID FROM TROLLEY t,inserted WHERE
t.BOOKNAME=inserted.BOOKNAME)
SET @BOOKNAME=(SELECT BOOKNAME from inserted)
SET @QUANTITY=(SELECT QUANTITY from inserted)
IF (@AFFIRM='Y')
INSERT INTO INDENT (BOOKNAME,TOTALPRICE,QUANTITY,USERID,DELIVER,ASSIGN,MONEYSTATE)
VALUES(@BOOKNAME,@TOTALPRICE,@QUANTITY,@USERID,'N','N','N')
DELETE TROLLEY
WHERE TROLLEY.AFFIRM='Y'
END

4.3.5
---
USE ONLINESHOP
GO
CREATE TRIGGER TRIG6
ON TROLLEY AFTER UPDATE
AS
BEGIN
DECLARE @AFFIRM VARCHAR(2),@BOOKNAME VARCHAR(20),@TOTALPRICE MONEY,@USERID
VARCHAR(20),@DELIVER VARCHAR(2),@ASSIGN VARCHAR(2),@MONEYSTATE VARCHAR(2),@QUANTITY INT
SET @AFFIRM=(SELECT t.AFFIRM FROM TROLLEY t,inserted WHERE
t.BOOKNAME=inserted.BOOKNAME)
SET @TOTALPRICE=(SELECT t.TOTALPRICE FROM TROLLEY t,inserted WHERE
t.BOOKNAME=inserted.BOOKNAME)
SET @USERID=(SELECT t.USERID FROM TROLLEY t,inserted WHERE
t.BOOKNAME=inserted.BOOKNAME)
SET @BOOKNAME=(SELECT BOOKNAME from inserted)
SET @QUANTITY=(SELECT QUANTITY from inserted)
IF (@AFFIRM='Y')
INSERT INTO INDENT (BOOKNAME,TOTALPRICE,QUANTITY,USERID,DELIVER,ASSIGN,MONEYSTATE)
VALUES(@BOOKNAME,@TOTALPRICE,@QUANTITY,@USERID,'N','N','N')
DELETE TROLLEY
WHERE TROLLEY.AFFIRM='Y'

END

4.3.6
--
USE ONLINESHOP
GO
CREATE TRIGGER TRIG7
ON INDENT AFTER INSERT
AS
BEGIN
DECLARE @QUANTITY INT,@BOOKNAME VARCHAR(20)
SET @QUANTITY= (SELECT QUANTITY FROM inserted)
SET @BOOKNAME=(SELECT BOOKNAME FROM inserted)
UPDATE BOOKS
SET STORAGE= STORAGE - @QUANTITY WHERE BOOKNAME=@BOOKNAME
END

4.4
--
USE ONLINESHOP
INSERT into BOOKS(BOOKNAME,AUTHOR,PRICE,STORAGE)
VALUES('','','40','200')
USE ONLINESHOP
INSERT into BOOKS(BOOKNAME,AUTHOR,PRICE,STORAGE)
VALUES('','','92','471')

4.5

4.6

4.7
---
USE ONLINESHOP
UPDATE INDENT
SET MONEYSTATE='Y' WHERE USERID = 'USER2' AND INDENTNUM='1'

4.8
--
USE ONLINESHOP
UPDATE INDENT
SET DELIVER='Y' WHERE USERID = 'USER2' AND INDENTNUM='1'

4.9
--
USE ONLINESHOP
UPDATE INDENT
SET ASSIGN='Y' WHERE USERID = 'USER2' AND INDENTNUM='1'

You might also like