Android Smart Dict - 数据库设计


最先就从数据库开始吧,首先必须搞清楚数据库的结构,后面的工作才好开展。

我希望用一张表记录所有的单词不管是四级还是托付,它就相当于一个单词池(好拗口),每个单词可以映射到不同的书里面,比如一个单词它可以是四级词汇,同时也是托付词汇,我们就不用重复记录这个单词。

就目前看来,我们需要3张表:

单词表:记录所有的单词,包括写法,音标,词性,解释,读音(暂时没这个,但是还是暂一位),解释,例句,单词的重要程度。够完整了吧,难道还要加上同义词和反义词?以后再说吧。

学习计划表: 此表记录当前学习的是那本书,学习单词的小组数(每本书不可能一次就学完吧,分成若干小组便于学习), 当前学到哪一组。

书表: 记录书名和单词数。

代码如下:

单词表:

  1. public class WordTable extends Table{   
  2.     public static final String TABLE_NAME                = "vocabulary";   
  3.     public static final String COLUMN_NAME_WORD          = "word";   
  4.     public static final String COLUMN_NAME_SYMBOL        = "symbol";   
  5.     public static final String COLUMN_NAME_TRANSLATION   = "translation";   
  6.     public static final String COLUMN_NAME_PRONUNCIATION = "pronunciation";   
  7.     public static final String COLUMN_NAME_EXAMPLES      = "examples";   
  8.     public static final String COLUMN_NAME_BOOKS         = "books";   
  9.     public static final String COLUMN_NAME_STUDY_COUNT   = "study_count";   
  10.     public static final String COLUMN_NAME_MISTAKE_COUNT = "mistake_count";   
  11.     public static final String COLUMN_NAME_SEARCH_COUNT  = "search_count";   
  12.     public static final String COLUMN_NAME_LEVEL         = "level";   
  13.     public static void createTable(SQLiteDatabase db) {   
  14.         db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + " ("  
  15.                 + COLUMN_NAME_ID + " INTEGER PRIMARY KEY,"  
  16.                 + COLUMN_NAME_WORD + " TEXT,"  
  17.                 + COLUMN_NAME_SYMBOL + " TEXT,"  
  18.                 + COLUMN_NAME_TRANSLATION + " TEXT,"  
  19.                 + COLUMN_NAME_PRONUNCIATION + " TEXT,"  
  20.                 + COLUMN_NAME_EXAMPLES + " TEXT,"  
  21.                 + COLUMN_NAME_BOOKS + " TEXT,"  
  22.                 + COLUMN_NAME_STUDY_COUNT + " INTEGER,"  
  23.                 + COLUMN_NAME_MISTAKE_COUNT + " INTEGER,"  
  24.                 + COLUMN_NAME_SEARCH_COUNT + " INTEGER,"  
  25.                 + COLUMN_NAME_LEVEL + " INTEGER"  
  26.                 + ");");   
  27.     }   
  28.     public static void dropTable(SQLiteDatabase db) {   
  29.         db.execSQL("DROP TABLE " + TABLE_NAME);   
  30.     }   
  31. }  

书本表:

  1. public class BookTable extends Table {   
  2.     public static final String TABLE_NAME            = "book";   
  3.     public static final String COLUMN_NAME_BOOK_NAME = "book_name";   
  4.     public static final String COLUMN_NAME_WORD_NUMBER    = "word_number";   
  5.     public static void createTable(SQLiteDatabase db) {   
  6.         db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + " ("  
  7.                 + COLUMN_NAME_ID + " INTEGER PRIMARY KEY,"  
  8.                 + COLUMN_NAME_BOOK_NAME + " TEXT,"  
  9.                 + COLUMN_NAME_WORD_NUMBER + " INTEGER"  
  10.                 + ");");   
  11.     }   
  12.     public static void dropTable(SQLiteDatabase db) {   
  13.         db.execSQL("DROP TABLE " + TABLE_NAME);   
  14.     }   
  15. }  

计划表:

  1. public class PlanTable extends Table {   
  2.     public static final String TABLE_NAME                  = "plan";   
  3.     public static final String COLUMN_NAME_BOOKS           = "books";   
  4.     public static final String COLUMN_NAME_MODE            = "mode";   
  5.     public static final String COLUMN_NAME_CHAPTER_NUMBER  = "chapter_number";   
  6.     public static final String COLUMN_NAME_CURRENT_CHAPTER = "current_chapter";   
  7.     public static void createTable(SQLiteDatabase db) {   
  8.         db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + " ("  
  9.                 + COLUMN_NAME_ID + " INTEGER PRIMARY KEY,"  
  10.                 + COLUMN_NAME_BOOKS + " TEXT,"  
  11.                 + COLUMN_NAME_MODE + " INTEGER,"  
  12.                 + COLUMN_NAME_CHAPTER_NUMBER + " INTEGER,"  
  13.                 + COLUMN_NAME_CURRENT_CHAPTER + " INTEGER"  
  14.                 + ");");   
  15.     }   
  16.     public static void dropTable(SQLiteDatabase db) {   
  17.         db.execSQL("DROP TABLE " + TABLE_NAME);   
  18.     }   
  19. }  

相关内容