문서의 이전 판입니다!
SQL AntiPatterns 개발자가 알아야할 25가지 SQL 함정과 해법
기억 재생을 위한 간략한 정리이다. 실질적으로 왜 해당 항목이 안티 패턴인지에 대한 구체적 이유, 구체적인 해결책은 무엇인지 등에 대해서는 책을 참조한다.
CREATE TABLE Bugs ( bug_id SERIAL PRIMARY KEY, description VARCHAR(1000), tag1 VARCHAR(20), tag2 VARCHAR(20), tag3 VARCHAR(20) );
CREATE TABLE Tags ( bug_id BIGINT UNSIGNED NOT NULL, tag VARCHAR(20), PRIMARY KEY (bug_id,tag), FOREIGN KEY (bug_id) REFERENCES Bugs (bug_id) );
ALTER TABLE Bugs ADD COLUMN hours NUMERIC(9,2);
⇔
)LIMIT 1 OFFSET :offset
으로이 항목은 따로 설명하면, 액티브 레코드가 나쁘다는 얘기가 아니다. 컨트롤러에서 DAO 혹은 액티브 레코드의 DB관련 메소드를 직접 호출하지 말라는 얘기이다. Java로 설명하면 Controller는 Service를 호출하고 Service에서 DAO를 호출해야 한다. DAO가 Controller에서 직접 호출되면 안된다. 이 원칙을 액티브 레코드를 사용하는 MVC 프레임워크에서도 그대로 적용하며 Controller에서 ActiveRecord의 메소드를 직접호출하지 말고 중간 모델 객체(서비스 객체)를 두라는 의미이다.