我已经接管了具有SQL后端的应用程序。有多个表,但是我关注的两个表是:
QAProfile
---------
ProfileID <pk> -int
ProfileName
SecurityGroups -varchar(max)
SecurityGroups
--------------
GroupID <pk> -int
GroupName
我的问题是SecurityGroups字段是一个逗号分隔的GroupID值列表。
因此,配置文件表如下所示:
--------------------------------------------
| ProfileID | ProfileName | SecurityGroups |
--------------------------------------------
| 1 | foo | ,1,13,34,56, |
--------------------------------------------
| 2 | bar | ,4,13,29,56, |
--------------------------------------------
配置文件可以具有多个安全性组,而安全组可以位于多个安全性配置文件中
关于如何重新设计这个的任何建议?
最佳答案
最好重新设计一下,因为通常用逗号分隔的列表不属于SQL数据库。
看起来像一个简单的junction table可以替换SecurityGroups
表的QAProfile
列:
CREATE TABLE SecurityGroups_Profiles (
GroupID int NOT NULL,
ProfileID int NOT NULL,
PRIMARY KEY (GroupID, ProfileID),
FOREIGN KEY (GroupID) REFERENCES SecurityGroups (GroupID),
FOREIGN KEY (ProfileID) REFERENCES QAProfile (ProfileID)
);