动态创建表(在运行时)
我正在进行车队管理。我想为每辆车创建一张桌子,即当我创建一辆车时,我希望在运行时为该车辆创建一张桌子。现在我正在编写一个创建表的过程,但没有创建具有相同名称的表。如何实现这一目标?动态创建表(在运行时)
还可以吗?
技术:ASP.NET/MYSQL
如果我去用于分配??????
这听起来像一个非常糟糕的主意,但如果你坚持,你可以简单地发送CREATE TABLE查询,就像任何其他查询。
创建表一旦使用phpMyAdmin或类似的工具,看看具体的CREATE TABLE命令,并使用它作为模板来创建类似的表。
另一个选项是类似的命令,这将创建表具有相同的架构的CREATE TABLE,但没有数据。
另一种方法是做正确的方式 - 1个表,用于存储所有车辆。
您的老板的解决方案将使其几乎不可能查询数据库。向他解释这一点,如果他仍然坚持你“按他的方式”,告诉他他是个傻瓜。
但很好,但! – 2009-10-06 10:48:14
否则这将是一个关系型数据库的一个可怕的误用。
他有一个很好的理由说明你应该使用该设计吗?
有没有什么好的理由为什么有人会想这样做? (我真正感兴趣的,如果有一个有效的用例)
这的确是,其他人已经说过,一个非常糟糕的主意,有每辆车一个表。更为健全的方法是为不同种类的车辆创建单独的表格,以防他们需要存储不同的数据。它可能看起来像:
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]}
因为你很可能知道更多有关数据库设计比你的老板,花时间的,以证明你的情况:
- 向他解释他的设计的影响。即很难查询,效率低下
- 向他解释正确设计的好处。更容易查询,遵循约定等。
- 向他解释他不会失去输出关于单个车辆的数据的能力,而是通过更合理的设计导出(和维护)数据会容易得多
- 请他解释他为什么首先想要提出设计的原因,并认真对待他的任何疑虑。向他解释你的设计如何解决这些问题,用他提出的设计来解决这些问题有多困难。
为什么你要每辆车一张桌子? – 2009-10-06 10:27:26
我的老板让我这么做......一张桌子上有不同车辆的大量数据,以避免和分发他想要每辆车创建一张桌子的数据 – hrishi 2009-10-06 10:32:40
你的老板不应该告诉你如何做事,特别是当这是一个坏主意。真的,不要这样做。这是一个非常非常糟糕的主意。 – 2009-10-06 10:55:23