这些表供用户访问不同的位置
设计如下:
用户表:
<user>
userid
username
place (the row define access rights)放置表格:
<place>
placeid
placename
floor我的想法是:
三个位置和placeid是001,002,003一个用户,userid是001访问这三个位置
<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“表中分离出来?
发布于 2012-10-29 12:08:19
这不是个好主意。创建一个单独的表来存储关系:
<users-places>
userid placeid
1 1
1 2
1 3索引您的方法将不会是直接的-尽管是可能的。
使用名称"users-places“,因为它暗示了它所关联的两个表。如果您大量存储有关此关系的更多信息,请更改名称-即,您开始向此新表添加列。
另外,以复数形式命名您的表。单数是为类名保留的。表被认为是集合。
发布于 2012-10-29 12:09:17
使用逗号分隔的列表来处理多对多关系是糟糕的设计。您应该改用中间表:
<user>
userid
username
<place>
placeid
placename
floor
<accessrights>
userid
placeid不是在user.place中为userid001放入"1,2,3“,而是在accessrights中放入三行,所有行都有userid001,每个placeid都有一行。
发布于 2012-10-29 12:42:16
谢谢大家
我修改了我的设计如下,可以吗?
<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 https://stackoverflow.com/questions/13115691
复制相似问题