그동안 진행한 글들을 보시면서 이런 궁금증이 생기실수도 있습니다.
그럼 DB는 어떻게 되어있길래 저렇게 DB에 데이터를 넣고 가져와서 쓸 수 있는거지?
그래서 이번에는 DB에 있는 테이블 구조들을 보도록 하겠습니다.
※ 코드에 있는 테이블, 컬럼 명이랑 대소문자 등이 다를 수 도 있습니다. 여러분들 보기 편하기 위해서 수정했습니다.
(그리고 저도 곧 이렇게 수정할 예정입니다.)
1. 테이블 리스트
한번 표로 정리해봤습니다.
Table 이름 | 역할 | 사용되는 기능 | 비고 |
LIGHT_RESERVE | 전등 예약 설정 정보 저장 | 전등 예약 | |
LIGHT_RECORD | 전등을 컨트롤 한 기록 저장 | 전등 컨트롤 기록 | 누가,언제,어디를,무엇을 |
NOTICE | 공지사항 정보 저장 | 공지사항 | |
ROOM_LIGHT | 전등 리스트 정보 저장 | 전등 리스트 | 상태값 포함 |
TRASH | 파일서버 임시삭제 정보저장 | 파일 서버 휴지통 | 파일서버 휴지통에 간 파일들 |
USER | 유저 정보 저장 | 유저 | |
VERSION | 앱 버전 저장 | 앱 업데이트 | 안드로이드 버전 |
2. 테이블 별 구조
테이블 별로 표로 정리해봤습니다.
1번. LIGHT_RESERVE
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
NUM | INT | 키 | 1 | PK |
TIME | VARCHAR | 작동할 시간 | 23:15 | |
ROOM | VARCHAR | 작동할 전등(방) | small room | |
ROOM_KOR | VARCHAR | 작동할 전등(방) 한국어 | 작은방 | |
DO | VARCHAR | 해야할 행동 | OFF | |
DAY | VARCHAR | 작동할 요일 | 월,수,금 | |
ACTIVATED | VARCHAR | 작동 여부 | False | |
REITERATION | VARCHAR | 반복 여부 | True |
2번. LIGHT_RECORD
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
NUM | INT | 키 | 1 | PK |
DAY | VARCHAR | 작동할 날짜 | 2023-05-09 | |
TIME | VARCHAR | 작동할 시간 | 14:45 | |
ROOM | VARCHAR | 작동할 전등(방) | small room | |
DO | VARCHAR | 해야할 행동 | On | |
USER | VARCHAR | 작동한 유저 | sonjuhy |
3번. NOTICE
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
NUM | INT | 키 | 1 | PK |
NAME | VARCHAR | 작성자 명 | sonjuhy | |
TITLE | VARCHAR | 공지 제목 | 공지입니다. | |
CONTENT | VARCHAR | 공지 내용 | 내용입니다. | |
TIME | VARCHAR | 공지한 시간 | 12:10 |
4번. ROOM_LIGHT
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
ROOM | VARCHAR | 키 | living room1 | PK |
STATE | VARCHAR | 전등 상태 | Off | |
ROOM_KOR | VARCHAR | 전등(방) 한국어 | 거실 윗 스위치 | |
CATEGORY | VARCHAR | 속한 카테고리(방) | living room | 거실(카테고리) → 거실 불(전등) |
CONNECT | VARCHAR | 연결상태 | On |
5번. TRASH
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
ID | INT | 키 | 1 | PK |
FILENAME | VARCHAR | 파일 이름 | Myhome.apk | |
FILELINK | VARCHAR | 파일 기존 위치 | /home/public/sonjuhy |
6번. USER
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
ID | VARCHAR | 키 | sonjuhy | PK |
NAME | VARCHAR | 작성자 명 | redhat | |
PW | VARCHAR | 공지 제목 | 1234 | |
FNUMBER | INT | 고유 순번 | 1 | UNI |
7번. VERSION
Column 이름 | 데이터 타입 | 역할 | 데이터 예시 | 비고 |
VER | DOUBLE | 안드로이드 앱 버전 | 1.0 |
몇몇 구조에 대해 설명 드리겠습니다.
- 전등에 카테고리가 있는 이유
- 저희 집에 거실장 스위치랑 큰 베란다 스위치가 통합이 되어있어서 이를 구분할 필요가 있어서 카테고리로 나누게 되었습니다. 즉 거실장 → 거실, 큰 베란다 → 거실, 작은 베란다 → 발코니. 이렇게 되어있습니다.
- TRASH란 테이블 목적
- 파일서버에서 파일을 삭제하면 윈도우처럼 휴지통으로 가는것이 아닌 영구 삭제이기에 휴지통 기능을 위해 복구를 원할 시, 원래의 위치를 DB에 저장하기 위해 만들었습니다.
- USER에 FNUMBER 역할
- 파일서버에 개인 공간을 할당해야하는데 폴더를 새로 생성할때 기준이름으로 사용됩니다. 예를 들어 FNUMBER가 1인 사람은 USER_1 이런식입니다. 그러기 위해 유니크로 설정되었습니다.
추가적으로 궁금하신 점은 댓글 남겨주세요
'홈 IoT > 기타' 카테고리의 다른 글
EPS8266 MQTT 통신(라이브러리 교체) (2) | 2024.06.15 |
---|---|
ESP8266 스위치 펌웨어 제작 (0) | 2023.05.10 |
파트 별 JSON 데이터 타입 설정 (0) | 2023.05.02 |
ESP8266 에서 MQTT 통신하기 (0) | 2023.04.24 |