Database 关系数据的建模

Database 关系数据的建模,database,database-design,relational-database,relationship,Database,Database Design,Relational Database,Relationship,我是网络开发新手,我希望有更多经验的开发人员为我提供建议 我必须对一个基本的关系系统进行建模 我有三种类型的数据 用户 设计 项目 用户拥有0-N设计 用户拥有0-N个项目 项目有1-1个用户 项目有1-N个设计 基本上,用户可以拥有设计和项目的列表 用户将一个设计关联到一个项目 我的问题是:如果用户想要删除设计,会发生什么情况? 它将基本上从列表中删除该设计, 但是,如果一个项目与同一个设计有关系,会发生什么呢?“has”一词毫无意义。您必须告诉我们哪些关系涉及表示实体及其属性的值。例如,对于

我是网络开发新手,我希望有更多经验的开发人员为我提供建议

我必须对一个基本的关系系统进行建模

我有三种类型的数据

用户
设计
项目

用户拥有0-N设计
用户拥有0-N个项目
项目有1-1个用户
项目有1-N个设计

基本上,用户可以拥有设计项目的列表
用户将一个设计关联到一个项目

我的问题是:如果用户想要删除设计,会发生什么情况?
它将基本上从列表中删除该设计, 但是,如果一个项目与同一个设计有关系,会发生什么呢?

“has”一词毫无意义。您必须告诉我们哪些关系涉及表示实体及其属性的值。例如,对于具有用户U和项目P的属性/列的关系/表,它们是如何关联的,即表中有哪些行。用户U在项目P上工作?用户U讨厌项目P?项目P的用户不允许从事设计D?项目P的用户被允许从事设计D?您必须非常清楚,更新数据库的人员可以获取表中可能包含的每一行,并且能够通过查看当前的业务情况来判断它是否包含在表中

这就是更新和查询数据库所需的全部知识。更新程序查看当前情况,并保持表中包含根据每个关系相关的值行

考虑到这些关系以及可能出现的情况,通常只能出现表值的某些组合。例如,如果一个表包含“项目P产生设计D”的行,并且一个设计只由一个项目产生,那么表中只有一行具有给定的D值。然而,如果一个设计可以由多个项目产生,那么情况就不是这样了。例如,如果“project P products design D”总是意味着“D是一个设计”,那么如果您“想要从第二个表中删除一个设计”D,那么您还必须要从第一个表中删除看起来像(P,D)的行。如果没有同时请求和删除它们,这将是一个错误。然而,如果第二个表用于“design D is dumby”,那么从中删除一个设计可能独立于其他表。但请记住,您不需要知道更新和查询的约束

我们编写约束来告诉DBMS拒绝作为错误的数据库状态更新请求,这些请求无法出现。例如,主键或唯一约束表示,在上述情况下,每一行都有一个唯一的D值。基数只是关于一个关系的一些信息,因此我们可以告诉DBMS关于哪些表值对可以出现的限制。例如,外键约束,即上面“第一”表中的每个D都必须在“第二”表中显示为D。但请记住,约束来自于了解关系是什么以及可能出现的情况

此外,由于我们经常希望同时更新外键约束中涉及的多个表,SQL DBMS允许级联与它们关联。这使我们能够简洁且声明性地表达这样的内容:如果删除了引用行,那么也应该删除所有引用行。

“Has”没有任何意义。您必须告诉我们哪些关系涉及表示实体及其属性的值。例如,对于具有用户U和项目P的属性/列的关系/表,它们是如何关联的,即表中有哪些行。用户U在项目P上工作?用户U讨厌项目P?项目P的用户不允许从事设计D?项目P的用户被允许从事设计D?您必须非常清楚,更新数据库的人员可以获取表中可能包含的每一行,并且能够通过查看当前的业务情况来判断它是否包含在表中

这就是更新和查询数据库所需的全部知识。更新程序查看当前情况,并保持表中包含根据每个关系相关的值行

考虑到这些关系以及可能出现的情况,通常只能出现表值的某些组合。例如,如果一个表包含“项目P产生设计D”的行,并且一个设计只由一个项目产生,那么表中只有一行具有给定的D值。然而,如果一个设计可以由多个项目产生,那么情况就不是这样了。例如,如果“project P products design D”总是意味着“D是一个设计”,那么如果您“想要从第二个表中删除一个设计”D,那么您还必须要从第一个表中删除看起来像(P,D)的行。如果没有同时请求和删除它们,这将是一个错误。然而,如果第二个表用于“design D is dumby”,那么从中删除一个设计可能独立于其他表。但请记住,您不需要知道更新和查询的约束

我们编写约束来告诉DBMS拒绝作为错误的数据库状态更新请求,这些请求无法出现。例如,主键或唯一约束表示,在上述情况下,每一行都有一个唯一的D值。基数只是关于一个关系的一些信息,因此我们可以告诉DBMS关于哪些表值对可以出现的限制。例如,外键约束,即上面“第一”表中的每个D都必须在“第二”表中显示为D。但请记住,约束来自于了解关系是什么以及si是什么