如何使用SQL创建空表?

时间:2010-08-29 14:03:57

标签: php mysql database

这对MySQL本身来说不是什么大问题。

完整故事

我正在编写一个非常小的PHP框架。它不像现有框架那样迫使您使用某种方法。它不像CMS框架。相信我,我见过Zend框架,我已经广泛使用了像Joomla和WordPress这样的CMS,它们都没有接近我正在做的事情。

介绍问题

我正在编写数据库抽象部分。你得到类方法,如:: table_exists()等。 它的设计方式使人们可以轻松添加不同的数据库类并使用它们(例如:mysql,mssql,oracle,flatfile ......)。

他们只需要编写一个满足基本抽象类的类。

真实问题

我正在编写:: table_create()的功能,但有一个主要问题:MySQL不喜欢空表(即没有列)。

我有几个建议修复:

  • 对于每个新表,创建一个常用列,例如'id'(type = INT)
  • 对于每个新表,创建一个尽可能不使用任何空间的临时列(可能是一个布尔列?)
  • 以某种方式延迟创建表,直到至少可以创建一列

这种方法肯定是新的,我想在这里对它有一些公正的评论(“但没有人这样做”的任何内容都不会这样做。)

3 个答案:

答案 0 :(得分:3)

好吧,我会选择选项1),添加一个通用ID列,无论如何你可能会发现它,或者选项3)延迟创建表。我假设他们调用:: table_create()后会调用table_add_col()等等。所以只需要延迟创建,直到至少有一列,或者直到他们第一次尝试使用该表为止。

答案 1 :(得分:1)

您建议的修复程序看起来非常好。但我会以不同的顺序推荐它们。如果你能够推迟创作,那可能是最好的。我的第二个最喜欢的是拥有一个只有一个ID的表,尽管如果你想创建一个只包含两个外键的多对多关系表,你可能会删除这一列。

答案 2 :(得分:0)

你的最后一点。

你在这里做的真的很奇怪。动态创建表格?动态还是什么? 好吧......无论你想要完成什么。你应该看一下面向文档/面向对象的数据库,比如couchdb http://couchdb.apache.org/!您可以创建文档并动态添加所需的任何字段。那些与你的“专栏”最接近的东西

但是你喜欢它...... 你的第一次尝试是丑陋的,因为它可能导致冲突。 第二次尝试很笨拙。但是如果你这样做,就用uniqueprefix_random创建一个col,这样你就可以删除它了。 但它很好......我不知道该怎么说。

他们的做法似乎是唯一有意义的!