본문 바로가기

CSあるある

SQL은 tuple의 중복을 허락한다! 엥??? relational data model에서의 implicit constraints에서 분명히 "tuple"은 중복을 허락하지 않는다고 하였는디??일단 SQL이 어떻게 tuple의 중복을 허락하는 지 예시로 살펴보자. 📌 예제아래 예제는 동일한 데이터를 여러 번 삽입하고, 중복이 허용되는지를 확인하는 것입니다.1️⃣ 테이블 생성CREATE TABLE employees ( id INT, // 이 column을 Pk로 명시적 설정하지 않음을 기억하자 name VARCHAR(50), department VARCHAR(50));2️⃣ 중복 데이터 삽입INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'HR');INSER.. 더보기
constraints(Feat. implicit constraints,explicit constraints) constraints : relational database의 relation들이 항상/무조건 지켜줘야 하는 제약사항. constraints는 크게 implicit constraints(내포된/묵시적 제약사항)와 explicit constraints(명시적 제약사항)로 나뉜다. implicit constraintsrelational data model 자체가 가지는 constraints로써 아래 2가지 예시가 있다. 1] relation은 중복되는 tuple을 가질 수 없다. 2] relation 내에 같은 이름의 attribute를 가질 수 없다.  explicit constraints( schema-based constraints )주로 DDL을 통해 Schema에 직접 명시할 수 있는 constra.. 더보기
DB에서 NULL은 되도록 사용하지 말자 결론부터 말하면"NULL은 여러 의미로 해석될 수 있기 때문에 사용을 되도록 하지 말아야 한다"(개인적인 생각이지만 만약 NULL을 사용한다면 프로젝트 개발자들과 NULL의 용도를 1개로 통일해서 사용해야 함)-> 아래에서 위 내용을 자세히 알아보자. DB에서 NULL의 의미1. 값이 존재하지 않는다. 2. 값이 존재하지만 아직 그 값이 무엇인지 알지 못한다(업데이트가 안 된 상항)3. 해당 사항과 관련 없다. -> 아래의 예시를 통해 NULL의 문제점을 알아 보자.  toeic_score=NULL의 의미는 과연 무엇일까?1. 토익을 안 쳐서 점수가 없는 경우2. 토익을 쳤지만 아직 점수 발표가 안 난 경우3. 해당 학생은 토익과는 전혀 관련이 없는 경우-> 위와 같이 여러 해석이 존재하기에 어떤 용도로.. 더보기
도메인(Domain)의 정의 -종결편- 도메인이라는 개념은 기본적으로 어떤 특정한 범위나 영역을 의미.1️⃣ 웹 개발에서의 도메인웹 개발에서 "도메인(domain)"은 인터넷에서 특정 웹사이트를 식별하는 주소를 의미해.예를 들면:google.comnaver.comgithub.io이런 것들이 도메인이야.📌 예시네이버에 접속하려면 네이버의 서버 IP 주소(예: 223.130.195.200)를 알아야 하지만, 사람이 숫자를 외우는 건 어렵잖아? 그래서 IP 주소 대신 사람이 이해하기 쉬운 단어(도메인) 를 쓰는 거야.👉 즉, 도메인은 웹사이트를 찾기 쉽게 만들어주는 이름(주소) 역할을 해!2️⃣ DB(데이터베이스)에서의 도메인DB에서 "도메인(domain)"은 어떤 값이 가질 수 있는 허용된 범위(제한된 값의 집합) 를 뜻해.📌 예시예를 들어.. 더보기
추상화에 대한 정리(Feat. 객체 지향,oop) 추상화 : 여러 곳에서의 "공통된/중복된 [역할]"을 따로 뺌(SRP) -> 기대 효과 : 1] 개발/운영 중 요구 사항/코드 [변경]에 따른 클라이언트 코드 [변경]'의' 최소화(OCP)                  : 2] 단일 책임 원칙으로 인한 [코드 중복]'의' 최소화                     -> 개발/운영 중 요구 사항/코드 [변경]에 따른 개발자의 개발량/실수 감소.  EX) AppConfig 클래스   EX) Front Controller(Dispatcher Servlet) : 클라이언트에서 필요한 컨트롤러를 찾아 주는 [역할] ->Front Contrller를 만들기 전에는 개발자가 일일이 서블릿을 등록하였다.  그 역할이 개발자로부터 분리되었다.  객체지향 = 다형성 + .. 더보기
MVCC에 대한 오해 MVCC(Multi-Version Concurrency Control)는 단일 INSERT 쿼리라도 동작합니다. 이유는 MVCC의 본질이 트랜잭션의 유무와 상관없이 데이터베이스의 동시성과 일관성을 유지하기 위해 설계되었기 때문이다. 고로, "MVCC == 트랜잭션의 동시성과 일관성을 위한 것"이라는 것은 나의 오해 더보기
LinkedHashMap 단순한 HashMap은 insert한 순서를 보장하지 않는다. LinkedHashMap을 사용하면 insert한 순서를 보장한다. 물론 get의 순서도 보장!!LinkedHashMap regions = new LinkedHashMap();//LinkedHashMap을 사용하면 put한 [순서대로] 저장이 된다. regions.put("SEOUL","서울"); // 삽입 순서 1regions.put("BUSAN","부산"); // 삽입 순서 2regions.put("JEJU","제주"); // 삽입 순서 3 더보기
<label for=""> 과 name 속성(Feat. HTML) 상품명  for 속성의 역할for="itemName"의 역할은 태그와 태그를 연결하는 것입니다.for 속성의 값은 연결하고자 하는 태그의 id 속성과 동일해야 합니다.이렇게 하면 사용자가 을 클릭했을 때, 해당하는 요소로 포커스가 자동으로 이동합니다.이는 사용자 경험을 향상시키고 접근성을 높이는 데 중요한 역할을 합니다.위 코드에서는: 태그의 for="itemName"은 태그의 id="itemName"와 연결됩니다.결과적으로, "상품명" 레이블을 클릭하면 "이름을 입력하세요"라는 입력 필드에 포커스가 이동합니다.이 기능은 특히 키보드나 화면 읽기 프로그램을 사용하는 사용자들에게 유용합니다. name 속성의 역할name="itemName"의 역할은 FORM 데이터를 서버로 전송.. 더보기