zloof.gms : 관계형 데이터베이스 예

설명

이 고전적인 데이터베이스 예는 작은 백화점을 사용하여
관계형 데이터 모델의 힘을 보여줍니다.

소형 모델 유형 :슬롯 무료체험


카테고리 : 슬롯 무료체험 모델 라이브러리


메인 파일 : zloof.gms

$title 관계형 데이터베이스 예(ZLOOF,SEQ=29)

$onText
이 고전적인 데이터베이스 예제에서는 소규모 백화점을 사용하여
관계형 데이터 모델의 힘을 보여줍니다.

Zloof, MM, 예제별 쿼리: 데이터베이스 언어. IBM 시스템
저널 16, 4 (1977), 324-343.

키워드: 관계형 데이터 모델
$offText

세트
   name '직원의 이름' / 앤더슨, 헨리, 호프만, 존스
                                리, 루이스, 롱, 모건
                                머피, 넬슨, 스미스 /
   dep 'departments' / 화장품, 철물, 가구, 문구류, 장난감 /
   저녁 '공급업체' / bic, dupont, parker, revlon /
   판매 품목' / 접시, 잉크, 립스틱, 펜, 연필, 향수 /
   색상 '모든 색상' / 흰색, 빨간색, 녹색, 파란색 /
   크기 / 소형, 중형, 대형 /
   sales(dep,item) '판매된 부서 및 품목'
                    / 화장품.  (립스틱, 향수)
                      하드웨어.    잉크
                      가구.   (접시, 펜)
                      고정. (접시,잉크,펜,연필)
                      장난감.        (잉크,펜,연필) /
   Supply(item,sup) '품목 및 공급자'
                    / 접시.(빅,듀퐁) , 잉크.(빅,파커) , 립스틱.레브론
                      펜.(파커,레브론), 펜슬.(빅,파커), 향수.레브론 /
   type(item,color,size) '항목 색상 및 크기'
                         / 요리.     하얀색.    중간
                           잉크.     (녹색.대형
                                     파란색.     작은)
                           립스틱. 빨간색.      큰
                           펜.      녹색.    작은
                           연필. ((빨간색,파란색).대형
                                     녹색.    작은)
                           향수.  하얀색.    크기가 큰  /;

별칭(이름,namep);

매개변수 emp(name,namep,dep) '직원의 관리자와 급여'
                              /앤더슨.머피.토이 6000
                                헨리.스미스.토이 9000
                                호프만.모건.화장품 16000
                                존스 .스미스 .하드웨어 8000
                                루이스 .long .stationary 12000
                                롱 .모건 .화장품 7000
                                모건.리.화장품 10000
                                머피 .스미스 .household 8000
                                넬슨.머피.토이 6000
                                스미스 .hoffman.stationary 1200 /;

세트
   g01(item) '빨간색 아이템'
   g02(color) '잉크의 색상'
   g03(dep) '파커가 공급한 품목을 판매하는 부서'
   g04(sup) '장난감 부서에 품목을 판매하는 공급업체';

g01(항목) = sum(크기, 유형(항목 ,"빨간색",크기));
g02(색상) = sum(크기, 유형("잉크",색상,크기));
g03(dep) = sum(supply(item,"parker"), sales(dep,item));
g04(sup) = sum(sales("장난감",항목), 공급(항목,sup));

매개변수
   g05(name,namep) '장난감 부서 직원 및 관리자의 급여'
   sal(name,dep) '부서별 급여'
   돈(이름) '직원 급여'

Set list(name,dep) '고용 목록';

g05(이름,이름) = emp(이름,이름,"장난감");
list(name,dep) = yes$sum(namep, emp(name,namep,dep) 또는 emp(namep,name,dep));
sal(이름,dep) = sum(namep, emp(이름,namep,dep));
돈(이름) = sum(dep, sal(이름,dep));

옵션 살:0, 돈:0;

표시 목록, 샐, 돈;

세트
   g06(dep,item,sup) '부서 판매 품목 및 공급업체'
   g07(이름) '상사보다 돈을 더 많이 받는 직원'
   g08(dep) '펜이나 연필을 판매하는 부서'
   g09(dep) '펜과 연필을 판매하는 부서'
   g10(dep) '파커가 공급하는 모든 품목을 판매하는 부서'
   g11(dep) '파커가 공급한 품목만 판매하는 부서'
   g12(dep) 'deps는 Parker에서 공급한 모든 품목만 판매합니다';

g06(dep,item,sup) = 판매량(dep,item)*supply(item,sup);
g07(이름) = sum((namep,dep)$(emp(name,namep,dep) 및 돈(이름) > 돈(namep)), yes);
g08(dep) = sales(dep,"펜") + sales(dep,"연필");
g09(dep) = sales(dep,"펜") * sales(dep,"연필");
g10(dep) = prod(supply(item,"parker"), sales(dep,item));
g11(출발지) = prod(판매(출발지, 품목), 공급(품목,"파커"));
g12(dep) = g10(dep)*g11(dep);

스칼라
   g13 '장난감 부서 직원의 총 급여'
   g14 '다양한 색상의 연필';

g13 = sum((이름,namep), emp(이름,namep,"장난감"));
g14 = sum(color$sum(size,type("연필",color,size)), 1);

세트
   g15(dep) '총 급여가 22,000개에 달하는 펜을 판매하는 부서'
   g16(item) '녹색 이외의 색상의 항목'
   g17(item) '녹색 항목을 제외한 모든 항목';

g15(dep) = sales(dep,"펜")$(sum((name,namep), emp(name,namep,dep)) > 22);
g16(항목) = sum((크기,색상), 유형(항목,색상,크기) - 유형(항목,"녹색",크기));
g17(item) = yes - sum(size, type(item,"green",size));

옵션 g05:0:0:1, g13:0, g14:0;

g01, g02, g03, g04, g05, g06, g07, g08, g09, g10, g11, g12, g13, g14, g15, g16, g17을 표시합니다.