안녕하세요! 오늘은 로또 번호를 예측하는 데이터베이스 구조를 만들어볼 건데요, 복잡해 보일 수 있지만 아주 쉽게 설명해 드릴게요. 한 번 시작해 볼까요?
---
### 1. **로또 룰 테이블 만들기**
우리가 먼저 정의할 것은 **로또 룰**이에요. 로또 번호를 예측하기 위한 다양한 규칙을 여기에 담아두고 사용할 거예요. 테이블 이름은 `lotto_rules`이고요, 규칙의 이름, 조건, 보너스 포함 여부 등 여러 가지 정보를 담습니다.
-- 로또 룰 테이블: 로또 규칙을 저장하는 테이블입니다.
CREATE TABLE `lotto_rules` (
`id` int NOT NULL AUTO_INCREMENT, -- 규칙 고유 ID
`rule_name` varchar(50) DEFAULT NULL, -- 규칙 이름
`condition_type` varchar(20) DEFAULT NULL, -- 조건 타입 (어떤 규칙에 기반할지)
`order_sequence` varchar(10) DEFAULT NULL, -- 번호 순서
`bonus_included` tinyint(1) DEFAULT NULL, -- 보너스 번호 포함 여부 (1이면 포함, 0이면 미포함)
`lotto_round` varchar(10) DEFAULT NULL, -- 로또 회차 정보
`pre_lotto_round` VARCHAR(10) DEFAULT NULL, -- 이전 로또 회차 정보 (과거 회차 분석용)
`description` text, -- 규칙에 대한 설명
PRIMARY KEY (`id`) -- ID를 기본 키로 설정 (자동 증가)
);
- **규칙 고유 ID**: 각 규칙을 식별하기 위한 고유 번호!
- **보너스 번호 포함 여부**: 보너스 번호를 포함할지 말지 결정하는 옵션입니다.
- **이전 로또 회차**: 과거 데이터를 참고해서 예측하려면 필요하겠죠?
이 테이블은 규칙에 따라 어떤 조건을 사용해서 번호를 예측할지 정보를 모아두는 역할을 합니다.
---
### 2. **로또 룰 넘버 테이블**
다음으로 **로또 룰에 따른 번호 리스트**를 저장하는 테이블을 만들 거예요. 이 테이블은 어떤 규칙이 어떤 회차에 적용되었는지, 그리고 그 규칙에 따른 번호 리스트와 정확도를 기록해 둡니다.
-- 로또 룰 넘버: 규칙에 따라 예측된 번호를 저장하는 테이블입니다.
CREATE TABLE lotto_rule_numbers (
seq INT AUTO_INCREMENT PRIMARY KEY, -- 고유 시퀀스 번호 (자동 증가)
target_lotto_round INT NOT NULL, -- 목표 로또 회차 (몇 회차에 해당하는지)
lotto_rule_id INT NOT NULL, -- 로또 룰 테이블의 ID를 참조 (어떤 규칙인지)
rule_list VARCHAR(500) NOT NULL, -- 규칙에 따라 제외된 번호 리스트 (콤마로 구분된 문자열)
lotto_lucky_seq INT NOT NULL, -- 예상된 번호 시퀀스
percent DECIMAL(5, 2) NOT NULL, -- 제외수 정확도 (퍼센트로)
FOREIGN KEY (lotto_rule_id) REFERENCES lotto_rules(id) -- lotto_rules 테이블과 연결 (외래 키)
);
- **시퀀스 번호**: 각 예측 번호에 대한 고유 번호입니다.
- **제외된 번호 리스트**: 이 규칙으로 예측할 때 제외된 번호들이 여기 기록됩니다.
- **정확도**: 이 규칙이 얼마나 잘 맞았는지 퍼센트로 기록!
이 테이블은 우리가 만든 규칙이 실제로 어떻게 번호를 예측했는지 그 결과를 보여줍니다.
---
### 3. **로또 예상 번호 테이블**
마지막으로 **로또 예상 번호 테이블**을 만들 거예요. 여기서는 실제로 예측된 번호와 당첨 여부를 저장합니다.
-- 로또 예상 번호: 예측된 번호와 당첨 여부를 기록하는 테이블입니다.
CREATE TABLE lotto_lucky_numbers (
seq INT AUTO_INCREMENT PRIMARY KEY, -- 고유 시퀀스 번호 (자동 증가)
target_lotto_round INT NOT NULL, -- 목표 로또 회차
lucky_numbers VARCHAR(100) NOT NULL, -- 예상된 번호 리스트 (콤마로 구분된 문자열)
lotto_rank SMALLINT, -- 당첨 등수 (몇 등에 당첨됐는지)
lucky_yn CHAR(1) NOT NULL, -- 당첨 여부 (Y/N)
lotto_rule_number_seq INT NOT NULL, -- 로또 룰 넘버 테이블의 시퀀스 번호를 참조
FOREIGN KEY (lotto_rule_number_seq) REFERENCES lotto_rule_numbers(seq) -- 외래 키로 연결
);
- **예상된 번호 리스트**: 우리가 예측한 번호들이 여기에 기록돼요.
- **당첨 여부**: 이 번호가 당첨되었는지 여부를 `Y` 또는 `N`으로 기록합니다.
---
### 마무리!
이렇게 **로또 예측 데이터베이스**를 만들어봤는데요! 규칙을 만들고, 그 규칙에 따라 예측한 번호를 저장하고, 당첨 여부까지 기록할 수 있는 구조가 완성되었습니다. 복잡해 보이지만, 하나씩 따라가다 보면 꽤 재미있죠?
여러분도 한번 데이터를 넣어보며 직접 돌려보세요. 데이터베이스에서 로또 번호를 예측하다 보면, 언젠가 진짜로 1등에 당첨될지도 몰라요! 😄
'파이썬으로 로또 1등 도전기' 카테고리의 다른 글
14일차) 로또번호 예측기능을 웹페이지로 확인하기 (0) | 2024.10.24 |
---|---|
13일차) 로또룰을 적용해서 당첨 번호 만들어서 저장까지!!! (0) | 2024.10.23 |
11일차) lotto_rules에서 제외수 가져와서 당첨번호 추출하기 (1) | 2024.10.22 |
10일차) 로또 원칙을 MySQL에 저장하는 방법 (0) | 2024.10.22 |
9일차) 원칙 및 예상번호 등록을 위한 MySQL DB설정 준비 (1) | 2024.10.14 |