我有一种情况,我必须在DB中存储一些标志和数据。内容如
is_read --->
检查用户是否已阅读案例研究,标记0或1
is_submitted --->
以检查用户是否已提交案例研究标志0或1
url_file --->
用户上传的文件的网址,数据类型varchar(100)
许多用户都可以访问每个案例研究。
那么两者中哪一个是最佳和最好的方式呢?
1)将所有东西存储在一个表中,这里没有重复
id | user-id | case_id | is_submitted | is_read | file_url
2)为每个约束分解为表格,因为它们彼此无关
id | user-id | case_id
<fk>
id | is_submitted
id | is_read
id | file_url
我需要所有数据,所以在2种情况下它会有更多的连接。
而且列也彼此无关。
答案 0 :(得分:0)
评论太长了。
对我而言,似乎单个用户提交了一个案例研究。如果是这样,CastStudies
表应该有一个名为SubmittedBy
的列。
同样,我认为案例研究只有一个URL。如果是这样,它应该有一个名为FileURL
的列。如果有多个网址,则您需要另一个表CasestudyFiles
来存储它们。
至于阅读标志,这似乎是案例研究和用户之间的多对多关系。因此,您需要一个包含以下列的联结表:
然而,我想象所有这些事情,因为你的问题并没有真正解释实体及其间的关系。
编辑:
根据你的评论,我会设想一个这样的表格:
create table UserCasestudies (
UserCasestudiesId int not null auto_increment primary key,
CastStudiesId int not null references Casestudies(CaseStudiesId),
UserId int not null references Users(UserId),
ReadDatetime datetime,
SubmittedDatetime datetime,
UploadDatetime datetime,
URL varchar(100)
) ;
如果您愿意,可以添加标记,但我认为查看操作的日期/时间可能更有用。
答案 1 :(得分:0)
这取决于您想要优化的内容。
读性能?
写性能?
反思人类思维模式?
但是你必须对这两种型号进行测试/基准测试,以找到最适合你需求的产品。
此外,您声称这些标记&#34;彼此无关&#34;,这在技术上是不正确的,因为它们都引用相同的案例研究。
因此,我建议您使用版本1,因为它是一个更简单的模型,并且不需要使其复杂化。
但实际上,这已经是一种意见了。