如何在运行时动态创建表

时间:2009-10-06 10:19:30

标签: mysql

我正在进行车队管理。我想为每辆车创建一个表格,即当我创建车辆时,我希望在运行时为该车辆创建一个表格。现在我正在编写一个创建表的过程,但是没有创建具有相同名称的表。怎么做到这一点?

任何替代方案?

技术:ASP.NET / MYSQL

如果我去分配怎么办?

5 个答案:

答案 0 :(得分:6)

另一种方法是以正确的方式行事 - 使用1个存储所有车辆的表。

你老板的解决方案几乎不可能查询数据库。向他解释这一点,如果他仍然坚持你“按他的方式”这样做,告诉他他是个白痴。

答案 1 :(得分:1)

您可以通过对数据进行分区来获得最佳效果,但将其保留在一个表中。 See here for an exampleand here too

答案 2 :(得分:0)

这听起来是一个非常糟糕的主意,但如果你坚持,你可以像其他查询一样发送CREATE TABLE查询。

使用PHPMyAdmin或类似工具创建表一次,以查看确切的CREATE TABLE命令,并将其用作模板来创建类似的表。

另一个选项是CREATE TABLE LIKE命令,该命令将创建具有相同模式但没有数据的表。

答案 3 :(得分:0)

这样做会对关系数据库造成严重的误用。

他有充分的理由说明你应该使用那种设计吗?

有没有什么好的理由让人们想要这样做? (如果有有效的用例,我真的很感兴趣)

答案 4 :(得分:0)

正如其他人已经说过的那样,确实每辆车有一张桌子是个坏主意。一种更为健全的方法是为不同类型的车辆创建单独的表格,以防他们需要存储不同的数据。它可能看起来像:

vehicles 
    {vehicle_id, type, name, commission_date, [other data]}
freight_vehicles 
    {vehicle_id, load_capacity, [other data]}
passenger_vehicles 
    {vehicle_id, passenger_capacity, [other data]}

assignments 
    {vehicle_id, from_destination, to_destination, 
     started_at, finished_at, [other data]}

destinations 
    {destination_id, name, [other data]}

由于您可能比您的老板更了解数据库设计,请花时间通过以下方式证明您的情况:

  1. 向他解释他设计的含义。即
  2. 难以查询,效率低下
  3. 向他解释正确设计的好处。更容易查询,遵循惯例等。
  4. 向他解释他不会失去导出单一车辆数据的能力,而是通过更完善的设计更容易导出(和维护)数据
  5. 让他先解释他为什么要提出这个设计的理由,并认真对待他的任何问题。向他解释你的设计如何解决这些问题,以及用他提出的设计解决这些问题要困难得多。