首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计异地访问表

如何设计异地访问表
EN

Stack Overflow用户
提问于 2012-10-29 12:02:32
回答 3查看 70关注 0票数 0

这些表供用户访问不同的位置

设计如下:

用户表:

代码语言:javascript
复制
<user>
userid
username
place          (the row define access rights)

放置表格:

代码语言:javascript
复制
<place>
placeid
placename
floor

我的想法是:

三个位置和placeid是001,002,003一个用户,userid是001访问这三个位置

代码语言:javascript
复制
<user>
userid     username       place
001        john           001,002,003


<place>
placeid    placename   floor
001        A           1 
002        B           2 
003        C           3
004        D           4 

我的问题是,

在"user“表中,"place”属性包含许多placeids,并用逗号分隔,这种设计是好还是不好?它需要将位置值从"user“表中分离出来?

EN

回答 3

Stack Overflow用户

发布于 2012-10-29 12:08:19

这不是个好主意。创建一个单独的表来存储关系:

代码语言:javascript
复制
<users-places>
userid  placeid
1       1
1       2
1       3

索引您的方法将不会是直接的-尽管是可能的。

使用名称"users-places“,因为它暗示了它所关联的两个表。如果您大量存储有关此关系的更多信息,请更改名称-即,您开始向此新表添加列。

另外,以复数形式命名您的表。单数是为类名保留的。表被认为是集合。

票数 2
EN

Stack Overflow用户

发布于 2012-10-29 12:09:17

使用逗号分隔的列表来处理多对多关系是糟糕的设计。您应该改用中间表:

代码语言:javascript
复制
<user>
userid
username

<place>
placeid
placename
floor

<accessrights>
userid
placeid

不是在user.place中为userid001放入"1,2,3“,而是在accessrights中放入三行,所有行都有userid001,每个placeid都有一行。

票数 2
EN

Stack Overflow用户

发布于 2012-10-29 12:42:16

谢谢大家

我修改了我的设计如下,可以吗?

代码语言:javascript
复制
<user>
userid     username       groupid
1          john           1


<group>
groupid      groupname
1           admin
2           general
3           special 



<group_manage>
groupno    groupid      placeid
1          1            1
2          1            2
3          1            3
4          1            4  
5          2            1
6          2            2
7          2            3

<place>
placeid    placename   floor
1          A           1 
2          B           2 
3          C           3
4          D           4 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13115691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档