在运行时动态创建表

Mar*_*k W 5 database-design web-applications

是否在运行时基于用户的交互动态创建表格对于Web应用程序来说是好事还是坏事?(我说的是java,但问题可能适用于更多).

APC*_*APC 4

表对于用户与数据库的交互通常至关重要。因此,缺少表格是致命的。

由此可见,在运行时动态创建表是一种不好的做法,因为这意味着无法保证用户的体验。如果 CREATE TABLE 语句由于某种原因失败,用户就会被塞满。

因此,避免依赖运行时创建表的业务流程是个好主意。除了非常特殊的情况外,通常有解决方法。

在某种程度上,这取决于支撑应用程序的 RDBMS 的风格。例如,Oracle 有全局临时表的概念,它消除了几乎所有情况下对动态表创建的调用。但即使没有如此奇特的功能,通常也有解决办法:例如,向表中添加 USERNAME 列,并在其上构建一个视图,其中包括对USERNAME=USER.

基本上,就运行时间和系统资源而言,DDL 的执行成本很高。它造成了交易的复杂性。而且它是有风险的:如果失败,用户就无法继续。因此,出于所有这些原因,应该避免这种情况。