- 질문 게시판입니다.
Date 21/04/13 12:17:13
Name   거소
Subject   MySQL 관련 질문입니다


안녕하세요
SQL 초짜가 질문 드립니다
MongoDB만 쓰다가 SQL 쓰려니 피똥 싸는 중입니다.

현재 테이블 구조는 이렇습니다

user key (중복가능) / order key(중복불가-auto increment와 비슷한 역할) / type key(중복가능) / 기타 데이터 컬럼

user key와 order key, type key는 각각 pk로 설정되어 있으며, 한 유저가 여러 데이터 row을 갖고 있고, 해당 row들의 유일한 키 값으로 order key를 활용하는 형태입니다.

이건 이전 외주사가 이렇게 설계를 해 놓았는데
제 생각에는

id key(중복불가-auto increment 설정) / user key(중복가능) / type key(중복가능) / 기타 데이터 컬럼
으로 변경하고 id key만 pk키로 작동하는게 좋지 않을까 생각하고 있습니다.

이렇게 설정하는게 더 각 row를 조작하는 부분에 있어서 좋지 않나 하여 변경을 생각 중입니다.
혹시 이렇게 변경함으로서 생기는 DB 성능의 문제 같은 게 있을까요?
또는 이렇게 바뀌어도 별 반 차이가 없는 걸까요? 제 생각에는 테이블 내에 종속성이 중복되는 것은 별로 바람직하지 않다고 생각했거든요.
짧은 식견으로는 별 문제가 없을 것 같은데 혹시 몰라 질문 드립니다.
해당 데이터 테이블은 아무리 데이터가 많이 쌓여도 500만 건을 넘지는 않을 예정입니다.



0


pk가 한 테이블에 여러개에요?
하나만 설정할 수 있는거 아닌가
다중기본키 할수있어용 괄호로 (aa, bb, cc ..) 이런식으로 PRIMARY KEY 설정 가능합니당
옹 몰랐다
솔직히 설명만으로는 테이블 구조가 잘 안와닿습니다만...
schema 복붙이 어렵다면, 테이블 별로 설명을 해주시면 좋을것 같네요.

처음 언급하신건 order테이블인게 확 와닿아서 별 문제 없는것 같은데, 개선하시려는 두번째 테이블 스키마는 무슨 용도인지 모르겠습니다.
교과서적인 조언만 드리자면, 데이터 타입에 따라 기타 컬럼 데이터 유무를 관리하면 반드시 정합성 문제가 발생합니다. 용도 별로 나누고 key를 쓰세요.

mysql이 처음이라면 wp 데이터베이스가 CMS공부하기 좋습니다.
잘만든건 아니지만... term_taxonomy나 terms 관리방법이 제법 교과서적입니다.
... 더 보기
솔직히 설명만으로는 테이블 구조가 잘 안와닿습니다만...
schema 복붙이 어렵다면, 테이블 별로 설명을 해주시면 좋을것 같네요.

처음 언급하신건 order테이블인게 확 와닿아서 별 문제 없는것 같은데, 개선하시려는 두번째 테이블 스키마는 무슨 용도인지 모르겠습니다.
교과서적인 조언만 드리자면, 데이터 타입에 따라 기타 컬럼 데이터 유무를 관리하면 반드시 정합성 문제가 발생합니다. 용도 별로 나누고 key를 쓰세요.

mysql이 처음이라면 wp 데이터베이스가 CMS공부하기 좋습니다.
잘만든건 아니지만... term_taxonomy나 terms 관리방법이 제법 교과서적입니다.
나중에 ACF나 WooCommerce플러그인이 신규 테이블을 어떻게 만드는지 보시면 모던한 mysql 사용법도 익히실 수 있을 겁니다.
(WooCommerce는 이커머스용 테이블 잔뜩 만드니 도움될지도 모르겠네요)
https://codex.wordpress.org/Database_Description
오 감사합니다 참고하겠습니다
댓글들 보고 다시 읽어보니 무슨말인지 이해했어요. pk가 여러개인데 하나로 통합하고 싶다는거군요... 난독 재송합니다.
주문 테이블은 아무래도 UI상 피봇테이블을 많이 지원하는 경우가 있어서 저렇게 만든거 같네요.

사실 키보다 기타 데이터 컬럼이 더 중요한데, 각 pk별로 모든 컬럼에서 3NF 문제가 발생하지 않는다면 그대로 쓰겠지만,
그렇지 않다면 pk 통합보다 테이블을 나누는게 더 필요할지도 모릅니다.
전 dba 는 아니고 dba 옆자리에서 일하는 사람인데요;
적어 주신 것만 봐서는 id를 auto increment primary key 로 잡으시고 user, type 은 index 로 걸어 두시면 될 것 같습니다.
어떤 값을 저장하고 무슨 역할을 하는 데이터인지는 모르지만, id가 별도로 추가된 걸 봐서는 <user, type> 으로 고유 식별자 역할을 할 수 있는 게 아닐 거 같고 그럼 중복 가능한 컬럼을 여럿 묶어서 pk 로 잡을 필요가 없을거 같습니다.
user나 type 으로 찾거나 정렬할 일이 있다면 index 만 걸어 두셔도 될듯요?
오 감사합니다.
제 경험상으로, 속도 문제때문에 저렇게 만든 것 같기도 합니다. MySQL은 아니고 MariaDB이긴 했습니다만(그래도 똑같이 InnoDB 썼습니다), 테이블에서 row 길이가 수백만건 이상이 되면 아무리 인덱싱을 한다고 해도 절대적인 테이블의 길이때문에 어쩔 수 없이 성능에 문제가 생기는 경향이 있더군요.
강백호덩크
지금 테이블 구조가 정확하게 잘 잡은 것 같은데요.. rdb 랑 nosql 이랑 차이가 분명한 것이니까요...
Primary key 로 3 개 잡으면 따로 각각 인덱스 잡을 필요도 없이 원하는 대부분의 쿼리에 최적 성능을 내주는 구조로 보입니다. nosql 스타일로 바꿔서 이득을 볼 일이 없어보입니다.
물론... 사용하는 쿼리를 모르는 상태이니 반쪽 답변이지만요.
사용자 대상 타입별 순서 커피가 사용되면 현재가 최선일것 같습니다.
중복 불가능하게 할 이유가 있다면 굳이 풀 필요는 없을듯 합니다.
목록
번호 제목 이름 날짜 조회 추천
11638 IT/컴퓨터파이썬 초보 질문입니다.. 2 윤지호 21/05/30 5393 0
11608 IT/컴퓨터TV 추천 부탁드립니다. 2 양말 21/05/25 4676 1
11590 IT/컴퓨터[마감]이정도 사양의 컴퓨터 중고로 얼마가 적당할까요? lonely INTJ 21/05/22 4410 0
11589 IT/컴퓨터Ken-Burns 효과 지원하는 윈도우용 슬라이드쇼 앱 포말하우트b 21/05/22 4298 0
11587 IT/컴퓨터손잡이 있는 노트북 파우치 추천 부탁드려요 1 INFJ 21/05/22 4279 0
11581 IT/컴퓨터컴퓨터 관련 자격증이요. 3 치토스순한맛 21/05/21 4367 0
11578 IT/컴퓨터스마트 폰 두대를 사용해서 네비 연동이 가능할까요? 4 만돌린 21/05/21 5352 0
11571 IT/컴퓨터아이폰 11시리즈 이유있는생수 21/05/20 3768 0
11560 IT/컴퓨터페북 계정이 이상합니다 4 INFJ 21/05/19 4706 0
11559 IT/컴퓨터프로젝트 스케쥴 관리 프로그램 또는 앱 18 *alchemist* 21/05/18 5685 0
11558 IT/컴퓨터아이폰 케이블 청소 방법 10 토비 21/05/18 6536 0
11556 IT/컴퓨터오피스 프로그램 기능 중에 이런 게 있을까요 ... 2 RedSkai 21/05/18 4552 0
11555 IT/컴퓨터태블릿에 유선 키보드, 마우스 연결해서 써보신분 계신가요 5 똘빼 21/05/18 5807 0
11551 IT/컴퓨터태블릿 수리 견적 얼마나 나올까요.. 4 초이 21/05/17 4965 2
11542 IT/컴퓨터유튜브 채널 추천 부탁드리겠습니다 17 불타는밀밭 21/05/15 4858 0
11529 IT/컴퓨터인터넷 속도 - 라우터를 하나 늘렸더니 속도가 줄었어요 2 매뉴물있뉴 21/05/13 5233 0
11525 IT/컴퓨터업무나 공부하면서 들을 라디오? 추천 부탁드립니다. 4 불타는밀밭 21/05/13 4584 0
11515 IT/컴퓨터인스타 댓글 삭제하면 알림 가나요? 2 사과농장 21/05/10 13010 0
11501 IT/컴퓨터전자책 어플 추천 부탁드립니다 똘빼 21/05/06 5538 0
11495 IT/컴퓨터포토샵 잘하시는 선생님 혹시 계신가요? 9 김영웅 21/05/04 4961 1
11494 IT/컴퓨터컴퓨터가 안켜집니다 4 원추리 21/05/04 5396 0
11484 IT/컴퓨터맥북 프로 13인치 배터리교체+내부청소 하려는데요 10 무적의청솔모 21/05/03 5074 0
11481 IT/컴퓨터갤럭시탭 아이패드 둘다 써보신분??? 12 copin 21/05/02 4849 0
11458 IT/컴퓨터방송용 주변 장비 질문.. J_Square 21/04/30 4449 0
11448 IT/컴퓨터프론트엔드 개발자 면접 질문입니다 22 거소 21/04/29 6732 0
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글