본문 바로가기

728x90
반응형

IT/DB

(43)
db 테이블 생성 시 외래키 역할과 외래키를 설정하고 안하고의 차이는? 외래키(Foreign Key)는 데이터베이스에서 테이블 간의 관계를 정의하고 데이터의 무결성을 보장하기 위해 사용되는 중요한 제약 조건입니다. 아래에 외래키의 역할과 외래키를 설정했을 때와 안 했을 때의 차이를 설명해드릴게요.✅ 외래키(Foreign Key)의 역할테이블 간의 관계를 설정예: orders 테이블의 customer_id → customers 테이블의 id를 참조데이터 무결성(정합성) 보장외래키는 참조 대상이 존재할 때만 데이터를 삽입하거나 갱신할 수 있게 제한존재하지 않는 고객 ID로 주문을 넣는 걸 막음삭제/수정 시 자동 제어 (옵션 설정 시)ON DELETE CASCADE: 참조 대상이 삭제되면 외래키 행도 같이 삭제ON DELETE SET NULL: 참조 대상 삭제 시 외래키 값을 N..
외래키와 인덱스 관계는? 외래키(Foreign Key)와 인덱스(Index)는 서로 다른 개념이지만, 성능 및 무결성 유지 측면에서 밀접한 관계가 있습니다. ✅ 기본 개념 정리개념설명외래키 (Foreign Key)다른 테이블의 기본키(또는 유니크 키)를 참조하는 제약 조건 (무결성 유지 목적)인덱스 (Index)데이터를 빠르게 찾기 위한 자료구조 (성능 향상 목적) 🔗 외래키와 인덱스의 관계🔸 1. **참조 대상 칼럼(=부모 테이블 키)**에는 인덱스가 반드시 있어야 함외래키는 부모 테이블의 기본키나 유니크 인덱스 컬럼만 참조 가능즉, 외래키는 기본적으로 인덱스를 가진 컬럼만 참조할 수 있음 🔸 2. **외래키 칼럼(=자식 테이블의 참조 컬럼)**에는 인덱스가 자동 생성되지 않음대부분의 DBMS(MySQL, Postgre..
쿼리에서 group concat 함수 사용하는 방법은? GROUP_CONCAT() 함수는 여러 값을 한 줄로 합쳐서 보여줄 수 있는 아주 유용한 함수 입니다.특히 GROUP BY 쿼리에서 여러 값을 쉼표(,)나 원하는 구분자로 묶어 표현할 때 씁니다. ✅ 기본 사용법SELECT department_id, GROUP_CONCAT(employee_name) FROM employees GROUP BY department_id; 🔍 결과department_idGROUP_CONCAT(employee_name)1Alice,Bob,Charlie2David,Eve🧩 자주 쓰는 옵션들1. 구분자 바꾸기GROUP_CONCAT(employee_name SEPARATOR ' / ') -- → Alice / Bob / Charlie2. 중복 제거GROUP_CONCAT(DISTI..
SQL 쿼리에서 문자열 검색 조건 REGEXP 사용하는 방법은? REGEXP는 SQL에서 정규표현식(Regular Expression) 으로 문자열을 매칭할 수 있게 해주는 강력한 기능입니다. 큐브리드에서도 REGEXP_LIKE() 함수를 통해 사용 가능합니다. ✅ 기본 문법 (CUBRID)SELECT * FROM 테이블명 WHERE REGEXP_LIKE(컬럼명, '정규표현식패턴'); 🔍 예제들 1. 특정 패턴 포함-- 이름에 "김"이 들어간 사람SELECT * FROM 사용자 WHERE REGEXP_LIKE(이름, '김');2. 전화번호가 010으로 시작SELECT * FROM 연락처 WHERE REGEXP_LIKE(전화번호, '^010');3. 숫자만 포함된 문자열 찾기SELECT * FROM 데이터 WHERE REGEXP_LIKE(내용, '^[0-9]+$');..
SQL 데이터베이스 사용 횟수 별 사용자 수 구하는 쿼리 예시 데이터베이스에서 사용 횟수별 사용자 수를 구하는 SQL 쿼리는 아래 사용자의 활동 로그 기반 예시로 작성할 수 있습니다.  ✅ 예제 테이블 (user_logs) 사용자의 활동(로그인, 조회, 결제 등)이 기록된 로그 테이블이 있다고 가정하겠습니다. user_idactionaction_date1login2024-03-011purchase2024-03-021view_page2024-03-022login2024-03-012view_page2024-03-033login2024-03-013purchase2024-03-043view_page2024-03-053view_page2024-03-05 ✅ SQL 쿼리 (사용 횟수별 사용자 수 집계) SELECT usage_count, COUNT(user_id) AS use..
mysql workbench table inspector 클릭 시 unhandled exception: invaild column partition_name for resultset 오류 MySQL Workbench에서 "Unhandled exception: invalid column partition_name for resultset" 오류가 발생하는 경우, 주로 MySQL Workbench와 MySQL 서버 간의 버전 불일치가 원인입니다. 특히, MySQL 8.x 버전에서 Workbench가 올바르게 테이블 정보를 가져오지 못할 때 발생할 수 있습니다.✅ 해결 방법1. MySQL Workbench 최신 버전으로 업데이트MySQL Workbench가 구버전이면 최신 MySQL 서버에서 변경된 정보를 제대로 처리하지 못할 수 있습니다.✅ MySQL 공식 다운로드 에서 최신 버전으로 업데이트하세요.2. Workbench 설정 변경 (Partition 정보 비활성화)table inspecto..
데이터베이스 fact 테이블, dimension 테이블 뜻 데이터베이스에서 Fact 테이블과 Dimension 테이블은 데이터 웨어하우스(Data Warehouse)에서 자주 사용되는 개념입니다.✅ 1. Fact 테이블 (사실 테이블)"측정값(수치 데이터)"을 저장하는 테이블일반적으로 트랜잭션 데이터(판매, 클릭 수, 매출 등) 를 포함📌 특징주로 숫자 데이터(측정값, 집계 대상) 를 저장Dimension 테이블의 키(FK)를 포함하여 관계를 형성대량의 데이터를 저장하는 경우가 많음 📌 예제 (판매 데이터)주문ID고객ID제품ID판매액수량날짜ID1001C001P00150,0002202403011002C002P003120,0001202403021003C003P00280,000420240303 📌 Fact 테이블의 핵심 데이터:✅ 판매액, 수량 → 숫자로 측정 ..
The class 'A테이블' is marked as REUSE_OID and is non-referable. Non-referable classes can't be the domain of an attribute and their instances' OIDs cannot be returned. 오류 원인? 오류 원인 The class 'A테이블' is marked as REUSE_OID and is non-referable. Non-referable classes can't be the domain of an attribute and their instances' OIDs cannot be returned. 이 오류는 큐브리드(CUBRID)에서 테이블이 REUSE_OID로 설정되어 있을 때 발생합니다.REUSE_OID란?테이블이 REUSE_OID로 설정되면, 객체 ID(OID)가 재사용되므로 해당 테이블을 다른 테이블에서 참조(외래키 관계)할 수 없습니다.즉, 이 테이블을 다른 테이블에서 외래키(FK) 또는 참조 타입(REFERENCE) 으로 사용할 수 없습니다.또한, SELECT 쿼리에서 OID를 반환할..

728x90
반응형