Files
jongryangje/writable/database/menu_tables.sql
taekyoungc 4e557d4be1 Initial project import for team collaboration.
Exclude local docs, MCP, and secrets via gitignore.

Made-with: Cursor
2026-03-25 12:05:33 +09:00

59 lines
3.7 KiB
SQL

-- 메뉴 종류 (admin=관리자 상단 메뉴, site=사이트 첫페이지 등)
CREATE TABLE IF NOT EXISTS `menu_type` (
`mt_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '메뉴종류 PK',
`mt_code` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '코드(admin, site 등)',
`mt_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '표시명',
`mt_sort` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '정렬',
PRIMARY KEY (`mt_idx`),
UNIQUE KEY `uk_mt_code` (`mt_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='메뉴 종류';
-- 메뉴 항목 (지자체별 관리, 트리: mm_pidx=0 최상위, mm_dep 깊이, mm_num 형제순서)
CREATE TABLE IF NOT EXISTS `menu` (
`mm_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '메뉴 PK',
`mt_idx` INT UNSIGNED NOT NULL COMMENT '메뉴종류 FK',
`lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`mm_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '메뉴명',
`mm_link` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '링크(예: admin/users)',
`mm_pidx` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '부모 메뉴 PK(0=최상위)',
`mm_dep` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '깊이(0,1,2)',
`mm_num` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '형제 내 순서',
`mm_cnode` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '자식 개수',
`mm_level` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '노출 허용 mb_level 쉼표구분(빈값=전체)',
`mm_is_view` CHAR(1) NOT NULL DEFAULT 'Y' COMMENT 'Y=노출, N=숨김',
PRIMARY KEY (`mm_idx`),
KEY `idx_mt_lg` (`mt_idx`, `lg_idx`),
KEY `idx_mm_pidx` (`mm_pidx`),
KEY `idx_mm_dep_num` (`mm_dep`, `mm_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='메뉴';
-- 초기 데이터: 메뉴 종류 (admin, site) + lg_idx=1 지자체용 기본 1차 메뉴
INSERT INTO `menu_type` (`mt_code`, `mt_name`, `mt_sort`) VALUES
('admin', '관리자 메뉴', 10),
('site', '사이트 메뉴', 20);
-- admin 타입, lg_idx=1 기본 1차 관리자 메뉴
INSERT INTO `menu` (`mt_idx`, `lg_idx`, `mm_name`, `mm_link`, `mm_pidx`, `mm_dep`, `mm_num`, `mm_cnode`, `mm_level`, `mm_is_view`) VALUES
-- mt_idx=1 (admin)
(1, 1, '대시보드', 'admin', 0, 0, 0, 0, '3', 'Y'),
(1, 1, '회원 관리', 'admin/users', 0, 0, 1, 0, '', 'Y'),
(1, 1, '로그인 이력', 'admin/access/login-history', 0, 0, 2, 0, '', 'Y'),
(1, 1, '승인 대기', 'admin/access/approvals', 0, 0, 3, 0, '', 'Y'),
(1, 1, '역할', 'admin/roles', 0, 0, 4, 0, '', 'Y'),
(1, 1, '메뉴', 'admin/menus', 0, 0, 5, 0, '', 'Y'),
(1, 1, '지자체 전환', 'admin/select-local-government', 0, 0, 6, 0, '', 'Y'),
(1, 1, '지자체', 'admin/local-governments', 0, 0, 7, 0, '', 'Y'),
(1, 1, '지정판매소', 'admin/designated-shops', 0, 0, 8, 0, '3', 'Y'),
-- mt_idx=2 (site) 기본 1차 사이트 메뉴 (링크는 추후 실제 라우트로 변경)
(2, 1, '기본정보관리', 'bag/basic-info', 0, 0, 0, 0, '', 'Y'),
(2, 1, '발주 입고 관리', 'bag/purchase-inbound', 0, 0, 1, 0, '', 'Y'),
(2, 1, '불출 관리', 'bag/issue', 0, 0, 2, 0, '', 'Y'),
(2, 1, '재고 관리', 'bag/inventory', 0, 0, 3, 0, '', 'Y'),
(2, 1, '판매 관리', 'bag/sales', 0, 0, 4, 0, '', 'Y'),
(2, 1, '판매 현황', 'bag/sales-stats', 0, 0, 5, 0, '', 'Y'),
(2, 1, '봉투 수불 관리', 'bag/flow', 0, 0, 6, 0, '', 'Y'),
(2, 1, '통계 분석 관리', 'bag/analytics', 0, 0, 7, 0, '', 'Y'),
(2, 1, '', 'bag/window', 0, 0, 8, 0, '', 'Y'),
(2, 1, '도움말', 'bag/help', 0, 0, 9, 0, '', 'Y');