review:
review_id INT PK
type 1=Peer Review, 2= Internal Review
score FLOAT? INT?
start_date TIMESTAMP
end_date TIMESTAMP
您的检阅错误实体变成这样一个表
review_error_id INT PK
review_id INT FK to review table
ordinal INT 0,1,2 showing order of items in report
error VARCHAR(255)
description VARCHAR(255)
quantity INT? FLOAT?
然后要生成示例表所暗示的报告,需要
SELECT review.type,
review_error.error,
review_error.description,
review_error.quantity
review.score,
review.start_date,
review.end_date
FROM review
LEFT JOIN review_error ON review.review_id = review_error.review_id
ORDER BY review.review_id
review_error.ordinal
1条答案
按热度按时间kxeu7u2r1#
这是猜测,因为你的问题不太清楚。您正在寻找一对多模式来保存此数据集合。
看起来您有两个实体(用实体关系数据建模的说法)。
回顾
复查错误
审阅与审阅错误之间存在一对多关系:每个审阅都可能有零个或多个与之关联的审阅错误。您在图像中显示了两个,但仍应使用一对多关系。
您的审阅实体将变成这样一个表
您的检阅错误实体变成这样一个表
然后要生成示例表所暗示的报告,需要
你用
LEFT JOIN
因为平凡JOIN
将抑制review
没有匹配的行review_error
排。如果希望在图像中显示框和列标题,则需要使用客户端程序生成这些框和列标题。例如,可以在html表格中的单元格周围定义边框。