我正在尝试开发一个用户为孩子们创建故事的Android应用程序。我正在使用Sqlite来创建我的数据库,我想知道我的关系数据库是否正常。
页面表,用于存储页面内容和编号,并将其与哪个故事相关联。但我没有主键
CREATE TABLE story (
storyID INTEGER PRIMARY KEY,
storyTitle TEXT
);
CREATE TABLE pages (
page INTEGER,
content TEXT,
storyID INTEGER
);
答案 0 :(得分:2)
主键由一列或多列组成;这些列中的值唯一标识每一行。
表没有主键是没有意义的;这意味着不可能区分行,即,可以在任何随机行上对某些数据执行某些操作。
你有一把钥匙;你只是不知道它,而且你还没有告诉数据库它
在pages
表中,页面内容由故事ID和故事内的页码识别。这意味着您有一个复合主键。要获得唯一性检查和自动索引,您应该告诉数据库:
CREATE TABLE pages (
storyID INTEGER,
page INTEGER,
content TEXT,
PRIMARY KEY (storyID, page)
);