这对MySQL本身来说不是什么大问题。
完整故事
我正在编写一个非常小的PHP框架。它不像现有框架那样迫使您使用某种方法。它不像CMS框架。相信我,我见过Zend框架,我已经广泛使用了像Joomla和WordPress这样的CMS,它们都没有接近我正在做的事情。
介绍问题
我正在编写数据库抽象部分。你得到类方法,如:: table_exists()等。 它的设计方式使人们可以轻松添加不同的数据库类并使用它们(例如:mysql,mssql,oracle,flatfile ......)。
他们只需要编写一个满足基本抽象类的类。
真实问题
我正在编写:: table_create()的功能,但有一个主要问题:MySQL不喜欢空表(即没有列)。
我有几个建议修复:
这种方法肯定是新的,我想在这里对它有一些公正的评论(“但没有人这样做”的任何内容都不会这样做。)
答案 0 :(得分:3)
好吧,我会选择选项1),添加一个通用ID列,无论如何你可能会发现它,或者选项3)延迟创建表。我假设他们调用:: table_create()后会调用table_add_col()等等。所以只需要延迟创建,直到至少有一列,或者直到他们第一次尝试使用该表为止。
答案 1 :(得分:1)
您建议的修复程序看起来非常好。但我会以不同的顺序推荐它们。如果你能够推迟创作,那可能是最好的。我的第二个最喜欢的是拥有一个只有一个ID的表,尽管如果你想创建一个只包含两个外键的多对多关系表,你可能会删除这一列。
答案 2 :(得分:0)
你的最后一点。
你在这里做的真的很奇怪。动态创建表格?动态还是什么? 好吧......无论你想要完成什么。你应该看一下面向文档/面向对象的数据库,比如couchdb http://couchdb.apache.org/!您可以创建文档并动态添加所需的任何字段。那些与你的“专栏”最接近的东西
但是你喜欢它...... 你的第一次尝试是丑陋的,因为它可能导致冲突。 第二次尝试很笨拙。但是如果你这样做,就用uniqueprefix_random创建一个col,这样你就可以删除它了。 但它很好......我不知道该怎么说。
他们的做法似乎是唯一有意义的!