E-R 建模和业务规则
E-R modelling and business rules
如何在 E-R 模型中插入这样的概念:
"an user can insert an evalutation of another user who participates to the same event"
其中参与必须从批准的活动订阅中扣除。
我从订阅(与用户和事件相关)到自身建立了递归关系 "Evaluation",但我不确定它是否正确。
也许对于这样的概念我需要使用业务规则?
谢谢。
考虑以下 ER 图示例:
我们可以在 SQL 中实施评估和参与:
CREATE TABLE Participation (
UserID INT NOT NULL,
EventID INT NOT NULL,
PRIMARY KEY (UserID, EventID),
FOREIGN KEY (UserID) REFERENCES User (UserID),
FOREIGN KEY (EventID) REFERENCES Event (EventID)
);
CREATE TABLE Evaluation (
EvaluationID INT NOT NULL,
ScoringUserID INT NOT NULL,
ScoredUserID INT NOT NULL,
EventID INT NOT NULL,
Score INT NOT NULL,
PRIMARY KEY (EvaluationID)
);
现在,通常我们会像这样为求值创建外键约束:
ALTER TABLE Evaluation
ADD FOREIGN KEY (ScoringUserID) REFERENCES User (UserID),
ADD FOREIGN KEY (ScoredUserID) REFERENCES User (UserID),
ADD FOREIGN KEY (EventID) REFERENCES Event (EventID);
但是,在这种情况下,一对引用参与的重叠外键约束将强制执行所需的业务规则:
ALTER TABLE Evaluation
ADD FOREIGN KEY (ScoringUserID, EventID) REFERENCES Participation (UserID, EventID),
ADD FOREIGN KEY (ScoredUserID, EventID) REFERENCES Participation (UserID, EventID);
有一些冗余,但它是受控的并且是一致性所必需的。或者,可以使用触发器来达到相同的效果。
这些重叠的 FK 约束不能在 ER 图中表示,尽管它们可以逻辑表示。在 table 图中,我们可以在 table 之间绘制鱼尾纹,但这并不表示涉及的复合重叠列。
如何在 E-R 模型中插入这样的概念:
"an user can insert an evalutation of another user who participates to the same event"
其中参与必须从批准的活动订阅中扣除。
我从订阅(与用户和事件相关)到自身建立了递归关系 "Evaluation",但我不确定它是否正确。
也许对于这样的概念我需要使用业务规则?
谢谢。
考虑以下 ER 图示例:
我们可以在 SQL 中实施评估和参与:
CREATE TABLE Participation (
UserID INT NOT NULL,
EventID INT NOT NULL,
PRIMARY KEY (UserID, EventID),
FOREIGN KEY (UserID) REFERENCES User (UserID),
FOREIGN KEY (EventID) REFERENCES Event (EventID)
);
CREATE TABLE Evaluation (
EvaluationID INT NOT NULL,
ScoringUserID INT NOT NULL,
ScoredUserID INT NOT NULL,
EventID INT NOT NULL,
Score INT NOT NULL,
PRIMARY KEY (EvaluationID)
);
现在,通常我们会像这样为求值创建外键约束:
ALTER TABLE Evaluation
ADD FOREIGN KEY (ScoringUserID) REFERENCES User (UserID),
ADD FOREIGN KEY (ScoredUserID) REFERENCES User (UserID),
ADD FOREIGN KEY (EventID) REFERENCES Event (EventID);
但是,在这种情况下,一对引用参与的重叠外键约束将强制执行所需的业务规则:
ALTER TABLE Evaluation
ADD FOREIGN KEY (ScoringUserID, EventID) REFERENCES Participation (UserID, EventID),
ADD FOREIGN KEY (ScoredUserID, EventID) REFERENCES Participation (UserID, EventID);
有一些冗余,但它是受控的并且是一致性所必需的。或者,可以使用触发器来达到相同的效果。
这些重叠的 FK 约束不能在 ER 图中表示,尽管它们可以逻辑表示。在 table 图中,我们可以在 table 之间绘制鱼尾纹,但这并不表示涉及的复合重叠列。