2010-01-09 83 views
1

我正在建立一个MySQL数据库,并将用PHP查询它。最好将信息分解成多个表格,并在每个表格上进行选择查询。或者将所有项目放在一个表中并执行单个选择查询会更好吗?MySQL数据库组合和PHP选择

例如:

它将于7台高达车信息;这意味着他们将大约50列左右。

Table_design 1 
---------------------- 
table_all 
    username 
    car1_make 
    car1_model 
    car1_year 
    car1_condition 
    car1_tires 
    car1_color 
    car2_make 
    car2_model 
    car2_year 
    car2_condition 
    car2_tires 
    car2_color 
---------------------- 

Table_design 2 
---------------------- 
table_1 
    username 
    car1_make 
    car1_model 
    car1_year 
    car1_condition 
    car1_tires 
    car1_color 

table_2 
    username 
    car2_make 
    car2_model 
    car2_year 
    car2_condition 
    car2_tires 
    car2_color 
---------------------- 

回答

3

三张桌子。这样您就不会受限于可以添加到汽车中的信息量。而且,您不限于用户可以访问的汽车数量。

如果您需要用户的电子表格,请查询users表。如果您需要汽车库存,请查询cars表。如果您需要知道每个用户与哪些车辆相关联,请查询userscars

参见Database Normalization

  • 用户
    • 用户ID
    • 用户名
    • 用户姓
  • 汽车
    • 汽车ID
    • 汽车品牌
    • 汽车模型
  • usercars
    • 用户ID
    • 汽车ID
+0

由于Make/Model信息相当静态,我不喜欢代理PK的用法。如果你被困在上面,我至少会选择Make + Model(这是真正的PK)来防止输入同一个Make + Model中的多个“汽车”条目。通过这种方式,表格内容实际上会被重用而不是重复。我还会在车表中添加YEAR列,并将其包含在英国的make + model中。 – 2010-01-11 21:36:23

1

乔纳森说什么,虽然他的表结构是多到很多,这个ISN除非有多人可能拥有同一辆车,否则不得要求。

* users 
     o User ID 
     o User First Name 
     o User Last Name 
* cars 
     o Car ID 
     o User ID 
     o Car Make 
     o Car Model 

更有意义,更容易查询。

+0

除了汽车桌子不是真正的独特的汽车。它实际上只是存储“品牌和型号”的真正PK的替代品。所以很可能一个用户可能拥有多个相同品牌车型。 – 2010-01-11 21:31:57