在数据库设计过程中一般要遵循第一范式、第二范式、第三范式以及BCNF范式、第四范式。那么请你改正下面的数据库设计中的不足之处。
条件:设R(BOOK_ID,BOOK_NAME,AUTHOR,AGE)的属性分别表示为书号、书名、作者、和作者的年龄。如果约定:每一个书号对应一个书名:但不同的书号可以有相同的书名:每本书可以有多个作者合写:但每个作者参与编写的图书的书名应该互不相同。原来的数据库模型:
数据库表名:BOOK_INFORMATION
 
BOOK_IDBOOK_NAMEAUTHORAGE
1SQL SEEVER2000轻松进级Mike Gunderloy ; MaryChipman45 ; 38
2………
3………
a)你的设计模型:(列出数据表名、相应的字段名、约束)
b)从你设计的数据库总列出所有作者年龄大于40岁的图书名称
c)把一个书名为《精通SQL》的作者改为“Tom” 

解决方案 »

  1.   

    BOOK_INFORMATION
    BOOK_ID
    BOOK_NAM
    BOOK_EAUTHOR
    EAUTHOR_ID
    EAUTHOR_Name
    EAUTHOR_AGE
    BOOK_INFORMATION_i
    BOOK_ID
    EAUTHOR_ID
      

  2.   

    b.
    select BOOK_NAM 
    from 
    BOOK_INFORMATION_i Book_i,
    BOOK_INFORMATION Book
    where Book_i.BOOK_ID not in(select Bi.BOOK_ID from BOOK_INFORMATION_i Bi,BOOK_EAUTHOR BE where Bi.EAUTHOR_ID=BE.EAUTHOR_ID and BE.EAUTHOR_AGE<=40)
          and Book_i.BOOK_ID=Book.BOOK_IDc.
    update BOOK_EAUTHOR set EAUTHOR_Name='Tom'
    from BOOK_EAUTHOR BE,
         BOOK_INFORMATION_i Bi,
         BOOK_INFORMATION Book
    where BE.EAUTHOR_ID=Bi.EAUTHOR_ID
      and Book.BOOK_ID=Bi.BOOK_ID
      and Book.BOOK_NAM='《精通SQL》'