没有主键的关系数据库?

时间:2017-01-15 16:03:24

标签: sqlite database-design primary-key composite-primary-key

我正在尝试开发一个用户为孩子们创建故事的Android应用程序。我正在使用Sqlite来创建我的数据库,我想知道我的关系数据库是否正常。

  1. 具有主键故事ID并存储故事名称的故事表
  2. 页面表,用于存储页面内容和编号,并将其与哪个故事相关联。但我没有主键

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

1 个答案:

答案 0 :(得分:2)

主键由一列或多列组成;这些列中的值唯一标识每一行。

表没有主键是没有意义的;这意味着不可能区分行,即,可以在任何随机行上对某些数据执行某些操作

你有一把钥匙;你只是不知道它,而且你还没有告诉数据库它 在pages表中,页面内容由故事ID和故事内的页码识别。这意味着您有一个复合主键。要获得唯一性检查和自动索引,您应该告诉数据库:

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