C# 用于从另一个表编译记录的数据库设计
设计引用另一个表中多条记录的表的最佳方法是什么 例如,有一个名为diary的表存储主题、描述和关键字,然后是另一个名为DiaryCompilation的表,用于通过引用日记中的id将所有选定记录合并到一本书中 创建日记汇编的最佳方法是什么 我想把它分成两个字段:id和referencesC# 用于从另一个表编译记录的数据库设计,c#,sql,sql-server,C#,Sql,Sql Server,设计引用另一个表中多条记录的表的最佳方法是什么 例如,有一个名为diary的表存储主题、描述和关键字,然后是另一个名为DiaryCompilation的表,用于通过引用日记中的id将所有选定记录合并到一本书中 创建日记汇编的最佳方法是什么 我想把它分成两个字段:id和references 所有选定的记录都放在参考文献中,但这是一种良好的做法还是有更好的方法?日记和日记编辑将有一对多的关系。只需确保DairyCompilation中的Id设置为主键,并对其施加外键约束,以便它与日记表中的Id绑定。
所有选定的记录都放在参考文献中,但这是一种良好的做法还是有更好的方法?日记和日记编辑将有一对多的关系。只需确保DairyCompilation中的Id设置为主键,并对其施加外键约束,以便它与日记表中的Id绑定。这将防止您删除日记并孤立日记编译表中的记录。只要您有一个规范化的数据模型,您就可以了
<--- Each record is a new entry of diary --->
Diary: ID, Subject, Description, Keywords
<--- Single record per compilation for summary info --->
DiaryCompilation: ID, Title
<--- Pages of Diary Compilation --->
DiaryCompilationEntries: DiaryCompilationID, DiaryID
日记:ID、主题、描述、关键字
日记编辑:ID,标题
日记编译条目:日记编译ID,日记ID
保持字段的原子性。在references
字段中放置多个值将使查询和强制引用约束变得更加困难
父级和子级之间的1:N关系是通过将父级的主键迁移到子级来建模的。在您的情况下,这看起来像这样:
COMPILATION (
COMPILATION_ID PK
-- Other fields...
)
DIARY (
DIARY_ID PK
COMPILATION_ID FK(COMPILATION)
SUBJECT
DESCRIPTION
)
-- Not a good idea to have several keywords in a single field, so we need a separate table for keywords.
DIARY_KEYWORD (
DIARY_ID PK, FK(DIARY)
KEYWORD PK
)
COMPILATION (
COMPILATION_ID PK
)
DIARY_IN_COMPILATION (
COMPILATION_ID PK, FK(COMPILATION)
DIARY_ID PK, FK(DIARY)
)
DIARY (
DIARY_ID PK
SUBJECT
DESCRIPTION
)
DIARY_KEYWORD (
DIARY_ID PK, FK(DIARY)
KEYWORD PK
)
如果您确实想要N:N关系(即日记可以是多个编译的一部分),则需要一个专用的表来保存这些连接,如下所示:
COMPILATION (
COMPILATION_ID PK
-- Other fields...
)
DIARY (
DIARY_ID PK
COMPILATION_ID FK(COMPILATION)
SUBJECT
DESCRIPTION
)
-- Not a good idea to have several keywords in a single field, so we need a separate table for keywords.
DIARY_KEYWORD (
DIARY_ID PK, FK(DIARY)
KEYWORD PK
)
COMPILATION (
COMPILATION_ID PK
)
DIARY_IN_COMPILATION (
COMPILATION_ID PK, FK(COMPILATION)
DIARY_ID PK, FK(DIARY)
)
DIARY (
DIARY_ID PK
SUBJECT
DESCRIPTION
)
DIARY_KEYWORD (
DIARY_ID PK, FK(DIARY)
KEYWORD PK
)
创建日记汇编的最佳方法是什么
听起来最好的方法可能是使用视图而不是表