2012-07-02 7 views
0

관계형 (sqlite) 데이터베이스에서 상속을 모방하는 테이블을 구현하려고합니다. 내 목표는 일반 필드가있는 하나의 마스터 테이블과 특수 필드가있는 자식 테이블을 가지는 것입니다. 마스터 테이블의 모든 레코드는 정확하게 특정 테이블 중 하나에 정확하게 하나의 대응을 갖습니다.Web2py : 외래 키로 ID

마스터 테이블 :

id (PK) #Your average web2py unique auto-incrementing int field 
#Some general fields 

아이 테이블 :는 내가 원하는 다음과 같습니다

id (PK, FK referencing the PK of the master table) 
#Some specialized fields 

각 자식 테이블에 대한 기본 "ID"PK를 갖는 나에게 아무 소용이 없습니다. 마스터 테이블에 대한 FK 참조 만 있으면됩니다.이 참조는 하위 테이블에 대한 PK 역할을 할 수 있습니다. 즉, 하위 테이블의 PK는 고유하지만 갭을 포함합니다. 이는 하위 테이블이 마스터 테이블의 레코드 중 일부만 참조하기 때문입니다.

나는 (아이 테이블에 정규 "id"PK를주지 않는) 이것을하는 것이 Web2py 방식에 위배된다고 생각한다. 그래서 내 질문은 다음과 같습니다 :

  1. 이것은 잘못된 아이디어입니까? 그렇다면 왜?
  2. 어떻게 구현하나요? Web2py가 자동 증가 int를 PK가 아닌 테이블을 처리 할 수 ​​있습니까?

코드 작성시 올바른 스타일과 연습을 적용하는 것이 중요합니다. 나는 대안적인 접근법에 대해 열려있다.

도움 주셔서 감사합니다.

답변

1

keyed tables의 책 섹션을 참조하십시오. web2py와 함께 사용하기위한 데이터베이스라면 web2py 표준 접근법을 따르는 것이 좋습니다.

db.define_table('master', ...) 

db.define_table('child', Field('master', db.master)) 
관련 문제