数据库关系问题

时间:2011-01-22 16:52:32

标签: database database-design

在我的数据库中,我得到了包含CompanyId和Name列的公司列表。 此外,还有用户和那些用户可以添加产品。 表:user和user_products 没有产品表定义产品,因此每个用户都是唯一的“user_product”

当用户添加产品时,他键入公司名称。如果公司表中存在该公司名称,我想建立与公司表的连接,而不是仅保存user_product上的名称。到目前为止一切都很好..我只是将CompanyId存储在user_product表中。

问题是当用户输入公司表中不存在的名称时。我想在名为user_company的表中创建一个新记录,而不是将名称保存为varchar。 该表有列:UserCompanyId(PK),UserId,Name。如果组合Name和UserId已经存在,我当然不会创建新行,只需引用此ID。

我应该怎么做才能在这里维护一个好的数据库设计..我应该在user_product中添加这条记录以及一个名为UserCompanyId的新列。因此,在添加新行时始终设置CompanyId或UserCompanyId。感觉这可以以更好的方式完成。有人有任何想法吗?

我当然只有一个表“company”并且有一个UserId列,当它是由系统添加的全局公司时为null,或者当用户添加了没有公司名称时实际设置UserId全球存在。这也感觉不好......

1 个答案:

答案 0 :(得分:2)

实际上,我认为你在最后一段中钉了它。公司既可以由用户定义,也可以不定义,因此userId作为可空列有意义。这还允许您在公司名称上拥有唯一键,这允许您使用数据库来强制执行公司名称无法复制的事实。

您的公司表存在以定义公司 - 哪个用户(或用户)创建公司只是关于公司的信息。