2011-12-19 64 views
1

所以我创建一个数据库,我有几个问题,因为我也不太清楚,如果它最好只将其添加到用户表或创建新表吧。MySQL的 - 当新行添加到用户表以及何时创建新表?

所以我的用户表具有以下字段:

id, shop_name, address, city, state, zip_code, email_address, username, password, last_login, forgot_password 

因此,这些都是每个店铺的基本知识。现在我需要添加3个字段:

timezone_id从另一个表拉。
primary_color这是要用作十六进制颜色代码
secondary_color这也是一个十六进制颜色,为主要模板的颜色。

从我的理解,如果每一个用户都会有值填写(所以是的,他们都将有一个时区,并有两种颜色,它不能为空),那么可适当地加入到用户表。

这是正确的吗?或将加入一个名为颜色更好表,有一个ID,小学,中学,USER_ID更好吗?

哪些利弊?谢谢!

编辑:因此,举例来说,如果我想补充一个地方“的口号”,但不是每家店铺都将有一个口号,那会是适当的创建一个新表的口号,如果一个店方决定创建他们自己的话会把它加到桌子上?

我只想看看我是否正确理解这一点。

回答

1

我只想添加到您的用户表。似乎没有任何理由创建一个新的颜色表。如果每个用户都拥有无限数量的颜色,则只能这样做。将它放在一张表中意味着您可以通过一个简单的查询从一张表中获取所有数据,而不必为了获取用户的所有数据而必须进行连接或单独进行查询。

关于标语,再次添加到用户表。如果他们有一个口号,它添加到外地,如果他们不留空白。如果一个用户有多个口号,那么也许你会在一个单独的表格中拥有这个口号。

也许您已经熟悉了database normalisation,因为当您不确定如何设计数据库时,这确实有帮助。

+0

噢,现在我开始明白了。所以当需要多个值时更是如此?非常感谢你的帮助。 – Drew 2011-12-19 15:48:49

4

当亲 - 你保留一些分离的实体 - 用户和user_colors

缺点:

    每次你访问时间
  • 用户和它的颜色,你必须做一个加入
  • 同样,每次插入新用户时,您都必须插入2个表格(这应该在交易中完成)
  • 每当用户颜色被修改时,您必须先查找user_id,然后更新颜色表,否则你可能只是你PDATE用一个简单的用户表where子句

我会去一个表

+0

我不同意第三个布尔值。您通常将用户的id作为user_color表。所以不需要额外的查找 – 2011-12-19 15:44:34

相关问题