Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在数据库中存储类别_Database_Database Design_Relational Database - Fatal编程技术网

Database 在数据库中存储类别

Database 在数据库中存储类别,database,database-design,relational-database,Database,Database Design,Relational Database,如果某个对象可以是视频、音频、或故事,那么最好为每个类别设置一个单独的表,或者设置一个“type”字段,其中包含大量的“audio”、“video”和“story”条目,这样做可以吗 1) 假设每个对象只能是一种类型 2) 假设每个对象可以有多种类型(在这种情况下,最好定义一个ObjectType表来存储对象和类型之间的关系,对吗?) (我正在使用关系数据库) 谢谢 下面是建议的模式。通过使用ID而不是字符串,可以减少加入时数据库引擎所需的存储量和工作量。您还可以更轻松地重命名一个类别,而不必更

如果某个对象可以是
视频、音频、
故事
,那么最好为每个类别设置一个单独的表,或者设置一个
“type”
字段,其中包含大量的
“audio”
“video”
“story”
条目,这样做可以吗

1) 假设每个对象只能是一种类型

2) 假设每个对象可以有多种类型(在这种情况下,最好定义一个ObjectType表来存储对象和类型之间的关系,对吗?)

(我正在使用关系数据库)


谢谢

下面是建议的模式。通过使用ID而不是字符串,可以减少加入时数据库引擎所需的存储量和工作量。您还可以更轻松地重命名一个类别,而不必更新使用类别的无数行,而是更新一个类别行

每个项目只有一个类别:

ITEM:
ID
CATEGORYID
...

CATEGORY:
ID
NAME
...
ITEM:
ID
...

CATEGORY:
ID
NAME
...

ITEMCATEGORY:
ITEMID
CATEGORYID
每个项目有多个类别:

ITEM:
ID
CATEGORYID
...

CATEGORY:
ID
NAME
...
ITEM:
ID
...

CATEGORY:
ID
NAME
...

ITEMCATEGORY:
ITEMID
CATEGORYID

试着为每一个项目做一个样本并进行测试,一路上你会发现挑战,你会在这里得到帮助。一个项目可以在多个类别中吗?视频也可以是故事,不是吗?@这是一个很好的观点……我将编辑问题以反映这个问题。谢谢,这证实了我在第二类中的想法。感谢您指出在不使用IDsMy-joy,AC的情况下更改类别名称的困难-如果您同时使用外键,从长远来看,它将带来回报。重要的不是“努力”(除非这是一个问题),但是,与其确保底层关系模型的一致性和可用性,不如说没有FK(暂且不提代理PK的使用),这是不可能的。@pst同意,存储+努力在易维护性这一主要问题上退居次要地位。