表的数据库设计,其中每列可以有多选选项来存储[关闭]

问题描述 投票:0回答:1

我遇到一个映射表,其中每一列在 UI 上都有多选下拉列表,以便用户可以在每一列上选择一个或多个记录。下面的 UI 看起来像 maildID 是唯一的,其余所有列每行可以存储一个或多个值。

enter image description here

我不太确定设计数据库的最佳方法是什么。

我有一些样本设计:

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])
)

这是我设计的第二个选择。 enter image description here

sql-server database-design
1个回答
0
投票

您需要创建一个主表。然后需要创建集群、管理器等的字典表。然后需要创建表来实现主表和字典表之间的一对多关系。

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 中,您可以实现不同的方式来呈现数据库中的信息。

© www.soinside.com 2019 - 2024. All rights reserved.