저는 주로 다른 사람들에 대한 정보를 저장하는 PostgreSQL의 db를 디자인하고 있습니다. 날짜와 텍스트 항목으로 구성된 각 사람과 로그를 연결하고 싶습니다. 로그는 임의의 수의 항목을 가질 수 있습니다.PostgreSQL에서 임의의 수의 항목을 가진 로그
은 내가 생각 내가 원하는 것은 이런
log_table
입니다 :person_id | row_num | row_date | row_text ----------------------------------------- 1 | 1 | 01/01/12 | Blah... 2 | 1 | 01/02/12 | Foo... 1 | 2 | 01/04/12 | Bar...
하지만 제대로 증가 할 row_num
을 얻는 방법을 모르는 여기에 내가 장난 삼아 생각해 왔던 아이디어입니다 ; 그 person_id에 대해 가장 큰 현재 row_num
보다 1을 더 기본값으로 설정해야합니다. 즉, 주어진 person_id
에 대한 row_num
은 순차적이어야합니다.
또는 모든 로그 항목이 별개의 행 번호를 가질 수 있도록 그냥 상관없이
person_id
의row_num
증가를 가질 수 있습니다. 그러나person_id
1의 로그가 1 행에서 3 행으로 점프하는 것은 만족스럽지 않으며 오류가 발생하기 쉽지 않을 수도 있습니다.마지막으로 생각한 것은 복합 유형
log_entry = (date, text)
을 작성하여person
테이블에 로그를 직접 포함시키는 것입니다.person_id | name | log ---------------------- 1 | Bob | {(01/01/12, Blah...), (01/04/12, Bar...)}
을하지만이 성가신 것 : 그런 다음 person
테이블의 열 log
배열을 저장할 수 있습니다.
제 질문은 다음과 같습니다. b) 솔루션 1의 자동 증가 문제를 해결할 수있는 방법은 무엇입니까? 중요하다면, 이것은 개인적인 사용을위한 작은 DB입니다; 좋은 구조를 원하지만, 나는 유일한 사용자 일 가능성이 높습니다. 어떤 도움을 주셔서 감사합니다!
감사! row_number() 함수는 정확히 내가 필요로하는 (그리고 알지 못했던) 기능입니다. 항목이 수동으로 만들어지기 때문에 시간 소인을 사용하고 싶지는 않으며 시간순으로 추가 될 것이라고 보장 할 수는 없지만 기본 아이디어는 완벽합니다. – followthemusic