在关系数据库中存储静态(类)属性

时间:2008-12-19 10:22:31

标签: sql orm

假设您将类的实例存储在关系表中。你会如何坚持该类的静态属性?例如:

class WebSiteUser {
    private static $common_homepage_content;
    private $username;
    private $password_hash;
    ...
}

对应于:

CREATE TABLE web_site_users
(
  username character varying(100) NOT NULL,
  password_hash character varying(40) NOT NULL,
  ...

$common_homepage_content去哪儿了?

2 个答案:

答案 0 :(得分:2)

由于静态变量对于类有意义但对实例级别没有意义,因此它不能进入​​具有实例变量的表。在您正在创建的表中,可以有多个用户名字符和相应的password_hashes,但在每个记录中放置common_homepage_content将是重复数据。您可以将common_homepage_content放在一个单独的表中,并从第一个表中的每个记录中引用它。

答案 1 :(得分:1)

好吧,如果您要保留的变量只是static,我必须假设有许多用户(WebSiteUser)具有相同的$common_homepage_content。在这种情况下,您应该在db中为此属性创建一个新表,因为它是1> N关系。