数据库小白求教

2015-11-13 17:40:34 +08:00
 xhuuanniqege

我正在练习做一个 APP,现在需要在服务器保存用户信息。我新建了一个 USERINFO 的表,表中有一个名为 ORDER 的列,表示该用户的历史订单号。可是一个用户有很多个订单,这样的话,对于每个用户该 ORDER 属性下面就应该保存很多个订单号。这个好像没法实现。如果为每一个用户在创建一个 ORDER 的表,那么这个表只有两列,用户 ID 和订单号,似乎很浪费啊。请问在这种情况下我该怎么组织数据库?

2212 次点击
所在节点    问与答
15 条回复
chenzhuo
2015-11-13 17:43:06 +08:00
应该创建一个订单表 Order,订单表里有一个字段是记录用户 id 的。这样根据用户 id 就能查到每个用户的所有订单了。
xhuuanniqege
2015-11-13 18:34:56 +08:00
@chenzhuo 这样的话,每次要获得某个 ID 用户所有订单,就要用 select * from Order where user_id = xxx ,会不会效率不高?
oott123
2015-11-13 18:37:59 +08:00
@xhuuanniqege 不会。给 user_id 加个索引。
heaton_nobu
2015-11-13 18:47:22 +08:00
关系型数据库就是要建子表
guoer
2015-11-13 18:49:11 +08:00
1 楼正解

最好不要用 order 因为是关键字
xhuuanniqege
2015-11-13 19:15:45 +08:00
@oott123
@heaton_nobu
@guoer
多谢建议,我准备看看有关索引和关系型数据库的内容
yjxjn
2015-11-13 19:18:23 +08:00
主 userid 为 primary key ,然后子表写订单号为 pri key , userid 为 f key ,这样的话最后做表关联不就行了么,这种肯定得做两个表,一个主表,一个附表,这样的话,效率很高,单独检索订单号的时候,查某人的订单的时候,等等,不信你可以想想。
xhuuanniqege
2015-11-13 19:39:02 +08:00
@yjxjn 嗯,我现在正打算这么做。另外在请教下,现在一个订单是由多个商品组成的,我是不是应该在建个 order_item 表
table order_item (
order_id int(10),
product_id int(10),
quantity
)
ETiV
2015-11-13 20:43:35 +08:00
LZ 听说过 Facebook Parse, 或者国内的 LeanCloud 没

BaaS 服务, 专注解决后端问题, 直接调用他们的客户端 SDK 就行了. 简单需求几乎不需要写服务端逻辑.
shiny
2015-11-13 20:50:19 +08:00
一般 生产环境的情况是:哪有那么多订单啊。你想多了。
yjxjn
2015-11-13 21:01:17 +08:00
@xhuuanniqege 对,每个商品有一个单独的 ID ,很多商品 ID 属于同一个订单 ID ,还得来个表, productList 定义好商品名称,编号(算是二维码那种的),入库时间,库存等等,然后相互关联就可以了。
yjxjn
2015-11-13 21:02:23 +08:00
这种东西别想着几张表就可以完事,我们的系统,总共 100 多张表。索引建立好,相互关联的写就行了
GKLuke
2015-11-14 08:29:37 +08:00
搞数据库之前先了解一下 3NF ( BCNF )
xhuuanniqege
2015-11-14 19:23:14 +08:00
@yjxjn 原来是这样,感谢!
xhuuanniqege
2015-11-14 19:25:20 +08:00
@GKLuke 谢谢,目前正在边学边看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236017

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX