网上书店简单数据库设计

2015-01-01  本文已影响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的缓存既可以实现,但目前主流购物网站
的购物车都是可以云端同步的,所以采用了在数据库中增加条目的设计

上一篇下一篇

猜你喜欢

热点阅读