我想在数据库中表示文档。有几种不同类型的文档。所有文件都有某些共同点,但并非所有文件都相同。
例如,假设我有一个基本的文档表...
TABLE docs (
ID
title
content
)
现在假设我有一个文档子集可以属于某个用户,并且可以具有与其关联的附加信息。我可以执行以下操作...
TABLE docs (
ID
userID -> users(ID)
title
content
additionalInfo
)
...然而,这将导致表中出现大量空值,因为只有一些 文档可以属于某个用户,而不是全部。因此,我创建了第二个表“ownedDocs”来扩展“docs”:
TABLE ownedDocs (
docID -> docs(ID)
userID -> users(ID)
additionalInfo
)
我想知道:这是正确的做法吗? (我很担心,因为虽然一切都在一个表中,但文档和用户之间存在一对多关系。但是,通过创建一个新表 ownedDocs,数据结构看起来我在文档之间存在多对多关系和用户——这永远不会发生。)
预先感谢您的帮助
最佳答案
the datastructure looks like I have a many-to-many relationship between docs and users - which will never occur.
明白了,那么你需要在docs
表中有userid来确保一对多的关系(一个用户,可能有很多文档)。
如果文档未关联到特定用户,我不认为附加信息列为空有什么害处,由 userid
列为空表示。将附加信息拆分到另一个表仍然意味着一对一的关系,因此您最好使用一个包含文档、用户和附加信息的表...
关于php - 适当的数据结构来维护一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632792/