1

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.

4

2 回答 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 回答