在UML和SQL中实现类的特例

时间:2012-10-29 16:07:25

标签: sql database uml

在一个应用程序中,允许注册用户创建可由其他注册用户编辑的页面,在UML和SQL中区分普通用户和页面创建者的正确方法是什么。

在UML中,我有

--------  accesible by --------  
| Page |  ------------ |User  |
--------               --------
  |created by            / \
  |                       | 
  |                       |
---------   is a          |
|Creator|------------------
---------

现在,我不认为这是正确的UML。那么,我想表达的是什么是正确的UML表示。最后,我想为此创建SQL数据库。在这种情况下,数据库架构会是什么样的?

2 个答案:

答案 0 :(得分:0)

与往常一样,您有多种可能性 - 模型(UML)和代码(SQL,或其他)。

模特A)就像你上面描述的那样 模型B)只有一个User类,没有Creator。用户是来自Page:'accessible by'和'created by'

的两个关联的目标

模型之间的区别在于,您可以区分可以创建页面的用户和不能在模型A中创建页面的用户。模型B只允许区分已创建页面的用户和未创建页面的用户。

两种模型都可以通过两种实现来实现。

代码1)使用5个表:Page,User,Creator,PageToUser,PageToCreator 代码2)使用4个表:Page,User,PageToUserAccessible,PageToUserCreated(可能是用户中的标志'creator') 代码3)使用3个表:Page,User,PageToUser和PageToUser中的“已创建”标志(可能还有用户中的标志“创建者”)

知道了吗?一切都是'正确的' - 取决于你:)

答案 1 :(得分:0)

在这种情况下,您的角色应该是具体的,这意味着角色应该具有不同的访问权限。 假设我有三个用户,每个角色具有不同的访问权限。 1管理员 2经理 3位用户 在这种情况下,管理员可以创建页面并有权编辑页面和用户的所有详细信息,而管理员可以访问创建页面并根据访问权限编辑该页面的一些细节。 用户只能创建和查看页面,不能编辑页面的详细信息。 应在数据库中定义访问级别。

我希望这会对你有所帮助