首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

讨论一下该怎么设计这张表

2012-01-30 
讨论一下该如何设计这张表?如同文件夹一样无限级的对象,应该怎样设计表?我现用以下设计,不知还有没有更好

讨论一下该如何设计这张表?
如同文件夹一样无限级的对象,应该怎样设计表?
我现用以下设计,不知还有没有更好的?

--创建T_Base表--
CREATE   TABLE   [dbo].[T_Base]   (
[fID]   [int]   IDENTITY   (1,   1)   NOT   FOR   REPLICATION     NOT   NULL   ,
[fCode]   [nvarchar]   (20)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,
[fName]   [nvarchar]   (255)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,
[fParentID]   [int]   NOT   NULL   ,
[fDeleted]   [bit]   NOT   NULL   ,
[fRemark]   [nvarchar]   (255)   COLLATE   Chinese_PRC_CI_AS   NULL  
)   ON   [PRIMARY]
GO

ALTER   TABLE   [dbo].[T_Base]   WITH   NOCHECK   ADD  
CONSTRAINT   [PK_T_B]   PRIMARY   KEY     CLUSTERED  
(
[fID]
)     ON   [PRIMARY]  
GO

ALTER   TABLE   [dbo].[T_Base]   ADD  
CONSTRAINT   [IX_T_B]   UNIQUE     NONCLUSTERED  
(
[fParentID],
[fCode]
)     ON   [PRIMARY]   ,
CONSTRAINT   [IX_T_B_1]   UNIQUE     NONCLUSTERED  
(
[fParentID],
[fName]
)     ON   [PRIMARY]  
GO

ALTER   TABLE   [dbo].[T_Base]   ADD  
CONSTRAINT   [FK_T_B_T_B]   FOREIGN   KEY  
(
[fParentID]
)   REFERENCES   [dbo].[T_Base]   (
[fID]
)
GO

SET   IDENTITY_INSERT   T_Base   ON
GO                    

INSERT  
                INTO   T_Base(fID,   fCode,   fName,   fParentID,   fDeleted)
VALUES   (0,   N '* ',   N '* ',   0,   0)
GO

SET   IDENTITY_INSERT   T_Base   OFF
GO                    


[解决办法]
这样的结构还不错。
可以将每个节点的信息做成一个单独的表,将父子节点的关系作成一个表。
如:
Table1:
fID, fCode, fName
Table2:
fID, fParentID, fDeleted
这样Table1增加字段也很方便。
[解决办法]
数据量不大的话,可以了

热点排行