关系数据的模型化

时间:2017-02-01 20:31:17

标签: database database-design relational-database relationship

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

我必须建立一个基本的关系系统。

我有3种类型的数据。

  

用户
  的 DESIGNS
  的项目

USERS 有0 - N DESIGNS
USERS 有0 - N PROJECTS
项目有1 - 1 USERS
项目有1 - N DESIGNS

基本上 USER 可以包含 DESIGN PROJECTS 的列表。
用户会将 DESIGN PROJECT 相关联。

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

1 个答案:

答案 0 :(得分:0)

“有”意味着什么。您必须告诉我们关系是什么涉及表示实体及其属性的值。例如,对于具有用户U和项目P的属性/列的关系/表, 它们是如何相关的,即表中的行是什么。用户U在项目P上工作?用户U对项目P感到厌恶?项目P的用户不允许在设计D上工作?项目P 上的用户是否允许在设计D上工作?您必须明确表示,更新数据库的人可以采取可能进入表中的每一行,并且能够通过查看当前业务情况来判断它是否 < / em>进入桌面。

这是您更新和查询数据库所需要知道的全部内容。更新程序查看当前情况并保持表保存根据每个关系相关的值行。

鉴于关系是什么可能出现什么情况,通常只会出现某些表值组合。例如,如果一个表保存“项目P生成设计D”的行,并且设计只由一个项目生成,那么表中只有一行具有给定的D值。如果一个设计可以由多个项目产生,那么情况就不会如此。例如,如果“项目P生成设计D”始终暗示“D是设计”,那么如果您“想要从第二个表中删除设计”,则还必须删除行看起来像第一张表中的(P,d)。如果没有同时删除它们,那将是错误。如果第二个表是“设计D是愚蠢的”,那么从中删除设计可能与其他表无关。但请记住,您不需要知道更新和约束的约束。查询。

我们编写约束来告诉DBMS拒绝作为错误请求更新数据库状态而不会出现。例如,PRIMARY KEY或UNIQUE约束表示在上面的情况下每一行都有唯一的D值。基数只是有关关系的一些信息,因此我们可以告诉DBMS有关表值的的限制。例如,FOREIGN KEY约束表示上面“第一”表中的每个D必须在“秒”中显示为D.但请记住,约束来自于了解关系以及可能出现的情况

此外,由于我们经常要同时更新FOREIGN KEY约束中涉及的多个表,因此SQL DBMS允许CASCADES与它们相关联。这使我们能够简明扼要地如果引用的行是DELETEd,则声明性地表达类似的东西,那么所有引用的行也应该是DELETEd。