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.
问问题
148 次
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 回答