ben*_*ear 8 t-sql tags sql-server-2008
我知道这个主题已经详细讨论了(我在这里和网上都阅读过很多帖子)而且我不喜欢鞭打死马,但我对整数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
Run Code Online (Sandbox Code Playgroud)
项目表1
Item ID Item Name Cost
------------------------------------------------------------
1 Deerstalker £20.00
2 Fedora £50.00
3 Scarf £15.00
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的是tag_item桌子.
我将有5个具有完全不同结构的表,我希望用户能够应用标签,所以我想我需要执行以下操作之一:
table name/ table number以及标记所涉及的行的整数键GUID一行,这将独立于表格工作,使得获取某一行的所有标记变得更加容易.我不确定的是这将如何影响以下方面的表现:
在这种情况下是否有任何明显更好的选择,或者我可以阅读这个特定情况下的优势?
编辑:
对于任何感兴趣的人,下面是我决定的架构:
标签表
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
)
Run Code Online (Sandbox Code Playgroud)
Tag_Items的表
CREATE TABLE [dbo].[Meta_Tags](
[Met_Tag_Primary] [int] IDENTITY(1,1) NOT NULL,
[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
)
Run Code Online (Sandbox Code Playgroud)
我打算(也许没有用)建议GUID vs ID是一个错误的问题.假设您需要将表格链接到项目的单个表格,可能需要先进行检查.
如果您的五个项目类别不同,需要不同的表格,那么您应该考虑五个tag_item链接表 - 每个项目表一个.尽管一次查询它们(UNION ALL用于连接结果)的代码可能比单个链接表的代码更冗长和重复,但查询可能要简单得多 - 从维护和查询都很好 - 计划视角.
另一种方法是将五个项目类别共享的公共属性重构为单个中心表(标记链接到其中),并将其他非公共属性存储在五个子表中.如果没有关于当前如何使用现有数据的更多信息,很难知道这是否合适.
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |