데이터 모델
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. 데이터베이스

2. 관계형 데이터모델

3. 정규화(Normalization)

4. RDB구조 튜닝

5. 실습

본문내용

터 연산을 하려면 4개의 테이블 JOIN을 필요로 하나 Orders 테이블에 Amount라는 합계 항목을 추가한다면 2개의 테이블 JOIN으로 줄일 수 있어서 조회연산의 성능을 향상시킬 수 있다.
여기서 주의할 사항은 중복의 허용으로 조회연산에 대한 성능은 크게 향상되지만 Amount와 관련된 자료의 갱신(INSERT, UPDATE, DELETE)에는 그에 해당하는 연산이 추가된다는 것이다. 그러므로 중복자료를 허용하는 경우는 반드시 데이터 모델을 완전히 정규화 시키고 관련 연산에 대한 충분한 검토 후에 결정해야 된다
.
[그림 23-21] Northwind 의 ERD
<사원(Employees)별 연도별 판매실적 - 튜닝 전>
SELECT e.LastName, e.FirstName,
Total = SUM(p.UnitPrice * (1 - od.Discount) * od.Quantity)
FROM Employees e JOIN Orders o ON e.EmployeeID = o.EmployeeID
JOIN [Order Details] od ON o.OrderID = od.OrderID
JOIN Products p ON od.Productid = p.ProductID
WHERE YEAR(o.OrderDate) = 1998
GROUP BY e.LastName, e.FirstName
ORDER BY LastName, FirstName
<주문(Orders)테이블에 합계(Amount)항목을 추가하는 SQL구문>
ALTER TABLE Orders
ADD Amount MONEY
<사원(Employees)별 연도별 판매실적 - 튜닝 후>
SELECT e.LastName, e.FirstName, Total=SUM(o.Amount)
FROM Employees e JOIN Orders o ON e.EmployeeID=o.EmployeeID
WHERE DATEPART(yy, o.OrderDate) = 1998
GROUP BY e.LastName, e.FirstName
ORDER BY LastName, FirstName
고객별 구매실적도 Orders 테이블에 Amount 항목이 추가되면 다음과 같이 JOIN연산을 줄여서 성능을 향상시킬 수 있다.
<고객(Customers)별 연도별 구매실적 - 튜닝 전>
SELECT c.CompanyName, 'Ytd sales by customer' =
SUM(p.Unitprice * (1 - od.Discount) * od.Quantity)
FROM Customers c JOIN Orders o ON c.Customerid = o.Customerid
JOIN [Order Details] od ON o.Orderid = od.Orderid
JOIN Products p ON od.ProductID = p.ProductID
WHERE YEAR(o.OrderDate) = 1998
GROUP BY c.CompanyName
ORDER BY 'Ytd sales by customer' DESC
<고객(Customers)별 연도별 구매실적 - 튜닝 후>
SELECT c.CompanyName ,
'Ytd sales by customer'= SUM(o.Amount)
FROM Customers c JOIN Orders o ON c.Customerid = o.Customerid
WHERE DATEPART(yy, o.OrderDate) = 1998
GROUP BY c.CompanyName
ORDER BY 'Ytd sales by customer' DESC
go
SELECT p.CategoryID, 'Ytd sales by CategoryID'=
SUM(p.Unitprice * (1 - od.Discount) * od.Quantity)
FROM Products p JOIN [Order Details] od ON p.ProductID = od.ProductID
JOIN Orders o ON o.OrderID = od.OrderID
WHERE DATEPART(yy, o.OrderDate) = 1998
GROUP BY p.CategoryID
ORDER BY p.CategoryID
<참고>
다음은 SQL서버7.0에 포함된 Northwind 데이터베이스의 Orders테이블에 성능 향상을 위해서 Amount라는 합계항목을 추가한 경우 기존 자료의 Amount 항목에 합계 값을 구해서 저장시켜주는 SQL 구문이다.
USE Northwind
DECLARE @OrdID int
DECLARE tot_cursor CURSOR
FOR
SELECT OrderID FROM Orders
OPEN tot_cursor
FETCH NEXT FROM tot_cursor INTO @OrdID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Orders
SET Amount =
(SELECT SUM(UnitPrice * Quantity) FROM [Order Details]
WHERE OrderID = @OrdID )
WHERE CURRENT OF tot_cursor
FETCH NEXT FROM tot_cursor INTO @OrdID
END
CLOSE tot_cursor
DEALLOCATE tot_cursor
UPDATE orders SET amount =
( SELECT SUM(quantity * unitPrice )
FROM [order details]
WHERE [order details].orderId = orders.orderId)
5. 실습
다음은 정보화교육센터의 교육운영관리에 대한 업무내용이다
1. 정보화 교육과정은 40개 과정이 있으며 과정에 따라 1년에 1회에서 10회의 교육이 실시되며 과정별 운영 담당 직원이 있다.
2. 과정 당 교육기간은 1일, 3일, 1주, 2주이다.
3. 일반적으로 한 명의 강사가 한 과정을 담당하나 과정에 따라 2 또는 3명의 강사가 담당할 수도 있다.
4. 과정별 평가는 담당 강사에 의하여 실습평가와 시험 평가가 있다.
5. 과정별 수강자 명단과 수료증을 출력한다.
6. 교육과정별 통계분석과 교육 수료자에 대한 조회를 한다.

키워드

  • 가격3,300
  • 페이지수37페이지
  • 등록일2002.11.03
  • 저작시기2002.11
  • 파일형식한글(hwp)
  • 자료번호#210260
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니