【发布时间】:2013-11-08 13:15:40
【问题描述】:
我只是创建一个社交网络来练习我的技能(PHP、HTML、CSS、JavaScript 等)。 现在在设计数据库布局时会出现一个问题,我很遗憾无法解决。
我有一个名为 UserMain 的表:
+------------+---------------------+
| Field | Type |
+------------+---------------------+
| u_id | bigint(20) unsigned |
| u_email | varchar(256) |
| u_password | varchar(30) |
| u_data | varchar(25) |
| u_friends | varchar(28) |
+------------+---------------------+
用于存储一般数据,注册时输入。
我想将用户数据(姓名、姓名、性别、生日等)分离到另一个名为 data 的表中,当然还有一个名为 friends。所以我决定为每个用户创建一个数据和朋友表,通过 php 使用上面的 u_id 我想出了这样的东西,[u_id]_data:
+------------+---------------------+
| Field | Type |
+------------+---------------------+
| u_prename | varchar(20) |
| u_surname | varchar(20) |
| u_sex | boolean |
| u_birthday | DATE |
| u_avatar | varchar(28) |
+------------+---------------------+
现在我不想在朋友表上附加值,因为问题显然始于 [u_id]_data 表。一个用户只有一个姓氏和一个姓氏等,所以它是一个 1 行表。现在的问题:
如何处理与primary key 相关的表格输入?
对我来说,为单行创建一个新的“id int not null auto_increment pk”似乎是不必要的,所以我不知道主键使用什么列组合。
也许您知道这种设计的更好实现,但请考虑以下几点:
不管你有什么新的实现,我唯一不想要的是一个名为 data 的表,其中包含所有用户的数据。 p>
好吧,我可能对 MySQL 有不好的看法,或者我不是很了解,但我认为只有多个数据表是出于性能原因。
我在更改或插入数据时的想法:
- GetTheUsersId(在用户表中搜索 ID。这可能需要 如果我有的话……比方说 10,000,000 个用户)
- 拥有 [u_id] 后,我只需使用数据表即可找到我要搜索的内容。
如果表由(再次)10,000,000 行组成,则需要更长的时间。现在不要开始笑,因为我将抽象和维度提升到一个遥远的水平。只是为了支持节省性能的想法。
【问题讨论】:
-
哇,后退一点。您为每个用户创建了一个单独的表?
-
嗯...这是个坏主意吗?我认为 MySql 可以轻松处理 10.000 个表,因为它只是数据,存储在不同的文件中,搜索时我只需要搜索“用户”表。找到 u_id 后,我可以轻松访问数据表。
-
这是个糟糕的主意。 MySQL 可以处理很多表,但这不是重点。只需一张用户表,其中包含所有用户。
标签: php mysql sql database social-networking