2010-07-02 75 views
1

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

现在我处于一种无法访问的状态,因为我不会进入,我发现自己有些在海上迷失方向。我需要在数据库中拥有少量表格,并且我不确定管理表格定义通常会做什么。

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

我真的不希望引入对特定IDE的依赖,因为众所周知,开发人员是那些容易发生针对小事情的宗教辩论的哗众取宠者。

+0

我工作过的大多数地方都把模式DDL放在一个或多个文件中 – 2010-07-02 13:30:49

+0

“因为众所周知,开发人员是那些容易发生针对小事情的宗教辩论的哗众取宠者。”我们都知道,因为这是一个主要由开发人员询问和回答问题的地方。 – APC 2010-07-02 13:31:31

+0

哪个版本的SQL? – Baaju 2010-07-02 13:31:45

回答

6

打开文本编辑器 - >开始写作创建脚本 - >保存 - >源代码管理

把那剧本现在就变成了你的数据库的基础。每当模式发生变化时,它们都会被放回到脚本中,以免丢失。

这些成为你的定义。

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

+0

+1作为一位着名的哲学家曾经说过,“这很容易做到,只需按照这些步骤。” – corsiKa 2010-07-02 13:33:57

+1

源代码管理的+1。令人沮丧的是,为数不多的地方保护他们的DDL脚本 – APC 2010-07-02 13:36:07

+0

谢谢。猜猜我会开始编写我的创建脚本。 – 2010-07-02 13:42:58

0

尽管我使用TOAD for Oracle,但我总是编写脚本来手工创建我的数据库对象。它使您(和您的DBA)更加掌握和了解正在创建的内容和方式。

1

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

对我来说,把脚本放在源代码控制中是很重要的一步。这就是你如何知道你为下一个版本所做的改变。这是您如何看到早期版本并在出现问题时轻松恢复的方式。对待数据库代码的方式与对待所有其他代码的方式相同。

0

如果您的模式太难以在SQL中描述,那么您可能会遇到其他问题比哪个IDE更加紧迫。使用建模文档如果您需要图形表示,但是,您不需要IDE。

0

你有什么问题有多种方式。 传统的传统方式是让您的应用程序具有CREATE TABLE语句的脚本文件。

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

如果您是DBA级别的用户,则可以从一个环境中导出模式导出并将其导入到当前环境中。这是DBA之间的标准做法。但它需要管理员访问,你可以看到。另外,这些方法依赖于您正在使用的数据库(oracle,db2等)。

1

如果您正在开始进行数据库设计,并且最终想要使用数据建模工具,那么您可以使用其中一种数据建模工具为您创建脚本为你创造它。一些工具是Erwin,Fabforce等...(尽管不是免费的)

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

如果您正在编写自己的代码,那么最好是基于良好的模板编写自己的脚本,以便覆盖表格定义的所有属性,如file_group,Collat​​ion & stuff。希望这可以帮助

一旦你创建了一个基本副本生成脚本并且有一个基本的参考副本,以便你可以对它们进行“增量”更改并在源代码管理中对其进行管理。