美文网首页
python web(bottle框架)知行合一之-简单知识付费

python web(bottle框架)知行合一之-简单知识付费

作者: 小钟钟同学 | 来源:发表于2018-04-16 17:40 被阅读47次

python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(6)---从前端页面分析数据库设计需求

PS:笔记只是为了更好表达我怎么语言表述,有些时候可能难免废话一推!
因知识有限, 如有错误, 欢迎指正.

每日细语 :没有什么成功是轻而易举的!想要得到要先学会付出!

前言

因为基于现有的环境,自己从头设计一个需求,比较头疼,所以我主要参考模仿别人的界面,总结出属于自己的需求。

以下是截图是来自插http://www.apppark.cn/应用公园中的悦享课堂应用示例的中的截图。

http://www.apppark.cn/themedetail_96.html,(PS截图仅仅作为项目数据库设计分析 不做其他用途如果侵权话,烦请联系我,我会删除掉!)

首页:


图片.png

精选课程:

图片.png

登入:


图片.png

注册:


图片.png

找回密码:


图片.png

关于:


图片.png

分类:
这个不看了,界面太丑了!

分析实体的属性

PS:可能设计的的不是很合理,有什么设计不对的地方还希望各位多多指教一下哟!

用户信息表
{用户ID,是否激活,用户昵称,用户密码,头像图片地址,性别,注册时间,手机号码,注册邮箱,微信授权码}

课程
{课程号,课程名,课程标题,课程简单描述,课程详细的描述,课程介绍图片地址,课程状态(连载中,完结,筹备中),课程上线时间,总课程数(多少期),是否已下线,是否开启销售,是否免费,价钱,已学习人数,已更新了多少期,VIP是否免费,课程作者,课程类型(图文、音频、视频),课程添加时间}

课程详细内容
{课程内容编号,课程号,课程内容序号,内容标题,单独内容详细介绍,内容是否免费,内容创建时间,是否需要购买,购买的状态,有多少人浏览过,购买描述语,内容的文件地址(音频、视频地址),课程有效期}

课程分类
{课程分类编号,课程分类描述,课程号,分类说明,分类添加时间,分类图标地址,分类是否开启}

课程订单表
{订单号,课程号,用户号,是否还有效,购买支付方式,创建订单时间,是否已支付,支付时间,支付状态结果}

课程订单提交记录表
{归属订单号,课程号,课程名称,用户号,购买支付方式,创建订单时间,是否已支付,提交支付时间,支付状态结果}

首页精选推广课程活动表
{活动号,课程号,课程大图地址,活动名称,活动描述,活动创建时间,活动是否开启,活动是否过了有效期}

公告表
{公告号,公告名称,公告描述,公告创建时间,公告是否开启}

关于
写死静态页面

联系方式
写死静态页面

数据库模型到关系模型

PS:大神的博文地址!
http://www.cnblogs.com/EmptyFS/p/7484030.html

可以按大神给的数据库生成的工具类来生成相关的数据表!

工具类下载地址:https://pan.baidu.com/s/1slDMsyx

详细的表结构设计

用户信息表

属性:
{用户ID,是否激活,用户昵称,用户密码,头像图片地址,性别,注册时间,手机号码,注册邮箱,是否是VIP,微信授权码}


图片.png

课程

属性:
{课程号,课程名,课程标题,课程简单描述,课程详细的描述,课程介绍图片地址,课程状态(连载中,完结,筹备中),课程上线时间,总课程数(多少期),是否已下线,是否开启销售,是否免费,价钱,已学习人数,已更新了多少期,VIP是否免费,课程作者,课程 类型,课程添加时间}


图片.png

课程详细内容
属性:
{课程内容编号,课程号,课程内容序号,内容标题,单独内容详细介绍,内容是否免费,内容创建时间,有多少人浏览过,购买描述语,内容的文件地址(音频、视频地址),课程有效期}

图片.png

课程分类
属性:
{课程分类编号,课程分类描述,课程号,分类说明,分类添加时间,分类图标地址,分类是否开启}

图片.png

课程订单表
属性:
{订单号,课程号,用户号,是否还有效,购买支付方式,订单生成时间,是否已支付,支付时间,支付状态描述}

图片.png

首页精选推广课程活动表
属性:
{活动号,课程号,课程大图地址,活动名称,活动描述,活动创建时间,活动是否开启,活动是否过了有效期}

图片.png

公告表
属性:
{公告号,公告名称,公告描述,公告创建时间,公告是否开启}

图片.png

估计设计的地方,其实有问题的, 后续可能还会做出相应的结构变化!

关系数据表生成

我们已设计好了对于的数据库关系表,现在我们的需要就是在本地上进行创建相关的数据表,便于后续在本地进行调试。

首先我们使用大神提供的工具进行SQL的生成。

关闭我们的数据字典表。打开工具:


图片.png

记住表1的名称:


图片.png

点击运行:


图片.png

SQL生成完成:

图片.png

最终的SQL语句如下:

CREATE TABLE public.user_info (
 id serial,
 is_activate integer DEFAULT 0,
 phone_num text DEFAULT '' NOT NULL,
 nick_name text DEFAULT '' NOT NULL,
 pass_word text DEFAULT '' NOT NULL,
 gender text DEFAULT '',
 head_cover text DEFAULT '',
 register_time timestamp(0) WITHOUT TIME ZONE DEFAULT now(),
 e_mail text DEFAULT '',
 is_vip integer,
 wx_access_token text DEFAULT '',
  CONSTRAINT user_info_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.user_info IS '用户信息表'; 
COMMENT ON COLUMN public.user_info.id IS '主键Id'; 

COMMENT ON COLUMN public.user_info.is_activate IS '是否已激活1=true(已激活),0=false(未激活)'; 

COMMENT ON COLUMN public.user_info.phone_num IS '用户注册手机号码'; 

COMMENT ON COLUMN public.user_info.nick_name IS '用户昵称'; 

COMMENT ON COLUMN public.user_info.pass_word IS '密码'; 

COMMENT ON COLUMN public.user_info.gender IS '性别'; 

COMMENT ON COLUMN public.user_info.head_cover IS '头像图片地址'; 

COMMENT ON COLUMN public.user_info.register_time IS '注册时间'; 

COMMENT ON COLUMN public.user_info.e_mail IS '邮箱地址'; 

COMMENT ON COLUMN public.user_info.is_vip IS '是否是VIP(1,是, 0 不是)'; 

COMMENT ON COLUMN public.user_info.wx_access_token IS '微信授权码(可能会用到)'; 


CREATE INDEX user_info_phone_num_idx ON public.user_info USING btree(phone_num);

CREATE TABLE public.course (
 id serial,
 course_classify_code text DEFAULT '',
 course_code_id text DEFAULT '',
 name text DEFAULT '' NOT NULL,
 title text DEFAULT '' NOT NULL,
 describe_simple integer DEFAULT 0,
 describe_detailed text DEFAULT 'now' NOT NULL,
 img_cover text DEFAULT '' NOT NULL,
 state integer DEFAULT 0,
 up_time timestamp(0) WITHOUT TIME ZONE,
 all_num_count integer DEFAULT 0,
 is_down integer DEFAULT 1,
 is_sell integer DEFAULT 1,
 is_flee integer DEFAULT 1,
 price integer DEFAULT 0 NOT NULL,
 has_learn_num integer,
 has_updata_num_count integer,
 is_vip_flee integer,
 author text DEFAULT '',
 add_time text DEFAULT '',
 type integer DEFAULT 3,
  CONSTRAINT course_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.course IS '课程'; 
COMMENT ON COLUMN public.course.id IS '主键Id'; 

COMMENT ON COLUMN public.course.course_classify_code IS '课程分类编号'; 

COMMENT ON COLUMN public.course.course_code_id IS '课程号'; 

COMMENT ON COLUMN public.course.name IS '课程名'; 

COMMENT ON COLUMN public.course.title IS '课程标题'; 

COMMENT ON COLUMN public.course.describe_simple IS '课程简单描述'; 

COMMENT ON COLUMN public.course.describe_detailed IS '课程详细描述'; 

COMMENT ON COLUMN public.course.img_cover IS '课程图片介绍'; 

COMMENT ON COLUMN public.course.state IS '程状态(1连载中,2 完结,0筹备中)'; 

COMMENT ON COLUMN public.course.up_time IS '课程上线时间'; 

COMMENT ON COLUMN public.course.all_num_count IS '总课程数(多少期)'; 

COMMENT ON COLUMN public.course.is_down IS '是否已下线(1,没有, 0 下线)'; 

COMMENT ON COLUMN public.course.is_sell IS '是否开启销售(1,已开始, 0 未开始)'; 

COMMENT ON COLUMN public.course.is_flee IS '是否免费(1,收费, 0 不收费)'; 

COMMENT ON COLUMN public.course.price IS '价钱'; 

COMMENT ON COLUMN public.course.has_learn_num IS '已经学习人数'; 

COMMENT ON COLUMN public.course.has_updata_num_count IS '已更新了多少期'; 

COMMENT ON COLUMN public.course.is_vip_flee IS 'VIP是否免费(1,VIP免费,0 VIP也不免费)'; 

COMMENT ON COLUMN public.course.author IS '课程作者'; 

COMMENT ON COLUMN public.course.add_time IS '添加时间'; 

COMMENT ON COLUMN public.course.type IS '课程类似(1图文,2 音频,3,视频)'; 


CREATE INDEX course_course_classify_code_idx ON public.course USING btree(course_classify_code);
CREATE INDEX course_name_idx ON public.course USING btree(name);
CREATE INDEX course_type_idx ON public.course USING btree(type);

CREATE TABLE public.course_content (
 id serial,
 code text DEFAULT '',
 course_code_id integer DEFAULT 0,
 content_index integer,
 title text DEFAULT '',
 content_detailed text DEFAULT '',
 is_flee text DEFAULT '',
 visit_count integer,
 buy_describe text DEFAULT '',
 is_enable integer DEFAULT 0,
 content_file_url text DEFAULT '',
 expiry_date timestamp(0) WITHOUT TIME ZONE,
 add_time timestamp(0) WITHOUT TIME ZONE DEFAULT now() NOT NULL,
  CONSTRAINT course_content_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.course_content IS '课程详细内容'; 
COMMENT ON COLUMN public.course_content.id IS '主键Id'; 

COMMENT ON COLUMN public.course_content.code IS '课程内容编号'; 

COMMENT ON COLUMN public.course_content.course_code_id IS '课程号'; 

COMMENT ON COLUMN public.course_content.content_index IS '课程内容序号'; 

COMMENT ON COLUMN public.course_content.title IS '内容标题'; 

COMMENT ON COLUMN public.course_content.content_detailed IS '内容详细介绍'; 

COMMENT ON COLUMN public.course_content.is_flee IS '是否免费(1,免费,0 不免费)'; 

COMMENT ON COLUMN public.course_content.visit_count IS '浏览次数'; 

COMMENT ON COLUMN public.course_content.buy_describe IS '购买描述语'; 

COMMENT ON COLUMN public.course_content.is_enable IS '是否启用,1=true(启用),0=false(禁用)'; 

COMMENT ON COLUMN public.course_content.content_file_url IS '内容文件地址'; 

COMMENT ON COLUMN public.course_content.expiry_date IS '课程有效期时间'; 

COMMENT ON COLUMN public.course_content.add_time IS '创建时间'; 


CREATE INDEX course_content_code_idx ON public.course_content USING btree(code);
CREATE INDEX course_content_course_code_id_idx ON public.course_content USING btree(course_code_id);
CREATE INDEX course_content_expiry_date_idx ON public.course_content USING btree(expiry_date);

CREATE TABLE public.course_classify (
 id serial,
 course_classify_code text DEFAULT '' NOT NULL,
 describe text DEFAULT '' NOT NULL,
 course_code_id timestamp(0) WITHOUT TIME ZONE,
 icon_url text DEFAULT '',
 is_enable integer DEFAULT 1,
 add_time timestamp(0) WITHOUT TIME ZONE DEFAULT now() NOT NULL,
  CONSTRAINT course_classify_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.course_classify IS '课程分类表'; 
COMMENT ON COLUMN public.course_classify.id IS '主键Id'; 

COMMENT ON COLUMN public.course_classify.course_classify_code IS '课程分类编号'; 

COMMENT ON COLUMN public.course_classify.describe IS '课程描述'; 

COMMENT ON COLUMN public.course_classify.course_code_id IS '课程号'; 

COMMENT ON COLUMN public.course_classify.icon_url IS '分类图标地址'; 

COMMENT ON COLUMN public.course_classify.is_enable IS '是否启用,1=true(启用),0=false(禁用)'; 

COMMENT ON COLUMN public.course_classify.add_time IS '创建时间'; 


CREATE INDEX course_classify_course_classify_code_idx ON public.course_classify USING btree(course_classify_code);
CREATE INDEX course_classify_course_code_id_idx ON public.course_classify USING btree(course_code_id);
CREATE INDEX course_classify_is_enable_idx ON public.course_classify USING btree(is_enable);

CREATE TABLE public.course_order (
 id serial,
 order_id text DEFAULT '' NOT NULL,
 course_code_id text DEFAULT '' NOT NULL,
 phone_num text DEFAULT '',
 course_name text DEFAULT '',
 pay_type text DEFAULT '0',
 is_pay integer DEFAULT 1,
 pay_time timestamp(0) WITHOUT TIME ZONE,
 add_time timestamp(0) WITHOUT TIME ZONE DEFAULT now() NOT NULL,
 pay_state_describe integer DEFAULT 1,
  CONSTRAINT course_order_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.course_order IS '课程订单表'; 
COMMENT ON COLUMN public.course_order.id IS '主键Id'; 

COMMENT ON COLUMN public.course_order.order_id IS '订单编号'; 

COMMENT ON COLUMN public.course_order.course_code_id IS '课程号'; 

COMMENT ON COLUMN public.course_order.phone_num IS '购买了课程的用户手机号码'; 

COMMENT ON COLUMN public.course_order.course_name IS '购买的课程名称'; 

COMMENT ON COLUMN public.course_order.pay_type IS '登陆次数'; 

COMMENT ON COLUMN public.course_order.is_pay IS '是否已支付1=true,0=false'; 

COMMENT ON COLUMN public.course_order.pay_time IS '支付时间'; 

COMMENT ON COLUMN public.course_order.add_time IS '订单生成时间'; 

COMMENT ON COLUMN public.course_order.pay_state_describe IS '支付状态描述'; 


CREATE INDEX course_order_order_id_idx ON public.course_order USING btree(order_id);
CREATE INDEX course_order_course_code_id_idx ON public.course_order USING btree(course_code_id);
CREATE INDEX course_order_phone_num_idx ON public.course_order USING btree(phone_num);
CREATE INDEX course_order_is_pay_idx ON public.course_order USING btree(is_pay);

CREATE TABLE public.activity (
 id serial,
 activity_id text DEFAULT '' NOT NULL,
 course_code_id text DEFAULT '' NOT NULL,
 course_img_cover text DEFAULT '' NOT NULL,
 activity_name text DEFAULT '' NOT NULL,
 is_enable integer DEFAULT 0,
 activity_describe text DEFAULT '',
 add_time timestamp(0) WITHOUT TIME ZONE DEFAULT now() NOT NULL,
 expiry_date timestamp(0) WITHOUT TIME ZONE,
  CONSTRAINT activity_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.activity IS '首页精选推广课程活动表'; 
COMMENT ON COLUMN public.activity.id IS '主键Id'; 

COMMENT ON COLUMN public.activity.activity_id IS '活动编号ID'; 

COMMENT ON COLUMN public.activity.course_code_id IS '课程号'; 

COMMENT ON COLUMN public.activity.course_img_cover IS '课程大图地址'; 

COMMENT ON COLUMN public.activity.activity_name IS '活动名称'; 

COMMENT ON COLUMN public.activity.is_enable IS '是否启用,1=true(启用),0=false(禁用)'; 

COMMENT ON COLUMN public.activity.activity_describe IS '活动的描述'; 

COMMENT ON COLUMN public.activity.add_time IS '活动创建时间'; 

COMMENT ON COLUMN public.activity.expiry_date IS '活动有效期时间'; 


CREATE INDEX activity_activity_id_idx ON public.activity USING btree(activity_id);
CREATE INDEX activity_course_code_id_idx ON public.activity USING btree(course_code_id);
CREATE INDEX activity_is_enable_idx ON public.activity USING btree(is_enable);
CREATE INDEX activity_add_time_idx ON public.activity USING btree(add_time);
CREATE INDEX activity_expiry_date_idx ON public.activity USING btree(expiry_date);

CREATE TABLE public.announcement (
 id serial,
 announcement_id text DEFAULT '' NOT NULL,
 announcement_name text DEFAULT '' NOT NULL,
 is_enable integer DEFAULT 0,
 announcement_describe text DEFAULT '',
  CONSTRAINT announcement_pkey PRIMARY KEY(id)
)
WITH(oids = false);

COMMENT ON TABLE public.announcement IS '首页精选推广课程活动表'; 
COMMENT ON COLUMN public.announcement.id IS '主键Id'; 

COMMENT ON COLUMN public.announcement.announcement_id IS '活动编号ID'; 

COMMENT ON COLUMN public.announcement.announcement_name IS '公告名称'; 

COMMENT ON COLUMN public.announcement.is_enable IS '是否启用,1=true(启用),0=false(禁用)'; 

COMMENT ON COLUMN public.announcement.announcement_describe IS '公告的描述'; 


CREATE INDEX announcement_announcement_id_idx ON public.announcement USING btree(announcement_id);
CREATE INDEX announcement_is_enable_idx ON public.announcement USING btree(is_enable);

使用navicat Premium创建数据库:


图片.png

新建一个查询(命名为数据库表初始化)


图片.png

把上面的SQL复制到新建的查询中,运行:

图片.png

关于数据库表设计相关暂时到此结束

以上笔记纯属个人学习实践总结,有兴趣的同学可以加群一起学习讨论QQ群:148824367

相关文章

网友评论

      本文标题:python web(bottle框架)知行合一之-简单知识付费

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