讨论一下该如何设计这张表?
如同文件夹一样无限级的对象,应该怎样设计表?
我现用以下设计,不知还有没有更好的?
--创建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增加字段也很方便。
[解决办法]
数据量不大的话,可以了