Database 如何使用唯一复合密钥
我有一张桌子Database 如何使用唯一复合密钥,database,database-design,Database,Database Design,我有一张桌子 Item(ItemName*, ItemSize*, Price, Notes) 我正在制作(ItemName,ItemSize)的复合键来唯一标识项。现在,在阅读了关于stackoverflow的一些答案,建议使用UNIQUE之后,我将其修改为 Item(ItemID*, ItemName, ItemSize, Price, Notes) 但是如何对ItemName和ItemSize应用惟一约束呢 如果有问题,请纠正 并解释如何使用SQLServerManagementStu
Item(ItemName*, ItemSize*, Price, Notes)
我正在制作(ItemName,ItemSize)的复合键来唯一标识项。现在,在阅读了关于stackoverflow的一些答案,建议使用UNIQUE之后,我将其修改为
Item(ItemID*, ItemName, ItemSize, Price, Notes)
但是如何对ItemName和ItemSize应用惟一约束呢
如果有问题,请纠正
并解释如何使用SQLServerManagementStudio实现同样的功能
- 正如Darin所说,归根结底,SQL是一种基于字符的语言
- 任何和所有命令(数据管理,或本例中的数据定义)都在SQL server上作为字符串执行
- 有100多种GUI SQL Server管理工具,从MS每隔一年不断生产的垃圾到不断增长(未被替换或重写)的成熟产品
- 您可以在您使用的任何GUI中单击或拖动或执行任何操作,但当您点击“保存”或“应用”按钮时,所有操作都会执行相同的操作:将SQL字符串发送到SQL server进行处理
{DROP | CREATE}[唯一][聚集]表(列,…)上的索引名
语法。随着它的扩展,添加了更多的关系结构,我们有了
ALTER TABLE{ADD | DROP}{UNIQUE | PRIMARY KEY}约束名称(列,…)
语法 Dave Pinal的观点是正确的:就服务器内部的数据存储结构而言,
INDEX
和CONSTRAINT
语法都会产生相同的结果,即索引
但他只是在回答一个问题,显然没有听说过较新的约束
语法中隐含的ISO/IEC/ANSI标准SQL特性,而索引
语法中没有隐含这些特性(如果使用它,必须显式指定这些参数)。更重要的是,可以在索引
语法中提供许多参数,这些参数在约束
语法中不存在。因此存在显著的差异,这可能与在默认状态下运行的小型服务器无关
通常,倾向于在物理级别上实现性能的人,或者有数百个表要管理的人,使用索引语法;amd将自己与现实世界隔离的人受到约束
- 关键是,使用一个异或另一个,不要使用组合:这会导致创建您甚至不知道的重复索引(因为它们不会显示在您正在查看的已损坏的MS GUI面板中)。
. 李>
Dave把事情弄糊涂了:根本没有“主键索引”这样的东西。它是主键约束或索引(可能是主键,并且具有与支持PK相关的设置)
- 关键是,学习标准,它会为你消除很多困惑。然后,不管今天屏幕上有什么GUI工具,您都会清楚地知道数据模型中需要/拥有什么,以及服务器内部发生了什么
- 重点是,关于“如何以图形方式进行此操作”,您可以在任何图表工具中进行此操作,因为您拥有模型,并且可以在表上设置和选择设置。没有微软GUI曾经或将永远给过您这些信息。
.
(ItemName,ItemSize)
在该特定表上形成一个唯一的键,那么您认为您需要什么基础来代替(ItemName,ItemSize
,再加上更多的)
?你怎样才能变得更独特来自和文档的参考资料很抱歉没有提及,我不是要代码。请用文字解释一下。我正在SQL server 2005中设计数据库。我的想法是在这两列上添加唯一索引(或相同的唯一约束)。如何在SQL server中以图形方式执行相同操作?不要使用唯一索引语法。使用唯一约束。原则上,约束是数据库逻辑级别的一部分,而索引是数据库的物理实现。密钥是一种逻辑特性,而不是物理特性。约束是标准SQL的一部分,而索引不是。数据库的大多数用户都希望将键实现为约束,而不仅仅是索引,如果使用索引语法,他们可能会忽略键存在的事实。此外,许多开发和数据库管理工具可能会将约束识别为关键
ALTER TABLE Items ADD UNIQUE INDEX(ItemName, ItemSize);
ALTER TABLE Items ADD CONSTRAINT uc_name_size UNIQUE (ItemName,ItemSize)