楼上说的很对,我们需求都没有搞清楚,设计数据库来会有些吃力呀!不过我可以给你点建意就是:1\购买方式 Payment你用的是Int,完全可以用char(1) 
2\订单表与订单详细信息可以完全在一张表里,不知道你有什么特殊的需求

解决方案 »

  1.   

    设计没有大问题。以下是几点建议1 楼上讲在一张表里是误导。 
     一个订单可以有多本书,从设计原则上,当然要做成主从表结构。
    2 图书分类编号
      建议用varchar,他们不一定是数字的
    3 图书名 
      字段长度有点短了,至少弄到50/100
    4 图书单价
      精度应该是2位,到分。
    5 订单详细信息 
      最好增加书籍价格作为历史。 曾发现某些书的定价被重新粘贴过,也就是价格有可能变动。  6 建议你在订单或订单明细上增加打折属性。作为历史数据备查。
      

  2.   

    订单表里,用户名    User_name  Varchar(20)    No    Yes 1.有没有匿名情况,2.作为团体订购的用户名怎么处理
    我以前有个类似系统,这个字段叫用户名称,另还有一联系人字段,用来存放用户名信息把打折信息也反映上来,这是中国特色,有可能是一本书有打折,可能是满多少金额打折,多满多打,还有可能用VIP积分换,还有对不同客户...... 虽然现在没有需求,也要考虑以后的扩展
      

  3.   

    java2000_net 
    一个订单可以有多本书,从设计原则上,当然要做成主从表结构。 本人表示赞同!你的建议我接受
      

  4.   

    sqlserver2000:先用sql语言写个简单的查询语句,然后添加一些组件什么的实现显示。大体上就这样具体链接什么的要自己学学
      

  5.   

    气死我了,刚才我打了很多字,居然没发出去,后退又没有了没办法,再打一遍,哭
    总体设计成3个表是没什么问题的,也不存在严重的数据冗余,有两个细节要注意下:
    1、表与表之间的关联不要用有实际意义的栏位来关联,建议每个表建一个主id(主键),关联id(外键),用来表示表与表之间的关联
    2、订单编号等什么的类型改成varchar2(..),购买方式varchar2(1),订购数量integer,购买时间date
    回答不容易啊,多给点分