2013-10-11 2 views
4

내가 SQL 테이블 상속이 이런 식으로 구현 한 :스칼라는 슬릭 테이블 상속

Table Shape: 
    Column | Type 
------------+--------- 
shape_id | integer 
square  | foat 
name  | character varying(64) 

Table Triangle 
    Column | Type 
------------+--------- 
shape_id | integer 
a   | float 
b   | float 
c   | float 
Foreign-key constraints: 
    "fkey1" FOREIGN KEY (shape_id) REFERENCES Shape(shape_id) 

Table Circle 
    Column | Type 
------------+--------- 
shape_id | integer 
r   | float 
Foreign-key constraints: 
    "fkey2" FOREIGN KEY (shape_id) REFERENCES Shape(shape_id) 

는이 삼각형 모양을 확장 서클 모양을 확장 어디 클래스 모델을 만드는 매끄러운과 가능을?

나는 this question을 보았지만 모든 파생 테이블 열이 하나의 테이블에 nullable로 놓이는 접근 방식을 좋아하지 않습니다.

감사합니다.

답변

4

슬릭은 관계형/기능 라이브러리입니다. 상속 자체를 매핑하지 않습니다. Inheritance with Slick in our Scala Days 2013 talk하는 방법에 대해 이야기합니다. Single Table Inheritance을 참조하는 게시물에서와 같이 할 수있는 방법을 설명합니다. Class Table Inheritance (원하는 것을 원하는 것 같습니다) 대신 Slick에서 관계를 사용하여 모델링하는 것이 좋습니다. "원형은 모양"이라고 생각하는 대신 "원형은 모양이 가질 수있는 역할"이라고 생각할 것입니다. 너는 너 자신 특정 제약을 보장해야 할 것이다. 예를 들어, 모양이 동시에 원과 삼각형이 아니어야합니다. DAO에 추가 할 수있는 API 뒤에 매핑 논리와 제약 조건 유효성 검사를 숨길 수 있습니다. 슬릭 (Slick)의 관계형 모드를 떠나면 질의 (JPA 등에없는 어쨌든)의 조합 가능성이 느슨해진다. Suggested Slick App ArchitectureComposable/Re-usable queries에 대해 이야기합니다.

+0

모든 parleys 링크가 죽었습니다. youtube에서 찾을 수 없습니다. – Intracer