1

저는 사용자가 아이들을위한 이야기를 만드는 안드로이드 응용 프로그램을 개발하려고합니다. Sqlite를 사용하여 데이터베이스를 만들고 관계형 데이터베이스가 괜찮은지 알고 싶습니다.기본 키가없는 관계형 데이터베이스?

  1. 기본 키 이야기 ID를 가지고 이야기의 이름을 저장하는 이야기 테이블
  2. 는 페이지 콘텐츠 및 번호 저장하고있는 이야기에 관련된 페이지 테이블. 하지만 기본 키

    CREATE TABLE story (
        storyID INTEGER PRIMARY KEY, 
        storyTitle TEXT 
    ); 
    
    CREATE TABLE pages (
        page INTEGER, 
        content TEXT, 
        storyID INTEGER 
    ); 
    
+0

이 질문은 주제와 관련이없는 것 같습니다. 그러나'pages' 테이블의 기본 키는'(page, storyID)'여야합니다. –

+0

첫 번째 정규 형식에서는 관계형 데이터베이스의 모든 행에 기본 키가 있어야합니다. 물론 PAGE (단수) 테이블에는 기본 키가 있습니다. 자연 후보 키가없는 경우 각 행에 대리 키를 만들어야합니다. – duffymo

답변

2

기본 키는 하나 이상의 열로 구성이 없습니다; 이 열의 값은 각 행을 고유하게 식별합니다.

테이블에 기본 키가없는 것은 의미가 없습니다. 이는 행을 구별 할 수 없다는 것을 의미합니다. 즉, 임의의 데이터로 무언가를 수행하면 임의의 행에 을 수행 할 수 있습니다.

기본 키가 있어야합니다. 당신은 그것을 모를뿐입니다. 당신은 데이터베이스에 대해 말하지 않았습니다.
pages 테이블에서 페이지 내용은 스토리 ID와 스토리 내의 페이지 번호로 식별됩니다. 즉, 복합 기본 키가 있음을 의미합니다. 고유성 검사 및 자동 색인을 얻으려면 다음과 같이 데이터베이스에 알려야합니다.

CREATE TABLE pages (
    storyID INTEGER, 
    page INTEGER, 
    content TEXT, 
    PRIMARY KEY (storyID, page) 
);