sql-server-2008 – 用于标记的GUID与Identity
我知道这个主题已经详细讨论了(我在这里和网上都阅读了很多帖子)而且我不喜欢鞭打死马,但我有一个关于Integer ID与GUID更具体方面的问题:
我正在编写一个模式,它将具有与stackoverflow标记类似的标记功能,但它将使用相同的标记对5个不同的表. 我将链接的基本表格如下: 标签表 Tag ID Tag Name Tag Description ------------------------------------------------------------- 1 Hats Tag for hats 2 Coats Tag for coats 3 Gloves Gloves tag 4 Ladies Ladies item 项目表1 Item ID Item Name Cost ------------------------------------------------------------ 1 Deerstalker £20.00 2 Fedora £50.00 3 Scarf £15.00 我遇到问题的是tag_item表. 我将拥有5个具有完全不同结构的表,我希望用户能够应用标签,所以我想我需要执行以下操作之一: >存储表名/表号以及标记所涉及的行的整数键 我不确定的是这将如何影响以下方面的表现: >使用特定标签/标签搜索超过5个表的所有项目 在这种情况下是否有任何明显更好的选择,或者我可以在任何地方读到这种特殊情况下的优势? 编辑: 对于任何感兴趣的人,下面是我决定的架构: 标签表 CREATE TABLE [dbo].[Sys_TagList]( [Sys_Tag_Primary] [int] IDENTITY(1,1) NOT NULL,[Sys_Tag_Name] [varchar](50) NOT NULL,[Sys_Tag_Description] [varchar](1000) NULL ) Tag_Items的表 CREATE TABLE [dbo].[Meta_Tags]( [Met_Tag_Primary] [int] IDENTITY(1,[Met_Tag_Link_FK] [int] NOT NULL,-- Link to [Sys_Tag_Primary] field [Met_Tag_Name] [varchar](25) NOT NULL,-- To enable tag searches to use a single table [Met_Tag_Table] [varchar](25) NOT NULL,-- Table name,used with [Met_Tag_RowID] to create link to that item [Met_Tag_RowID] [int] NOT NULL -- Primary key of item[n] table ) 解决方法我将(可能没有帮助)建议GUID vs ID是一个错误的问题,需要关注.假设您需要将标签链接到项目的单个表格,可能需要先进行检查.如果您的五个项目类别不同,需要不同的表格,那么您应该考虑五个tag_item链接表 – 每个项目表一个.尽管一次查询它们的代码(使用UNION ALL来连接结果)可能比单个链接表的代码更冗长和重复,但查询可能要简单得多 – 从维护和查询计划透视图. 另一种方法是将五个项目类别共享的公共属性重构为单个中心表(标记链接到其中),并将其他非公共属性存储在五个子表中.如果没有关于当前如何使用现有数据的更多信息,很难知道这是否合适. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |