Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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_Sqlite_Database Design - Fatal编程技术网

Database 简单的数据库设计-某些列具有多个值

Database 简单的数据库设计-某些列具有多个值,database,sqlite,database-design,Database,Sqlite,Database Design,警告:对于数据库设计/建模来说是非常新的,所以请接受我的建议:) 我正试图设计一个简单的数据库,将有关图像的信息存储在存档中。除了文件名(这是一个不同的字符串),我还有流派和星号等字段,其中每个字段可能包含多个字符串(如果图像与多个流派相关联,和/或如果图像中有多个参与者) 现在数据库只是一个键入文件名的表,像星号和类型这样的字段只存储了多个逗号分隔的值。我可以通过使用通配符和来查询它,比如和中的,但我想知道是否有更优雅的方法来分解数据,以便更容易使用/查询。例如,我希望能够找到归档中有多少独特

警告:对于数据库设计/建模来说是非常新的,所以请接受我的建议:)

我正试图设计一个简单的数据库,将有关图像的信息存储在存档中。除了
文件名
(这是一个不同的字符串),我还有
流派
星号
等字段,其中每个字段可能包含多个字符串(如果图像与多个流派相关联,和/或如果图像中有多个参与者)

现在数据库只是一个键入
文件名
的表,像
星号
类型
这样的字段只存储了多个逗号分隔的值。我可以通过使用通配符和
来查询它,比如
和中的
,但我想知道是否有更优雅的方法来分解数据,以便更容易使用/查询。例如,我希望能够找到归档中有多少独特的参与者,但我认为这在当前模型中是不可能的

我意识到这是一个关于数据建模的非常基本的问题,但是任何人都可以提供指导,或者你可以指导我去阅读,我将不胜感激


谢谢

您需要创建额外的表以坚持规范化。在您的情况下,您需要4个额外的表来表示这些n->m关系(如果关系为1->n,则2个额外的表就足够了)

表:

图像(id、文件名)

类型(id、名称)

图像类型(图像id,类型id)

明星(id、姓名等)

图像明星(图像明星id,明星id)

以及表中的一些数据:

图像表 身份证件 文件名 1. /用户/home/song/empire.png 2. /用户/home/song/promiscuous.png
非常感谢。这太完美了。