2014-04-18 6 views

답변

2

당신이 묘사하려는 사람들은 대부분 uuid 키를 사용합니다. 유용한 UUID 생성 기능을 보려면 ossp-uuid 확장을 참조하십시오.

또 다른 대안은 nextval에서 키를 가져 오는 단일 시퀀스를 갖는 것입니다. 모든 키 입력란은 bigint이되고 싶어합니다. 그냥 CREATE SEQUENCE business_object_key_seq;.

위의 경우 모두 복잡한 트리거를 사용하지 않고 전역 고유성을 적용 할 수 없습니다. 둘 중 어느 것도 중복 키를 생성하지는 않으므로 코드가 어리석은 일을하지 않는 한 중복을 얻지는 못하게 될 것이며 주어진 테이블 내에서 여전히 고유성을 적용 할 수 있습니다.

일부 사용자가 사용하는 또 다른 접근법은 생성 된 기본 키와 그 밖의 아무것도없는 테이블 또는 'object_kind'필드 일 수 있습니다. 이것은 외래 키 참조의 역할을 할 수 있습니다. 이처럼 보일 수도 있지만 고유성을 강화할 수 있습니다. 실제로는 id = 42 인 행이 t_at_b에있는 것을 막지 않으므로 실제로는 쓸모가 없습니다.

+0

여러 테이블에서 하나의 시퀀스를 사용하는 경우 응답을 보내 주셔서 감사합니다 ~ – Paul

+0

, 이것이 데이터베이스의 성능을 떨어 뜨릴 수 있습니까? – Paul

+0

전혀 차이가 없을 것입니다. 시퀀스와 관련된 잠금이없고 논쟁도 없습니다. –