定义数据库的表结构?

时间:2010-07-02 13:27:28

标签: sql database linux database-design

到目前为止,我对数据库的经验一直在使用我工作的中间定义层。即SQL不是直接为表定义编写的,而是从中间文件生成的,该文件写出用于创建适当表的SQL脚本,在模式更改之间升级脚本,以及用于从中执行简单查询/更新/插入/删除的辅助函数。数据库中。

现在我处于一种我无法接触到这种情况的情况,原因是我不会进入,我发现自己在海上有些失去了应该做什么。我需要在数据库中有少量表,我不确定管理表定义通常做了什么。

人们通常只是使用创建表的SQL脚本作为定义,还是每个人都只使用在单独文件中管理定义的IDE并重新生成SQL脚本来创建表?

我真的不想引入对特定IDE的依赖,因为众所周知,开发人员很容易就小事情进行宗教辩论。

6 个答案:

答案 0 :(得分:6)

打开您喜欢的文字编辑器 - >开始编写CREATE脚本 - >保存 - >放入源代码管理

该脚本现在成为您数据库的基础。只要有架构更改,它们就会被放回到脚本中,这样它们就不会丢失。

这些成为你的定义。

我发现它比依赖于为您生成这些脚本的任何特定IDE /平台更可靠。

答案 1 :(得分:1)

我们自己编写脚本并将其存储在源代码控制中,就像任何其他代码一样。然后将适合特定版本的脚本全部组合在一起并提升为prod。确保在更改现有表时使用alter table,因为如果它们有数据,您不想删除并重新创建它们!我使用drop并重新传输所有其他对象。如果您需要将记录添加到特定表(通常是某种类型的查找),我们也会在脚本中执行此操作。然后,使用其余的版本代码也会提升它。

对我来说,将脚本放在源代码管理中然而生成它们是关键步骤。这就是您如何知道下一个版本的更改内容。这是您可以查看早期版本并在出现问题时轻松恢复的方法。以与处理所有其他代码相同的方式处理数据库代码。

答案 2 :(得分:1)

如果你开始使用数据库设计并且最终想要为你创建脚本,你可以使用一种为你创建脚本的数据建模工具。一些工具是Erwin,Fabforce等......(虽然不是免费的)

如果您可以访问像SQL Management Studio这样的IDE,则可以使用非常简单的GUI创建它们。

如果您正在编写自己的代码,最好根据一个好的模板编写自己的脚本,这样就可以覆盖表定义的所有属性,如file_group,Collat​​ion&东西。希望这有帮助

创建基本副本后,生成脚本并拥有它的基本引用副本,以便您可以对它们执行“增量”更改并在源代码管理中对其进行管理。

答案 3 :(得分:0)

虽然我使用TOAD for Oracle,但我总是编写脚本来手动创建数据库对象。它为您(以及您的DBA)提供了对正在创建的内容和方式的更多控制和知识。

答案 4 :(得分:0)

如果您的架构在SQL中难以描述,那么您可能还有其他问题比哪个IDE更紧迫。如果需要图形表示,请使用建模文档,但是,您不需要IDE。

答案 5 :(得分:0)

有多种方式可以满足您的需求。 旧的传统方式是使用具有CREATE TABLE语句的应用程序准备好脚本文件。

如果您是开发人员,而且也是Java企业开发人员,则可以使用名为Hibernate的持久性库生成完整的模式。 Here is a how to

如果您是DBA级别用户,则可以从一个环境中导出架构并将其导入当前环境。这是DBA中的标准做法。但是你可以看到它需要管理员访问权限。此外,这些方法取决于您使用的数据库(oracle,db2等)