我遇到一个映射表,其中每一列在 UI 上都有多选下拉列表,以便用户可以在每一列上选择一个或多个记录。下面的 UI 看起来像 maildID 是唯一的,其余所有列每行可以存储一个或多个值。
我不太确定设计数据库的最佳方法是什么。
我有一些样本设计:
CREATE TABLE dbo.MainTable(
[MainId] INT IDENTITY(1,1),
[MainValue] Varchar(100)
PRIMARY KEY ([MainId])
)
CREATE TABLE dbo.DetailTable(
[detailID] INT IDENTITY(1,1),
[MainId] INT ,
[ClusterID] INT,
[DomainID] INT,
[ManagerID] INT,
[DepartmentID] INT,
[ReportingID] INT
PRIMARY KEY ([detailID])
)
您需要创建一个主表。然后需要创建集群、管理器等的字典表。然后需要创建表来实现主表和字典表之间的一对多关系。
CREATE TABLE mains
(
main_id INTEGER PRIMARY KEY
);
CREATE TABLE clusters
(
cluster_id INTEGER PRIMARY KEY,
title VARCHAR(50) NOT NULL
);
CREATE TABLE main_cluster
(
main_id INTEGER REFERENCES mains (main_id),
cluster_id INTEGER REFERENCES clusters (cluster_id),
PRIMARY KEY (main_id, cluster_id)
);
/* Other tables: domains, main_domain, managers, main_manager, etc. */
P。 S. 在 UI 中,您可以实现不同的方式来呈现数据库中的信息。