这是一个菜鸟问题所以请光临我。
我正在尝试建立一个保存/维护一组用户权限的数据库。我也在使用Microsoft SQL Server Management Studio。
我创建了一个Accounts表,其中PK = UserId。
我使用PK = ProfileId
创建了一个Profiles表我使用以下SQL语句
创建了UserPrivileges表CREATE TABLE UserPermissions
(
UserId int REFERENCES Accounts (UserId),
ProfileId int REFERENCES Profiles (ProfileId),
PRIMARY KEY (UserId, ProfileId)
)
但是当我从UserPrivileges表执行Select查询时,即使我在之前的2个表中有一些条目,也不会返回任何内容。
根据我对外键的理解,它们的值取自引用的表。并且由于引用的表确实有条目,为什么没有输入UserPrivileges表?
答案 0 :(得分:1)
外键只是一个参考。如果并不意味着您不需要表格中的条目。你需要它们!但是这些条目也存在于相关表中。这是一个非常好的解释:http://www.w3schools.com/sql/sql_foreignkey.asp
答案 1 :(得分:1)
首先,您没有创建UserPrivileges表。您创建了一个UserPermissions表。 (如果我们相信你的代码。)
其次,在UserPermissions中没有输入任何行,因为您没有在UserPermissions中插入任何行。外键不会使行显示为魔术。 您决定哪些行属于UserPermissions,您插入它们。