문서 편집기 (스프레드 시트 편집기, 텍스트 문서 편집기, 파워 포인트 편집기 등)의 스키마를 설계하고 있습니다. 편집자는 데이터베이스를 공유하지만 언젠가 별도의 데이터베이스를 사용할 수 있습니다. 각 편집기는 각 문서에 대해 많은 공통 정보를 공유하지만 문서의 종류에 따라 편집기 별 정보도 있습니다.일대일 관계에 INTERLEAVE 테이블 사용
제 질문은 각 편집기마다 다른 스키마 부분을 디자인하려고 할 때 오는 것입니다. 문서 (예 : ID)에 대한 공통 정보를 보유하고있는 문서 테이블이 있다고 가정합니다. 또한 Doc 레코드와 1 : 1의 관계를 갖는 특정 편집기에 관련된 정보를 연관 시키려고합니다. 내 제안 된 스키마는 다음과 같습니다
CREATE TABLE Docs (
DocId STRING(MAX) NOT NULL,
CreationTime TIMESTAMP NOT NULL,
....
) PRIMARY KEY (DocId);
CREATE TABLE SpreadsheetStuff (
DocId STRING(MAX) NOT NULL,
... spreadsheet-specific information here ...
) PRIMARY KEY (DocId),
INTERLEAVE IN PARENT Docs
ON DELETE CASCADE;
CREATE TABLE TextDocumentStuff (
DocId STRING(MAX) NOT NULL,
... text-document-specific information here ...
) PRIMARY KEY (DocId),
INTERLEAVE IN PARENT Docs
ON DELETE CASCADE;
별도의 테이블을 가지고에 대한 나의 추론은 편집기 특정 물건에서 공통 부분을 분리하는 것입니다.
이 구조가 기술적으로 작동하더라도 편집자가 필요에 따라 필요에 따라 문서 도구 표를 변경할 수 있으므로 궁금합니다. 즉, 편집기 관련 정보가 포함 된 문서 도구 테이블에 추가 열만 있으면됩니다. 한 가지 우려는 제안 된 구조에 성능이나 다른 의미가 분명하지 않을 수 있다는 것입니다.
이것은 1 : 1 관계에 대한 합리적인 구조입니까? 모범 사례에 대한 확실한 지침이 있습니까?
저는 Google의 Cloud Spanner 팀원이며, 일부는 내부 포럼의 실제 질문을 기반으로 미리 질문을 채 웁니다. AFAICT, 이것은 허용되거나 권장되지만, 문제가있는 경우 저희에게 알려주십시오. –
이들은 실제 사용자의 실제 질문이며, 질의 응답은 양질의 것입니다. 이것은 좋은 리소스입니다 :) –