설명
이 고전적인 데이터베이스 예는 작은 백화점을 사용하여 관계형 데이터 모델의 힘을 보여줍니다.
소형 모델 유형 :슬롯 무료체험
카테고리 : 슬롯 무료체험 모델 라이브러리
메인 파일 : 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을 표시합니다.