【发布时间】:2014-06-08 19:07:08
【问题描述】:
我想构建一个“签到”服务,例如 FourSquare 或 Untappd。
如何设计一个合适的数据库架构来存储签到?
例如,假设我正在开发“CheeseSquare”来帮助人们跟踪他们尝试过的美味奶酪。
可以签入的项目表相当简单,看起来像
+----+---------+---------+-------------+--------+
| ID | Name | Country | Style | Colour |
+----+---------+---------+-------------+--------+
| 1 | Brie | France | Soft | White |
| 2 | Cheddar | UK | Traditional | Yellow |
+----+---------+---------+-------------+--------+
我也会为用户准备一张桌子,比如说
+-----+------+---------------+----------------+
| ID | Name | Twitter Token | Facebook Token |
+-----+------+---------------+----------------+
| 345 | Anne | qwerty | poiuyt |
| 678 | Bob | asdfg | mnbvc |
+-----+------+---------------+----------------+
记录用户签到特定奶酪的最佳方式是什么?
例如,我想记录 Anne 签到了多少法国奶酪。鲍勃检查过哪些奶酪等。如果瑟曦吃卡门贝尔奶酪超过 5 次等等。
最好将此信息放在用户表中吗?例如
+-----+------+------+--------+------+------+---------+---------+
| ID | Name | Blue | Yellow | Soft | Brie | Cheddar | Stilton |
+-----+------+------+--------+------+------+---------+---------+
| 345 | Anne | 1 | 0 | 2 | 1 | 0 | 5 |
| 678 | Bob | 3 | 1 | 1 | 1 | 1 | 2 |
+-----+------+------+--------+------+------+---------+---------+
这看起来相当笨拙且难以维护。那么我应该为记录签入单独的表格吗?
【问题讨论】:
-
附带问题,您是否正在使用工具来为这些示例表创建格式?
标签: mysql sql database database-design social-networking