规范化这些表的更好方法?

Better way to normalize these tables?

这更像是一个后端设计问题。我将使用以下 3 个表格来填充网络应用程序中的下拉菜单。

CREATE TABLE request_types(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name as varchar(32) NOT NULL
);

CREATE TABLE citizenship_types(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name as varchar(32) NOT NULL
);

CREATE TABLE designation_types(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name as varchar(32) NOT NULL
);

所有 3 个的设计都是相同的,所以我想知道是否更好的做法是将所有 3 个表的数据放入一个表中并使用另一个来区分哪个组值属于。

CREATE TABLE field_types(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name as varchar(32) NOT NULL,
    category TINYINT NOT NULL
)


CREATE TABLE category_types(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name as varchar(32) NOT NULL
)

其中 category_types 将像这样填充:

{
    1:"request",
    2:"citizenship",
    3:"designation"
}

这实际上没有归一化。您无法命名任何会引导您进行此设计的数据库规范化规则。

规范化规则之一是属性列必须 table 的键,而不是另一个属性列。在您的设计中,name 属性部分取决于非键列 category.

我建议阅读 SQL and Relational Theory 这样的书。