MySQL 结构完整性还是简单性?
MySQL structural integrity versus simplicity?
我的问题:
- 在
PHP/MySQL
应用程序中,我必须区分 registered accounts
和 simple visitors
。他们都可以执行写入数据库的操作。现在,我对 visitors
使用单独的 table,对 registered accounts.
使用单独的 table
到目前为止我的示例解决方案:
选项 #1: Registered accounts
和 visitors
被分成两个 table。两个都
其中可以有 sessions
并且 table 之间的关系是
non-mandatory
,因为一个人要么是 visitor
,要么是 registered account
。
选项 #2: 每个人都在一个 table 中 table 之间的关系是强制性的,因为每个人都可以拥有 sessions
,但由于一个人是 visitor
或 registered account
,他可能没有 email
或 password
,因此可以为 NULL。这可能会导致完整性错误。
我的问题:
- 我应该将
accounts
与 visitors
分开放置 table 还是我
可以用布尔 isThisAccount
变量将每个人放在一个 table 中
表示此人是 registered account
或只是一个简单的人
visitor
?
我也对不同的方法持开放态度。
我可能会选择第三种选择:Link 访问者会话和帐户访问者。这样一来,您只需要 sessions
table 中的一个字段 visitorID
和一个 NULL
列(visitors
中的 accountID
)。在我看来,这在概念上更清晰,因为执行操作的人总是访客,他们可能有也可能没有帐户。
我的问题:
- 在
PHP/MySQL
应用程序中,我必须区分registered accounts
和simple visitors
。他们都可以执行写入数据库的操作。现在,我对visitors
使用单独的 table,对registered accounts.
使用单独的 table
到目前为止我的示例解决方案:
选项 #1:
Registered accounts
和visitors
被分成两个 table。两个都 其中可以有sessions
并且 table 之间的关系是non-mandatory
,因为一个人要么是visitor
,要么是registered account
。选项 #2: 每个人都在一个 table 中 table 之间的关系是强制性的,因为每个人都可以拥有
sessions
,但由于一个人是visitor
或registered account
,他可能没有email
或password
,因此可以为 NULL。这可能会导致完整性错误。
我的问题:
- 我应该将
accounts
与visitors
分开放置 table 还是我 可以用布尔isThisAccount
变量将每个人放在一个 table 中 表示此人是registered account
或只是一个简单的人visitor
?
我也对不同的方法持开放态度。
我可能会选择第三种选择:Link 访问者会话和帐户访问者。这样一来,您只需要 sessions
table 中的一个字段 visitorID
和一个 NULL
列(visitors
中的 accountID
)。在我看来,这在概念上更清晰,因为执行操作的人总是访客,他们可能有也可能没有帐户。