Designing a database with many tables and want to add a general Note table. I want a Note object to be able to attach to several other tables. So one Note can be associated with a particular Contact, maybe a Job, and also a few different Equipment objects. I'd like to be able to filter Note objects by the particular objects they are associated with.
2 回答
0
它会带你两张桌子。结构很简单,如下所示。
备注表:
NotePK | tableFK | note
还有一张列出所有表格的表格。要么您创建一个(然后您拥有完全控制权但需要维护它),要么您采用
sys.tables t
你读出来的SELECT * FROM sys.tables t
该列object_id将是您tableFK在第一个表中的
您可以存储任意数量的评论。如果您想获取注释,只需查询注释表并过滤您的tableFK.
于 2013-08-02T14:44:13.977 回答
0
好吧,这是一种方法:
CREATE TABLE NoteTables
(
TableID INT NOT NULL Identity(1,1),
TableName SysName NOT NULL,
CONSTRAINT PK_NoteTables PRIMARY KEY CLUSTERED(TableID)
)
GO
CREATE TABLE TableNotes
(
TableID INT NOT NULL,
RowID INT NOT NULL,
NoteID INT NOT NULL,
CONSTRAINT PK_NoteAttachments PRIMARY KEY CLUSTERED(TableID, RowID, NoteID)
)
GO
CREATE TABLE Notes
(
NoteID INT NOT NULL Identity(1,1),
Note NVARCHAR(MAX),
CONSTRAINT PK_Notes PRIMARY KEY CLUSTERED(NoteID)
)
请注意,我在这里假设 SQL Server 和 IDENTITY 列的使用(如果是 Oracle,您可以使用序列代替)。
该Notes表包含所有注释,并为它们提供了一个 ID,以用作参考和主键。
NoteTables仅列出可以在其行上附加注释的所有表格。
TableNotes将注释链接到它们所附加的表和行。请注意,此设计假定所有这些表都具有INT可用于唯一引用的 ID 列。
于 2013-08-02T14:45:11.760 回答