【发布时间】:2011-03-12 03:14:01
【问题描述】:
情况如下: 我有一个“用户”,它有很多属性。例如,“姓名”、“电子邮件”、“密码”、“电话”。
有些属性是公开的,例如“姓名”、“电子邮件”。 这些信息对访问该网站的人开放。
但有些,仅用于系统中的信任主体,例如“电话”。 这些信息对用户信任的人开放......(假设用户有一个信任列表,可以接受其他用户加入信任列表。)
还有私人的“密码”。 此信息仅供用户使用,其他人无法访问。
用户可以根据自己的需要更改不同的安全级别,例如,用户想要更改仅受信任机构的“电子邮件”,他们可以这样做。它还允许用户将他们的“电话”更改为公开。
我用三个数字来表示三个级别的权利。第一个是3,第二个是2,private是1。所以,我是这样设计数据库的:
User
id(PK)
nameId(FK)
emailId(FK)
passwordId(FK)
phoneId(FK)
Name:
id(PK)
name(String)
securityLevel(int)
Email:
id(PK)
email(String)
securityLevel(int)
Phone:
id(PK)
phone(int)
securityLevel(int)
Password:
id(PK)
password(String)
securityLevel(int) //It must be 1
问题是,我可以做到,但我的数据库会有很多表,有什么简单的方法可以做到吗?此外,有没有关于这种数据库设计的书籍推荐?谢谢。
【问题讨论】:
-
除非您要允许您的用户“原始” sql 访问数据库,否则您应该在应用程序中处理这种访问规则。
标签: mysql database-design normalization