我知道这个主题已经详细讨论了(我在这里和网上都阅读了很多帖子)而且我不喜欢鞭打死马,但我有一个关于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个具有完全不同结构的表,我希望用户能够应用标签,所以我想我需要执行以下操作之一:
>存储表名/表号以及标记所涉及的行的整数键
>存储行的GUID,这将独立于表格工作,使得获取特定行的所有标记变得更加容易.
我不确定的是这将如何影响以下方面的表现:
>使用特定标签/标签搜索超过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 )