首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阅读理解数据库的设计

阅读理解数据库的设计
EN

Database Administration用户
提问于 2018-06-02 16:46:08
回答 1查看 162关注 0票数 0

因此,我正在构建一个RC应用程序,它将要求我获取数据。我在Excel表格中有数据,我想将数据加载到sqlite数据库中。但我在设计分贝时遇到了麻烦。

关于raw_data的一些背景知识:

代码语言:javascript
复制
Passage Sheet
P_id,Passage

Questions Sheet
P_id, Q1,Q2,Q3....Q10

Options Sheet
P_id, ?????

现在,在选项表中,我感到困惑,因为我有大约200段,每一段都有6-10个问题。

所有问题都是多项选择,有5个选项。

谁能帮我组织我的questions_sheet和options_sheet,以便我可以创建一个数据库。

EN

回答 1

Database Administration用户

发布于 2018-06-03 13:08:21

第一件事首先:

所有字符字段都要使用TEXT,包括小字段!在SQLite中,VARCHAR只是幕后文本(如果您想升级到多用户关系数据库管理系统,PostgreSQL也是如此)。

关于风格的注意事项(其他人可能有所不同--但我知道得最好!:- ):

对标识符(表和列名)使用小写,对SQL关键字使用大写(选择、从、按.(&c)使用underscores_to_separate_identifier_parts!对标识符使用单数名称--一个表无论如何都是一个集合,那么为什么要将它多元化呢?如果你对这其中的任何一个都有问题,就会有大量的风格指南(这一个很好),但是如果你选择了一个惯例,那么就坚持它吧!这样生活就容易多了。最后,使用注释工具--在SQLite中,它是不怎么样,但它在那里!只发出CLI客户端命令或SQL语句比搜索docco更容易!

这个模式会让您开始工作(您可以根据特定情况向这些表添加字段)。

通道表:

代码语言:javascript
复制
CREATE TABLE passage
(
  passage_id INTEGER PRIMARY KEY, -- this will automatically auto increment
  passage_text TEXT NOT NULL, -- could check for a minimum length here!
  source_name TEXT NOT NULL, -- 
  ISBN TEXT, -- note, no NOT NULL - a URL doesn't have an ISBN for example
  author TEXT -- maybe author not known or it's an institutional website? 
  passage_date -- if known/applicable.. other stuff...
);

如果您有多个作者,您可以有一个author表,然后一个passage_author表作为一个结合实体 (或者joing表--还有其他名称--参见Wiki)。

问题(每个问题都是指自己的文章-这就是FOREIGN KEYs的目的!)

代码语言:javascript
复制
CREATE TABLE question -- or quiz, but I'm keeping it singular!
(
  question_id INTEGER PRIMARY KEY,
  q_passage_id INTEGER NOT NULL,
  question_text TEXT,
  CONSTRAINT question_passage_fk FOREIGN KEY (q_passage_id) 
    REFERENCES passage (passage_id) -- meaningful names are very helpful in error messages!
);

对问题的答复(每一备选案文均指其本身的问题和段落):

代码语言:javascript
复制
CREATE TABLE option
(
  option_id INTEGER PRIMARY KEY,
  o_passage_id INTEGER NOT NULL,
  o_question_id INTEGER NOT NULL,
  option_number TINYINT, -- CHECK here for < 10?
  option_text TEXT NOT NULL,
  CONSTRAINT option_passage_fk FOREIGN KEY (o_passage_id) 
    REFERENCES passage (passage_id),
  CONSTRAINT option_question_fk FOREIGN KEY (o_question_id) 
    REFERENCES question (question_id),
);

所有这些都是可用的坐在小提琴上

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/208584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档