美文网首页
网上书店简单数据库设计

网上书店简单数据库设计

作者: 金发萌音 | 来源:发表于2015-01-01 04:17 被阅读791次

    本次数据库并没有采用传统的sql数据库,而是选择了目前比较火热的Nosql数据库,这次使用的产品是其中的佼佼者MongoDB

    MongoDB配合python本身方便的list() dict() set()类型的STL 极大的方便了开发

    并且国外很多家网站已经用数据验证了MongoDB的可靠性,在面对大数据处理时,其Bson的数据存储方式可以方便的进行
    数据库分片,查询的MapReduce以及数据挖掘

    并且,由于其本身特性可以不满足一范式条件,所以sql数据库需要很麻烦的部分MongoDB都可以轻松解决

    数据库设计
    数据库:
    文档集 类似于sql数据库中的表

    users

                user = {
                  #  '_id':None,
                    'username':username,
                    'password':str(uuid.uuid5(config.PASSWORD_NAME_SPACE,str(password))),
                    'email':email,
                    'basket':[],
                    'orders':[]
                }
    

    books

            book = {
               # '_id':None,
                'title':title,
                'author':author,
                'publishers':publishers,
                'cover':cover,
                'price':price,
                'language':language,
                'classification':classification,
                'isbn':isbn,
                'description':description,
                'inventory':inventory,
            }
    

    在取得db对象后可一很轻松的获取内容

        con = pymongo.Connection("localhost", 27017)
        db = self.con.bookstore
    

    合理性解释如下:

    在user表中 出了username password email三个选项之外
    还有两个列表 basket和 orders

    分别代表用户的购物车和订单

    用户加入购物车后会在该列表里加入book的_id,用于索引全部购物车书籍

    每次用户支付完成后,会将basket清空,并在oreders增加一个列表记录用于保存本次购买的信息

    注:关于题目中要求的“购物车只在一台电脑上保存” 这样的实现方式更加简单,甚至用不到数据库,将
    购物车中每本书的_id写入cookies中更简单,或者简单的增加一层redis的缓存既可以实现,但目前主流购物网站
    的购物车都是可以云端同步的,所以采用了在数据库中增加条目的设计

    相关文章

      网友评论

          本文标题:网上书店简单数据库设计

          本文链接:https://www.haomeiwen.com/subject/iubotttx.html