전체 글 278

SQL (11) - 정규화

이번 포스트에서는 정규화가 무엇인지 알아보겠습니다. 1) 정규화란?정규화는 데이터 테이블을 올바르게 변경하고 분할하는 것을 의미합니다.조금 더 자세히 얘기하자면, 데이터베이스 테이블을 여러 테이블로 나누어 분할하고나눠진 테이블 간의 상관관계를 정의하여 데이터를 더 효율적으로 저장하고 관리하는 방법입니다. 2) 정규화의 처리과정정규화는 크게 다음의 과정을 거쳐 처리됩니다.1NF(제 1 정규화)2NF(제 2 정규화)3NF(제 3 정규화)BCNF(BCNF 정규화)4NF(제 4 정규화)5NF(제 5 정규화)하지만 일반적으로 제 3정규화까지만 수행하는 것이 보통의 수순입니다.이제 각각의 정규화가 어떻게 처리되는지 예시를 통해 알아보겠습니다.처리하고자 하는 예시의 데이터 테이블은 다음과 같습니다. 3) 제 1 정규..

데이터베이스 2025.02.12

SQL (10) - DDL

이번 포스트에서는 데이터베이스를 정의하는데 필요한 데이터 정의어(DDL)에 대해 알아보겠습니다.데이터 정의어 DDL에는 CREATE / ALTER / DROP의 3가지 함수가 있는데,각각 데이터 테이블을 생성 / 수정 / 삭제의 용도로 사용합니다. 1) 데이터 베이스 생성우선, 실습에 사용할 데이터 베이스를 만드는 것으로 시작하겠습니다.-- 데이터 베이스(=스키마) 생성CREATE DATABASE GameDB;-- 생성한 데이터 베이스에 대한 작업 수행을 명시USE GameDB; 위 쿼리의 실행 결과는 다음과 같습니다. 위와 같이 GameDB라는 이름의 데이터 베이스가 생성되었습니다. 2) CREATE : 데이터 테이블 생성데이터 테이블을 생성하는 CREATE의 경우, 다음의 형식으로 사용합니다. CRE..

데이터베이스 2025.02.12

SQL (9) - SUBQUERY

이번 포스트에서는 쿼리문에 사용가능한 SUBQUERY 또는 하위 쿼리에 대해 알아보겠습니다.하위 쿼리를 사용하게 되면 쿼리문의 로직을 유연하게 만들 수 있는 장점이 있습니다. 1) 일반 쿼리 VS 하위 쿼리-- 연봉이 높은 선수의 정보를 가져오고,SELECT TOP 1 *FROM salariesORDER BY salary DESC;-- 출력된 정보에서 선수 ID를 통해 데이터를 골라옴SELECT *FROM playersWHERE playerID = 'rodrial01' 위의 쿼리문은 두 개의 단계를 거쳐 진행됩니다.우선, 연봉이 제일 높은 선수의 정보를 가져오고 가져온 선수의 ID를 통해 데이터를 가져옵니다.실행 결과는 다음과 같습니다. 이때, 하위 쿼리를 사용하게 되면 위의 2가지 절차를 하나의 절차로..

데이터베이스 2025.02.12

2D RPG - (16 - 5) 블랙홀 스킬 구현_05

이번 포스트에서는 블랙홀 스킬의 버그를 수정하고 불필요한 연결 구조를 없애도록 하겠습니다. 1) SkillBlackHoleController      블랙홀 스킬의 조작을 담당하는 SkillBlackHoleController에 위와 같은 변경사항을 추가하였습니다.제일 위에서부터 1번으로 번호를 매겨 간단하게 정리해보았습니다.1번 : 블랙홀의 유지 시간을 의미하는 프로퍼티와 플레이어를 투명하게 할지 판단하는 프로퍼티2번 : BlackHole State에서 탈출하지 판단 / SetupBlackHole 메서드에서 블랙홀 유지 시간도 설정3번 : 블랙홀 유지 시간도 측정하여 적이 남았으면 분신이 마저 공격 아니라면 스킬 종료4번 : 분신의 공격이 끝나면 _playerCanDisapear로 판단하여 HotKey ..

2D RPG - (16 - 4) 블랙홀 스킬 구현_04

이번 포스트에서는 기존의 구조에 맞춰 블랙홀 스킬을 적용해보고 시각적으로 개선해보겠습니다. 1) BaseCharacterController   게임에서 사용하는 모든 캐릭터들의 조상 클래스인 BaseCharacterController에SpriteRenderer 프로퍼티를 추가하여 해당 프로퍼티를 통해 캐릭터를 투명하게 만드는MakeTransparent 메서드를 추가하였습니다. 2) SkillManagerpublic class SkillManager : MonoBehaviour{ public static SkillManager _skillManagerInstance; // SkillManager는 스킬을 수행하는 주체이므로, 각 스킬에 대해 알고 있어야 함 . . . public Skill..

2D RPG - (16 - 3) 블랙홀 스킬 구현_03

이번 포스트에서는 이전의 스킬 시스템에 블랙홀 스킬을 적용하기 이전에설계구조를 변경하고 수정하는 작업을 진행하겠습니다. 1) SkillBlackHoleController 우선, 스킬에 대한 Controller에서 프로퍼티에 접근하는 일을 막기 위해위와 같이 접근 수준을 private으로 변경하겠습니다.  또, 외부의 SkillManager에서 블랙홀을 설정하기 위해 새로 메서드를 생성하겠습니다.  마지막으로 블랙홀이 줄어들어도 적이 계속 얼어붙는 문제를 해결하기 위해 OnTriggerEnterExit2D 메서드를 위와 같이 설정하였습니다. 2) SkillBlackHolepublic class SkillBlackHole : SkillTemplate{ [SerializeField] private ..

2D RPG - (16 - 2) 블랙홀 스킬 구현_02

이번 포스트에서는 블랙홀에 묶여있는 적을 대상으로 올바른 키를 전부 입력한 후 R키를 누르면분신이 나타나 적을 공격하는 기능을 구현해보도록 하겠습니다.기존의 클론 생성 스킬을 수정하고 블랙홀 스킬의 Controller를 다듬어보는 방식으로 진행하겠습니다. 1) SkillCloningControllerpublic class SkillCloningController : MonoBehaviour{ . . . public void DoSetupClone(Transform newTransform, float cloneDuration, bool canAttack, Vector3 offset) { if (canAttack) _animator.SetInteger("At..

SQL (8) - 데이터 조작어(DML)

이번 포스트에서는 SQL에서 데이터 조작어에 해당하는 SELECT 외에도INSERT / DELETE / UPDATE에 대해 알아보겠습니다. 1) 데이터 테이블에 데이터를 추가 : INSERT데이터 테이블에 새로운 데이터를 추가하는 INSERT입니다.사용방법은 다음과 같습니다. INSERT INTO 테이블명 VALUES (값, ...) 위의 사용방법을 토대로 쿼리문을 하나 만들어보았습니다.salaries 테이블에 새로운 데이터를 추가합니다.INSERT INTO salariesVALUES (2024, 'KOR', 'NL', 'Park', 9000000); 쿼리 실행결과는 다음과 같습니다. 데이터를 추가하는 경우, 데이터가 비어있는 경우 에러를 발생시킵니다.playerID를 설정하지 않은 쿼리문입니다.-- 데..

데이터베이스 2025.02.11