2009-10-14 50 views
2

我想创建一个数据库,其中每个表的PK将GUID和这将是整个数据库唯一,SQL Server如何维护GUID跨表在同一数据库

例子:我的数据库名字为“LOCATION” 。我有3个表格,分别是'CITY','STATE'和'COUNTRY'。

我希望所有3个表具有与GUID相同的PK字段,并且该值在数据库中是唯一的。

如何在SQL Server中做到这一点,任何想法?我之前从未使用过SQL Server,因此如果简要解释它会很有帮助。

回答

4
create table CITY (
    ID uniqueidentifier not null primary key default newid(), 
    . 
    . 
    . 
) 

重复其他表。

3

你是什么意思? 只需创建表格,为每个表格添加一个Id字段,将Id字段的数据类型设置为'uniqueidentifier',即可。 接下来,在这些列上添加主约束,并确保在插入新记录时为该列分配新的guid(例如,使用newid()函数)。

0

我想不出有什么好的理由有一个由3个表共享的唯一编号,为什么不给每个表使用外键引用的唯一索引?索引字段的查询速度比随机数字要快。

我会用外键CityId,StateId & CountryId创建一个'Location'表来逻辑地链接它们。

编辑: 如果你要在城市,州和国家表中添加一个唯一的ID,那么为什么不把它们作为同一个表中的字段呢?我会认为你将它们分成3个表格的原因是为了减少数据库中的重复。

相关问题