sqlite - 没有主键的关系数据库?

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

我正在尝试开发一个 android 应用程序,用户可以在其中为 children 创建故事。我正在使用 Sqlite 创建我的数据库,我想知道我的关系数据库是否正常。

  • 具有主键故事 ID 并存储故事名称的故事表
  • pages 表,它存储页面内容和编号并将其与哪个故事相关联。但我没有主键
    CREATE TABLE story (
        storyID    INTEGER PRIMARY KEY,
        storyTitle TEXT
    );
    
    CREATE TABLE pages (
        page    INTEGER,
        content TEXT,
        storyID INTEGER
    );
    
  • 最佳答案

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

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

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

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

    关于sqlite - 没有主键的关系数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663157/

    相关文章:

    mysql - 我应该将组织表分成两个表吗?

    c# - 违反 PRIMARY KEY 约束。无法在对象中插入重复的键

    Android clear listview链接到SQLite

    mysql - 1-多-多的数据库结构

    database - 完全执行您的数据模型或不完全执行您的数据模型

    database - 数据库中的键值

    Mysql 主键重复条目(AUTO_INCRMENT)

    android - 使用游标从 SQLite 中扣除值

    python - 检查数据库中的列是否有值

    sqlite - 限制 SQLite 中表中的记录数