Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design SQL Server 2008:何时可以不修改表结构?何时可以不删除行?_Database Design_Sql Server 2008 - Fatal编程技术网

Database design SQL Server 2008:何时可以不修改表结构?何时可以不删除行?

Database design SQL Server 2008:何时可以不修改表结构?何时可以不删除行?,database-design,sql-server-2008,Database Design,Sql Server 2008,几年前的夏天,我在一家公司工作,该公司需要一个专为其销售和记录保存而设计的Access DB。在那个夏天,有一件事困扰着我,那就是有时无法更改列的数据类型、删除列或删除行(条目)。而且,如果我记忆犹新(这是五年前的事),我想我有时会复制整个数据表,用我想要的更改重新创建表,然后再复制回来。老实说,我遇到的大多数问题可能都与我当时极度缺乏数据库设计知识有关,我可能正试图改变一些你显然不应该做的事情。然而,这次我试图避免同样的问题 今年夏天,我现在在MSSQLServer2008Developer工

几年前的夏天,我在一家公司工作,该公司需要一个专为其销售和记录保存而设计的Access DB。在那个夏天,有一件事困扰着我,那就是有时无法更改列的数据类型、删除列或删除行(条目)。而且,如果我记忆犹新(这是五年前的事),我想我有时会复制整个数据表,用我想要的更改重新创建表,然后再复制回来。老实说,我遇到的大多数问题可能都与我当时极度缺乏数据库设计知识有关,我可能正试图改变一些你显然不应该做的事情。然而,这次我试图避免同样的问题

今年夏天,我现在在MSSQLServer2008Developer工作,再次着手设计一个重要的数据库系统。所以,当我开始讨论这个问题时,我的问题是,什么是我以后不能回去改变的?具体来说,我知道大多数限制都发生在主键/外键上,所以在设计时我应该注意什么

例如:

  • 我可以更改主键的数据类型吗?如果它在另一个表中引用了呢
  • 我可以更改主键吗?如果它在另一个表中引用
  • 我可能会遇到哪些其他我应该注意的明显限制?很抱歉,如果这似乎是一个明显/愚蠢的问题,但我认为许多初学者需要知道这个问题的答案-我就是其中之一


    谢谢

    如果表未被外键引用,则转到head,更改主键。此外,如果您处于设计阶段,并且表是空的,那么您通常可以非常灵活地更改FK和PK关系,因为空表没有任何行来检查符合性

    还要记住,PK和FK的数据类型必须完全匹配(即bigint到bigint,smallint到smallint,而不是bigint到smallint)

    1-除非使用工具,否则更改表的主键是一项非常重要的任务。如果使用enterprise manager并更改密钥,然后单击以显示脚本,您将看到删除所有约束,备份目标表,然后删除创建的新表并重建所有内容。如果旧主键中的数据没有转换,或者随后不是唯一的,希望一切都能顺利回滚

    2-相同的实际结果


    什么时候不能删除行?只有修改或删除FK表中的所有对应行,才能从PK表中删除。要从states表中删除Texas,您必须将所有订单记录更新为新的有效州名称,或将其删除。

    使用SQL 2008 Management Studio,您可以在Tools->Options中启用一个选项,该选项将阻止您保存任何需要重新生成表的更改。然后,您可以创建一个数据库并尝试一系列操作,看看哪些可以工作,哪些不可以

    我不是SQL专家,所以我不知道所有需要重建表的情况,但我知道重新排序列(包括在表末尾以外的任何位置添加新列)需要重建

    编辑:


    据我所知,另两件让我感到巨大痛苦的事情是UDT和UDF,它们是“模式绑定的”。当其他对象引用这些内容时,您无法更改这些内容。

    打开SQL server Management Studio,并使用SQL server身份验证帐户
    sa
    ***
    登录到系统。接下来,按照下面提到的步骤进行操作

    工具>选项>设计>防止保存桌子娱乐|删除复选框tic

    现在,您可以更改表并保存在designer视图中