假设你有一个计算机型号的表,这些计算机型号可以升级不同的部件,例如ram、cpu和存储器,并且可用的不同选项存储在下拉列表中。
您将如何在数据库中表示它?
我在考虑为每种类型单独使用一个表,例如:
CREATE TABLE IF NOT EXISTS ram(
primary_key INTEGER PRIMARY KEY,
size TEXT NOT NULL,
price REAL NOT NULL
);
CREATE TABLE IF NOT EXISTS cpu(
primary_key INTEGER PRIMARY KEY,
cpu_type TEXT NOT NULL,
price REAL NOT NULL
);但是,如何将这些记录的多个记录组合在一起以创建下拉分组呢?我是否需要为存储一个下拉列表组的所有主键的每个选项提供单独的表?或者我可以将它们分组到一个选项表中?还是有更好的方法?
发布于 2018-11-28 08:24:31
作为指导原则,优先选择更多的列而不是更多的表,更喜欢更多的行而不是更多的列。这是因为每个首选项都比其他选项更容易实现和管理。
你的方法的问题是,每次你有一个新类型的东西,你都需要一个新的表。这将需要模式更改和新的代码来处理它。重要的是,这些新东西不会被你的应用程序发现。
相反,创建一个包含所有内容的表:
create table part (
id int,
name varchar(99),
price real
-- more columns for attributes that ALL parts have (if any)
)由于不同的部分具有不同的属性,因此在此表中有许多列是不明智的,其中大多数列都没有使用。为特殊属性创建表:
create table part_attr (
part_id int references part(id),
name varchar(99),
value varchar(99)
-- possibly other columns
)然后使用代码将其编织成dropdown等。
https://stackoverflow.com/questions/53510210
复制相似问题