I think you don't have to know SQL, but you'll have to know basic Database knowledge and be clear to your E-R Model, which I think you already have.
If you use greenDAO and implement the relationship between Book and BookShelf, you don't need to keep the list of books in your BookShelf enity.
In your DaoGenerator.java , you simply declare the schema
Entity bookShelf = schema.addEntity("BookShelf");
bookShelf.addIdProperty();
Entity book = schema.addEntity("Book");
book.addIdProperty();
book.addStringProperty("name");
Property bookFKShelves = book.addLongProperty("bookShelf_id").notNull().getProperty();
book.addToOne(bookShelf, bookFKShelves);
bookShelf.addToMany(book, bookFKShelves);
Once your generate the code. Use them in your Android code:
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this.getActivity(),
"BookStore", null);
db = helper.getWritableDatabase();
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
BookDao mBookDao = mDaoSession.getBookDao();
BookShelfDao mBookShelfDao = mDaoSession.getBookShelfDao();
// Insert
BookShelf bs = new BookShelf();
Book b1 = new Book(); b1.setName("B1"); b1.setBookShelf(bs);
Book b2 = new Book(); b2.setName("B2"); b2.setBookShelf(bs);
Book b3 = new Book(); b3.setName("B3"); b3.setBookShelf(bs);
mBookDao.insert(b1);
mBookDao.insert(b2);
mBookDao.insert(b3);
mBookShelfDao.insert(bs);
// Select
for(BookShelf bss :mBookShelfDao.loadAll()){
for (Book b :bss.getBookList())
Lod.d(TAG,"Book Name: "+b.getName());
}