我无法弄清楚这个问题的标题如何字要清楚,所以这里是在解释我最好的拍摄:如何最好地保持在父子关系状态
我的客户有一个一系列彼此处于亲子关系的表格。例如:
CREATE TABLE dbo.First_Level (
id INT IDENTITY(1, 1) NOT NULL,
name VARCHAR(20) NOT NULL,
active BIT NOT NULL DEFAULT(1),
CONSTRAINT PK_First_Level PRIMARY KEY CLUSTERED (id)
)
CREATE TABLE dbo.Second_Level (
id INT IDENTITY(1, 1) NOT NULL,
first_level_id INT NOT NULL,
name VARCHAR(20) NOT NULL,
active BIT NOT NULL DEFAULT(1),
CONSTRAINT PK_Second_Level PRIMARY KEY CLUSTERED (id),
CONSTRAINT FK_SecondLevel_FirstLevel FOREIGN KEY (first_level_id) REFERENCES dbo.First_Level (id)
)
CREATE TABLE dbo.Third_Level (
id INT IDENTITY(1, 1) NOT NULL,
second_level_id INT NOT NULL,
name VARCHAR(20) NOT NULL,
active BIT NOT NULL DEFAULT(1),
CONSTRAINT PK_Third_Level PRIMARY KEY CLUSTERED (id),
CONSTRAINT FK_ThirdLevel_SecondLevel FOREIGN KEY (second_level_id) REFERENCES dbo.Second_Level (id)
)
棘手的部分是,如果父对象被标记为不再被激活(活性= 0),则其下任何的儿童,也应考虑为不再有效。但是,即使父母仍处于活动状态,子女可以将标记为不再有效。
我在寻找如何最好地执行这些业务规则的建议。我可以重叠视图,然后查看所有父母以确定任何给定行的最终活动标志,但我的客户端已经在这些表格中编写了大量代码。
我可以通过触发器执行规则,但我希望有一个更优雅的方式来做到这一点。
谢谢!
触发器不是优雅的? – canon 2012-07-18 19:17:32
@canon:不雅的人不是。 :) – 2012-07-18 19:44:15
你需要知道什么标记为机构内存不活动?例如,如果某人将第三级别条目标记为非活动状态,则将其父级标记为非活动状态并将其更改为活动状态,您是否需要知道第三级别条目应该仍处于非活动状态? – HABO 2012-07-18 20:16:01